{"version":3,"sources":["components/sharedcomponents/EmailControlExcel.tsx","images/PlugSolid.svg","images/battery-critical.svg","images/battery-low.svg","images/battery-normal.svg","actions/ChassisFormatter.ts","components/sharedcomponents/GridDryStatusToolBar.tsx","components/childcomponents/DryStatusSSRMGrid.tsx","images/MapPushPins/pushpin_blue.png","components/childcomponents/AssignToCustomer.tsx","components/childcomponents/UnassignReefersFromCustomer.tsx","components/routecomponents/NewBookingCreate.tsx","components/routecomponents/ReeferStatus.tsx","components/childcomponents/ReeferStatusAdvanceSearch.tsx","images/RSSI/RSSI_4.png","images/RSSI/RSSI_1.png","images/RSSI/RSSI_2.png","images/RSSI/RSSI_3.png","images/RSSI/RSSI_5.png","components/childcomponents/GensetStatusGrid.tsx","components/sharedcomponents/GridDryHistoryToolBar.tsx","components/childcomponents/DryHistoryGrid.tsx","components/sharedcomponents/GridChassisHistoryToolBar.tsx","components/childcomponents/ChassisHistoryGrid.tsx","components/sharedcomponents/ForwardCommands/DeviceReset.tsx","components/childcomponents/GensetHistoryGrid.tsx","components/sharedcomponents/GridDropdownCCProfileRenderer.tsx","components/sharedcomponents/GridDropdownTempUnitRenderer.tsx","components/sharedcomponents/GridDropdownThirdPartyRenderer.tsx","components/sharedcomponents/GridButtonCACTClearRenderer.tsx","components/sharedcomponents/GridDropdownHVCRenderer.tsx","components/sharedcomponents/GridValidateNumericCellEditorRenderer.tsx","components/sharedcomponents/GridValidateStringCellEditorRenderer.tsx","components/sharedcomponents/GridValidateStrTextAreaCellEditorRenderer.tsx","components/sharedcomponents/GridValidateStringMultiTextCellEditorRenderer.tsx","components/sharedcomponents/GridValidateWholeNumberCellEditorRenderer.tsx","components/childcomponents/SpecificBookingReefersGridData.tsx","images/Unplug.svg","components/sharedcomponents/GridReeferStatusToolBar.tsx","components/sharedcomponents/GridChassisStatusToolBar.tsx","components/childcomponents/ChassisStatusGrid.tsx","store/UserDetails.ts","store/index.ts","store/configureStore.ts","registerServiceWorker.ts","components/GuestLayout.tsx","components/AuthorizedLayout.tsx","PrivateRoute.tsx","components/sharedcomponents/ResetPasswordWindow.tsx","components/sharedcomponents/ResetPassword.tsx","components/routecomponents/UserLogin.tsx","components/routecomponents/InitAuth.tsx","routes.tsx","components/routecomponents/OktaSecureHome.tsx","components/OktaRedirectHome.tsx","components/routecomponents/OktaLogout.tsx","OktaSecuredRoute.tsx","OktaApp.tsx","NavigationClient.ts","components/routecomponents/AzureADUserLogin.tsx","components/AzureADGuestLayout.tsx","components/AzureADAuthorizedLayout.tsx","components/routecomponents/Azuresignout.tsx","AzureApp.tsx","components/routecomponents/AzureADRedirectLogin.tsx","AzureADRedirectApp.tsx","components/routecomponents/OktatoRCRedirect.tsx","components/routecomponents/OktaNoAccount.tsx","Auth0ProviderWithHistoryEU.tsx","OauthConfig.ts","Auth0ProviderWithHistoryUS.tsx","Auth0ProviderWithHistoryJP.tsx","Auth0ProviderWithHistoryUK.tsx","Auth0ProviderWithHistoryAU.tsx","Auth0ProviderWithHistoryCA.tsx","components/routecomponents/Loading.tsx","AuthOProtectedRoute.tsx","components/routecomponents/LoginOauthEU.tsx","components/routecomponents/AuthOUserProfile.tsx","OAuthEUApp.tsx","components/routecomponents/LoginOauthUS.tsx","OAuthUSApp.tsx","components/routecomponents/LoginOauthJP.tsx","OAuthJPApp.tsx","components/routecomponents/LoginOauthUK.tsx","OAuthUKApp.tsx","components/routecomponents/LoginOauthAU.tsx","OAuthAUApp.tsx","components/routecomponents/LoginOauthCA.tsx","OAuthCAApp.tsx","index.tsx","components/sharedcomponents/EmailControl.tsx","images/delete.png","images/GroupChat.png","images/Status/RouteDeviation/TripInprogress.png","images/Status/RouteDeviation/TripCompletedDeviation.png","images/Status/RouteDeviation/TripCompleted.png","images/Status/RouteDeviation/TripProblemetic.png","images/Status/RouteDeviation/TripPending.png","images/Status/RouteDeviation/TripDeleted.png","images/Status/RouteDeviation/TripCancelDeviation.png","images/Status/RouteDeviation/TripCancel.png","images/AssetState/ActiveRA.svg","images/AssetState/DisconnectedRA.png","images/AssetState/RetiredRA.svg","actions/CommonActions.ts","components/sharedcomponents/GridToolTips/CCAlmTooltip.tsx","images/DoorBattPct/0.svg","images/DoorBattPct/10.svg","images/DoorBattPct/20.svg","images/DoorBattPct/30.svg","images/DoorBattPct/40.svg","images/DoorBattPct/50.svg","images/DoorBattPct/60.svg","images/DoorBattPct/70.svg","images/DoorBattPct/80.svg","images/DoorBattPct/90.svg","actions/Formatters.ts","images/DoorBattPct/100.svg","components/childcomponents/SpecificBookingDetails.tsx","components/sharedcomponents/BookingSystem.tsx","components/childcomponents/ReeferDetailsHistory.tsx","components/childcomponents/ReeferDetailsCommandStatus.tsx","components/routecomponents/ReeferDetails.tsx","components/childcomponents/BaplieFileUpload.tsx","components/childcomponents/VesselSearch.tsx","components/routecomponents/VesselStatus.tsx","components/childcomponents/AdvanceSearch.tsx","components/sharedcomponents/GridToolBar.tsx","components/sharedcomponents/ForwardCommands/PingControl.tsx","components/sharedcomponents/ForwardCommands/TempSetPoint.tsx","components/sharedcomponents/ConfirmationWindow.tsx","components/sharedcomponents/ForwardCommands/HumiditySetPoint.tsx","components/sharedcomponents/ForwardCommands/O2SetPoint.tsx","components/sharedcomponents/ForwardCommands/CO2SetPoint.tsx","components/sharedcomponents/ForwardCommands/ChangeReeferId.tsx","components/sharedcomponents/ForwardCommands/ChangeReportingInterval.tsx","components/sharedcomponents/ForwardCommands/ChangeDataLogInterval.tsx","components/sharedcomponents/ForwardCommands/AssignPANID.tsx","components/sharedcomponents/ForwardCommands/RebootReeferController.tsx","components/sharedcomponents/ForwardCommands/VerifyModelValidity.tsx","components/sharedcomponents/ForwardCommands/SyncReeferClock.tsx","components/sharedcomponents/ForwardCommands/StartDeforst.tsx","components/sharedcomponents/ForwardCommands/ChangeDeforstInterval.tsx","components/sharedcomponents/ForwardCommands/TraditionalDataDownload.tsx","components/sharedcomponents/ForwardCommands/StopPTI.tsx","components/sharedcomponents/ForwardCommands/PreTrip.tsx","components/sharedcomponents/ForwardCommands/LastPretripResult.tsx","components/sharedcomponents/ForwardCommands/QueryReeferInventory.tsx","components/sharedcomponents/ForwardCommands/UpdateModelConfiguration.tsx","components/sharedcomponents/ForwardCommands/ChangeReeferClockSyncSettings.tsx","components/sharedcomponents/ForwardCommands/GuestReeferConfiguration.tsx","components/sharedcomponents/ForwardCommands/AutoConfiguration.tsx","images/TripCancel.png","components/sharedcomponents/ForwardCommands/ScheduledPreTrip.tsx","images/Status/Alarms/HighCC.png","images/NotRunning.png","images/Running.png","images/Status/Alarms/MediumCC.png","images/Status/Alarms/LowCC.png","components/childcomponents/ReeferToggleButtonsFilter.tsx","actions/DryCellRenderer.tsx","actions/DetailsMap.ts","images/Status/Alarms/HighALM.png","images/Status/Alarms/MediumALM.png","components/sharedcomponents/GridReeferHistoryToolBar.tsx","components/routecomponents/NewBookingEdit.tsx","images/ORBCOMMLOGOR.svg","images/Status/ErrorStatus.png","images/Status/PendingStatus.png","images/Status/CancelStatus.png","components/sharedcomponents/GridToolBarControl.tsx","actions/GensetCellRender.tsx","store/ReeferStatus.ts","components/sharedcomponents/ForwardCommands/AssetConfiguration.tsx","components/sharedcomponents/ForwardCommands/MultipleSetpoints.tsx","components/sharedcomponents/ForwardCommands/AutomaticColdTreatment.tsx","components/sharedcomponents/ForwardCommands/GetFreshAirType.tsx","components/sharedcomponents/ForwardCommands/SetFreshAirType.tsx","components/sharedcomponents/ForwardCommands/ChangeZigbeeSettings.tsx","components/sharedcomponents/ForwardCommands/ControlledAtmosphere.tsx","components/sharedcomponents/ForwardCommands/TripWiseReport.tsx","components/childcomponents/ViewBookingDetails.tsx","components/sharedcomponents/AddGeofence.tsx","images/BatteryIndicator.svg","images/DualColorBattery.svg","components/childcomponents/GensetToggleButtonsFilter.tsx","components/childcomponents/SpecificBookingReefers.tsx","components/childcomponents/SpecificBookingReeferCommonData.tsx","RCUtils.tsx","components/NavMenu.tsx","images/Img_Pending1.png","images/Img_Warning1.png","components/childcomponents/ReeferCommandsGrid.tsx","images/Img_Success1.png","images/Status/Alarms/NormalCC.png","components/sharedcomponents/GridGensetStatusToolBar.tsx","images/MapPushPins/pushpin_green.png","images/MapPushPins/pushpin_green_yellow.png","images/MapPushPins/pushpin_blue_yellow.png","components/sharedcomponents/GridPreferenceControl.tsx","components/sharedcomponents/SendEmailControl.tsx","images/Status/UnknownStatus.png","images/Status/IssuedStatus.png","images/Status/ExpiredStatus.png","images/Status/SucessStatus.png","images/Status/AcceptedStatus.png","images/Status/RejectedStatus.png","images/Status/DiscardedStatus.png","images/Status/RetryStatus.png","images/Status/AcceptedByBusyRCDStatus.png","images/Status/AwaitingPrerequisites.png","images/Status/CancellationRequest.png","images/Status/SendToVC.png","images/Status/ValidationPendingStatus.png","images/Status/UndeliverableStatus.png","actions/ReeferCallout.ts","components/sharedcomponents/PopupConfirm.tsx","components/childcomponents/CreateTrip.tsx","components/childcomponents/TripDeviation.tsx","components/sharedcomponents/ForwardCommands/ReeferGetAssetId.tsx","components/sharedcomponents/ForwardCommands/EnableDoorSensor.tsx","components/sharedcomponents/NewBookingUnAssign.tsx","components/childcomponents/EditVoyageVVC.tsx","components/sharedcomponents/ForwardCommands/DIMISettings.tsx","components/sharedcomponents/ForwardCommands/IntelligentPTIFunction.tsx","components/sharedcomponents/ForwardCommands/FanSpeed.tsx","images/login_bg1.jpg","components/routecomponents/FileNotFound.tsx","components/routecomponents/Unauthorized.tsx","components/childcomponents/EditTrip.tsx","images/Status/RouteDeviation/edit_18_dis.png","components/childcomponents/TripStatus.tsx","components/sharedcomponents/GridGensetHistoryToolBar.tsx","components/childcomponents/ReeferTemperatureGraph.tsx","components/childcomponents/GeofenceGrid.tsx","components/routecomponents/GeofenceManagement.tsx","actions/CCWizardEmpties.ts","components/sharedcomponents/PopupWindow.tsx","actions/ExportToExcel.js","images/passed.png","images/failed.png","images/aborted.png","images/running-time.png","images/questionMark.png","components/routecomponents/ViewBooking.tsx","components/sharedcomponents/GridToolBarDrysPopups.tsx","components/childcomponents/DryCommandsGrid.tsx","images/Status/Yes.png","components/sharedcomponents/GridColumnPreferences.tsx","images/Status/No.png","components/sharedcomponents/Comments.tsx","actions/ExportAction.ts","actions/DryFormatter.ts","actions/ChassisCellRenderer.tsx","store/DryStatus.ts","components/childcomponents/ReeferMapGrid.tsx","components/sharedcomponents/ForwardCommands/DryCommands/DryPingControl.tsx","components/childcomponents/DryStatusToggleButtonsFilter.tsx","components/sharedcomponents/ForwardCommands/DryCommands/MRelatedReportingInterval.tsx","components/childcomponents/ChassisStatusToggleButtonsFilter.tsx","store/Home.ts","store/GensetStatus.ts","store/RcdStatus.ts","store/VesselStatus.ts","images/bullet_command.png","components/routecomponents/DryStatusSSRM.tsx","components/childcomponents/TemperatureGraph.tsx","components/childcomponents/GensetMonitorGraph.tsx","images/ReeferSettings.png","actions/ReeferFormatter.ts","components/sharedcomponents/GridToolBarGensetPopups.tsx","components/childcomponents/GensetCommandsGrid.tsx","components/sharedcomponents/ForwardCommands/GensetCommands/GensetPingControl.tsx","components/sharedcomponents/PopupConfirmWindow.tsx","components/routecomponents/ForgotPassword.tsx","images/OxygenWarning.jpg","actions/ReeferDetailFilters.ts","actions/GensetFormatter.ts","actions/UserRights.ts","components/childcomponents/DryMapGrid.tsx","images/powerOnGreen.png","images/powerOffGrey.png","images/MapPushPins/polygonImage_blue.png","images/MapPushPins/reefer_normal.png","images/fenceWhite.png","components/sharedcomponents/GridPTIToolBar.tsx","components/childcomponents/PTResults.tsx","components/sharedcomponents/SearchPreferenceControl.tsx","components/sharedcomponents/SharedEmailPopUp.tsx","components/childcomponents/SaveSearch.tsx","components/routecomponents/Home.tsx","components/childcomponents/DryDetailsHistory.tsx","components/childcomponents/DryDetailsCommandStatus.tsx","components/routecomponents/DryDetails.tsx","components/sharedcomponents/ExportToExcelConfirmationWindow.tsx","components/childcomponents/BingMapCallouts.tsx","store/PreferenceSettings.ts","store/AdminCargoCareSettings.ts","store/SubscriptionManager.ts","store/DeploymentStatus.ts","store/ChassisStatus.ts","components/childcomponents/ReeferStatusGrid.tsx","images/bookingView.svg","images/bookingSlashView.svg","images/bookingfileSlashView.svg","components/sharedcomponents/EmailControlExcelPreference.tsx","components/childcomponents/DryStatusSearch.tsx","actions/CellRenderer.tsx","images/animated-loader.gif","actions/GeofenceMap.ts","components/sharedcomponents/GridToolBarExcel.tsx","actions/MapCallout.ts","actions/ReeferCellRenderer.tsx","components/childcomponents/ReeferHistoryGrid.tsx","images/Chrome.png","images/Edge.png","images/Firefox.png","images/Status/High.png","images/Status/Medium.png","images/Status/Low.png","images/Skipped.png","images/powerOrange.png","images/PowerOffline.png","images/off.png","images/DataNotAvailable.svg","images/bingcenterSelected_icon.png","images/MapPushPins/reefer_running.png","images/MapPushPins/reefer_standby.png","images/MapPushPins/reefer_shutdown.png","images/MapPushPins/reefer_offline.png","images/MapPushPins/genset_normal.png","images/MapPushPins/dry_purple.png","images/MapPushPins/history_normal.png","images/MapPushPins/chassis_orange.png","images/fenceGrey.png","images/RSSI/RSSI_UNK.png","images/fenceDark.png","images/Total GRD/GRPO.png","images/Total GRD/GLON.png","images/Total GRD/GRPOFF.png","images/Total GRD/GLPO.png","images/DrySettings.png","images/GensetSettings.png","images/Chassis.svg","images/TotalChassis/NotPoweredInGeofence.svg","images/TotalChassis/NotPoweredNotInGeofence.svg","images/TotalChassis/PoweredInGeofence.svg","images/TotalChassis/PoweredNotInGeofence.svg","images/TotalChassis/TotalDryInsideGeofence.svg","images/TotalChassis/TotalDryOutSideGeofence.svg","images/Microsoft_SignIn.png","components/childcomponents/RcdAdvanceSearch.tsx","components/sharedcomponents/ForwardCommands/DevicePingControlForM2C.tsx","components/sharedcomponents/ForwardCommands/DevicePingControl.tsx","components/sharedcomponents/ForwardCommands/DeviceChangeReportingInterval.tsx","components/sharedcomponents/ForwardCommands/DeviceAssignPANID.tsx","components/childcomponents/DeviceUnassignFromCustomer.tsx","components/sharedcomponents/ForwardCommands/DeviceResetDeviceStatus.tsx","components/sharedcomponents/ForwardCommands/GetAssetId.tsx","components/childcomponents/EditAsset.tsx","components/routecomponents/RcdStatus.tsx","components/routecomponents/GensetStatus.tsx","components/childcomponents/GensetStatusSearch.tsx","components/childcomponents/ReeferMap.tsx","images/MapPushPins/pushpin_yellow.png","components/childcomponents/ReeferStatusSSRMGrid.tsx","images/MapPushPins/pushpin_gray.png","components/sharedcomponents/GridToolBarPopups.tsx"],"names":["currentDateTime","self","Config","require","EmailControlExcel","props","myRequest","filterSet","clearEmailFilters","state","EmailFilters","okMethod","Function","cancelMethod","confirmationMsg","dateTime","confirmOk","event","filters","this","Value","currentTarget","value","SelectedFrom","setState","SelectedSubject","SelectedTo","SelectedMessage","eventDate","timeZoneOffset","JSON","parse","sessionStorage","getItem","TimeZoneOffSet","eventdttm","Date","toString","utc","getTime","getTimezoneOffset","prefDateTime","parseInt","DateFormat","dateTypeFormatter","DefaultEmailAddress","SelectedAttachment","SelectedForm","nextprops","RCNGWindow","close","uri","isLimitNumberOfEmailsReached","undefined","SendTo","SendToArray","split","validemail","myEmailVLD","length","SendEmailLimit","i","test","parentchild","Excel","SendmailExcelExportParent","reeferStatusResult","columnDefinition","formname","SendmailExcelExport","stringify","filterParams","$","show","request","RCUtils","FetchRequest","ApiBaseUrl","method","body","headers","fetchRetry","then","handleResponse","response","json","data","hide","click","trim","PopupWindow","showErrorMessage","catch","err","confirmationMessage","showConfirmBox","SendEmailToUser","bind","closeConfirmation","className","id","type","name","onChange","e","ToEmailchange","disabled","Subjectchange","Messagechange","onClick","React","module","exports","chassisFormatter","ChassisPWRSorting","params","PWR","toUpperCase","ChassisPwrStateFormatterFilter","title","pwrStateFormatterChassis","element","document","createElement","imageElement","src","PlugSolid","UnPlug","appendChild","chassisBatteryStatusSorting","ChassisBatteryStatus","chassisBatteryStatusFormatterFilter","chassisBatteryStatusFormatter","batterycritical","batterylow","batterynormal","SpeedConverterChassisFilter","tempRoundingValue","TemperatureRoundPrecision","speedUnitCd","SpeedUnitCd","ChassisSpeed","toLowerCase","param","parseFloat","toFixed","tempVal","ChassisSpeedConverter","LoadedValueFormatter","LoadedFormatter","LoadedFormatterFilter","Loaded","BrakeSignalFormatter","BrakeSignalSorting","Exceljs","ReeferHistoryFilter","FromDate","ToDate","Units","ExportFields","ExportData","GridDryStatusToolBar","exportData","renderEmailHtml","modelDialogHtml","exportFields","excelData","headerData","isDownload","excelGridData","gridData","formName","fileTitle","sheetInfo","renderGridPreferenceHtml","renderExportToExcelHTML","renderSheets","dashboardPreferenceId","validateRevisionNum","functionId","widgetId","GridColumnPreferences","dashboardWidgetsSearch","revisionNum","gridApiParams","closeModelDialog","closeToolBarGridPreferenceModel","colDefs","sensorData","ExportToExcelConfirmationWindow","IsServerSideEnabled","role","style","right","aria-label","closeToolBarModel","aria-hidden","refreshGrid","arrData","valueString","RunningMode","inputValue","replace","startsWith","substring","endsWith","sheetData","r","InitializeExportParentGridExportToXLSX","InitializeChildGridExportToExcel","ConvertCSVToJSon","ColumnData","HeaderData","downloadExcel","EmailControlExcelPreference","ClearFilters","renderEmailDialog","colDefs2","gridOptionsWrapper","gridOptions","columnApi","getRowGroupColumns","renderEmailControl","renderGridPreferenceDialog","renderGridPreferenceControl","clearOptionFilters","renderExportToExcelDialog","renderETEConfirmationWindowControl","generateSheetInfo","checkToFileDownload","headerName","finalHeaderColumn","join","Column","label","columnInfo","each","iVal","sheetObject","getSheetInfo","push","Sheet","isFileDownload","currentDate","getDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","val","api","setQuickFilter","target","RefreshData","ExportToExcelNew","EmailTo","isReadOnly","GridPreference","filename","placeholder","onQuickFilterChanged","required","ClearQuickFilter","modelDialogEmailHtml","modelDialogExportToExcelHtml","coppiedData","customerAccessData","columnDefs2","columnDefs","dryAssetSensors","selectedRowIndex","IsTriggered","serverSideEnabled","previousDryid","ReeferAndGensetAndChassisStatusEnum","currentMousePos","x","y","commandIssued","DryStatusSSRMGrid","onRefreshData","rowData","paginationGoToFirstPage","getDryContextMenuItems","node","group","selectflag","getFocusedCell","rowIndex","currentRow","getDisplayedRowAtIndex","currentRowId","selectedrowNode","getRowNode","assetMasterID","AssetMasterID","forEachNode","newRowNode","index","selectedItems","item","deselectAll","setSelected","subMenu","action","cellContent","ProcessCellForClipboard","clipboardService","copyDataToClipboard","copyRowsToClipBoard","copyRowsWithHeadersToClipBoard","dryContextMenuClick","cssClasses","UserRights","checkMenuItemVisibility","checkMenuItemDisabledForDry","checkMenuItemVisibilityMultiple","popUpAssignToCustomer","popUpUnAssignFromCustomer","checkMenuItemDisabled","popUpRetire","checkMenuItemVisibilityMultipleInventory","popUpReactivate","popUpExport","popUpSendEmail","onColumnResized","console","log","onSaveGridRowGroupState","loading","Filters","statusFilter","overlayLoadingTemplate","modelTitle","popUpHtml","isChangeDeforstInterval","pretripCmd","reeferFormatter","tempFilters","pageSize","defaultColDef","rowGroupPanelShow","groupDefaultExpanded","IsCommandIssued","PrevSelectedItems","autoGroupColumnDef","minWidth","PrevEndRow","PrevStartRow","frameworkComponents","cCAlmTooltip","CCAlmTooltip","rowModelname","serverSideStoreType","propsDryData","StatusFilters","AllReefer","Running","Stopped","MissedRunning","MissedStopped","AllMicroAlaram","MASevere","MAMinor","AllCargoCare","CCSevere","CCMinor","CCInformational","PowerOffNotReporting","PowerOffReporting","PowerOnNotReporting","PowerOnReporting","ChassisPwrInGeofence","ChassisPwrOutGeofence","ChassisNotPwrInGeofence","ChassisNotPwrOutGeofence","newColumns","createColumnDefs","generatedColumns","customerDeviceTypeSensor","filter","AssetTypeCd","customerDeviceTypeSensorObject","SensorTypeCd","field","enableRowGroup","sortable","headerClass","OORText","resizable","headerValueGetter","Formatters","TempSensorHeaderFormatter","valueGetter","stringTypeSortingForSensorfields","cellRenderer","TemperatureSensorValueFormatter","width","onCellClicked","onCellClickedCopy","refData","SensorSetDsc","SensorResetDsc","stringTypeSortingForDigitalSensorfields","DigitalSensorFormatter","columnHeaderName","ColumnNm","columnFieldName","FieldName","DeviceTypeCd","newColumnDefination","children","some","setTimeout","renderCustomerDeviceTypeSensorColumns","contextmenu","relX","pageX","offset","left","relY","pageY","top","toggle","css","preventDefault","mousemove","draggableModalPopup","getElementById","refreshDryStatusGridForNewEvents","DrySearchFilter","containerIdSelected","DCCurrentConditionID","TotalCount","PageSize","TempCount","setFunctionsReadOnly","count","setPageNum","Math","ceil","paginationGoToPage","currentParent","parent","setExpanded","IsCmdIssued","prevSelectedItems","server","getRows","success","rowCount","showNoRowsOverlay","drymapAction","dryhistoryAction","drycommandstatusAction","drydetailsAction","drydetailsCopyAction","copyToClipboard","coppiedDataWithHeader","text","window","clipboardData","setData","queryCommandSupported","textarea","textContent","position","select","execCommand","ex","removeChild","isHistoryCall","isHistorySelectionChanged","AssetNumber","getLastSelectedRow","colDef","DryHistoryGrid","ApplyDryHistorySearch","dryHistoryEnabled","dataSource","isOpenVia","drydetails","dryMapAction","eventsRefresh","newSearch","loaderState","showLoadingOverlay","filterset","SelectedOem","SelectedCountry","SelectedGeofence","SelectedGeofenceInside","SelectedInterval","SelectedReefer","SelectedAssetStates","SelectedVesselCode","AllReefers","CustomAttributeFilters","SelectedAssetTypes","SelectedBookingNumber","SelectedVesselCD","SelectedVoyage","SelectedCall","SelectedCargoCareProfiles","datasource","ServerSideDatasource","setServerSideDatasource","newfilters","StartRow","startRow","EndRow","endRow","RowGroupCols","rowGroupCols","GroupKeys","groupKeys","SortModels","sortModel","fetch","handleError","finalData","getData_old","rows","hideOverlay","successCallback","lastRow","failCallback","req","newData","dryData","cloneDeep","dryStateData","ReeferCallout","BindClusterMapPushpins","getLastRowIndex","results","currentLastRow","totalWidgetSearch","gridPreferencesData","DashboardWidgetId","defaultColumns","getAllGridColumns","setColumnsVisible","StatusGridPreferenceColumns","hasDryFilter","search","hasDry","isEqual","createServerSideDatasource","newPage","clearGridHeaderExtension","ClearHistoryGridData","EventDTTM","DeviceDataTime","clearFocusedCell","clearGridRowSelection","selectedReeferData","selectedRows","getSelectedRows","forEach","selectedRow","getSelectedRow","copySelectedRowsToClipboard","includeHeaders","onYesRetire","onCancelDryStatusGrid","onYesReactivate","commandUnits","getForwardCommandUnits","result","refreshStatusGrid","key","commandUnitObject","RCDMasterID","RCDID","VesselCd","alert","flex","cellClass","DryFormatters","dryPWRSorting","dryPwrStateFormatterFilter","DryCellRenderer","PwrStateFormatter","dryBatteryPctSorting","dryBatteryPctFormatterFilter","BatteryPctFormatter","stringTypeSortingFieldName","StringTypeValueFormatter","AssetStateFormatter","columnGroupShow","stringTypeSortingFor3P","customername","StringTypeFormatterFor3P","enableTooltip","TimeZoneHeaderFormatter","dateTypeFormatterEventDTTMForFilter","dateTypeSortingFieldName","getQuickFilterText","doorQuickFilterFormatter","doorFormatterFilter","DoorFormatterSorting","doorFormatter","cellStyle","italicizeGridRows","dateTypeFormatterDoorEventDtmForFilter","TempHeaderFormatter","TemperatureValueFormatter","floatTypeSortingFieldName","GPSCoordsSorting","GPSCoordsForFilter","GPSCoordsFormatter","secondsToTimeConverterFilter","GPSAcctypeSorting","PositionAccuracy","GPSHDOPTypeSorting","DryGPSHDOP","GPSLockState","GPSSatCountTypeSorting","DryGPSSatelliteCount","SpeedHeaderFormatter","SpeedConverter","SpeedConverterFilter","dateTypeFormatterDeviceDataTimeForFilter","BattVoltageSorting","BattVoltage","DeviceBattVoltageFormatterForFilter","BattVoltageValueFormatter","LuxValueFormatter","BatteryModeFormatter","BatteryModeFormatterFilter","dryDoorBattPctSorting","dryDoorBattPctFormatterFilter","DoorBattPctFormatter","RSSISorting","RSSITypeFormatter","RSSITypeFormatterFilter","dateTypeFormatterCreatedDTTMForFilter","CommentExistsforDrySorting","CommentExistsFormatter","GravityVectorValueFormatter","renderClearSelection","currentGropup","map","c","colId","colState","getColumnState","ColumnValues","col","selectedColumnIds","selectedColumnValues","rowGroupItems","url","dataresult","InterfaceExportColumnId","dataToSave","SelectedColumnIds","SelectedColumnValues","SelectedRowGroups","preferencedata","UserId","FunctionId","PreferenceData","preferenceData","rowGroupDataToSave","trigger","popUpName","userData","FunctionID","onlyselected","isIncludeRowGroup","DryPingControl","MRelatedReportingInterval","AssignToCustomer","assetData","CustomerAccessData","UpdateIsCommandIssued","UpdatePrevSelectedItems","UnassignReefersFromCustomer","SelectedReefersData","isCommands","ComponentRenderingForCommands","getCommandPopupTitle","getCommandPopupContent","RenderContextMenuPopUp","selectedUnits","filterUnitParams","applySheetData","CopyCommandFormatters","setRowGroupColumns","applyColumnState","applyOrder","paginationSetPageSize","parentChild","renderDataToEmailControl","renderDataGridPreferenceControl","renderDataGridExportToExcelControl","finalMenuItem","defaultItems","indexOf","ResetGridColumns","sourceFrom","rowModelType","onGridReady","onGridReadyServer","animateRows","cacheBlockSize","onFirstDataRendered","processCellForClipboard","onDragStopped","onSavecolumnorder","enableRangeSelection","pagination","rowSelection","rowDeselection","onRowDataChanged","excelStyles","dataType","font","size","onSelectionChanged","onGridSelectionChanged","onPaginationChanged","onGridPaginationChanged","paginationPageSize","getContextMenuItems","tooltipShowDelay","tooltipHideDelay","onBodyScroll","onGridScroll","pageSizeChange","onOpenCommandWindow","data-bs-toggle","data-bs-target","statusEventDttm","historyEventDttm","onRefreshDryStatusGrid","onCancelRefreshDryStatusGrid","currentReefer","countRecordPerPage","currentPage","trunc","paginationProxy","ensureIndexVisible","currentReeferId","ToggleSearchParams","lastCheckedNodes","lastCheckedParentNode","selectedReefers","SelectedReefers","isLoading","collapsed","CustomerGroups","AssignedGroups","checked","expanded","CustomerGroupsList","onCheck","onExpand","bindCustomerData","GetFormatedReefer","reeferId","slice","concat","nextProps","defaultChecked","defaultExpand","isSelected","ind","customersList","j","chk","splice","checkedGroupIds","TempcheckedGroupIds","existingGroups","selUnits","checkedList","IsAccessModified","inArray","SelectedUnits","Groups","hidden","nodes","showNodeIcon","CloseModal","data-bs-dismiss","selAssetsData","reeferData","UnAssignFromCustomer","emptyBookingDetails","Shipper","Consignee","ShipperCode","POR","POL","POD","VesselETD","VesselETA","BLNumber","ContractParty","Consolidation","Agent","VesselCode","VoyageNumber","Call","Forwarder","Notify","BookingNumber","DEL","IsVVCModified","ArrSelectedVesselCD","ArrSelectedCall","ArrSelectedVoyage","userInput","CustomerAccessGroupIDLoaded","BKCustomer","emptyCommonBookingData","ReeferIds","BookedTemperature","BookedTemperatureUnit","BookedTemperatureMin","BookedTemperatureMax","HumiditySetPoint","VentSettings","GensetId","CommodityName","STCC","HSCode","ServiceLevel","HighValueCargo","CargoCareProfile","ThirdPartyAccess","CACTNotRequired","CTRequire","CARequire","CACTDifferByReefer","CTDays","CTMaxTemperature","PostCTTemperature","PostCTTemperatureRange","PostCTVentSettings","O2SetPoint","O2Min","O2Max","CO2SetPoint","CO2Min","CO2Max","CAGName","emptyBookingReefers","BookingReefers","SelectedBookingReefers","ReeferwithUnitID","emptyCustomerData","CustomerAccessGroupID","Name","NewBookingCreate","resetAllDetails","renderHtml","BookingDetails","CommonBookingData","AssetCustomer","Thirdparty","CargoCareProfiles","RefTemperatureUnit","isEdit","tabFrom","currentTab","AllBooking","BookingCount","BookingType","IsOpen","buttonState","CopyBookingNumber","location","ReeferforCreate","ReeferID","UnitmasterId","UnitMasterID","CargoCareProfileCd","CCProfileCode","isViewOnly","height","CheckAssesRightsOnly","updatemyBookingDimensions","addEventListener","find","attr","getAssetThirdPartyCustomer","history","dynamicRendering","setActiveAndInactiveOld","tabPane","formState","renderWizardPage","prepareSubmitWithoutReefers","PrepareFinalSubmitWithoutReefers","finishWizard","setFinalState","tabState","tabPaneFrom","PrepareFinalSubmit","validationsummary","strValaditionSummary","reefer","bookedTemperature","bookedTemperatureMin","bookedTemperatureMax","findInBetween","strErr","O2Setpoint","O2SetpointMin","O2SetpointMax","CO2Setpoint","CO2SetpointMin","CO2SetpointMax","showConfirmBoxOK","onOKSubmitValidation","min","max","bookingDetails","finalBookingData","bookingNumber","reefers","shipper","shipperCode","consignee","agent","vessel","voyage","vesselETD","vesselETA","contractParty","consolidation","forwarder","notify","thirdpartyaccess","customeraccessgroupid","customer","inputBody","goBack","ReeferStatusGrid","ReeferStatus","ReeferStatusSSRMGrid","refreshDashboardGrid","onOKSubmit","ValidateFinalSubmitData","reefersCount","RedirectToFirstTab","TabToActive","TabToInactive","classList","remove","add","newBookingDetails","newBookingReefersDetails","Edit","BookingAll","CountBooking","isBookingEdit","BookingList","isAllBooking","bookedTemperatureCount","arr","findIndex","t","bookedTemperatureMaxCount","bookedTemperatureMinCount","bookedTemperatureQualifierCount","bookedTemperatureQualifier","humidityCount","humidity","ventSettingCount","ventSetting","gensetIdCount","gensetId","commodityCount","commodity","STCCCount","HSCount","HS","serviceLevelCount","serviceLevel","HVFlagCount","HVFlag","cargoCareCount","cargoCare","accessCodesCount","accessCodes","CAFlagCount","CAFlag","CTFlagCount","CTFlag","O2SetpointCount","O2SetpointMaxCount","O2SetpointMinCount","CO2SetpointCount","CO2SetpointMaxCount","CO2SetpointMinCount","CTDaysCount","postCTTemperatureCount","USDAMaxTemperatureCount","USDAMaxTemperature","postCTTemperature","postCTTemperatureDeviationCount","postCTTemperatureDeviation","postCTVentSettingCount","postCTVentSetting","SpecificBookingReefers","BackScreen","SpecificBookingReeferCommonData","SpecificBookingReefersGridData","SpecificBookingDetails","NextScreen","href","cancelWizard","backScreen","nextScreen","Type","State","reeferColumns2","statusFilters","custId","userEmail","dCXDownloads","viewBookingData","reeferAssetSensors","EnableLynxCommands","EnableCT35ML5Commands","ShowTDDForCT36ML5","ShowTDDForCT35ML5","tripWISESupport","assetStates","ReeferStatusAdvanceSearch","onSuggestionsFetchRequested","suggestionsFenceId","getFenceNameSuggestions","onSuggestionsClearRequested","onChangeFenceId","newValue","targetId","onSuggestionsFetchRequestedforvessel","suggestionsVesselId","getvesselNameSuggestions","onSuggestionsClearRequestedforvessel","onChangeVesselId","suggestionsVoyage","getvoyageNameSuggestions","onChangcall","onSuggestionsFetchRequestedforvoyage","voyageNameSuggestions","onSuggestionsFetchRequestedforcall","suggestionsCalls","callSuggestions","onSuggestionsClearRequestedforvoyage","onSuggestionsClearRequestedforcall","onChangevoyage","getcallSuggestions","customAttributesInfo","InventoryState","stateData","Oemtypes","RefGeofences","RefVessels","RefCountry","stayOpen","removeSelected","rtl","AssetStates","fenceData","fence","Tag","geofences","inputLength","tag","suggestion","VesselData","vessels","uniq","VoyageNum","CallNum","commaValue","GetMultiLineCsv","addClass","removeClass","includes","isNullOrEmpty","bindingReeferStatusGrid","ready","keyCode","Voyagedisabled","Calldisabled","CustomerTypeCd","FenceIdListinputProps","FenceIdListinputPropsforvessel","FenceIdListinputPropsforvoyage","FenceIdListinputPropsforcall","cargoCareProfiles","cargoCareProfilesOptions","CCP","CargoCareCustomerProfileID","CargoCareCustomerProfileCode","assetStatesOptions","states","ReeferIDschange","BookingNumberchange","Oemchange","oem","OEMTypeCD","DisplayName","InsideGeofencechange","suggestions","getSuggestionValue","renderSuggestion","inputProps","highlightFirstSuggestion","Countrychange","CountryCd","CountryName","ReportingIntervalchange","getSuggestionVesselValue","renderSuggestionVesselvalue","getSuggestionvoyageValue","renderSuggestionvoyagevalue","Vesselcodechange","getSuggestioncallValue","renderSuggestioncallvalue","Creatable","closeOnSelect","multi","AssetStateChange","options","simpleValue","minMenuHeight","maxMenuHeight","promptTextCreator","CargoCareProfileChange","ClearFilter","ApplyFilter","noCarryFwdScreens","emptyVCCheckBoxData","enableVCCheckBox","disableVCCheckBoxOption","disableVCDropDown","disableVCOption","selectedVCData","dropDownVCData","isVCMessage","toolTipValueGetter","getReeferContextMenuItems","reeferid","forEachLeafNode","distinctOEM","fullPreTripLabel","shortPreTripLabel","funcPreTripLabel","ReeferOEMTypeCd","customerSpecificCommandList","CustomerSpecificCommandList","CustomerId","custSpecificCommandList","lodashfilter","fullCustSpecificCommandList","OemTypeCD","Text","shortCustSpecificCommandList","funcCustSpecificCommandList","fullPreTripCommandText","shortPreTripCommandText","funcPreTripCommandText","reeferContextMenuClick","checkCommandMenuItemVisibilityMultiple","assignToCargoCareSubMenu","unAssignCaregoCare","ClearCargoCareAlertsSubMenu","checkClearCargoCareAlertsSubMenuItemDisabled","checkMenuItemDisabledForLynxCommands","RefControllerTypes","checkMenuItemVisibilityMultipleByData","popUpPing","checkMenuItemVisibilitybyData","popUpChangeReporting","popUpDeviceReset","popUpDeviceHardReset","popUpChangeTempSetPoint","popUpHumiditySetPoint","popUpO2SetPoint","popUpCo2SetPoint","popUpSyncReeferClock","popUpChangeReeferClockSyncSetting","popUpChangeReeferId","popUpControlledAtmosphere","popUpFanSpeed","checkMenuItemDisabledforDimiSetting","popUpDIMISettings","popUpIntelligentPTIFunction","checkMenuItemVisibilityMultipleByDataForTDD","checkMenuItemDisabledForTDD","popUpDLTraditional","checkMenuItemVisibilitybyDataForTDD","popUpChangeDatalog","popUpPreTripFull","popUpPreTripShort","popUpFunctionTest","popUpChangeToChilled","popUpChangeToFrozen","popUpChangeToCA","popUpChangeToCAFullPTI","popUpChangeToCAFunctionTest","popUpChangeToChilledandCA","popUpStopPTI","popUpSchedulePTI","popUpGetPTI","popUpGetPTIReport","popUpGetTWR","checkTripWISEVisibilitybyData","popUpGetTWReport","popUpRebootReefer","popUpQueryReefer","popUpUpdateModelConfig","popUpVerifyModelValidity","popUpStartDeforst","popUpChangeDeforstInterval","checkMenuItemDisabledForDefrost","popUpMSC","popUpACT","popUpGuestReeferConfigCmd","popUpZigbeeSettings","popUpAssignPanId","popAutoConfiguration","popAssetConfiguration","popUpGetFreshAirType","popUpSetFreshAirType","popUpGetAssetId","popUpEnableDoorSensor","popUpCreateTrip","popUpTripStatus","popUpClearDeviation","popUpAssignBooking","popUpUnAssignBooking","checkMenuItemUnAssignDisabled","EventMasterList","popUpViewBooking","popUpNewUnAssignBooking","popUpEditVoyage","popUpControllerSwap","UserEmail","DCXDownloads","popUpHtmlReport","reeferStatusData","VCCheckBoxInfo","PTReport","ReportReeferId","isStarCoolOem","CustomAttributes","CustomerSpecificCommandData","commandId","Oem","TWReport","isTripStatus","CCActiveAlerts","DashboardWidgetsSearch","IsReadOnly","DashboardPreferenceId","RevisionNum","GetDefaultGridPreferenceColumns","GetCCprofileCode","searchFilters","clearFilters","refAppParams","refApplicationParams","tripWISESupportdeviceTypes","requestReeferAdvanceSearch","reeferColumns","renderSensorColumnsAndAsset","dbPreID","DashboardLayouts","defaultPreferenceName","dashboardLayouts","IsCustomAttributesEnable","attributesdata","renderSensorColumnsAndAssetAttributes","attributesData","newSensorColumnDefination","customAttributeObject","stringTypeSortingForCustomefields","ReeferCellRenderer","attributeName","AttributeName","reefermapAction","reeferhistoryAction","reefercommandstatusAction","reeferdetailsAction","reeferdetailsCopyAction","reeferdetailsCopyWithHeaderAction","reeferBookingAction","reeferCreateBookingAction","reeferViewBookingAction","reeferdetails","source","pathname","ReeferenceData","removeEventListener","updateReeferStatusDimensions","CheckAssesRightsForReefers","ReeferToggleButtonsFilter","ClearToggleFilters","reeferStatus","GridToolBarExcel","reeferIdSelected","LastBookingEventMasterId","lastBookingID","EventMasterID","refreshInMemoryRowModel","redrawRows","customerProfileCode","cargoCareSubMenus","objCCSubMenu","checkUnitAssignedToCargoCare","checkCCAssignSubMenuItemDisabled","CCCustomerProfileId","newCustomerProfileCode","onYesAssignToCargoCare","onCancelRefreshStatusGrid","assignCargoCare","ccAlertsSubMenus","alarmsList","AlarmMasterList","CCAlarmsList","ccAlarms","lstAlerts","almCd","alarmDescription","AlarmCd","AlarmAlias","Description","clearActiveCargoCareAlert","AlarmMasterID","icon","GetCargoCareAlmImg","objCCAllSubMenu","clearActiveCargoCareAllAlerts","alarmMasterId","requestClearCargoCareAlert","getCargoCareCommandUnits","requestClearAllCargoCareAlert","ReeferFormatters","CargoCareFormatterForFilter","CargoCareSorting","CargoCareFormatter","tooltipComponent","tooltipValueGetter","cellRendererParams","almData","statusIndicatorWithDescriptionForALMForFilter","statusALMSorting","StatusIndicatorWithDescriptionForAlarms","runStateFormatterForFilter","RunstateSorting","RunStateFormatter","pwrStateFormatterForFilter","PwrSorting","reeferBatteryPctFormatterFilter","reeferBatteryPctSorting","DepartingVVCstringTypeValueFormatter","ArrivingVVCstringTypeValueFormatter","tooltipField","TripSorting","TripstatusIndicator","oemTypeFormatterForFilter","OEMTypeValueFormatterFieldName","UnitTypesListFormatters","UnitTypesList","TemperatureSortingFieldName","TemperatureFormatterForBooking","CustomerName","stringTypeFormatterFor3PForFilter","CCAlarmAliasDescriptionSorting","CCAlertAlarmAliasDescriptionFormatter","BKVVstringTypeValueFormatter","dateTypeFormatterTripStartForFilter","dateTypeFormatterTripEndForFilter","EventDescriptionFormatters","CustomerSpecificEventList","M_CustomerAssetTypeDeviceTypeSensorAlerts","Ref_SensorAlerts","reeferSecondsToTimeConverterFilter","DLEventDescriptionFormatters","dateTypeFormatterDLEventDTTMForFilter","AlarmDescriptionSorting","AlarmsDescriptionFormatter","OperatingModeFormatter","dateTypeFormatterUnitEventDTTMForFilter","sensorDataSortingFieldName","HumiditySetpointFormatter","HumiditySettingFormatter","sensorDataValueFormatter","sensorDataValueFormatterTwoDecimal","sensorDataPCondFormatter","AirPumpRunHoursSorting","AirPumpRunHoursFormatter","sensorDataOpenExpFormatter","sensorDataOpenSucFormatter","CompressorRunHoursSorting","CompressorRunHoursFormatter","CTDurationSorting","CTDurationFormatter","CTRemainingTimeSorting","CTRemainingTimeFormatter","dateTypeFormatterCTTimeForFilter","ControlledAtmosphereMode","CARunHoursSorting","CARunHoursFormatter","CASWVerSorting","CASWVerFormatter","ThreePhaseCurrentSortingFieldName","Current3PhaseFormatter","everFreshQuickFilterFormatter","everFreshFormatterFilter","everFreshFormatterSorting","everFreshFormatter","TripWiseStatusSorting","TripWiseStatusList","TripWiseStatusFormatter","TripWiseExpirationSorting","TripWiseExpirationFormatter","OEMPTITypeFormatter","DimiRemainTermSorting","PTIStateDescriptionFormatters","PreTripList","tooltip","toolTipFormatter","PTResultSorting","PreTripFormatter","LineFrequencySorting","FreshAirTypeValueFormatter","PowerMeterSorting","PowerMeterFormatter","FirmWareDescriptionFormatters","DeviceFirmwareVersions","BootloaderFirmWareDescriptionFormatters","MeshFirmWareDescriptionFormatters","BattVoltageSortingFieldName","BatteryVoltageFormatterForFilter","DoorBattVoltageSortingFieldName","DoorBatteryVoltageFormatterForFilter","MNCSorting","MNCTypeFormatter","GuestReeferModeFormatterForFilter","GuestReeferModeFormatter","dateTypeFormatterModifiedDTTMForFilter","CommentExistsSorting","filterReeferStatusGrid","performCargoAction","searchState","input","command","RCDEventID","UnitControlEventID","UnitEventID","ParentEventID","HasValue","TripId","RCDReportingInterval","SetPoint","CustomerID","requestAssignCargoCare","requestUnAssignCargoCare","requestClearSetPoint","PingControl","UpdateVCCheckBoxInfo","TempSetPoint","ControlledAtmosphere","starCoolOem","TraditionalDataDownload","useremail","customerId","PreTrip","preTripCmd","StopPTI","ScheduledPreTrip","LastPretripResult","RebootReeferController","ChangeDataLogInterval","ChangeReeferId","ChangeReportingInterval","QueryReeferInventory","UpdateModelConfiguration","VerifyModelValidity","SyncReeferClock","StartDeforst","ChangeDeforstInterval","AssignPANID","GuestReeferConfiguration","CreateTrip","TripStatus","refreshStatusGridFromTripStatus","TripDeviation","UserID","ViewBookingDetails","ViewBookingData","PopupConfirm","ForwardCommandUnits","ChangeZigbeeSettings","AutoConfiguration","AssetConfiguration","MultipleSetpoints","AutomaticColdTreatment","GetFreshAirType","SetFreshAirType","DeviceReset","ReeferGetAssetId","TripWiseReport","EnableDoorSensor","NewBookingUnAssign","EditVoyageVVC","IntelligentPTIFunction","FanSpeed","checkBoxInfo","vesselid","d","VesselId","VCInfo","dangerouslySetInnerHTML","__html","navigator","msSaveOrOpenBlob","blob","Blob","msSaveBlob","setAttribute","encodeURIComponent","display","divToPrint","newWin","open","write","innerHTML","print","bindTWReport","CommonActions","validateCommandSupport","reeferConfigTypes","carrrierCount","validateOEMType","oemDaikinCount","isGuestFound","DeviceConfig","DaikinCount","StarCoolCount","isSekstantFound","DeviceType","validationMessage","validateDLCommand","OpenCommandWindow","Message","getCommandWindowText","oemStarCoolCount","ValidateCACommand","validateSpecificOEMTypeForCommand","oemTypeCount","row","UnitTypeCd","validateAllOEMs","validateMultipleOEMs","validateCarrierDaikinThermoKingTypes","validateStarCoolCarrierDaikinTypes","customerIdsCount","DeviceTypeCount","validateDaikinThermoKingTypes","OEM","validateDaikinDimiTypes","validateDaikinTypes","fieldName","fieldValue","columnDisplayName","rowGroupColumn","RunStateFormatterGrouping","AssetStateFormatterGrouping","StatusIndicatorALMFormatterGrouping","PowerStateFormatterGrouping","CargoCareFormatterGrouping","TripStatusFormatterGrouping","OEMTypeFormatterGrouping","RSSIFormatterGrouping","GuestReeferModeGrouping","CommentExistsGrouping","PTResultGrouping","rowRenderer","AlarmDescriptionGroupingFormatter","TripWiseExpirationGrouping","DimiRemainTermGrouping","CTDurationGrouping","CTRemainingTimeGrouping","TemperatureFormatterGrouping","BookingTemperatureFormatterGrouping","dateTypeGrouping","GPSCoordsFormatterGrouping","HumiditySetpointStatus","HumiditySetpointGrouping","DimiResultActuator","DimiResultAlarm","DimiResultOOR","TripWiseStatusGrouping","DoorFormatterGrouping","EverFreshFormatterGrouping","ReeferDoorBattPctFormatterGrouping","rebindGridPreferenceColumns","GetColumns","searchParam","reeferSearchData","RunState","MicroAlarms","MASeverityLevel","CCAlarms","CCSeverityLevel","reeferFilterData","UnitEventDTTM","refreshRevisionNumConfirm","closeRevisionConfirmation","groupRowRendererParams","innerRenderer","groupRowInnerRenderer","refreshRevisionNum","suppressDragLeaveHidesColumns","suppressMakeColumnVisibleAfterUnGroup","groupDisplayType","onColumnRowGroupChanged","onColumnPinned","debounce","getMainMenuItems","defaultGroupOrderComparator","nodeA","nodeB","AnodeIsNumber","Number","BnodeIsNumber","AnodeIsString","String","BnodeIsString","isNaN","localeCompare","numberFormat","format","accentedSort","allowContextMenuWithControlKey","downloadPTReport","printPTReport","downloadTWReport","printTWReport","temp","tripStatus","connect","userDetails","home","ReeferStatusState","gensetAssetSensors","ReeferAndDryAndChassisStatusEnum","GensetStatusGrid","getGensetContextMenuItems","assetNumber","gensetContextMenuClick","checkMenuItemDisabledForGenset","checkMenuItemVisibilityGT1030","propsGensetData","DryInGeofence","DryOutGeofence","filterGensetStatusGrid","refreshGensetStatusGridForNewEvents","GensetSearchFilter","gensetIdSelected","GensetCurrentConditionId","gensetmapAction","gensethistoryAction","gensetcommandstatusAction","gensetdetailsAction","gensetdetailsCopyAction","GensetHistoryGrid","ApplyGensetHistorySearch","gensetHistoryEnabled","gensetdetails","gensetMapAction","requestGensetAdvanceSearch","selectedGensetData","onCancelGensetStatusGrid","flag","setRowIndex","rowId","gensetCurrentConditionId","NewrowNode","HideAllContextMenus","divmenuwidth","relativeY","relativeX","halfheight","unbind","reSized","isResizeClicked","on","GensetFormatters","gensetSwitchFormatterImgForFilter","gensetSwitchSorting","GensetCellRender","gensetSwitchFormatterImg","gensetRunningFormatterForFilter","EngineSorting","gensetRunningFormatter","vesselCdSorting","stringTypeValueFormatter","stringTypeFormatterFor3P","oemTypeFormatterGensetForFilter","OEMTypeValueFormatter","stringTypeSorting","ModelType","FormType","GensetTankSize","YearFromdateTypeFormatterForFilter","ManufactureYearSorting","YearFromdateTypeFormatter","stringTypeFormatter","FenceName","FenceNameID","BackendGeofenceName","BackendGeofenceNameID","floatTypeSorting","GeofenceDefinitionRevision","floatTypeValueFormatter","GPSHDOP","GPSfloatTypeValueFormatter","GPSSatelliteCount","Speed","gensetSpeedValueFormatter","City","Country","ZipCode","ExtBattVoltage","BattVoltageFormatterForFilter","FuelSensorQuickFilterFormatter","fuelSensorTrace","FuelSensorSorting","FuelLevelGalQuickFilterFormatter","fillLevelGalTrace","FuelLevelGalSorting","FuelLevelQuickFilterFormatter","FuelLevelSorting","fillLevelTrace","ReeferStateDsc","YesNoValueSorting","HasOilPressureSwitch","YesNoConverterForFilter","FirmwareVersion","MSISDN","SIM_IMSI","ICCID","EUI","MNC","TowerLocalizationAreaCode","TowerBaseStationID","validateFieldName","GensetSwitchFormatterGrouping","EngineSortingFormatterGrouping","FuelLevelGalGrouping","FillLevelTraceGrouping","FuelSensorGrouping","SensorGrouping","IsValid","gensetData","GridGensetStatusToolBar","ResetMapPushpins","gensetSearchData","AllGenset","ReportingSWOn","LastReportedSWOn","ReportingSWOff","LastReportedSWOff","IgnitionOn","IsReportingDelay","gensetFilterData","onSortChanged","onSort","onRefreshGensetStatusGrid","onCancelRefreshGensetStatusGrid","currentGenset","currentGensetId","GridDryHistoryToolBar","isMapEnable","mapEnabled","BindDryTracePushpins","dataArray","selectedDataItems","BindMapPushPin","getDryHistoryContextMenuItems","dCHistoryID","DCHistoryID","initHistoryFilters","currentUtcDttm","moment","toUTCString","toISOString","propsReeferFormatterData","PreferenceDTTM","DateTimeFormatter","dryHistoryFilter","DryHistoryFilter","DeviceNumber","EventCode","renderDateFields","enableDisableSearchButton","HistoryGridPreferenceColumns","isEnable","selectedDryData","ReeferMap","UpdateIsLocationEstimated","selectedRowsWithCoords","GPSCoords","DisplayDrySelectedPushpin","rowCurrentData","Latitude","Longitude","currentpage","paginationGetCurrentPage","rowindex","paginationGetPageSize","rowNode","previousCell","previousCellDef","suggestedNextCell","nextCellDef","currentDttm","fromDttm","toDttm","endOf","message","ValidateHistoryDates","fromDate","toDate","date","currentDateFilters","currenttoDTTM","toDTTM","fromDTTM","startOf","modifiedDttm","setDate","DryBatteryStatusFormatterGrouping","DryPwrStateFormatterGrouping","Door1FormatterGrouping","DryDoorBattPctFormatterGrouping","GravityVectorValueFormatterforGroup","LuxValueFormatterforGroup","selected","maxDate","FromDateChange","timeInputLabel","showYearDropdown","yearDropdownItemNumber","dateFormat","showTimeInput","ToDateChange","getDryHistoryDetails","onPaginationPageLoaded","navigateToNextCell","isFromMap","isHistoryEnabled","EventCD","HistoryFilters","validateDryStatusHistoryMismatch","dryIdForHeader","SelectCurrentNode","GridChassisHistoryToolBar","chassisAssetSensors","ChassisHistoryGrid","BindChassisTracePushpins","getChassisHistoryContextMenuItems","chassisHistoryID","ChassisHistoryID","chassisHistoryFilter","ChassisHistoryFilter","ChassisFormatter","ChassisCellRenderer","BatteryStatusFormatter","StringTypeFormatter","DeviceBattery","DeviceBatteryFormatterForFilter","ChassisGPSHDOP","ChassisGPSSatelliteCount","TyrePressure","selectedChassisData","DisplayChassisSelectedPushpin","ChassisPwrStateFormatterGrouping","ChassisBatteryStatusFormatterGrouping","getChassisHistoryDetails","ChassisStatusGrid","validateChassisStatusHistoryMismatch","chassisIdForHeader","setDefaultFilters","RowData","renderDeviceResetGrid","ReeferCommandsGrid","submitTemperatureCommands","CommandName","forwardCommandParams","TempValue","OtherValue","IsCmdSendViaVC","VesselInfo","commandName","submitDeviceResetCommand","DeviceHardReset","submitDeviceHardResetCommand","BindGensetTracePushpins","getGensetHistoryContextMenuItems","gensetHistoryID","GensetHistoryID","gensetHistoryFilter","GensetHistoryFilter","DisplayGensetSelectedPushpin","openGensetMonitorGraph","getGensetHistoryDetails","validateGensetStatusHistoryMismatch","gensetIdForHeader","GridDropdownCCProfileRenderer","isEditMode","isDisabled","ProfileName","refCargoCareProfiles","onProfileNameChange","cp","GridDropdownTempUnitRenderer","refTempUnitData","onTempUnitChange","tempUnits","obj","TemperatureUnitCd","TemperatureUnitDesc","BookedTemperatureUnitChange","unit","GridDropdownThirdPartyRenderer","refThirdParty","onThirdPartyNameChange","thirdpartyUnits","ThirdPartyCd","ThirdPartyAccessChange","tP","ThirdPartyName","GridButtonCACTClearRenderer","column","setDataValue","clearCAValues","GridDropdownHVCRenderer","HVFlagChange","isValidRange","GridValidateNumericCellEditorRenderer","inputRef","isValid","validationCondition","numregex","RegExp","NuValue","current","focus","getValue","preloader","ref","maxLength","NuValueChange","errorMessage","isValidStr","GridValidateStringCellEditorRenderer","strvalue","strcellValueChange","GridValidateStrTextAreaCellEditorRenderer","cols","GridValidateStringMultiTextCellEditorRenderer","aria-multiline","isValidLength","GridValidateWholeNumberCellEditorRenderer","wholeNumber","wholeNumChange","isFromViewBooking","propsBookingReefers","editingId","isSavedButtonDisabled","editable","cellEditorParams","validation","cellEditor","cellEditorPopup","rowHeight","disassociaterowData","BookingViewData","getRowNodeId","context","componentParent","getCurrentlyEditingId","setCurrentlyEditingId","dropdownThirdParty","dropdownTempUnit","dropdownCCProfile","gridButtonCACTClearRenderer","gridDropdownHVCRenderer","gridValidateNumericCellEditorRenderer","gridValidateStringCellEditorRenderer","gridValidateStrTextAreaCellEditorRenderer","gridValidateWholeNumberCellEditorRenderer","gridValidateStringMultiTextCellEditorRenderer","gridCommonData","reeferIds","tempBookedTemperature","tempBookedTemperatureUnit","tempBookedTemperatureMin","tempBookedTemperatureMax","tempHumiditySetPoint","tempVentSettings","tempGensetId","tempCommodityName","tempSTCC","tempHSCode","tempServiceLevel","tempHighValueCargo","tempCargoCareProfile","tempaccCode","tempCTRequire","tempCARequire","tempCTDays","tempCTMaxTemperature","tempPostCTTemperature","tempPostCTTemperatureRange","tempPostCTVentSettings","tempO2SetPoint","tempO2Min","tempO2Max","tempCO2SetPoint","tempCO2Min","tempCO2Max","tempCAGName","UnitMasterId","CustomerAccessGroupIdsStr","refId","splittedReefer","datarow","updateBookingGridDimensions","createColumnDefsForCACTNotRequired","createColumnDefsForCTOnly","createColumnDefsForCAOnly","createColumnDefsForCACTDiffer","createColumnDefsForCACTNotRequiredForView","createColumnDefsForCTOnlyForView","createColumnDefsForCAOnlyForView","createColumnDefsForCACTDifferForView","PrepareDataSetForGrid","PrepareDataSetForViewGrid","PrepareDataSetForCommonDataGrid","modifiedreeferIds","unitMasterReefersData","bk","unitmaster","modefiedreefersonly","originalIds","disList","diffReefersModified","difference","diffReefersOriginal","diffreefersTotal","difrefId","disAcc","itm","modefiedDisData","dList","modefiedRowData","cd","enableFillHandle","suppressMovable","commoditystringTypeFormatter","StringTypeCommodityValueFormatter","cellClassRules","TemperatureUnitFormatter","isHighValueCargoFormatter","CargoCareProfileFormatter","suppressContextMenu","rowdata","fillHandleDirection","enterMovesDown","enterMovesDownAfterEdit","viewPopup","UpdateButtonStyle","ViewBooking","UpdateCommonDataFromGridData","getCellEditorInstances","GridReeferStatusToolBar","selectedheaderName","isClearable","AllColumns","PrevGroupId","PrevColId","IsEnableServerSide","defaultKeys","setColumnGroupOpened","getColumnDef","refreshHeader","groupId","ensureColumnVisible","Alldisplayedcolumns","Selectedcolumns","Columns","ColumnChange","modelDialogGridPreferenceHtml","Displayedcolumns","getAllDisplayedColumnGroups","bv","GridChassisStatusToolBar","ReeferAndGensetAndDryStatusEnum","getChassisContextMenuItems","chassisCurrentConditionID","chassisContextMenuClick","checkMenuItemDisabledForChassis","propsChassisData","filterChassisStatusGrid","chassismapAction","chassishistoryAction","chassiscommandstatusAction","chassisdetailsAction","chassisdetailsCopyAction","refreshChassisStatusGridForNewEvents","ChassisSearchFilter","chassisIdSelected","ChassisCurrentConditionID","ApplyChassisHistorySearch","chassisHistoryEnabled","chassisdetails","chassisMapAction","requestChassisAdvanceSearch","chassisData","chassisSearchData","AllChassis","PwrInGeofence","PwrOutGeofence","NotPwrInGeofence","NotPwrOutGeofence","InGeofence","ChassisStatusToggleButtonsFilter","onRefreshChassisStatusGrid","onCancelRefreshChassisStatusGrid","unloadedState","userName","passWord","loggedInUserData","reducers","incomingAction","Home","dryStatus","DryStatus","gensetStatus","GensetStatus","chassisStatus","ChassisStatus","preferenceSettings","PreferenceSettings","rcdStatus","RcdStatus","cargoCareSettingsData","AdminCargoCareSettings","subscriptionManager","SubscriptionManager","vesselStatus","VesselStatus","deploymentStatus","DeploymentStatus","configureStore","initialState","middleware","thunk","routerMiddleware","persistConfig","timeout","storage","whitelist","transforms","in","user","compressData","out","decompressData","LZString","compressToBase64","compressedData","decompressFromBase64","rootReducer","combineReducers","router","arg","LOCATION_CHANGE","payload","routerReducer","persistedReducer","persistReducer","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","store","createStore","compose","applyMiddleware","persistStore","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","error","GuestLayout","ClosePopup","pointerEvents","animatedloader","alt","WithoutMenu","AuthorizedLayout","initialize","BingMapsKey","NavMenu","WithMenu","packageJson","PrivateRoute","Component","component","Layout","layout","Path","path","rest","meta","latestDate","momLatestDateTime","momCurrentDateTime","isAfter","buildDateGreaterThan","buildDate","caches","keys","names","delete","reload","isLoginPath","setItem","isNullOrUndefined","to","render","ResetPasswordWindow","ResetPasswordFields","UserName","resetpasswordFilters","OldPassword","NewPassword","ConfirmPassword","disableResetWindow","disableResetPassword","OldPasswordChange","NewPasswordChange","ConfirmPasswordChange","closeReset","SavePassword","ResetPassword","Username","data-backdrop","UserLogin","Password","IsLoggedIn","LoginAttempts","IsAccountLocked","showResetPasswordComponent","renderResetPasswordHtml","userid","userPassword","hasClass","querySelector","is","uname","cookie","expires","loginRequest","scopes","AzurereApiclientId","clientConfig","auth","clientId","AzureclientId","authority","Azureauthority","redirectUri","AzureredirectUri","navigateToLoginRequestUrl","cache","cacheLocation","storeAuthStateInCookie","system","windowHashTimeout","iframeHashTimeout","loadFrameTimeout","popupTimeout","tokenAcquisitionTimeout","asyncPopups","msalInstance","PublicClientApplication","ssoSilent","accessTokenResponse","accessToken","idTokenClaims","given_name","handleOktaError","Errmsg","userDetailInfo","User","localStorage","clear","Customer","Rights","userInfo","preferenceDetails","TimeZoneCd","LogoUri","ShowSaveSearchOnLoad","ShowMapPinsWithRunState","CustomerFenceTypeCd","OKTASignInOverrideOption","AzureSignInOverrideOption","SSOSignInTypes","GravityVectorPrecision","AzureSignInOption","HandelInteractionErrorbyMicrosoft","errorCode","loginPopup","SetLoadStateAndProcess","EnableNativeLogin","strMFAJPMessage","origin","onOKMFA_JP","strMFAAUMessage","onOKMFA_AU","strMFAEUMessage","onOKMFA_EU","strMFACAMessage","onOKMFA_CA","strMFAUKMessage","onOKMFA_UK","strMFAUSMessage","onOKMFA_US","renderResetPasswordPage","cookieStore","JWTToken","Auth0_UserId","Auth0Region","Auth0_OrgId","URLpath","strRedirectMessage","onOKSubmitAllow","onOKSubmitDisAllow","queryTag","CoralogixRum","init","application","environment","public_key","coralogixDomain","version","labels","username","sessionRecordingConfig","enable","autoStartSessionRecording","recordConsoleEvents","sessionRecordingSampleRate","removeItem","region","redirectPath","password","prop","keypress","divStyle","backgroundImage","logo2","OrbcommLogo11","UsernameChange","autoComplete","PasswordChange","handlePassword","for","ValidateUser","RedirectToForgotPassword","SignInWithAzureAD","SignIn","InitAuth","baseUrl","handleButtonClick","copied","copyError","clipboardSupported","clipboard","color","fallback","FileNotFound","loadable","Unauthorized","ForgotPassword","ReeferDetails","MyProfile","GeofenceManagement","ReeferCommandStatus","UserSearch","m","GroupManagement","FleetManagement","AccessDenied","DeviceSearch","AssetSearch","BookingAssignEdit","NewBookingEdit","MenuBookingUnAssign","BookingUnAssign","GensetCommandStatusSearch","GensetDetails","DryCommandStatusSearch","DryDetails","ReeferSoftwareDistribute","RCDFirmwareDistribute","GeofenceDistribute","FileRepository","ReeferSoftwareFile","RcdFirmwareFile","GeofenceFile","GensetHistory","GensetMap","ManageGenset","ManageDry","ManageChassis","ManageReefer","DwellTimeReeferReport","DryHistory","DryMap","ReeferHistory","RcdHistory","DeploymentDetails","DeploymentStatistics","PowerOnOffReport","DwellTimeReport","GravityVectorReport","FuelGainReport","FuelLossReport","ShorePowerReport","EngineHourReport","DwellTimeDryReport","FeedBack","UserGuide","ReleaseNotes","OktaOINConfigGuide","ContactUs","ChassisHistory","ChassisMap","ChassisDetails","CommandManagement","OEMCustomerManager","routes","exact","useOktaAuth","oktaAuth","authState","useState","setUserInfo","hideWelcomeInfo","sethideWelcomeInfo","rightsInfo","setrightsInfo","useHistory","useEffect","isAuthenticated","getUser","info","TemplateUrl","requestHeaders","Headers","append","email","getAccessToken","signInWithRedirect","OktaLogout","OktaSecuredRoute","oktabaseURI","oauthHomePath","lastTagName","pop","ValidOAuthKeyWords","OktaApp","restoreOriginalUri","_oktaAuth","originalUri","a","async","OktaRedirectHome","LoginCallback","OktaSecureHome","CustomNavigationClient","relativePath","noHistory","NavigationClient","AzureADGuestLayout","AzureADAuthorizedLayout","Azuresignout","AzureADRoutes","AzureADUserLogin","AzureApp","instance","navigationClient","setNavigationClient","useMsal","useIsAuthenticated","redirectInitiated","setRedirectInitiated","signindisallowed","setSignindisallowed","signinError","setSigninError","signinDataError","setSigninDataError","signinDataErrorMsg","setSigninDataErrorMsg","handleRedirectPromise","tokenResponse","loginRedirect","AzureADRedirectLogin","AzureADRedirectApp","OktatoRCRedirect","OktaNoAccount","Auth0ProviderWithHistoryEU","oAuthconfig","configJson","OAuthAudience","domain","OAuthDomain_EU","OAuthClientId_EU","audience","OAuthAudience_EU","authorizationParams","redirect_uri","onRedirectCallback","appState","returnTo","Auth0ProviderWithHistoryUS","OAuthDomain_US","OAuthClientId_US","OAuthAudience_US","Auth0ProviderWithHistoryJP","OAuthDomain_JP","OAuthClientId_JP","OAuthAudience_JP","Auth0ProviderWithHistoryUK","OAuthDomain_UK","OAuthClientId_UK","OAuthAudience_UK","Auth0ProviderWithHistoryAU","OAuthDomain_AU","OAuthClientId_AU","OAuthAudience_AU","Auth0ProviderWithHistoryCA","OAuthDomain_CA","OAuthClientId_CA","OAuthAudience_CA","Loading","ReeferSettings","AuthOProtectedRoute","WrappedComponent","withAuthenticationRequired","onRedirecting","LoginOauthEU","useAuth0","loginWithRedirect","logout","prompt","AuthOUserProfile","getAccessTokenSilently","AuthOUserLoginProcess","Fragment","OAuthEUApp","LoginOauthUS","OAuthUSApp","LoginOauthJP","OAuthJPApp","LoginOauthUK","OAuthUKApp","LoginOauthAU","OAuthAUApp","LoginOauthCA","OAuthCAApp","validKeyWords","getElementsByTagName","getAttribute","createBrowserHistory","basename","ua","userAgent","msie","edge","detectIE","ReactDOM","Chromepng","Edgepng","Firefoxpng","keyWord","fromISS","substr","Oktasigninoption","OktaAuth","issuer","Issuer","Client_id","tokenManager","storageManager","token","storageType","storageTypes","transaction","Urlpath","purge","getAllAccounts","setActiveAccount","getActiveAccount","enableAccountStorageEvents","accounts","addEventCallback","eventType","EventType","LOGIN_SUCCESS","account","RoutesModule","initialReduxState","URL","process","contentType","get","status","unregister","checkValidServiceWorker","registerServiceWorker","EmailControl","clearEmailFiltersGenset","SendmailExportParent","SendmailExport","oemType","commandType","RefCommandSupports","RefReeferConfigTypes","resultReeferConfigType","ReeferConfigTypeCd","resultReeferCommandType","ReeferConfigTypeID","ReeferConfigTypeId","CommandTypeCd","IsActive","CommandTypeCD","resultReeferCommandTypeSubList","validateAssociation","ValidCount","validateObject","OEMTypeCdCount","Starcoolcount","CarrierCount","ThermokingCount","TKReceiverCount","UnknownCount","MP4Count","CT3000","RCU","CT5000","CT4000","CT3100","CT3500","TripLINK","DeviceTypeCdCount","CT3600","IsValidCount","strFirstTwo","SoftwareRevision","strSoftwarehex","number","ccAlertData","propsdata","finalList","iList","almCode","alarmDescriptions","HighCC","MediumCC","LowCC","GetAlarmDescription","formatters","dateTypeSorting","PTRDateTime","DataLoggerDtm","ModifiedDTTM","R_EventDTTM","R_ModifiedDTTM","CreatedDTTM","CreateDTTM","StatusDate","SubmittedOn","EndDate","scheduledCreatedDTTM","StartDate","LastPreTripDTTM","TTL","GPSDTTM","ExpirationTime","EarliestDepartureDtm","ArrivalDtm","TWTime","DLEventDTTM","DoorEventDtm","Door1EventDttm","InsertedDttm","UpdatedDttm","TripStart","TripEnd","CTTime","dateTypeFormatterGrouping","Data","dateTypeFormatterR_EventDTTMForFilter","dateTypeFormatterR_ModifiedDTTMForFilter","dateTypeFormatterPTRDateTimeForFilter","dateTypeFormatterTWTimeForFilter","dateTypeFormatterforExcel","dateTypeFormatterforCopy","dateTypeFormatter12H","GensetSwitchFormatterGroupingExcel","gensetSwitchFormatterForExcel","gensetRunningFormatterforExcel","GensetRunning","EngFormatterforExcel","floatTypeFormatter","AlarmDescriptionFormatter","lstAlarms","spanElement","innerText","AlarmSeriesTypeCD","anchorElement","multiplier","pow","round","GPSfloatTypeFormatter","GPSfloatTypeFormatterForExcel","GPSHDOPTypeFormatterForExcel","GPSAcctypeFormatterForExcel","GPSSatCountTypeFormatterForExcel","BattVoltageFormatter","DigitalSensorFormatterForExcel","DigitalSensorGroupingForExcel","BattVoltageSortingGrouping","DoorBattPctSortingGrouping","ReeferBattPctSortingGrouping","deviceType","BatteryVoltage","DoorSensorBatteryVoltage","lstCoordinatePoints","lat","long","image","rcdFirmwareFormatter","RCDFirmwareVersion","deviceFirmwareFormatter","firmwareRev","deviceFirmwareFormatterForExcel","FirmwareRev","tempUnitCd","TempUnit","strlstValues","tempValue","EvaporatorExpansionValveOpeningSorting","EvaporatorExpansionValveOpening","SuctionModulationValveOpeningSorting","SuctionModulationValveOpening","ControlledAtmosphereModeSorting","ThreePhaseCurrentSorting","ThreePhaseCurrent","TotalCurrentDraw","DepartingVVC","BKVV","ArrivingVVC","PTIType","ACTMode","ColdTreatmentState","VesselID","VoyageID","PortOfDeparture","PortOfDestination","Bay","Row","Tier","OEMModel","EventDescription","GeofenceName","ServerGeofenceName","Geofence","ServerGeofence","Address","Zip","TripWiseStatusDescription","PTIState","ControllerSerialNumber","ControllerTypeSetting","FreshAirType","RCDBootloaderVersion","RCDMeshFirmwareVersion","DefrostInterval","PowerMeter","GeofenceRevisionNum","AssetState","DeploymentName","DeploymentTypeName","CreatedBy","ModifiedBy","FileName","TagName","OEMDescription","OemModelDescription","Created","Compression","GeofenceCategoryDsc","FullName","Domain","AssignedGroup","GroupType","DLParam1","DLParam2","DLParam3","DLParam4","DLParam5","CellNetGeneration","PersonID","DLEventMasterID","EventNotes","ProfileCode","ProfileCodeDescription","InsertedBy","UpdatedBy","DeviceTemp","InsideTemp","BKPOR","BKPOL","BKPOD","BKDEL","DimiRemainTerm","DimiStartAfter","XAxis","YAxis","ZAxis","Illumination","EvaporatorFanSpeedControl","BulbMode","BatteryMode","deviceTypeCd","GPSLastLock","minutes","GeofenceCategoryCd","GroupChat","HasDoorSensor","Door1OpenChassis","bulletcommand","AssetStateActive","AssetStateDisconnected","AssetStateRetired","BatteryIndicator","DualColorBattery","batt","Power","DevicePowerSourceCd","NotRunning","ImgPending1","ImgWarning1","ImgSuccess1","AssetType","RSSI","RSSIUNK","RSSI1","RSSI2","RSSI3","RSSI4","RSSI5","returnValue","CommentExists","High","Medium","Low","deviationFlg","arrList","cLogStatusvalue","TripInprogress","TripCompletedDeviation","TripCompleted","TripProblemetic","TripPending","TripDeleted","TripCancelDeviation","TripCancel","HighALM","MediumALM","Alerts","_alarmsList","AlertCD","_alarmDesc","AlertDsc","childrenAfterFilter","Humidity","CondenserPressure","rcdPwrSource","RcdPowerSourceCd","Status","UnknownStatus","ErrorStatus","PendingStatus","IssuedStatus","ExpiredStatus","CancelStatus","SucessStatus","AcceptedStatus","RejectedStatus","DiscardedStatus","RetryStatus","AcceptedByBusyRCDStatus","AwaitingPrerequisites","CancellationRequest","SendToVC","ValidationPendingStatus","UndeliverableStatus","qualifier","Yes","No","HasReefer","colvalue","hasReefer","StateCd","IsDeployed","FilerepositoryActionCD","timeZoneCd","Door1Open","alertsList","alertDescription","lastIndexOf","TripWiseExpiration","CTDuration","CTRemainingTime","AirPumpRunHours","CARunHours","CASoftwareRevision","CompressorRunHours","TemperatureUnit","NormalCC","isCargocare","minutesVal","hours","seconds","GPSLatitude","GPSLongitude","currentValue1","currentValue2","currentValue3","phases","ReeferOemTypeCd","TWState","DimiMode","DimiResultTerm","HasFuelSensor","FuelLevelQualifier","FuelLevelQualifierDesc","FuelLevel","FractionDisplay","FuelLevelPct","coordinates","lstCoordinates","ManufacturedDate","sensorDataFormatterforExcel","TemperatureFormatterforExcel","TemperatureFormatterForDeviceTemp","stringTypeFormatterChildFormsForCopy","CommentExistsforExcel","YesNoConverterforExcel","GetOEMTypeDescription","BattVoltageFormatterforExcel","GuestReeferModeFormatterForExcel","SpeedConverterforExcel","rcdPowerSourceFormatterforExcel","RunStateFormatterGroupingForExcel","statusIndicatorforALMforExcel","statusIndicatorforALRforExcel","isOnVesselFormatterChildForms","secondsToTimeConverterForExcel","AlarmListFormatterforExcel","TemperatureFormatterForBookingforExcel","Current3PhaseFormatterforExcel","GetFileRepositoryActionDesc","fenceTypeFormatterForExcel","dryPwrStateFormatterForExcel","BatteryStatus","ChassisBatteryStatusFormatterForExcel","BrakeSignalFormatterForExcel","TripWiseExpirationFormatterforExcel","stringTypeFormatterFor3PExcel","tripWiseFormatterForExcel","pwrStateFormatterChassisforExcel","LoadedFormatterForExcel","RSSIFormatterGroupingForExcel","GPSCoordsFormatterForGrid","isFuelinfo","FillLevelTraceFormatterforExcel","isFuelinfo2","FuelSensorTraceFormatterforExcel","YearFromdateTypeFormatterForExcelNew","AssetTypeFormatterForExcel","PTIStateforExcel","IsCargoCare","CargoCareFormatterforExcel","DoorFormatterExcel","HumiditySettingFormatterforExcel","ControlledAtmosphereModeforExcel","SuctionModulationValveOpeningQualifier","SuctionModulationValveOpeningData","sensorDataOpenSucFormatterForExcel","sensorDataPCondFormatterExcel","EEVData","sensorDataOpenExpFormatterExcel","isFuelinfo3","FillLevelGalTraceFormatterforExcel","isFuelinfo4","ispwrStateFormatter","pwrStateFormatterforExcel","door1ChassisStateFormatter","DoorFormatterChassisforExcel","HumiditySetpointForExcel","ChassisPWR","commandStatus","TripStatusCdAndDFlag","sensorcolumn","humiditySetpointStatus","func","wait","args","arguments","later","apply","clearTimeout","ReeferBatteryPct","TempBooking","methodResult","bookingDesc","onSuggestionsFetchRequestedforArrvessel","ArrsuggestionsVesselId","getArrvesselNameSuggestions","onSuggestionsClearRequestedforArrvessel","onChangeArrVesselId","ArrsuggestionsVoyage","getArrvoyageNameSuggestions","onChangArrcall","onSuggestionsFetchRequestedforArrvoyage","ArrvoyageNameSuggestions","onSuggestionsFetchRequestedforArrcall","ArrsuggestionsCalls","ArrcallSuggestions","onSuggestionsClearRequestedforArrvoyage","onSuggestionsClearRequestedforArrcall","onChangeArrvoyage","getArrcallSuggestions","onChangeBookingNumber","BookingInfoDetails","isfound","ValidateEditBooking","suggestionsBookingNumber","BookingDesc","BookingReefersDetails","LifecycleCd","departingVVC","depVoyage","depCall","arrivingVVC","arrVoyage","arrCall","VoyageVesselCd","BookingReefersData","bookingItem","CCProfileName","BookedTemperatureQualifier","HumiditySetpoint","Commodity","VentSetting","HighValueFlag","PostCTTemperatureDeviation","PostCTVentSetting","EditPopupMessage","CopyData","vesselHasVoyageCalls","selectedVessel","VoyagesHaveCalls","DepVVC","ArrVVC","OnSubmitVVCValidations","voyagesHaveCalls","PrevDepartingVoyage","PrevDepartingCall","PrevArrivalVoyage","PrevArrivalCall","submitVVCInputData","CurrentDepVVC","CurrentArrVVC","ChosenDepVVC","ChosenArrVVC","IsPromptMessage","ResultMessage","SaveUserInputToState","PromptId","closeUserConfirmation","bookingSystem","EditBooking","ReeferInfoDetails","UpdateBookingType","renderBookingData","CSSdisabled","ArrVoyagedisabled","ArrCalldisabled","FenceIdListinputPropsforArrvessel","FenceIdListinputPropsforArrvoyage","FenceIdListinputPropsforArrcall","BookingNumberChange","readOnly","GetBookingData","CopyBookingNumberChange","CopyBookingData","ShipperChange","VesselCodeChange","VoyageNumberChange","ShipperCodeChange","ETDDateChange","ConsigneeChange","ETADateChange","ContractPartyChange","PORChange","AgentChange","POLChange","ForwarderChange","PODChange","ConsolidationChange","DELChange","NotifyChange","BLNumberChange","BLCustomerChange","getSuggestionArrVesselValue","renderSuggestionArrVesselvalue","getSuggestionArrvoyageValue","renderSuggestionArrvoyagevalue","getSuggestionArrcallValue","renderSuggestionArrcallvalue","HasNonPrintableASCII","ValidateBooking","newBookingSystem","eventmasteridForAssign","eventmasteridforupdate","RcdmasterId","reeferID","Unitmasterid","EventDtm","IsEdit","UnassignMode","IsBookingModified","IsCustomerAccessModified","OperationalLevel","BookingInfo","AssignBookingSystem","BookingSystem","IsCustomerAccessHide","UnassignOption","lbl3rdPartyDisabled","lblBookingDisabled","lblBothDisabled","submitBookingAction","submitAssignBooking","checkedGroups","submitAssignBookingAfterPrompt","infoMessage","showConfirmBoxwith3options","setBookinglevel","setReeferlevel","submitAssignBookingAfterPromptMessage","Temperaturechange","BookingTemperatureChange","submitAssignBookingConfirm","UnAssignBookingSystem","fetchFaultRetry","IsAssignTo3P","eventDescription","EventCd","bindUnassignData","getRefTemperatureUnit","ValidateBookingID","_lststrValue","temperatureCd","updateUnassginModel","UnassignModeChange","data-toggle","submitUnAssignCommand","EditBookingSystem","bindEditData","BookedTemperatureChange","submitBookingDetails","ReeferDetailsHistory","filterSetForRCD","rowDataForRCD","HistoryFiltersForRCD","RCDMasterId","emailHtml","GridToolBarHtml","ReeferId","RcdId","reeferHistoryFilter","statusData","reeferDetailsData","reeferHistoryData","ApplyReeferHistorySearch","bindGridToolBar","renderGridToolBar","ToDateRCD","FromDateRCD","rcdHistoryData","IsReefer","bindReeferHistoryData","bindRcdHistoryData","updateReeferCommandsDimensions","createColumnDefsForDevice","GridPreferenceControl","HoldHistoryDates","HoldRCDHistoryDates","ValidateRcdHistoryDates","data1","HoldHistoryData","runStateFormatter","pwrStateFormatter","oemTypeFormatter","secondsToTimeConverter","YesNoConverter","sensorDataFormatter","TemperatureFormatter","statusIndicatorWithDescriptionForALM","preTripFormatter","html","parentEventId","gridName","InitializeExportParentToXLSX","GridToolBar","RcdFromDateChange","RcdToDateChange","onReeferGridReady","onCellContextMenu","onRcdGridReady","onRCDSelectionChanged","getRCDContextMenuItems","exportToExcel","sendEmail","ReeferDetailsCommandStatus","submitted","checkMenuItemDisableForCommandStatus","initDetailsCommandStatusFilters","ForwardCommandfilterSet","ForwardCommandParams","CommandStatusFilters","UserList","CommandStatus","CommandTypes","objCommandStatusFilters","ReeferCommandStatusFilters","RcdIds","CommandStatusId","reeferCommandsData","bindReeferCommandsData","ApplyCommandStatusFilter","HoldCommandHistoryDates","reeferdetailsCancelAction","Result","cancelCommandAction","HoldCommandHistoryData","commandStatusSorting","commandLogStatusFormatter","ReeferIdchange","RcdIdchange","CommandFromDateChange","Statuschange","CommandStatusID","Userchange","CommandTypechange","CommandToDateChange","ClearCommandStatusFilter","GridToolBarControl","checkVisibility","tempFormat","tripWISEReport","restricted","CurrentStatus","TripWISEreport","unitDetails","modelTitleReport","preTripReport","isDevice","DetailsMap","InitDetailsMap","LoadDetailsMap","formatGPSLatLong","isReeferOrRCD","GetCurrentDetails","aria-multiselectable","aria-expanded","aria-controls","ReeferACPowerLevel","DetailFormatters","GPSLatitudeFormatterForReefer","StringFormater","GPSLongitudeFormatterForReefer","reeferSecondsToTimeConverter","RSSIFormatter","RCDPowerSourceCd","LineFrequencyFormatter","LineFrequency","LineFrequencyQualifier","ControllerTypeCd","DateTypeFormatter","reeferFormatters","DisplaySerNum","AtmContSerNum","USDA1Temp","PwrMeasureSerNum","AlarmListFormatter","AlarmsList","USDA2Temp","HumSensorSerNum","IsReeferCommunicationEstablished","USDA3Temp","O2SensorSerNum","Cargo4Temp","CO2SensorSerNum","FreqConverterSerNum","OEMTypeFormatterDetail","SensorDataFormatter","OEMModelDesc","ControllerDesc","ReturnTemp2","ModelNumberFormatter","SupplyTemp2","BooleanConverter","ReeferClockInSync","ReturnTemp1","VentPositionSensorCMH","TripName","SupplyTemp1","TripDefStatusDsc","AmbientTemp","CompositeSuctionPressure","CompressorSuctionTemp","DischargePressure","TWDateTime","data-bs-backdrop","TripWiseResultDescription","tripWISEStatusFormatter","popUpReport","PTResult","Comments","ReeferDetailsFilter","rcdId","formattersData","fromCommandDate","toCommandDate","UnitDetailsUI","reeferDetailsSearch","enableTab","DataSource","preTripData","tabContentHtml","searchInputValue","fromDateHistory","toDateHistory","fromDateCommandHistory","toDateCommandHistory","fromRCDDateHistory","toRCDDateHistory","GetReeferDetailsSearchData","GetTempColumnFormatter","GetTimeZoneFormatter","reeferSearchFilters","childRequest","childData","ShowFirstTab","renderTabContentHtml","renderTabContent","tabNumber","UnitDetails","ClearReeferDetails","IsValid3P","AggRestricted","AggApplied","PreTripReport","ApplySearch","rights","vesseltasks","cargocaretasks","commands","managerealtimedl","pretrip","queryreeferinventory","defrost","trip","booking","dflag","DeviationFlg","csflag","ControllerSerialNumberChgFlag","isAssignCargo","liassignvslRequiresRight","IsOnVessel","TripStatusCd","enableCommands","Reeferchange","ApplyReeferDetailsSearch","commandDropdown","aria-haspopup","aria-selected","ReeferSwitchOn","IsReeferPhysicallyConnected","TripRouteWaypointId","TripNameAndStatus","RCDRfrComErr","OemModelID","ModelNumber","PretripTestStateID","ControlModeID","CustCd3P","CustName3P","OEParams","OverallResult","baplieColumns","BaplieFileDataFilter","vesselColumns","customerTypeCd","emptyBaplieData","VoyageCode","IsParsingSuccess","ReeferData","BaplieFileUpload","files","formValue","baplieData","formData","FormData","finalSubmit","refreshVesselData","closeBapliestate","onDrop","f","VesselIDChange","VoyageIDChange","PortOfDepartureChange","PortOfDestinationChange","uploadBaplieFile","onClickBackHandler","finishUpload","clearBaplieState","initialVesselState","VoyageId","VesselSearch","onVesselSuggestionsClearRequested","SuggestionsVessel","onVoyageSuggestionsClearRequested","SuggestionsVoyage","onDepartureSuggestionsClearRequested","SuggestionsDeparturePorts","onDestinationSuggestionsClearRequested","SuggestionsDestinationPorts","onVesselSuggestionsFetchRequested","getVesselSuggestions","onVoyageSuggestionsFetchRequested","getVoyageSuggestions","onDepartureSuggestionsFetchRequested","getDeparturePortSuggestions","onDestinationSuggestionsFetchRequested","getDestinationPortSuggestions","onChangeVessel","VesselValue","TargetId","onChangeVoyage","VoyageValue","onChangeDeparturePorts","DeparturePortValue","onChangeDestinationPorts","DestinationPortValue","vesselFilters","vesselData","inputType","finalArray","VesselIDList","VoyageIDList","PortOfDepartureList","PortOfDestinationList","vesselfilters","blur","bindingVesselStatusGrid","applyFilter","ClearBapieStateData","VesselInputProps","VoyageInputProps","DepartureInputProps","DestinationInputProps","clearFilter","clearBaplieFileData","getVesselContextMenuItems","vesselContextMenuClick","checkMenuItemDisabledForCommands","voyageList","requestEventMaster","requestVesselData","pinned","EventDescriptionFormattersOld","CommandTypeFormatter","requestVesselSearch","ExportAction","ExportSelectedRows","isDeviceTypeFound","isCT4Found","isST9100Present","IsGuest","tempArray","forEachNodeAfterFilterAndSort","selectNode","updateVesselStatusDimensions","dragElement","SendEmailControl","elmnt","pos1","pos2","pos3","pos4","dragMouseDown","clientX","clientY","onmouseup","closeDragElement","onmousemove","elementDrag","offsetTop","offsetLeft","onmousedown","checkVisibilityMultiple","clearSetPoint","onMouseOver","setCommandText","VesselStatusState","selectedCustomAttributes","modelYear","modelYearMin","modelYearMax","isFirefox","SelectedUserPreferenceId","selectedSearchParams","defaultSearch","IsFromLoadState","DefaultCheckBoxState","hasReefers","assetCount","showOem","showInvState","mathOperators","Operator","AdvanceSearch","GetSearchControls","cargoCareProfileRight","forIn","desc","IsDefaultSearchChange","IsDefaultSearch","assetTypes","loadAssetTypes","GetSelectedSearchControls","previousState","CustomAttributesHtml","selectedOperator","SerachState","SearchName","SelectedSearch","SearchNamesList","AssetTypes","SelectedSearchControls","DefaultSearchData","renderAttributesHtml","HasDry","HasGenset","HasChassis","GroupsRights","LoadUserPreferenceSearchNames","loadCargoCareProfiles","queryString","assetId","GetDefaultSearchParams","LoadGetAllAssetTypeData","defaultPreference","userPreferences","FillDefaultSearchParams","UserPreferenceId","DefaultSearch","loadDefaultSavedSearch","hideGlobalLoader","searchPreference","userPreference","BindCustomAttributesValues","searchName","GetDataForNewlySavedUserPreference","renderCustomAttributeHtml","inputName","updateInput","AttributeTypeCD","renderCustomAttributeDropDown","AttributeTypeEnumValsInfo","renderCustomAttributeTextBox","renderCustomAttributeMathOperatorTextBox","AttributeTypeNumericInfo","AttributeTypeInfo","inputControlName","customAttributeDropDownChange","atVal","AttributeTypeEnumValsID","ValueShortName","customAttributeTextChange","validationVal","validationStrObj","validationStr","MathOptionChange","customAttributeNumericTextChange","hasOwnProperty","updateTextInput","isFromMicroAlarmChart","onChangeDefaultSearch","SaveUserSearchConfirm","onCancelSaveDefaultSearch","onCancelSaveSearch","CompareExistSearchParams","performSearchOperation","isModified","getCustomAttributesDiff","obj1","obj2","Object","reduce","resultKeyIndex","ResetAssetsData","allSearchControls","selectedSearchControls","modefiedSearchControls","selectedCCP","Array","isArray","selectedCCPCodes","SendSearchLoadingIsInProgressToHome","ResetAllPushpins","clearHistoryGridHeaders","ClearReeferStatusGridData","ReeferHistoryGrid","ClearGensetStatusGridData","ClearDryStatusGridData","ClearChassisStatusGridData","userPrefId","PreferenceType","msg","ReloadPreferenceData","FillFilters","RefreshDefaultSearchData","objNewlySavedUserPreference","preferenceId","UserPreference","customAttributes","ClearCustomAttributesData","selectedCustomAttributesInfo","selectedParam","selectedValue","attributeType","operatorType","operatorValue","AlertMessage","ValidateNumaricValue","reeferIdForHeader","bindingReeferGensetDryChassisStatusGrid","renderSaveSearchControl","onDeleteSearchName","onCancelSearchName","performSearchOperationOnCancel","isDefault","readText","clipboardText","SetPasteContent","getData","searchNamesListOptions","searchNames","data-value","onCreateNewSavedSearch","deletepng","onDeleteConfirmation","assetTypesOptions","asset","selectedSearch","AssetChange","SearchNameOnchange","onDefaultCheck","renderSaveSearchDialog","ReeferIdschange","PastefromClipboard","RestoreDefaultSearch","fenceId","showGlobalLoader","selectedCCProfile","InitializeExportChildToXLSX","ExportToExcel","renderPingGrid","submitPingCommand","renderSetPointGrid","paramValue","lblDescription","tempChange","submitTempSetPoint","ConfirmationWindow","OkMethod","closePopUp","showWarning","OxygenWarning","no","yes","ConfirmationWindowOK","Title","ConfirmWindow","ReactDom","cssClass","BookingLevel","ReeferLevel","ConfirmationWindowwith3options","toggleSwitch","el","prevState","isHumidityEnable","HumValue","isDeHumidityEnable","renderHumiditySetPointGrid","checkHumiditySetPoint","humiditySetValue","humVal","renderDehumidityHtml","humChange","renderHumidityHtml","submitHumSetPoint","O2Value","renderO2SetPointGrid","o2Val","o2Change","ChangeO2andCo2Action","submitO2SetPoint","CO2Value","renderCo2SetPointGrid","co2Val","co2Change","submitCO2SetPoint","ValidState","renderChangeReeferIdGrid","IsPending","errorDescription","Tooltip","IsCT4Msg","reeferIdChange","submitReefer","renderChangeReportingIntervalGrid","selectedInterval","changeReportingIntervalAction","submitReportingInterval","renderDropDown","renderDropDownInterval","renderChangeDatalogIntervalGrid","DataLogIntervalchange","submitDataLogInterval","renderAssignPanidGrid","submitPanIDCommand","renderReebootReeferGrid","SubmitRebootReeferController","renderVerifyModelGrid","submitVerifyModelValidity","renderSyncReeferClock","submitSyncReeferClock","renderStartDeforstGrid","submitDeforst","DeforstInterval","IntervalDropdownValues","isInputBox","renderDeforstInterval","interval","selectedOem","refControllerTypes","filteredDaikinDataArray","controllerDesc","controllertype","filteredCarrierDataArray","onDeforstIntervalChange","IntervalDropdownChange","isLastTrip","isAllTrip","isDateRange","IsDCCSSupport","IsDCCSSupportCount","IsDLSupportCount","isDLReeferConnect","isDLStarView","isDLBoth","errorSubmit","startDate","toLocaleString","endDate","IsChecked","TempRecordCount","EventRecordCount","Emails","DownloadType","QueryType","DataDownload","FwdCmdResult","emailOptions","oemTypeCd","oemModel","isDLCRReeferConnect","isDLDCX","IsScopeVisible","scopeValue","IsDateRangeVisible","IsDateRangeDisabled","defaultDateRanageValue","scopeOptions","getEmails","getDeviceTypeValidation","renderTDDGrid","tDD","IsSekstant","Oemtype","OemModel","EventCount","errorCount","emailsEntered","EmailValidator","submitCommands","errSubMessage","FinalSubmit","ClearDownloadValues","UpdateOtherValue","FirmwareSeriesCapabilityList","FirmwareVersionCapabilityList","scopeOptionList","IsDCXSupport","IsReeferConnectSupport","IsDateRangeSupport","IsLastDaysSupport","IsLastestTripSupport","IsEntireLogSupport","IsVDCXSupport","IsVReeferConnectSupport","IsVDateRangeSupport","IsVLastDaysSupport","IsVLastestTripSupport","IsVEntireLogSupport","FWDescription","ShortName","LongName","FirmwareVersionType","DeviceTypeCD","FirmwareID","FirmwareSeriesId","versionCapabilityList","FirmwareId","versionCapabilityDCXSupport","FirmwareFeatureId","IsCapable","versionCapabilityRCSupport","versionCapabilityRange","versionCapabilityLastDays","versionCapabilityLastestTrip","versionCapabilityEntireLog","seriesCapabilityList","seriesCapabilityDCXSupport","seriesCapabilityRCSupport","seriesCapabilityRange","seriesCapabilityLastDays","seriesCapabilityLastestTrip","seriesCapabilityEntireLog","oldControllerTypes","versionCapabilityDCCSupport","seriesCapabilityDCCSupport","traditionalDownloadStartDate","traditionalDownloadEndDate","closeModel","DateRangedisabled","GroupTypeChange","now","startDateChange","endDateChange","handleSelectChange","allowCreate","showNewOptionAtTop","classNamePrefix","TempCountsChange","onBlur","EventCountChange","SCGroupTypeChange","ScopeChange","scopeOption","CarrierGroupTypeChange","submitDataDownloadCommand","performNoAction","performYesAction","TraditionalDownload","GetDataFromAPI","selectedData","refreshReeferDetailsData","refreshVesselStatusGrid","refreshReeferStatusGrid","removeIndicator","CommandValidator","statusIndicatorforALM","RefCommandStatus","renderGridToolBarHtml","submitStopPTICommand","geofenceChange","cmdFilters","getDataFromAPI","SuggestionsGeofenceNames","getGeofenceNameSuggestions","settingDates","cmdfilter","IsScheduledPreTrip","GeofenceID","GeofenceTagName","IsPreTripSubmitted","PreTripCmdFilters","lstAutoConfigParams","fwdCmdResult","CurrentCondition","IsError","IsTooltipVisisble","Command","IsscheduleTrip","RefCustSpecificCommandCnt","Msg","RefCustomerSpecificCommand","GeofenceNamesList","removeAttr","cmd","unitmasterids","cmdfilters","selectedGeo","validatePretripDates","unitMasterID","selectedReeferdata","fwdcmdresult","cmdpretripfliters","submitCommandAction","submitPreTripCommandConfirmation","validationParams","validationResult","validatePreTripGeofence","getObjectArray","GeofenceNameInputProps","scheduleTripSelected","commandFromDateChange","commandToDateChange","submitPreTripCommand","EmailValue","crazy","renderLastPretripGrid","emailID","submitLastPretripResult","SelectedInventory","renderQueryReeferInventory","selectedInventory","queryReeferInventoryChange","submitQueryReeferInventory","renderUpdateModel","modelNumber","submitModelConfiguration","ChangeReeferClockSyncSetting","SelectedParamValue","renderChangeReeferClockGrid","ParamValue","ReeferClockSyncchange","submitchangeReeferClockSyncSetting","SelectedConfigurationCmd","GuestReeferCmds","GuestReeferCmdValue","GuestReeferCmdSelectedValue","GuestReeferCmdDetails","renderGuestReeferCmdGrid","loadGuestReeferCmdData","GetGuestReeferConfigurationValue","reefersData","configurationValue","ConfigurationValue","ConfigurationValueDesc","cmdName","configCmdsOptions","GuestReeferCmdKey","ConfigurationCmdChange","submitGuestReeferCmd","AssetFilterSet","setAssetFilters","RefDeviceConfig","ConfigValue","Email","CustomerFriendlyName","Template1","Template2","Template3","Template4","Template5","Template6","Template7","Template8","Template9","Template10","AssetFilters","clearDeviceConfigData","renderChangeZigbeeGrid","getDeviceConfigurationsByCustomerId","deviceConfig","AutoConfigParams","DeviceConfigId","EmailIds","DeviceConfigurationChange","DeviceConfigurationID","EmailChange","autoConfig","submitAutoConfiguration","cancelEvent","GridToolBarPopups","Delete","setRowData","onCellClickedCancel","NoConfirmation","CancelAction","isPanelLoaded","emptySearchFilters","AllReefer_Count","Running_Count","Stopped_Count","MissedRunning_Count","MissedStopped_Count","AllMicroAlaram_Count","MASevere_Count","MAMinor_Count","AllCargoCare_Count","CCSevere_Count","CCMinor_Count","CCInformational_Count","reeferStatusFilters","setStatusFilters","searchFilter","isChecked","ClearReeferStatusFilters","data-bs-auto-close","ApplyStatusFilter","DryPWR","assetState","imageSrc","DBP0","DBP10","DBP20","DBP30","DBP40","DBP50","DBP60","DBP70","DBP80","DBP90","DBP100","Door1BattPct","BatteryPct","reeferDetailsMap","geoZonesLayer","detailsLayer","mapId","whenLoaded","Microsoft","Maps","Map","credentials","mapTypeId","MapTypeId","road","zoom","showMapTypeSelector","showZoomButtons","showLocateMeButton","Events","addHandler","getImageryId","UpdateFenceImage","latitude","longitude","Layer","setView","center","Location","getCenter","pushpinOptions","bingcenterSelected","anchor","Point","pushpin","Pushpin","layers","insert","entities","positionAccuracy","setZIndex","loc","loadModule","paths","SpatialMath","getRegularPolygon","DistanceUnits","Meters","polygon","Polygon","GridReeferHistoryToolBar","openTemperatureGraph","OpenTemperatureChart","getdata","prepareUpdateWithoutReefers","ProcessfirstCellOnlyRowIndex","exportDataAsExcel","columnGroups","allColumns","processGroupHeaderCallback","myGroupHeaderCallback","processHeaderCallback","myHeaderCallback","processRowGroupCallback","myRowGroupCallback","processCellCallback","myCellCallback","fileName","getFileName","GetExportFileName","sheetName","columnKeys","skipGroups","showMessageAndClosePopup","EngineSortingFormatterGroupingExcel","TemperatureFormatterExcelForDeviceTemp","PowerStateFormatterGroupingForExcel","AssetTypeGrouping","GeofenceTypeGrouping","FileStatusGrouping","GPSCoordsFormatterForExcel","CargoCareFormatterGroupingForExcel","DeviceDoorFormatterGrouping","rowGroupIndex","stringTypeFormatterChildFormsNew","GeofenceCoordinatesFormatterforExcel","DoorBattPctFormatterforExcel","runStateFormatterforExcel","YearFromdateTypeFormatterForExcel","isGensetRunning","isHumidity","CondenserPressureData","GPSCoordsFormatterGroupingForExcel","DeviceDoorFormatterExcel","Auth0MigratedYesNoConverterForExcel","getDisplayNameForColumnGroup","columnGroup","headerDisplayName","getColDef","TimeZoneFormatter","TemperatureHeaderFormatter","getGroupDisplayValueName","FuelLevelTierNumber","FractionDisplayGif","actionCreators","reeferCols","dispatch","getState","fetchTask","ErrorMessage","gridType","dryStatusData","gensetStatusData","chassisStatusData","allAssetStatusData","reeferFormatterData","addTask","allAssetStatus","reducer","RefAssetConfig","RefTriggerConfig","TriggerValue","FriendlyName","clearAssetConfigData","renderChangeAssetConfigGrid","renderChangeAssetConfigGridReset","assetConfig","reeferTrigger","enableDisableSubmitButton","AssetConfigParams","AssetConfigId","AssetConfigurationChange","AssetConfigurationID","ReeferConfigurationTriggerChange","ReeferConfigurationTriggerID","assetConfigAction","submitAssetConfiguration","MSCDurationInitialText","MSCDuration1Text","MSCDuration2Text","ForwardCommandParms","cssONOFFClass","cssHumidityClass","cssPoint2Class","VisibleHumidity1","VisibleHumidity2","VisibleHumidity3","renderMSCGrid","MSCTurnONoFF","reeferOEMTypeCd","InitialTemp","InitialMSCDuration","InitialHumidity","MSCSetpoint1","MSCHumidity1","MSCDuration1","MSCSetpoint2","MSCHumidity2","MSCDuration2","MSCSets","MSCSetpoint1Val","MSCHumidity1Val","MSCHumidity2Val","InitialTempVal","InitialHumidityVal","InitialMSCDurationVal","MSCDuration1Val","MSCSetpoint2Val","MSCDuration2Val","MSCDuration1Value","MSCDuration2Value","InitialTempValue","InitialMSCDurationValue","MSCSetpoint1Value","MSCSetpoint2Value","MSCInitialHumidityValue","MSCHumidity1Value","MSCHumidity2Value","ValidateDecimalValue","ValidateNumberValue","StatusONOFFChange","StatusMSCSetsChange","InitialTempChange","InitialHumidityChange","InitialMSCDurationChange","MSCSetpoint1Change","MSCHumiditySetpoint1Change","MSCDuration1Change","MSCSetpoint2Change","MSCHumiditySetpoint2Change","MSCDuration2Change","submitMSCCommand","USDACeilingText","ACTPostACTSetpointText","CmbStatus","VisibleFinalTemp","renderACTGrid","ACTTurnONoFF","ACTDurationVal","ACTDuration","USDATempVal","USDATemp","ACTSetpointVal","ACTSetpoint","ACTTempVal","ACTTemp","ACTDurationValue","USDATempValue","ACTSetpointValue","ACTTempValue","MinUSDATemp","MaxUSDATemp","MinActSetpoint","MaxActSetpoint","MinActTemp","MaxActTemp","StatusChange","ACTDurationChange","USDATempChange","ACTSetpointChange","ACTTempChange","submitACTCommand","renderGetFreshAirGrid","submitGetFreshAirTypeCommand","SelectedValue","renderSetFreshAirGrid","FreshAirTypechange","submitSetFreshAirTypeCommand","SelectedSettings","selectedSettingsVal","Zigbeechange","submitZigbeeCommand","O2List","Co2List","activeApplicationValue","CAModeValue","loado2Co2Values","loadO2CO2DefaultValues","showConfirmBoxWithWarning","submitCommand","applicationValue","CAModeValueSelected","o2Value","co2Value","o2DefaultValue","co2DefaultValue","activeApplicationChange","O2Change","CO2Change","CAModeChange","submitPoints","renderTripWiseReportGrid","submitTripWiseReportFinal","submitTripWiseReport","emptyBookingViewData","GetBookingDetails","resetViewBookingData","FormName","AddGeofence","Params","FenceTypeCd","FenceId","Coordinates","ActionTypeCd","GeofenceCustomerID","inputParams","fenceTypeCd","resetDrawingFlag","GeofenceMap","resetFlag","ContinueDrawing","CancelDrawing","latlonArray","validateAddGeofence","geofenceCoordinates","geofenceParams","ResetDrawing","refreshDashBoardMap","loadGeofences","radioButtonChange","FenceIdchange","FenceNamechange","Addresschange","cancelDrawing","continueDrawing","submitDrawing","EditGeofence","currentFence","geofencesData","selectedItem","bindFenceData","geodata","BindGeofencePolygons","validateEditGeofence","GensetToggleButtonsFilter","AllGenset_Count","ReportingSWOn_Count","LastReportedSWOn_Count","ReportingSWOff_Count","LastReportedSWOff_Count","gensetStatusFilters","ClearGensetStatusFilters","tempSelectedReefers","initBookingReefers","btnState","ReeeferDesc","updatedBookingReefers","ValidateButtons","unique","enterReefer","uniqueCommon","difference_a1","difference_a2","closeBookingModel","performAddAssetBookingNoAction","performAddAssetBookingYesAction","BookingConfirmationWindow","YesContinueToCreate","CloseConfirmation","YesContinueToUpdate","onCellValueChanged","getId","reeferstr","nameArr","loadCustomerGroups","getCustomerCargoCareProfiles","it","iteminItem","splittednumItem","displayLabel","newThirdparty","commonBookingData","CACTShowHide","UpdateRowdataValues","BookedTemperatureMinChange","CommodityNameChange","BookedTemperatureMaxChange","GensetIdChange","HumiditySetPointChange","VentSettingsChange","HSCodeChange","STCCChange","ServiceLevelChange","onHighValueCargoChange","O2SetPointChange","O2MinChange","O2MaxChange","CO2SetPointChange","CO2MinChange","CO2MaxChange","CTDaysChange","CTMaxTemperatureChange","PostCTTemperatureChange","PostCTTemperatureRangeChange","PostCTVentSettingsChange","ValidateCommonReeferData","rightId","hasChassis","customerDetails","hasDrys","hasGensets","myInit","Request","Error","statusText","deferred","Deferred","resolve","promise","delay","limit","Promise","reject","failure","fetchUrl","finalHandler","finalError","newrequest","clone","retryError","FaultCanRetry","fresponse","faultretryResponse","elementid","reactelement","selector","waitForEl","callback","OrbcommLogo","LicenseManager","setLicenseKey","isSwitched","hasLoggedUrl","userLoginState","StickyClass","DashboardName","LayoutTypeUser","LayoutTypeCustomer","LayoutState","LayoutTitle","LogonUri","ReadOnlyCheckBoxState","layoutType","layoutName","readOnlyLayout","SaveUserDashboardLayout","UpdateUserDashboardLayout","data-bs-theme","activeClassName","logoutUser","fnCancelLayout","LayoutTypeChange","DashboardNamechange","onReadOnlyCheck","saveLayout","layoutPreferences","layoutState","PreferenceName","IsCustomerDashboard","selectedIndex","changeAssetConfigAction","createColumnDefsForCRI","createColumnDefsForO2andCo2","createColumnDefsForAssetConfig","createColumnDefsForGetFreshAirType","containerHeight","reeferTypeFormatter","refreshDeviceStatusGrid","prefChanged","SaveRowGroupsChange","saveRowGroups","targetKeys","selectedKeys","exportColumns","copyToHistory","LoadDefaultGridColumns","BindSavedPreferenceData","exportCols","columnNames","moveColumns","selectedCols","HideAllGridColumns","selectedColumns","preferenceColumns","rowGroupedArray","CopyToHistory","ShowHideGridColumns","nextTargetKeys","sourceSelectedKeys","targetSelectedKeys","targetSelected","sourceSelected","fromIndex","toIndex","handleChange","ColumnDisplayNm","IsRequired","onDragEnd","nodeSelector","showSearch","filterOption","option","titles","onSelectChange","listStyle","arrowMoveUp","arrowMoveDown","onCopyToHistoryCheck","SaveGridPreferences","ResetGridPreferences","userColumnNames","CustomerPreference","customerSelectedColumns","DefaultCustomerPreference","defaultCustomerPreference","defaultCustomerColumns","DeviceSensors","CustomerAttributes","setColumnVisible","reqColumns","selectedColumnsIds","preferenceColumnNames","preferenceColumnIds","getDataAsCsv","onlySelected","SendEmailExportAPI","SendEmailExportAPIForAction","currentShape","pinInfobox","toolTip","reeferMap","layer","traceLayer","fenceLayer","pinsLayer","PushpinsData","GensetPushpinData","ReeferPushpinData","DryPushpinData","ChassisPushpinData","fenceAssets","drawingFinishedEventHandler","GeofencesData","drawingTools","currentMode","events","autoSuggestManager","reeferMasterData","disableKeyboardInput","liteMode","maxResults","businessSuggestions","autoDetectLocation","AutosuggestManager","attachAutosuggest","selectedSuggestion","drawingFinished","DrawingTools","inside","Geometry","centroid","xi","yi","xj","yj","DryAssetsData","fences","clearInfoboxPopup","Infobox","visible","setMap","exteriorRing","FormatedCoordinates","selectedFence","strokeDashArray","polygonImageblue","displayFenceInfoboxOnClick","dispose","clearSelection","geofenceData","coordinatesList","point","latLong","newFence","GeofenceHistoryID","addFenceToLayer","resetDrawing","mode","elm","drawPolygon","edit","erase","eraseMode","removeHandler","setMode","ClearMapLayers","setOptions","formatterData","isFenceAssets","Dry","Genset","Reefers","Chassis","clusterReeferModuleLoaded","pushpin_green_yellow","pushpin_blue_yellow","pushpinyellow","pushpingreen","pushpinblue","pushpingray","metadata","getLocation","displayReeferInfobox","displayReeferInfoboxOnClick","pushpinImage","popOffset","description","identityCode","GenerateAlphaNumericCode","DescElement","MapCallouts","selectedPin","divid","mapName","RenderChildComponent","maxHeight","maxWidth","showPointer","showCloseButton","htmlElement","htmlContent","displayGensetInfobox","displayGensetInfoboxOnClick","displayDryInfobox","displayDryInfoboxOnClick","displayChassisInfobox","displayChassisInfoboxOnClick","targetType","eventId","dataItem","infoboxOffset","getOffset","infoboxAnchor","getAnchor","infoboxLocation","tryLocationToPixel","PixelReference","control","dx","dy","getWidth","tryPixelToLocation","enableHistory","SelectCurrentGenset","SelectCurrentDry","SelectCurrentChassis","firstLatitude","firstLongitude","reeferPushpins","assetTypeCd","IsGenset","IsDry","IsChassis","reefernormal","reeferrunning","reeferstandby","reefershutdown","reeferoffline","gensetnormal","drypurple","chassisorange","historynormal","latLon","ClusterLayer","clusteredPinCallback","cluster","fillColor","containedPushpins","v","getColor","assetCd","clusterSize","radius","svg","textOffset","locs","len","bounds","LocationRect","fromLocations","padding","clusterPushpinClicked","gridSize","zIndex","SelectCurrentReefer","parentId","strokeColor","strokeThickness","create","ShapeType","s","setPushpinDraggability","resetDrawingState","primitive","IsReprocess","selectedfence","DeleteCustomerGeofence","draggable","shapes","getPrimitives","getLocations","finish","ValidatePolygonGeofenceDashboard","validateGeofencePolygon","bound","suggestionResult","bestView","RestoreGeoZonesLayer","chars","random","unitMasterId","confirmSubmit","newTripGeofencesDetails","TripDefinitionSelectedValue","unitMasetrId","OriginGeofence","DestinationGeofence","SFrmDate","SToDate","CommandUnits","DepartureCheckedtoggleChange","DepartureChecked","ArrivalCheckedtoggleChange","ArrivalChecked","TripGeofencesDetails","refTripDefinition","tripGeofencesByTrip","tripGeofencesDetails","fCommends","setForwardCommandUnits","tripGeofencedtls","SourceGofenceAddress","DestGofenceAddress","GetTripDefination","LoadTripDetailsData","Arrivalhidden","Departurehidden","TripDefinationOptions","TripDefId","TripDefNm","handleOnChangeDropDown","TripNameOnChange","fromDateOnChange","toDateOnChange","handleSubmit","newClearDeviationTripParameters","ClearDeviationTripParameters","renderGetAssetIdGrid","submitGetAssetIdCommand","DoorSensorChange","submitChangeDoorSensor","UnassignOptionMode","cssBooking","css3rdParty","cssBoth","bookingView","bookingSlashView","bookingfileSlashView","newVoyage","VoyageEdit","getVVCInfo","reeferLst","reeferDisplayStr","FormatReeferStringWithDotDot","str","VoyageDepartingVVC","currentdepartingVVC","currentarrivalVVC","chosenDepartingVVC","chosenArrivalVVC","ValidateVVCandSubmit","submitEditVoyageAfterPrompt","voyageEdit","submitVVCEditDetails","DimiSetting","VisibleDimiSetting","VisibleDimiValidity","renderDimiSettingsGrid","SetDefaultDimiValidity","isDimiPriorFlag","softRevision","DimiModeValue","showDIMIMessage","DimiModeStatusChange","DimiType","DimiTermValue","DimiTerm","DimiDuration","DimiTypeStatusChange","step","DimiTermChange","handleFocus","DimidurationChange","submitDimiSettingCommand","renderIntelligentPTIFunctionGrid","IntelligentPTIFunctionChange","submitIntelligentPTIFunction","renderFanSpeedGrid","FanSpeedChange","submitFanSpeed","isOIN","EditTrip","refreshTripGrid","deleteEvent","ExcelcolDefs","newEditTripGeofencesDetails","TripStatusDsc","newDeleteTripParameters","onDestSuggestionsFetchRequested","destSuggestionsFenceId","getDestFenceNameSuggestions","onDestSuggestionsClearRequested","onDestChangeFenceId","createExcelColumnDefs","refTripStatus","SelectedOption","DeleteMessage","DeleteParams","DeleteYes","EditTripGeofencesDetails","DeleteTripParameters","UnitMasetrId","SearchType","GetTripsData","HideGeofenceAndTrip","EditIndicator","onCellClickedEdit","DeleteIndicator","onCellClickedDelete","TripNm","setDeleteMessage","edit18","tripCode","searchTripParameters","updatedDeleteEvent","updateTripStatus","deleteTripGeofencesDetails","tripType","DestFenceIdListinputProps","TripStatusOptions","tripstatus","Specifichidden","class","ShowPending","ShowAll","ShowSpecific","TripDefinationchange","TripStatuschange","handleClear","GridGensetHistoryToolBar","OpenGensetMonitoringChart","ReeferTemperatureGraph","chartTemperature","HC_Exporting","Highcharts","HC_Exporting_offline","initTemperatureGraphFilters","graphData","objHistoryGraphFilters","ReeferHistoryGraphFilters","GrphFromDate","GrphToDate","currentData","seriesName","axesNo","returnSeriesData","TemperatureValue","HumiditySetPointStatus","TemperatureFormatterForGraph","yAxis","BindGraphData","getReeferHistoryDetails","loader","series","graphCurrentData","GraphPoints","xAxis","removePlotBand","xAxisPlotData","addPlotBand","setCategories","xAxisData","yAxisData","redraw","returnTemperatures","setPointTemperatures","supplyTemperatures","usda1Temperatures","usda2Temperatures","usda3Temperatures","cargo4Temperatures","ambientTemperatures","humidityTemperatures","o2Temperatures","co2Temperatures","graphTimes","xAxisCategories","xAxisPlotValues","RunStateValues","sort","reverse","plotBandsArray","n","allBat","g","h","plotBandObject","from","rotation","align","dateTimeFormatter","returnTemperaturesSeries","getSeriesData","setPointTemperaturesSeries","supplyTemperaturesSeries","usda1TemperaturesSeries","usda2TemperaturesSeries","usda3TemperaturesSeries","cargo4TemperaturesSeries","ambientTemperaturesSeries","humidityTemperaturesSeries","O2Reading","o2TemperaturesSeries","CO2Reading","co2TemperaturesSeries","global","useUTC","exporting","buttons","contextButton","menuItems","chart","zoomType","categories","plotBands","enabled","sourceWidth","sourceHeight","chartOptions","plotOptions","dataLabels","formatter","gridLineWidth","colors","opposite","spline","marker","connectNulls","shared","useHTML","headerFormat","pointFormat","footerFormat","legend","verticalAlign","floating","backgroundColor","graphSortedTimes","b","historyParams","updateGraphData","dateTimeVal","refreshGraphPoints","fromDateChange","toDateChange","historySearchFilters","initializeChart","selectedpoint","tempPoint","C_EventDTTM","tempDT","seriesX","totalPoints","values","allData","mvalues","category","points","refresh","geofencData","checkRight","GeofenceGrid","fenceIdValue","updatemGeofenceGridDimensions","fenceIdArray","CellRenderer","GeofenceTypeFormatterForFilter","fenceTypeFormatter","GeofenceCoordinatesFormatter","ShowSelectedGeofence","geofenceSearchbyFenceName","refreshGeofenceManagementGrid","geofenceSearchbyFenceId","GeofencePopupHtml","GeofencePopupTitle","InitializeMap","updatemyprofilesDimensions","InitializeDrawingManager","loadFencesonUI","loadServerGeofences","loadDeviceGeofences","SetDrawingMode","IsDeleted","geofenceList","handleClearFenceId","EraseMode","fenceName","clearPanelData","IsConfirmationOpened","renderGeofencePopUpControl","DisposeDrawingManager","bindGeofencePopupData","bindServerGeofences","bindDeviceGeofences","data-tip","data-for","place","navigateToGeofenceUploadPage","drawingModePolygon","drawingModeEdit","drawingModeDelete","fnCancelDrawing","coords","lat_long","pointInPolygon","bindGeofencePopup","intersectFences","GeofenceCatogery","confirmMessage","showGeofenceConfirmBox","IECAL","emptyGeneralState","IsActivateGeneralCargoCareProfile","ProfileDescription","InsertedDTTM","UpdatedDTTM","Mode","CCTabs","emptyPowerState","IsActivatePowerCargoCareProfile","MaxOffPowerDuration","OffPowerAlertSeverity","IsRaiseOffPowerInsideGeofence","IsPowerRestoredAlert","SelectedGeofences","suggestionsGeofences","userAGGGeofencesData","UserAccessGeofenceList","LoginGeofences","cargoCareSeverity","PowerRestoredAlertSeverity","CCSeverityStateOptions","TempSetpointSeverityValue","IsChange","OffPowerIncludeExcludeCalculation","TimeSinceTheLatestPowerOff","emptyCargoCareWizardDefaultValues","AttemptsCycleWithin","Hours","ExcessiveDefrostAlertSeverity","BTASevere","BTAMinor","BTAInformational","BTASevereU","BTAMinorU","BTAInformationalU","TempSetpointSeverity","SevereSupplyTemp","MinorSupplyTemp","InformatinalSupplyTemp","IsSuppressSupplyTemp","IsPreventSupression","SupressionDuration","PreventSupressionAttempts","PreventSupressionHours","SevereReturnTemp","MinorReturnTemp","InformatinalReturnTemp","SevereReturnTempUnit","IsSuppressReturnTemp","IsPreventSupressionReturn","SupressionDurationReturn","PreventSupressionAttemptsReturn","PreventSupressionHoursReturn","LateReportingInterval","emptySetpointState","isActivateTempSetpoints","isSevereAlert","isMinorAlert","isInformationalAlert","isTempSetpointChangedAlert","BookingTempUnitsOptions","CHKInvalidReeferTempSetpointAsMismatch","emptySupplyTempState","IsActivateSupplySetpoints","IsSupplySevereAlert","IsSupplyMinorAlert","IsSupplyInformationalAlert","SevereSupplyTempUnit","MinorSupplyTempUnit","InfSupplyTempUnit","TemperatureUnits","InformationalSupplyTemp","SevereSupplyDeviceRepFreq","MinorSupplyDeviceRepFreq","InfSupplyDeviceRepFreq","CHKSuppressSupplyTempAlertsDuringColdTreatment","CHKAlertsNotSuppressedAndSupplyTempReadingIsInvalid","SevereSupplyMismatchDuration","MinorSupplyMismatchDuration","InfoSupplyMismatchDuration","SevereSupplyMismatchDurationUnit","MinorSupplyMismatchDurationUnit","InfoSupplyMismatchDurationUnit","MismatchDurationUnits","emptyReturnTempState","IsActivateReturnSetpoints","IsReturnSevereAlert","IsReturnMinorAlert","IsReturnInformationalAlert","MinorReturnTempUnit","InfReturnTempUnit","InformationalReturnTemp","SevereReturnDeviceRepFreq","MinorReturnDeviceRepFreq","InfReturnDeviceRepFreq","CHKSuppressReturnTempAlertsDuringColdTreatment","CHKAlertsNotSuppressedAndReturnTempReadingIsInvalid","SevereReturnMismatchDuration","MinorReturnMismatchDuration","InfoReturnMismatchDuration","SevereReturnMismatchDurationUnit","MinorReturnMismatchDurationUnit","InfoReturnMismatchDurationUnit","emptyDefrostState","IsActivateDefrostCargoCareProfile","emptyGeofenceState","IsActivateGeofenceCargoCareProfile","CHKReeferEntersPOLGeofence","CHKReeferExitsPOLGeofence","CHKReeferEntersPODGeofence","CHKReeferExitsPODGeofence","DDLReeferEntersPOLGeofence","DDLReeferExitsPOLGeofence","DDLReeferEntersPODGeofence","DDLReeferExitsPODGeofence","emptyColdTreatmentState","IsActivateColdTreatmentProfile","CHKSuppressColdTreatmentAlert","TXTPostDefrostAlertSuppressiondureation","CHKRaiseColdTreatmentAlert","CHKIncludeUSDA4CargoProbe","CHKRaiseSevereUSDA","CHKRaiseMinorUSDA","CHKRaiseInformationalUSDA","DDLSGNRaiseSevereUSDA","DDLSGNRaiseMinorUSDA","DDLSGNRaiseInformationalUSDA","TXTRaiseSevereUSDA","TXTRaiseMinorUSDA","TXTRaiseInformationalUSDA","DDLRaiseSevereUSDAUnit","DDLRaiseMinorUSDAUnit","DDLRaiseInformationalUSDAUnit","CHKRaiseUSDAWhenReadingIsLessThan","DDLRaiseUSDAWhenReadingIsLessThan","DDLSGNRaiseUSDAWhenReadingIsLessThan","TXTRaiseUSDAWhenReadingIsLessThan","DDLRaiseUSDAUnitWhenReadingIsLessThan","CHKWhenUSDAReadingIsInvalid","emptyControlledAtmosphereState","IsActivateControlledAtmosphereCareProfile","CHKO2readinglessthanboookingO2","CHKO2readingGreaterthanboookingO2","CHKCO2readinglessthanboookingCO2","CHKCO2readingGreaterthanboookingCO2","DDLO2readinglessthanboookingO2","DDLO2readingGreaterthanboookingO2","DDLCO2readinglessthanboookingCO2","DDLCO2readingGreaterthanboookingCO2","CHKSuppressControlled","TXTSuppressControlled","CHKWhenControlledAtmosphereReadingIsInvalid","emptyDoorState","IsActivateDoorCargoCareProfile","CHKReeferDoorIsOpened","CHKReeferDoorIsClosed","CHKDoorSensorBatteryVoltageIsLow","DDLReeferDoorIsOpened","DDLReeferDoorIsClosed","DDLDoorSensorBatteryVoltageIsLow","emptyReeferAlarmState","IsActivateReeferAlarmCargoCareProfile","CHKRaiseSevere","CHKRaiseMinor","CHKRaiseInformational","DDLRaiseSevere","DDLRaiseMinor","DDLRaiseInformational","emptyDeviceState","IsActivateDeviceRule","IsActivateLateReport","LateReportSeverity","LateReportSeverityValue","Popup","content","jquery_1","defineProperty","ExportRecords","InitializeExcelExport","columns","CSV","k","dttm","temperature","index1","default","TimeZoneColumnFormatterForExcel","TempHeaderFormatterChildForms","stringTypeFormatterChildForms","DoorFormatterForExcel","isControlledAtmosphereMode","gensetRunningData","dt","isIE","documentMode","isEdge","StyleMedia","fromCharCode","link","createObjectURL","visibility","InitializeExport","InitializeExcelExportParent","InitializeExportParent","ConenserPressure","columnData","csvSplit","headersSplit","headerVal","headerColumn","columnDataObject","columnDataSplit","columnVal","headerValue","columnFinalValue","DownloadFile","DownloadFileByUrl","urlName","deploymentMasterId","emptyExportFields","GridToolBarDrysPopups","DisableVCOption","DisableVCCheckBoxOption","EnableVCCheckBox","DisableVCDropDown","DropDownVCData","SelectedVCData","SelectedVesselId","closepopupModel","DryCommandsGrid","selectedDrys","gensetSearchFilters","DryForwardCommandParams","SelectedDrys","refreshDryStatusGrid","widgetPreferenceData","gridPreferences","SearchData","userSelectedKeys","colsData","WidgetId","gridPrefData","copyGridPrefData","GetReeferHistoryGridPrefColumns","GetGensetHistoryGridPrefColumns","GetDryHistoryGridPrefColumns","GetChassisHistoryGridPrefColumns","ReeferMapGrid","GetReeferMapGridPreferenceColumns","overrideStrings","selectAll","removeAll","selectedInfo","textField","valueField","onSelect","sortedList","onRemove","onSelectAll","onRemoveAll","onSearch","itemsList","query","items","defaultUserComments","MessageBoardID","UserComments","MessageBoardId","GetCommentsData","performShowhidebuttons","dttmValue","RefreshCommentsData","GetCommentsDataForDeleteAll","deleteAllComments","par","deleteComment","isOkvisible","stLatest","today","past","diff","floor","userComments","commentId","LoadCommentsData","commentsList","performNoActionDeleteAll","performYesActionDeleteAll","MessageOnChange","SaveAction","AddComment","RefreshComment","DeleteAll","comment","formattedDate","dateTimeConverter","latestStr","dateDiffrence","removeComment","GridApiParams","columnController","rowGroupColumns","dryFormatter","dryBatteryStatusSorting","dryBatteryStatusFormatterFilter","dryBatteryStatusFormatter","pwrStateFormatterdry","DrySpeed","Miles","DryBattVoltageSortingFieldName","CommentExistsDC","requestDryAdvanceSearch","reeferCurrentStatus","selectedReefer","mapState","populateSelectedReefersDates","populateDefaultDates","bindReeferCurrentData","overlayTemplate","historyData","IsLocationEstimated","GridPreferenceColumns","WidgetName","showSelectedPushin","MapCallout","DisplaySelectedPushpin","ClearMapPushpins","BindTraceMapPushpins","CurrentReefersList","StatusIndicatorWithDescriptionForALM","CCAlarmDescriptionFormatter","DimiRemainTermFormatter","lineFrequencyFormatter","updateReeferMapDimensions","PTIReport","isHistory","ShowFullMap","MinimizeMap","loadTraceMapPushpins","InMotionReportingInterval","StationaryReportingInterval","AllDry","OutGeofence","DryStatusToggleButtonsFilter","AllDry_Count","InGeofence_Count","OutGeofence_Count","dryStatusFilters","filterDryStatusGrid","ClearDryStatusFilters","motionReportingInterval","stationaryreportingInterval","inMotionReportingInterval","stationaryReportingInterval","InMotionReportingIntervalChange","StationaryReportingIntervalChange","submitReportingIntervalCommand","AllChassis_Count","PwrInGeofence_Count","PwrOutGeofence_Count","NotPwrInGeofence_Count","NotPwrOutGeofence_Count","chassisStatusFilters","ClearChassisStatusFilters","requestReeferFormatters","SearchLoadingIsInProgress","requestRefApplicationParams","requestReeferConfigTypes","requestAllAssetTypeAdvanceSearchSSRM","_isdryError","_isgensetError","_isreeferError","_ischassisError","_timeOutError","_timeOutMsg","requestAllAssetTypeAdvanceSearch","requestTripWISESupport","eventsRefreshed","allAssetsData","requestRcdAdvanceSearch","rcdSearchFilters","rcdStatusData","CountMessage","requestToHoldSelectedRowGroups","selectedRowGroups","SelectedRcd","SelectedICCID","SelectedMSISDN","AllRcds","SelectedAssetType","vesselCols","vesselStatusData","dryColumns","dryColumns2","DryStatusSSRM","drySearchFilters","ApplyDryAssetSearch","CheckAssesRightsForDrys","updateDryStatusDimensions","forwardCommandParam","bindingDryStatusGrid","DryStatusState","TemperatureGraph","GraphFromDate","GraphToDate","propsReeferFormatters","ReeferGraphHistoryFilter","GensetMonitorGraph","chartGensetMonitor","gensetHistoryFilters","gensetHistoryData","Qualifier","floatVal","FloatFormatterForGraph","voltageSeries","gensetBatteryVoltage","deviceBatteryVoltage","gensetFuelLevel","GensetRunStateValues","allPow","p","cnt","l","returnGensetBatterySeries","deviceBatteryVoltageSeries","gensetFuelLevelSeries","getSeriesDataForFuelLevel","isChrome","vendor","cellColor","isCargoCare","severity","customerSpecificEventList","eventMasterList","eventDesc","eventlist","custSpecificEventList","finalcustSpecificEventList","OEMType","OverrideEventDesc","OperationalEventParams","resultSensorAlert","resultSensorAlertText","SensorAlertCd","MsgAlertText","SensorAlertText","trimEnd","preTripList","ptiDescription","pretripTestStateID","pretripstateId","DisplayText","FirmWareDescList","VersionType","FirmWareDescription","UnitTypeCdDescription","UnitTypeCdId","ColumnDisplay","ControllerTypeCdFormatters","ControllerTypeList","ControllerTypeCdDescription","ControllerTypeCdId","assetStateFormatter","SensorSupplyTemp1","SensorReturnTemp1","EvaporatorTemp","CompressorDischargeTemp","CompressorDischargeTemp2","EvaporatorInletSensor","EvaporatorOutletSensor","EconomizerInTemp","EconomizerOutTemp","CondenserTemperature","CTTempLimit","CTPostSetPoint","CondenserFanOutPut","LowSpeedEvaporatorFanOutPut","HighSpeedEvaporatorFanOutPut","HeaterOnTime","HotGasValveOpening","EconomizerValveOpening","CompressorFrequency","LineVoltage1","LineVoltage2","LineVoltage3","CompressorCurrent","VFD","lstalarmcd","alarmalias","alarm","alarmcd","CCAlarmDescriptionSorting","CTTimeFormatter","TripWiseStatusID","TripWiseStatusId","DoorOpen","RCDStateReportedHistoryID","DevicedoorFormatterFilter","DeviceDoorFormatterSorting","DevicedoorFormatter","EverFRESH","GridToolBarGensetPopups","GensetCommandsGrid","selectedGensets","GensetForwardCommandParams","SelectedGensets","refreshGensetStatusGrid","GensetPingControl","PopupConfirmationWindow","ok","PopupConfirmWindow","uName","redirectToLogin","CancelRequest","ValidateNChangePassword","detailFormatters","OEMTypeFormatter","imagePath","powerOnGreen","powerOffGrey","RcdPowerSourceFormatter","GPSLatitudeFormatter","GPSLongitudeFormatter","longitute","tempZoneCd","DoorFormatter","DryDoorFormatter","SecondsToTimeConverter","dryPwrStateFormatter","DryBatteryPctFormatter","passed","failed","aborted","runningtime","Skipped","questionMark","gensetSwitchFormatter","YesNoFormatter","FloatFormatter","GPSHDOPFormatter","GPSSatCountFloatFormatter","GPSFloatFormatter","AlertDescriptionFormatter","DoorFormatterChassis","powerOrange","PowerOffline","off","dataNotAvailable","gensetFormatter","userRights","visibilitySetting","rightValue","contextMenuItem","selectedUserData","checkMenuItemResetPasswordVisibility","checkOktaUser","SSOSignInType","checkOktaUserMenuVisiblity","checkAzureUserMenuVisiblity","cmdStr","refControllertypes","isFromVessel","isLynxFound","isMPModelFound","isCT35ML5Found","isCT36ML5Found","isValueExits","tripWiseSupport","ccProfileId","Isdisabled","isLynxDeviceFound","isActiveFound","isDisconnectedFound","isRetiredFound","IsSetPoint","isZestiaModelFound","checkMenuItemDisassociate","configState","paramsArray","params2","menuItemName","param1","param2","isArrowspotPresent","enableLynxCommands","enableCT35ML5Commands","isLynxPresent","isCT35ML5Present","isCT36ML5Present","checkMenuItemDisabledForRcdCommands","checkMenuItemDisabledForDryEditAsset","isDryAssetPresent","checkMenuItemVisibilityForDeviceStatus","isM2C","IsDryDevice","isST9100Device","isGT1030Device","checkMenuItemDisabledFromCCProfileStatus","isInActiveFound","selectedRowData","checkMenuItemDisabledFromGroupStatus","checkMenuItemDisabledFromUserstatus","checkVisibilityInvisible","checkVisibilityMultipleInvisible","isCustomAttributesEnable","checkVisibilityMultipleInventory","commandTypeCd","vesselCd","checkMenuDeploymentDetails","checkMenuEditDeployment","EditCnt","checkMenuDeleteDeployment","DeleteCnt","checkMenuStopDeployment","StopCnt","checkMenuStatisticsDeployment","StatisticCnt","checkMenuEditFileRepository","checkMenuDeleteFileRepository","selectedDeployedCount","checkMenuItemVisibilityForPTWidget","isCT4AndLynkFound","DryMapGrid","bindDryHistoryData","UpdateGensetGridName","geoZonesEnabled","geoZonesImage","BindDryTraceMapPushpins","RCNGConfirmWindow","showGeoZonesLayer","hideGeoZonesLayer","BindGeoZonesLayer","DisposeGeozonesLayer","GridPTIToolBar","PTResultGrid","loadData","disableShowinReeferGrid","getReeferStatusGridRows","showInReeferGrid","dropDownVCInfo","dropDownGeoInfo","selectedVesselID","selectedGoeID","selectedGoeTag","GeofenceTag","GeofenceHistoryUserDataID","gridApi","GeofenceType","TripWiseSorting","TwStateForFilter","TripWiseFormatter","VesselName","DeviceGeofence","TripWiseGrouping","PTResultsData","VesselInfoData","GeofenceInfoData","vesselID","geofID","geofName","ptResultDetailsCopyAction","ShowCurrentPTRSelectedReefer","getCommandPopupPTReport","getCommandPopupReportReeferId","getCommandPopupTitleReport","getCommandPopupContentReport","getCommandPopupTWReport","GeofenceDefinitions","GeofenceDefinationOptions","geofence","FenceID","data-bs-display","handleCheck","portalId","GeofenceChange","VesselChange","VesselNm","getPTResultDetails","selectedAssetStates","SharedEmailPopUp","EmailHtml","returnEmailPopUp","SearchPreferenceControl","getSearchControls","LoadSavedSearchItems","Initialdata","onSubmit","SearchPreferenceData","saveAndCloseSearchPreferenceDialog","handleCancel","handleResetSearchPreferences","handleSaveSearchPreferences","SaveSearch","Prop1","Prop2","gridHeight","defaultInventory","CCLabelInformational","CCLabelMinor","CCLabelSevere","ReeferAlarmLabelMinor","ReeferAlarmLabelSevere","wgMicroalarms","wgHistogram","wgAllreefers","wgReeferGrid","wgReeferHistory","wgReeferTempGraph","wgPTResult","wgCargoCare","wgGensetHistogram","wgAllGensets","wgGensetGrid","wgGensetHistory","wgDryHistogram","wgAllDrys","wgDryGrid","wgDryHistory","wgChassisHistogram","wgAllChassis","wgChassisGrid","wgChassisHistory","ReeferStatusEnum","ResponsiveReactGridLayout","WidthProvider","Responsive","isLastSearchAdvanced","isSaved","resizeAdvSearchToggle","isSOLogedin","isSaveLayout","filterDefault","refreshInterval","timer","gensetTimer","dryTimer","chassisTimer","ptResultsTimer","CCSummaryTimer","MASummaryTimer","TotalReeferStatusTimer","chartHistogram","chartmicro","chartcargo","chartGensetHistogram","chartDryHistogram","chartChassisHistogram","lglayout","allLayouts","DbItems","isLayOutLoadingBySetDefault","isLayoutUpdated","WGSwitchAll","AdvancedSearch","AddDefaultLayout","DashBoardItems","o","Key","dashboards","GetItemLayout","layouts","Enabled","IsVisible","IsFullscreen","IsPinned","AdvancedGensetSearch","MicroaAlarms","CargoCare","Histogram","GensetHistogram","DryHistogram","ChassisHistogram","TotalReefers","TotalDrys","TotalChassis","TotalGensets","ReeferMaps","ReeferGrid","GensetGrid","DryGrid","ChassisGrid","ReeferTempGraph","BindCharts","BindGensetCharts","BindDryCharts","BindChassisCharts","setModelTitle","setSelectedRow","setLastSelectedRow","setReeferStatusRowsLength","CurrentReeferGridRows","setDryStatusRowsLength","CurrentDryGridRows","setModelPopupHtml","popupContent","setModelTitleReport","setModelPopupHtmlReport","setModelPopupHtmlReportReeferId","setModelPopupHtmlPTReport","report","setModelPopupHtmlTWReport","showContextMenuModelWindow","toggleServerSide","EnableServerSide","PrevReeferFilters","prevFilterData","ApplyReeferSearchFilter","saveSSRMMode","saveUrl","wrapperRef","handleClickOutside","contents","Reefersummary","CargoCareProfileAlertssummary","Gensetsummary","Drysummary","Chassissummary","breakpoint","Defaultlayouts","WGSwitch","Oldlayouts","isFullscreen","FullscreenItem","DashBoardItem","EmailFields","isLayoutLoaded","ExtensionForGridHeader","ExtensionForGraphHeader","ExtensionForGensetGridHeader","ExtensionForDryGridHeader","ExtensionForChassisGridHeader","lastWidgetName","emailPopUpHtml","EmailData","ColumnDefs","SourceForm","ParentOrChild","temperatureGraphHtml","gensetMonitorGraphHtml","gridPreferenceHtml","searchPreferenceHtml","addGeofenceHtml","addGeofenceTitle","graphReeferId","graphGensetId","SaveSearchHtml","ExportToExcelHTML","ColumnDefs2","CustomerDeviceTypeSensor","assetTypeSensors","SelectedAssetStatesCC","SelectedAssetStatesMA","SelectedAssetStatesPTR","SelectedAssetStatesTotalReefers","SelectedAssetStatesTotalGensets","SelectedAssetStatesTotalDrys","DefaultCargoCareProfileAlertssummary","CargoCareProfilesSelected","CargoCareProfilesSelectedDefault","LayoutPreference","SetLayout","setGridHeader","wgHistogramY","wgAllPosY","wgStatusPosY","wgHistoryPosY","defaulLayout","reeferLayout","hasRight","gensetLayout","dryLayout","chassisLayout","lg","defaultDbItems","reeferDbItems","gensetDbItems","dryDbItems","chassisDbItems","headerToBeAppended","graphHeaderToBeAppended","BindCargoCareProfileFilters","CreateOrUpdateDashboard","genericWidgets","gensetWidgets","reeferWidgets","dryWidgets","chassisWidgets","cargoCareWidgets","dashBoardItems","breakpoints","userLayouts","DbItemsKeys","dashBoardItemsKeys","diffFound","restoreWidgetsLoaders","pinAllDashboardWidgets","applyDashboardWidgetsPreferences","UpdateCharts","RefreshDashboardGrids","widgetSearchPreferences","filterCCProfileAlertssummary","selectedCargoCareProfiles","selectedCCProfiles","UpdateCargoChart","applyAdvanceSearchPreferences","RestoreAdvanceSearchControls","refreshGridReady","updateHomepageGridDimensions","detach","appendTo","loadDefaultWGSwitch","loadLayoutDefaultValues","requestUrl","IsDefault","loadUserDashboardLayout","ccdata","GetUserProfileFilters","setInterval","PTResultsTick","ReeferStatusSummaryCC","ReeferStatusSummaryMA","TotalReeferStatusSummary","UpdateGensetCharts","GensetTick","UpdateDryCharts","DryTick","UpdateChassisCharts","ChassisTick","profileFilters","chkprofileId","chkSelectAll","numberOfCheckboxes","getElementsByName","numberOfCheckboxesChecked","ccProfilePreferences","ccProfilesData","RefreshPTResultsGrid","contains","CloseInventoryStatePopUp","ClosePTRResultsPopUp","CloseSettingsPopUp","srcElement","applyLayoutPreferences","GetDashboardLayouts","restoreCustomerLayout","LayoutName","LayoutType","ProfileType","isLoader","hideWidgetsLoader","searchWidgetHeight","searchBodyHeight","jsonlayout","JsondefaultLayouts","defaultLayouts","defaultitem","ClearReeferSearchFilters","isglobalLoaderToBeHidden","reeferSummaryMA","UpdateMAChart","CCdata","isFromHistogram","totalReeferSummary","UpdateHistogramCharts","GetPTResultsByAssetState","selectedCCProfileCode","statusfilters","SelectedCCProfiles","UpdateAdvanceSearchFilters","bindingGensetStatusGrid","bindingChassisStatusGrid","lang","thousandsSep","plotBackgroundColor","plotBorderWidth","plotShadow","cursor","ApplyChartFilters","pie","allowPointSelect","showInLegend","options3d","alpha","beta","distance","fontWeight","innerSize","ApplyChartCargocareFilters","GetSumByCCAlertData","renderTo","reflow","maxPadding","labelGroup","childNodes","onclick","chartName","isViaTick","BindIndividualChart","sliced","chartMicro","ApplyChartFiltersGenset","ApplyChartFiltersDry","destroy","ApplyChartFiltersChassis","ccSum","accumulator","hasGenset","isServerSideEnable","reeferMapAction","reeferbookingAction","reefercreatebookingAction","reeferViewbookingAction","propsReeferData","renderClearSelectionForAllAsset","reeferHistoryEnabled","renderAlarmWidgetIfCCPSelected","historyFilters","graphHeaderText","bindGraphHtml","bindGensetGraphHtml","clearGensetGridHeaderExtension","reeferparams","graphEnabled","openReeferTemperatureGraph","setGensetGridHeader","gensetparams","clearDryGridHeaderExtension","getDryStatusGridRows","setDryGridHeader","dryparams","clearChassisGridHeaderExtension","setChassisGridHeader","chassisparams","newLayout","lastWidgetValue","TotalWidgetsCount","UpdateDashboardLayout","Id","newHeight","scrollbarHeight","lvalue","lkey","currentWidth","w","scrolltoTop","DashboardItems","ResetMapInfobox","pinState","static","itemindex","isDraggable","onSetPreviousState","scrollTop","evt","createEvent","initEvent","dispatchEvent","isFromCargoCareAlert","ReceiveSearchLoadingIsInProgressStatusToHome","refreshToggleFilters","ApplyGensetSearchFilter","loadState","ApplyDrySearchFilter","ApplyChassisSearchFilter","hasReeferFilter","regexp","regexpDry","bindGridPreferenceData","bindExportToExcel","bindSearchPreferenceData","saveAndCloseSearchPreferenceModel","dict","ClearSelection","BindClusterMapAllAssetsPushpins","renderSaveSearchHtml","bindAddGeofenceData","DisplayStyle","IconsDisplayStyle","PinClasses","HeadeBgClasses","onRemoveItem","onPinItemClick","onFullScreen","onMouseDown","stopPropagation","GetLoadReeferStatusGridData","GetLoadGensetStatusGridData","GetLoadDryStatusGridData","GetLoadChassisStatusGridData","GetLoadReeferHistoryGridData","GetLoadReeferTemperatureGraphData","GetLoadGensetHistoryGridData","GetLoadDryHistoryGridData","GetLoadChassisHistoryGridData","onPTIWidgetClick","onPTIWidgetClickClose","AssetStateChangePTR","onFullScreenPTI","GetLoadPTResultGridData","renderSearchPreferenceControl","onMAWidgetClick","onMAWidgetClickClose","AssetStateChangeMA","GetLoadData","onCCProfileFilterClick","onCCProfileFilterClickClose","selectAllProfiles","renderToogleCargoCareProfiles","OnSubmitCargoCareFilters","onCCWidgetClick","onCCWidgetClickClose","AssetStateChangeCC","GetLoadCCAlertData","onFleetOverviewClick","onFleetOverviewClickClose","AssetStateChangeTotalReefers","onGFOWidgetClick","onGFOWidgetClickClose","AssetStateChangeAllGensets","TotalGensetStatusSummary","onDFOWidgetClick","onDFOWidgetClickClose","AssetStateChangeAllDrys","TotalDryStatusSummary","onAllReefersClick","onAllReefersClickClose","handleWidgetCheckTotalReefers","AllGensets","onTGWidgetClick","onTGWidgetClickClose","handleWidgetCheckTotalGensets","GRPO","GLON","GRPOFF","GLPO","AllDrys","onTDWidgetClick","onTDWidgetClickClose","TotalDryInsideGeofence","TotalDryOutSideGeofence","PoweredInGeofence","PoweredNotInGeofence","NotPoweredInGeofence","NotPoweredNotInGeofence","renderAddGeofenceControl","CCPCodes","divReefersMAAlarmTitle","RefreshSearchControls","renderCargoCareProfilesHtml","cargoCareProfilesHtml","OnChangeCargoCareFilter","checkboxes","CCPSelected","ccProfileCode","isViaEvent","profileCheck","cargoCareProfilesSelected","profileExists","loopOnce","GetUserCCPProfileFiltersWhenAllUncheked","isFromClose","SaveCargoCareProfileFilters","DrySettings","GensetSettings","LoadPreferencesToDefault","dashboardPreferenceName","ReloadLayoutPreferences","LayoutPreferences","isCustomerDashboard","DeleteUserLayoutConfirm","CheckDefaultLayout","layoutData","ReloadLayoutsData","setEditLayout","param3","setNewLayout","layoutNamesList","layoutNamesListOptions","userLayout","LayoutPreferenceChange","OnCheckDefaultConfirmation","onEditConfirmation","toogleSwitchHtml","renderToogleSwitchHtml","onCreateNewDashboardLayout","md","sm","xs","xxs","onResizeStop","onDrag","onDragLayout","onLayoutChange","onBreakpointChange","closeToolBarEmailModel","aria-labelledby","userDashboards","layoutPreference","layoutCount","getLayoutPreferenceData","searchPreferences","getSearchPreferenceData","dashboardGrids","getDashboardGridsEnabled","cargoCarePreferences","getCargoCareProfilesData","dashBoardLayout","SearchPreferences","DashboardGrids","CargoCarePreferences","HomeStore","DryDetailsHistory","RcdHistorySearchFilters","dryDetailsData","dryHistoryData","updateDryCommandsDimensions","rcdPowerSourceFormatter","dryHistoryID","DCConditionLogID","pickerOptions","showClose","onDryGridReady","DryDetailsCommandStatus","DryCommandStatusFilters","dryCommandsData","bindDryCommandsData","drydetailsCancelAction","resortitem","DryIdchange","dryDetails","showTabPane","isDryOrRCD","DryDetailsFilter","dryId","DryDetailsUI","dryDetailsSearch","DryId","GetDryDetailsSearchData","DryHistoryUI","DryCommandStatus","GetSelectedDryData","validateFilters","Input","InputType","ClearDryDetails","Drychange","ApplyDryDetailsSearch","DCCurrentConditionId","StrEventDTTM","IsAlarm","Heading","PowerUpMode","StrGPSDTTM","LSCallFlag","RegionGeofenceName","HasAlarm","Profile","IdPlate","Assigned","EngineType","CommentExistsGenset","CCSeverityLevelGenset","RegionGeofenceNameID","optionId","columnsToBeExported","renderExportToExcel","SheetName","isUserPreference","selectedOption","isIncludeColumnGroup","handleOptionChange","onChangeIncludeRowGroup","IsUserPreference","preferenceParams","Validation","dashboardLayoutPreferences","DefaultPreferenceData","isOption1","isÒption2","fieldHeaderName","DoorBattPctHeaderFormatter","ChassisPWRFormatterGroupingForExcel","DevcieTempGrouping","InsideTempGrouping","AssetStateFormatterGroupingForExcel","statusIndicatorforALMforGrouping","TripStatusFormatterGroupingForExcel","ChassisBatteryStatusFormatterGroupingExcel","TripWiseGroupingForExcel","OEMTypeCd","lineFrequencyFormatterforExcel","sensorDataFormatterforExcelTwoDecimal","ReeferBattPctFormatterforExcel","DimiRemainTermFormatterforExcel","AirPumpRunHoursFormatterforExcel","CompressorRunHoursFormatterforExcel","CARunHoursFormatterforExcel","PowerMeterFormatterforExcel","CASWVerFormatterforExcel","CTDurationorRemainingTimeFormatterforExcel","Door1FormatterExcel","TemperatureSensorFormatterForExcel","EverFreshFormatterExcel","rowGroupLength","onChangeIncludeColumnGroup","arrayToBeExported","tempClone","tempClone2","loopvariable","reefereList","isMapHistory","ele","timeFormat","PinInfoboxDescription","ResolveAddress","siblings","tab","ReverseGeocodeRestApi","responseData","resourceSets","resources","address","formattedAddress","preTripClass","gpsLatLongCss","colSpan","DateTimeConverter","ReeferOEMypeCd","GensetPinInfoboxDescription","ResolveGensetAddress","GensetLatitudeFormatter","GensetLongitudeFormatter","DryPinInfoboxDescription","ResolveDryAddress","DrydoorFormatter","ChassisPinInfoboxDescription","ResolveChassisAddress","BreakSignal","ChassisBatteryStatusFormatter","PinInfoboxNoLocation","disable","PinInfoboxFenceLocation","findAssetsAtThisLocation","fenceTag","FindAssetByFenceLocation","EffectiveDTTM","outerHTML","updatePreferences","preferencesData","TempUnitCd","AutoPTR","sregardInactiveAlarm","TokenExpiry","HighestSeverityDesc","ModerateSeverityDesc","LowestSeverityDesc","HighestReeferAlarmSeverity","ModerateReeferAlarmSeverity","LowestReeferAlarmSeverity","DryInventoryState","OEMEndCustomerPrefixValues","preferences","RequestCargoCareSettingsData","SubmitCargoCareSettingsData","RequestCargoCareSeverityData","cargoCareSeverityData","RequestBookingTempUnitsData","bookingTempUnitsData","RequestUserGeofencesForCCSettings","userGeofencesData","RequestUserAGGGeofencesForCCSettings","TempSevere","TempMinor","TempInformational","IsSevere","IsMinor","IsInformational","SevereReportingInterval","MinorReportingInterval","InfReportingInterval","IsMissingSchedule","MissingScheduleInterval","SeveritySelectedValue","IsBatteryPower","OffPowerInterval","BatterySeveritySelectedValue","CustTypeCd","IsMissingScheduleGenset","IsMissingScheduleDry","MissingScheduleIntervalGenset","MissingScheduleIntervalDry","CCDefrostCheck","IsGeofences","SeverityStateID","SeverityStateCode","bookingTempUnits","BookTempAlertUnitsCode","BookTempAlertUnitsValue","userLoginGeofences","userLoginAGGGeofences","requestDeploymentSearch","deploymentStatusData","DeploymentTypeId","DeploymentStatusId","Topresult","previousReeferid","GensetAndDryAndChassisStatusEnum","renderCustomAttributesColumns","reportedEventDttm","statusReceiptDttm","historyReceiptDttm","refreshStatusGridForNewEvents","getDisplayedRowCount","ReeferSearchFilter","refreshHistoryGrid","refreshDashboardReeferGrids","checkEventReportedDTTM","onRefreshReeferStatusGrid","PTRReeferFound","selectedTo","selectedSubject","selectedAttachment","selectedMessage","isAllColumns","SendEmailToUserNewExport","elementOfi","elementOfi2","DryStatusSearch","Assetschange","doorBattPct","geofenceMap","ValidatePolygonGeofence","gensetMonitoringGraphHtml","closeToolBarGridExportToExcelPreference","closeToolBarGensetGraphModel","closeToolBarTempGraphModel","renderTempratureGraphHtml","renderGensetMonitoringGraph","gridPrefCss","disableFlag","openGensetMonitoringGraph","modelDialogTempGraphHtml","modelDialogGensetGraphHtml","reeferHistoryMap","calloutState","displayReeferHistoryInfobox","displayReeferHistoryInfoboxOnClick","centerOffset","displayGensetHistoryInfobox","displayGensetHistoryInfoboxOnClick","displayGensetStatusInfobox","displayGensetStatusInfoboxOnClick","selectedDry","displayDryHistoryInfobox","displayDryHistoryInfoboxOnClick","displayDryStatusInfobox","displayDryStatusInfoboxOnClick","displayChassisHistoryInfobox","displayChassisHistoryInfoboxOnClick","displayChassisStatusInfobox","displayChassisStatusInfoboxOnClick","isTrace","DryCurrentConditionId","gridname","_options","CurrentConditionID","almIcon","imageHighCCElement","imageMediumCCElement","imageLowCCElement","ErrorCount","almHtmldata","tempUnitDescription","cargoCareProfile","highValueCargo","isFromCCAssignOrUnassign","BindTracePushpins","getReeferHistoryContextMenuItems","parentEventID","BindTemperatureGraphData","HighLightGraphData","DisplaySelectedPushpinByPassingFormatter","validateReeferStatusHistoryMismatch","ClearGraphData","selReefers","RcdAdvanceSearch","RcdCountry","RcdGeofences","bindingRcdStatusGrid","deviceId","RCDIDschange","ICCIDChange","MSISDNChange","AssetTypechange","AssetTypeCD","AssetTypeDsc","DevicePingControlForM2C","refreshRCDStatusGrid","selectedRcds","refreshPingGrid","DevicePingControl","DeviceChangeReportingInterval","IsMsgFromVessel","refreshCRIGrid","DeviceAssignPANID","refreshPANGrid","DeviceUnassignFromCustomer","AssignedGroupsList","assignedGroupsList","DeviceResetDeviceStatus","refreshDeviceResetGrid","DeviceHardResetDeviceStatus","GetAssetId","submitGetAssetIdCommands","selectedRowDataIds","selectedRowsRcdData","newAssetDetails","isAssetDetailsChanged","Assetlst","AssetNumberList","AssetNumberDistinctList","EditAsset","AssetNumberOnchange","assetDetails","DryAssetDetails","ReactMoment","frmDate","tDate","suggestionsAssetNumber","getSuggestions","prevDryAssetDetails","validateInput","OkConfirmation","currentDetails","previousDetails","inputVal","validateDryAssetDetails","AssetNumberinputProps","performEditAssetNoAction","performEditAssetYesAction","SelectedRcds","customerlst","customerID","customerName","SelectedCustomer","SelectedRcdIDs","myCustomerRequest","getdeviceContextMenuItems","rcdContextMenuClick","GetAssignRCDsList","EditAssetIDContextMenuClick","multiselectresult","onCustomerChange","customerIdvalue","newNodesData","nodesData","TreeNodes","selectedTreeNodes","customerSuggestions","getCustomerSuggestions","showAssignToCustomerComponent","showEmailComponent","isAssigned","assignedRcdCount","rcdcustomerUI","AssignedStatus","checkedNode","showEditAssetWindow","rcdColumns","updateRcdStatusDimensions","GensetFormatter","ReeferFormatter","AssetTypeFormatterForFilter","AssetTypeFormatter","IsInsideGeofence","DeviceTempFormatterForFilter","doorBattPctSorting","doorBattPctFormatterFilter","battPctFormatter","DoorBattPctFormatterGrouping","rcddetails","rcddetailsCopyAction","rcdhistoryAction","reeferrcddetailsAction","rcdData","setPrefenceSettingsColumnsWithPreference","CustomerIdinputProps","requestToHoldRowGroups","onColumnEverythingChanged","CancelCustomer","AssignToCustomerConfirm","CancelAssignToCustomer","AssignCustomer","RcdStatusState","gensetColumns","gensetColumns2","GensetStatusSearch","PopulateReeferenceData","gensetdetailsCopyWithHeaderAction","updateGensetStatusDimensions","CheckAssesRightsForGensets","GensetStatusState","fencesLoaded","fenceImage","fenceGrey","fenceWhite","showDrawingManagerTools","fenceDark","closeDrawingManagerTools","bindMapPushpins","renderAddGeofencePopup","loadCustomerGeofences","IsLocEstEnabled","bindGeofencePopupDashboard","showServerSideGrid","allOfTheData","filterModel","sortData","filterData","reeferStateData","dataFromChild","setFilterModel","forceUpdate","IsCheck","vesselConfig","IsVCCheckChange","VesselConfigChange"],"mappings":"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","file":"static/js/main.26d0c11c.chunk.js","sourcesContent":["\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Excel from '../../actions/ExportToExcel.js';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow';\r\nimport DateFormat from 'dateformat';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface SendEmailState {\r\n EmailFilters: EmailFields;\r\n okMethod: Function;\r\n cancelMethod: Function;\r\n confirmationMsg: string;\r\n dateTime: any;\r\n confirmOk: boolean;\r\n}\r\n\r\nvar currentDateTime;\r\nvar self;\r\n\r\nexport class EmailControlExcel extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.clearEmailFilters();\r\n this.state = { EmailFilters: filterSet, okMethod: Function, cancelMethod: Function, confirmationMsg: '', dateTime: currentDateTime, confirmOk: false };\r\n self = this;\r\n }\r\n\r\n FromEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedFrom = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Subjectchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedSubject = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n ToEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedTo = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Messagechange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedMessage = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n dateTypeFormatter(eventDate: Date) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n\r\n clearEmailFilters() {\r\n currentDateTime = this.dateTypeFormatter((new Date()));\r\n var filters: EmailFields = {\r\n SelectedTo: \"\", SelectedFrom: Config.DefaultEmailAddress, SelectedSubject: \"\", SelectedAttachment: \"\", SelectedMessage: \"\", SelectedForm: \"\"\r\n };\r\n this.setState({\r\n EmailFilters: filters, confirmOk: false, dateTime: currentDateTime\r\n });\r\n return filters;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.clearEmailFilters();\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n closeConfirmation() {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n SendEmailToUser() {\r\n var uri;\r\n var isLimitNumberOfEmailsReached: boolean = false;\r\n if (this.state.EmailFilters.SelectedTo !== undefined || this.state.EmailFilters.SelectedTo !== \"\") { // WI-26789\r\n var SendTo = this.state.EmailFilters.SelectedTo;\r\n var SendFrom = this.state.EmailFilters.SelectedForm;\r\n var SendToArray = SendTo.split(\",\");\r\n var validemail = true;\r\n var myEmailVLD = /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9\\-\\.])+\\.([A-Za-z]{2,4})$/;\r\n\r\n if (SendToArray !== null && SendToArray !== undefined && SendToArray.length < Config.SendEmailLimit) {\r\n if (SendToArray !== null && SendToArray !== undefined && SendToArray.length > 0) {\r\n for (var i = 0; i < SendToArray.length; i++) {\r\n var valid = myEmailVLD.test(SendToArray[i]);\r\n if (!valid) {\r\n validemail = false;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n isLimitNumberOfEmailsReached = true;\r\n validemail = false;\r\n }\r\n\r\n if (validemail) {\r\n if ((this.state.confirmOk === false) && (this.state.EmailFilters.SelectedSubject === \"\" || this.state.EmailFilters.SelectedMessage === \"\")) {\r\n this.setState({\r\n confirmOk: true\r\n });\r\n if (this.state.EmailFilters.SelectedSubject === \"\" && !(this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject\";\r\n else if (!(this.state.EmailFilters.SelectedSubject === \"\") && (this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Message?\";\r\n else if (this.state.EmailFilters.SelectedSubject === \"\" && (this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject and Message?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.SendEmailToUser.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n if (this.props.parentchild === \"P\") {\r\n uri = Excel.SendmailExcelExportParent(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n }\r\n else {\r\n uri = Excel.SendmailExcelExport(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n }\r\n\r\n this.state.EmailFilters.SelectedForm = this.props.formname;\r\n this.state.EmailFilters.SelectedAttachment = JSON.stringify(uri);\r\n var filterParams = JSON.stringify(this.state.EmailFilters);\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Email/SendEmail', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n //fetch(request)\r\n // .then(response => response)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n $('#sendEmail .close').click();\r\n var responseData = data;\r\n if (this.props.formname === undefined || this.props.formname === null || this.props.formname === undefined || this.props.formname === 'undefined') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"ReeferFileRepositoryGrid\")) {\r\n $(\"#ReeferFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"GeofenceFileRepositoryGrid\")) {\r\n $(\"#GeofenceFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"RCDFileRepositoryGrid\")) {\r\n $(\"#RCDFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() !== \"ReeferCommands\") && (this.props.formname.trim() !== \"TripStatus\") && (this.props.formname.trim() !== \"LastPreTrip\") && (this.props.formname.trim() !== \"PreTrip\") && (this.props.formname.trim() !== \"SchedulePreTrip\") && (this.props.formname.trim() !== \"StopPTI\")) {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n\r\n $('#' + this.props.formname + ' .close').click();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#' + this.props.formname).hide();\r\n PopupWindow.showErrorMessage(\"Information\", \"Email Sent Successfully.\");\r\n })\r\n .catch(err => {\r\n $('#globalLoader').hide();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#' + this.props.formname).hide();\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n }\r\n }\r\n else {\r\n if (isLimitNumberOfEmailsReached) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please check the recipient email id. The recipients email should not be more than \" + Config.SendEmailLimit + \".\");\r\n isLimitNumberOfEmailsReached = false;\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", \"Please verify entered email addresse(s).\");\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter email address.\");\r\n }\r\n }\r\n\r\n static ClearFilters() {\r\n self.clearEmailFilters();\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n
\r\n \r\n
Note: Enter multiple email addresses separated by comma(,)
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n To:
\r\n
\r\n this.ToEmailchange(e)} value={this.state.EmailFilters.SelectedTo} />\r\n
\r\n
\r\n
\r\n
\r\n From:
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Subject:
\r\n
\r\n this.Subjectchange(e)} value={this.state.EmailFilters.SelectedSubject} />\r\n
\r\n
\r\n
\r\n
\r\n Attachment:
\r\n
\r\n {this.props.formname} {this.state.dateTime}\r\n
\r\n
\r\n
\r\n
\r\n Message: \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n}\r\n\r\nclass EmailFields {\r\n SelectedTo: string;\r\n SelectedFrom: string;\r\n SelectedSubject: string;\r\n SelectedAttachment: string;\r\n SelectedMessage: string;\r\n SelectedForm: string;\r\n}","module.exports = __webpack_public_path__ + \"static/media/PlugSolid.829d39dc.svg\";","module.exports = __webpack_public_path__ + \"static/media/battery-critical.317d648a.svg\";","module.exports = __webpack_public_path__ + \"static/media/battery-low.3257dda7.svg\";","module.exports = __webpack_public_path__ + \"static/media/battery-normal.d8f6ad4a.svg\";","// @ts-nocheck\r\nimport $ from 'jquery';\r\nimport batterycritical from '../images/battery-critical.svg';\r\nimport batterylow from '../images/battery-low.svg';\r\nimport batterynormal from '../images/battery-normal.svg';\r\nimport PlugSolid from '../images/PlugSolid.svg';\r\nimport BatteryIndicator from '../images/BatteryIndicator.svg';\r\nimport UnPlug from '../images/Unplug.svg';\r\n\r\nconst chassisFormatter = {\r\n ChassisPWRSorting: (params) => {\r\n //return \"-NA-\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.PWR != null && params.data.PWR != undefined) {\r\n switch (params.data.PWR.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n return \"1\";\r\n case \"B\":\r\n return \"2\";\r\n //case \"N\":\r\n // return \"3\";\r\n }\r\n }\r\n return \"3\";\r\n }\r\n return \"3\";\r\n },\r\n ChassisPwrStateFormatterFilter: (params) => {\r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.PWR != null && params.data.PWR != undefined) {\r\n\r\n switch (params.data.PWR.toString().toUpperCase().trim()) {\r\n case \"1\":\r\n case \"A\":\r\n title = \"Powered\";\r\n break;\r\n case \"2\":\r\n case \"B\":\r\n title = \"On Battery\";\r\n break;\r\n case \"3\":\r\n title = \"-NA-\";\r\n break;\r\n }\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n return title;\r\n },\r\n pwrStateFormatterChassis: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.PWR != null && params.data.PWR != undefined) {\r\n var element = document.createElement(\"span\");\r\n element.className = \"pwr_grid_icon\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.PWR.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n element.className = \"PlugSolid\";\r\n element.title = \"Powered\"\r\n imageElement.src = PlugSolid;\r\n break;\r\n case \"B\":\r\n element.className = \"PlugSolid\";\r\n element.title = \"On Battery\"\r\n imageElement.src = UnPlug;\r\n break;\r\n }\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n //return '-NA-';\r\n return \"-NA-\";\r\n },\r\n chassisBatteryStatusSorting: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ChassisBatteryStatus != null && params.data.ChassisBatteryStatus != undefined) {\r\n switch (params.data.ChassisBatteryStatus.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n return \"1\";\r\n case \"L\":\r\n return \"2\";\r\n case \"N\":\r\n return \"3\";\r\n }\r\n }\r\n return \"-1\";\r\n }\r\n return \"-1\";\r\n },\r\n chassisBatteryStatusFormatterFilter: (params) => {\r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ChassisBatteryStatus != null && params.data.ChassisBatteryStatus != undefined) {\r\n switch (params.data.ChassisBatteryStatus.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n title = \"Critical\";\r\n break;\r\n case \"L\":\r\n title = \"Low\";\r\n break;\r\n case \"N\":\r\n title = \"Normal\";\r\n break;\r\n } \r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n return title;\r\n },\r\n chassisBatteryStatusFormatter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ChassisBatteryStatus != null && params.data.ChassisBatteryStatus != undefined) {\r\n var element = document.createElement(\"span\");\r\n element.className = \"pwr_grid_icon\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.ChassisBatteryStatus.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n imageElement.src = batterycritical;\r\n break;\r\n case \"L\":\r\n imageElement.src = batterylow;\r\n break;\r\n case \"N\":\r\n imageElement.src = batterynormal;\r\n break;\r\n }\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n SpeedConverterChassisFilter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var speedUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).SpeedUnitCd.trim();\r\n if (params.data.ChassisSpeed != null) {\r\n if (speedUnitCd.toLowerCase() == \"kmh\") {\r\n var param = params.data.ChassisSpeed;\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempVal = parseFloat(params.data.ChassisSpeed);\r\n var param1 = (tempVal / 1.609344);\r\n return parseFloat(param1.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n ChassisSpeedConverter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var speedUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).SpeedUnitCd.trim();\r\n if (params.value != null && params.value != '-NA-') {\r\n if (speedUnitCd.toLowerCase() == \"kmh\") {\r\n var param = params.value;\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n var param1 = (tempVal / 1.609344);\r\n return parseFloat(param1.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n LoadedValueFormatter: (param) => {\r\n if (param != null) {\r\n if (param.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Loaded\";\r\n else\r\n return \"Empty\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n LoadedFormatter: (params) => {\r\n if (params.value != null) {\r\n if (params.value.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Loaded\";\r\n else\r\n return \"Empty\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n LoadedFormatterFilter: (params) => {\r\n var returnValue = \"\";\r\n if (params.data.Loaded != null) {\r\n if (params.data.Loaded.toString().toUpperCase().trim() == \"TRUE\")\r\n returnValue = \"Loaded\";\r\n else\r\n returnValue = \"Empty\";\r\n }\r\n else\r\n returnValue = '-NA-';\r\n\r\n return returnValue;\r\n },\r\n\r\n BrakeSignalFormatter: (params) => {\r\n\r\n return \"-NA-\";\r\n },\r\n\r\n BrakeSignalSorting: (params) => {\r\n return \"-NA-\";\r\n },\r\n}\r\n\r\nexport default chassisFormatter;","import * as React from 'react';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport $ from 'jquery';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridDryStatusToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData,\r\n formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderGridPreferenceHtml: '', renderExportToExcelHTML: ''\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n this.props.validateRevisionNum(dashboardPreferenceId);\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n //return ;\r\n return ;\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Email
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderEmailHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n modelDialogGridPreferenceHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Grid Preference
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderGridPreferenceHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n modelDialogExportToExcelHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n

Export To Excel

\r\n \r\n \r\n
\r\n
\r\n {this.state.renderExportToExcelHTML}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardStatus_' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"DryStatusGrid\" || this.props.formName == \"DryHistoryGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName, \r\n this.props.parentchild, functionId, widgetId , this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"DryStatusGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"DryStatusGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadDryStatus').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#DryQuickFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.props.formName == \"DryStatusGrid\" ?\r\n : \"\"}\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
\r\n
\r\n { \r\n this.props.IsServerSideEnabled == false ?\r\n
\r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
: '' \r\n }\r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
\r\n }\r\n}","/// \r\n/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { DryHistoryGrid } from './DryHistoryGrid';\r\nimport Formatters from '../../actions/Formatters';\r\nimport DryFormatters from '../../actions/DryFormatter';\r\nimport { DryCellRenderer } from '../../actions/DryCellRenderer';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport $ from 'jquery';\r\nimport uniq from 'lodash/uniq';\r\nimport forEach from 'lodash/forEach';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport isEqual from 'lodash/isEqual';\r\nimport CCAlmTooltip from '../sharedcomponents/GridToolTips/CCAlmTooltip';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport './../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { DryStatusToggleButtonsFilter } from '../childcomponents/DryStatusToggleButtonsFilter';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { GridDryStatusToolBar } from '../sharedcomponents/GridDryStatusToolBar';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { DryPingControl } from './../sharedcomponents/ForwardCommands/DryCommands/DryPingControl';\r\nimport { MRelatedReportingInterval } from './../sharedcomponents/ForwardCommands/DryCommands/MRelatedReportingInterval';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport UserRights from '../../actions/UserRights';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\ninterface DryGridState {\r\n loading: boolean;\r\n Filters: server.ReeferSearchFilters;\r\n rowData: any[];\r\n columnDefs: any[];\r\n selectedItems: any[];\r\n overlayLoadingTemplate: any;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string;\r\n reeferFormatter: server.ReeferFormatter[];\r\n pageSize: any;\r\n gridApiParams: any;\r\n tempFilters: server.ReeferSearchFilters;\r\n exportFields: ExportFields;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n PrevEndRow: any;\r\n PrevStartRow: any;\r\n frameworkComponents: any;\r\n rowModelname: string;\r\n serverSideStoreType: any;\r\n}\r\n\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar currentMousePos = { x: -1, y: -1 };\r\nvar self;\r\nvar selectedRowData;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customerTypeCd;\r\nvar functionId;\r\nvar customerAccessData: any[];\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar dryAssetSensors: any[];\r\nvar commandIssued: boolean = false;\r\nvar selectedRowIndex: number;\r\nvar IsTriggered: boolean;\r\nvar serverSideEnabled: boolean;\r\nvar previousDryid;\r\nexport class DryStatusSSRMGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n customerAccessData = [];\r\n selectedRowIndex = -1;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n //customerTypeCd = props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n functionId = 48; // functionId for Dry Status Grid\r\n serverSideEnabled = true;\r\n // new FilterDto();\r\n var overlayTemplate = 'Loading...';\r\n var exportData = new ExportFields();\r\n this.state = {\r\n loading: true,\r\n Filters: this.props.statusFilter,\r\n //rowData: this.props.propsDryData,\r\n rowData: [],\r\n columnDefs: [], selectedItems: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n reeferFormatter: [],\r\n tempFilters: null,\r\n pageSize: 1000,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n autoGroupColumnDef: { minWidth: 200 },\r\n PrevEndRow: -1,\r\n PrevStartRow: -1,\r\n frameworkComponents: { cCAlmTooltip: CCAlmTooltip },\r\n rowModelname: 'serverSide',\r\n serverSideStoreType: 'partial'\r\n };\r\n\r\n\r\n self = this;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n const propsDryData: any = this.props.propsDryData;\r\n //if (propsDryData !== nextprops.propsDryData)\r\n //this.setState({ rowData: [] });\r\n if (nextprops.propsDryData != null && nextprops.propsDryData != undefined && nextprops.propsDryData.length > 0 && nextprops.statusFilter.StatusFilters != undefined\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.AllReefer && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.Running\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.Stopped && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.MissedRunning\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.MissedStopped && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.AllMicroAlaram\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.MASevere && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.MAMinor\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.AllCargoCare && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.CCSevere\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.CCMinor && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.CCInformational\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.PowerOffNotReporting && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.PowerOffReporting\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.PowerOnNotReporting && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.PowerOnReporting\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.ChassisPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.ChassisPwrOutGeofence\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.ChassisNotPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndChassisStatusEnum.ChassisNotPwrOutGeofence) {\r\n if (!serverSideEnabled)\r\n this.setState({ rowData: nextprops.propsDryData });\r\n \r\n }\r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns() {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n dryAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'D');\r\n\r\n if (dryAssetSensors != null && dryAssetSensors != undefined && dryAssetSensors.length > 0) {\r\n //var door1Column = {\r\n // headerName: \"Door\", field: \"Door1Open\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, getQuickFilterText: DryFormatters.doorQuickFilterFormatter,\r\n // filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n // valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n //};\r\n //generatedColumns.push(door1Column);\r\n\r\n $.each(dryAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', enableRowGroup: false, sortable: false, headerClass: val.OORText, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, enableRowGroup: false, sortable: false, headerClass: val.OORText, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n //customerDeviceTypeSensorObject.refData = val.SensorSetDsc + \",\" + val.SensorResetDsc;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n //console.log('didmount');\r\n //var columnDefs = this.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefs });\r\n columnDefs2 = this.createColumnDefs();\r\n\r\n setTimeout(() => {\r\n this.renderCustomerDeviceTypeSensorColumns();\r\n }, 1000);\r\n\r\n //var functionID = 1;\r\n //var url = Config.ApiBaseUrl + '/api/User/GetDefaultSearchParams?FunctionId=' + functionID;\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data != null && data != undefined) {\r\n // if (!data.DefaultSearch)\r\n // this.props.requestDryAdvanceSearch(this.state.Filters);\r\n // }\r\n // else\r\n // this.props.requestDryAdvanceSearch(this.state.Filters);\r\n // });\r\n //this.props.requestReeferAdvanceSearch(this.state.Filters);\r\n self.setState({ tempFilters: this.state.Filters });\r\n $('.ag-column-hover').contextmenu(function (e) {\r\n var relX = e.pageX - $('.ag-column-hover').offset().left;\r\n var relY = (e.pageY - $('.ag-column-hover').offset().top);\r\n $(\".drycontext-menu\").toggle(100).css({\r\n top: relY,\r\n left: relX\r\n });\r\n $(\"#drycontextmenu\").hide();\r\n $(\".drycontext-menu\").hide();\r\n e.preventDefault();\r\n });\r\n\r\n\r\n\r\n\r\n $(document).mousemove(function (event) {\r\n currentMousePos.x = event.pageX;\r\n currentMousePos.y = event.pageY;\r\n event.preventDefault();\r\n });\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReport\"));\r\n\r\n }\r\n\r\n onRefreshData = () => {\r\n $('#globalLoader').show();\r\n this.setState({\r\n rowData: this.state.rowData\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n $('#globalLoader').hide();\r\n };\r\n\r\n /* WI 26971 implementation start */\r\n static validateDryStatusHistoryMismatch(statusEventDttm: any, historyEventDttm: any) {\r\n IsTriggered = false;\r\n if (statusEventDttm != historyEventDttm)\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"New events are available for the Dry Status grid. Refresh now?\", self.onRefreshDryStatusGrid.bind(this), self.onCancelRefreshDryStatusGrid.bind(this));\r\n }\r\n\r\n onCancelRefreshDryStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n onRefreshDryStatusGrid() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n self.refreshDryStatusGridForNewEvents();\r\n }\r\n }\r\n\r\n refreshDryStatusGridForNewEvents() {\r\n selectedRowIndex = -1;\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n }, () => this.DrySearchFilter(self.props.statusFilter, true, false, false));\r\n\r\n }\r\n /* WI 26971 implementation end */\r\n\r\n onRowDataChanged(params: any): void {\r\n var containerIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n //var selItems = self.state.PrevSelectedItems;\r\n containerIdSelected = self.state.PrevSelectedItems[0].DCCurrentConditionID;\r\n // gensetIdSelected = \"TEST0000540\";\r\n }\r\n commandIssued = false;\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n var gridData = self.state.rowData;\r\n if (gridData != null && gridData != undefined && gridData.length > 0) {\r\n TotalCount = gridData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n\r\n if (TotalCount > 0 && containerIdSelected !== \"\") {\r\n let count = 0;\r\n if (containerIdSelected) {\r\n commandIssued = true;\r\n params.api.forEachNode((node) => {\r\n count = count + 1;\r\n if (node.data.DCCurrentConditionID === containerIdSelected) {\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n //console.log('pageNo' + pageNo);\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n createServerSideDatasource(server) {\r\n return {\r\n getRows: function (params) {\r\n\r\n setTimeout(function () {\r\n\r\n params.success({\r\n rowData: [],\r\n rowCount: 0,\r\n });\r\n self.state.gridApiParams.showNoRowsOverlay(); // RCNG-5070 OMP QA2: \"No Rows To Show\" caption is not showing in all grids in dashboard\r\n }, 1000);\r\n },\r\n };\r\n }\r\n \r\n\r\n static ClearDryStatusGridData() {\r\n if (self != undefined) {\r\n //ReeferCallout.ResetMapPushpins();\r\n selectedRowIndex = -1;\r\n var datasource = self.createServerSideDatasource();\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\")\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n }\r\n\r\n\r\n dryContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.drymapAction(this.state.selectedItems);\r\n break;\r\n case \"History\": this.dryhistoryAction(this.state.selectedItems);\r\n break;\r\n case \"CommandStatus\": this.drycommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.drydetailsAction(this.state.selectedItems, 'Dry', 'CurrentDetails');\r\n break;\r\n case \"Copy\": this.drydetailsCopyAction();\r\n break;\r\n\r\n }\r\n }\r\n\r\n drydetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n drydetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n var isHistoryCall = false;\r\n var isHistorySelectionChanged = false; \r\n if (this.state.selectedItems.length == 1 && previousDryid != event.data.AssetNumber)\r\n isHistorySelectionChanged = true;\r\n\r\n if ((selectedRowIndex != event.rowIndex) || (isHistorySelectionChanged == true)) {\r\n selectedRowIndex = event.rowIndex;\r\n isHistoryCall = true;\r\n }\r\n\r\n if (event.data != null && event.data != undefined) {\r\n self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === 0)//RCNG-1110\r\n this.drydetailsAction(this.state.selectedItems, 'Dry', 'Comments');\r\n else if (isHistoryCall)\r\n DryHistoryGrid.ApplyDryHistorySearch(event.data, false, self.props.dryHistoryEnabled);\r\n //$(\"#globalLoader\").hide();\r\n }\r\n if (this.state.selectedItems.length == 1) \r\n previousDryid = event.data.AssetNumber;\r\n }\r\n\r\n drydetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var drydetails = data;\r\n this.props.drydetailsAction(drydetails, dataSource, isOpenVia);\r\n }\r\n\r\n dryhistoryAction(data: any) {\r\n var drydetails = data;\r\n this.props.dryhistoryAction(drydetails);\r\n }\r\n\r\n drymapAction(data: any) {\r\n var drydetails = data;\r\n this.props.dryMapAction(drydetails);\r\n }\r\n\r\n drycommandstatusAction(data: any) {\r\n var drydetails = data;\r\n this.props.drycommandstatusAction(drydetails);\r\n }\r\n\r\n\r\n\r\n static SelectCurrentDry(currentReefer: any) {\r\n self.state.gridApiParams.deselectAll();\r\n DryHistoryGrid.ClearHistoryGridData();\r\n var countRecordPerPage = 0;\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode(function (node) {\r\n countRecordPerPage = countRecordPerPage + 1;\r\n if (node.data.AssetNumber === currentReefer.AssetNumber) {\r\n var currentPage = Math.trunc(countRecordPerPage / self.state.gridApiParams.paginationProxy.pageSize);\r\n if (currentPage > 1) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.paginationGoToPage(currentPage);\r\n }\r\n\r\n node.setSelected(true);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureIndexVisible(node.rowIndex);\r\n self.setState({ selectedItems: node.data });\r\n self.props.getLastSelectedRow(node.data);\r\n //$('#globalLoader').show();\r\n DryHistoryGrid.ApplyDryHistorySearch(node.data, true, self.props.dryHistoryEnabled);\r\n }\r\n });\r\n }\r\n\r\n static SelectCurrentNode(currentReeferId: string) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode(function (node) {\r\n if (node.data.AssetNumber === currentReeferId) {\r\n node.setSelected(true);\r\n }\r\n });\r\n }\r\n\r\n static ApplyDrySearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: any, loaderState: any) {\r\n if (self != undefined) {\r\n self.DrySearchFilter(filters, eventsRefresh, newSearch, loaderState);\r\n }\r\n }\r\n\r\n DrySearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean, loaderState: boolean) {\r\n if (self != undefined) {\r\n $('#globalLoader').show();\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.showLoadingOverlay !== \"undefined\") {\r\n // self.state.gridApiParams.showLoadingOverlay();\r\n // self.state.gridApiParams.paginationGoToFirstPage();\r\n // self.state.gridApiParams.deselectAll();\r\n }\r\n }\r\n\r\n if (filters != null && filters != undefined) {\r\n var customAttributesInfo = {};\r\n var filterset: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null,\r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null\r\n , SelectedVesselCD: null, SelectedVoyage: null, SelectedCall: null, SelectedCargoCareProfiles: null\r\n };//WI-26881\r\n\r\n filterset.SelectedCountry = (filters.SelectedCountry == \"\" || filters.SelectedCountry == undefined) ? null : filters.SelectedCountry;\r\n filterset.SelectedGeofence = (filters.SelectedGeofence == \"\" || filters.SelectedGeofence == undefined) ? null : filters.SelectedGeofence;\r\n filterset.SelectedGeofenceInside = (filters.SelectedGeofenceInside == \"\" || filters.SelectedGeofenceInside == undefined) ? null : filters.SelectedGeofenceInside;\r\n filterset.SelectedInterval = (filters.SelectedInterval == \"\" || filters.SelectedInterval == undefined) ? null : filters.SelectedInterval;\r\n filterset.SelectedAssetTypes = (filters.SelectedAssetTypes == \"\" || filters.SelectedAssetTypes == undefined) ? null : filters.SelectedAssetTypes;\r\n filterset.SelectedAssetStates = (filters.SelectedAssetStates == \"\" || filters.SelectedAssetStates == undefined) ? null : filters.SelectedAssetStates;\r\n filterset.SelectedOem = (filters.SelectedOem == \"\" || filters.SelectedOem == undefined) ? null : filters.SelectedOem;\r\n filterset.SelectedReefer = (filters.SelectedReefer == \"\" || filters.SelectedReefer == undefined) ? null : filters.SelectedReefer;\r\n filterset.AllReefers = (filters.AllReefers == \"\" || filters.AllReefers == undefined) ? null : filters.AllReefers;\r\n filterset.SelectedVesselCode = (filters.SelectedVesselCode == \"\" || filters.SelectedVesselCode == undefined) ? null : filters.SelectedVesselCode;\r\n filterset.SelectedVesselCD = (filters.SelectedVesselCD == \"\" || filters.SelectedVesselCD == undefined) ? null : filters.SelectedVesselCD;//WI-26881\r\n filterset.SelectedVoyage = (filters.SelectedVoyage == \"\" || filters.SelectedVoyage == undefined) ? null : filters.SelectedVoyage;//WI-26881\r\n filterset.SelectedCall = (filters.SelectedCall == \"\" || filters.SelectedCall == undefined) ? null : filters.SelectedCall;//WI-26881\r\n filterset.StatusFilters = filters.StatusFilters;\r\n filterset.CustomAttributeFilters = filters.CustomAttributeFilters;\r\n self.setState({\r\n tempFilters: filterset\r\n });\r\n\r\n var finalData = [];\r\n self.setState({ rowData: [], PrevStartRow: -1, PrevEndRow: -1 });\r\n var datasource = self.ServerSideDatasource(finalData, newSearch, loaderState);\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n }\r\n }\r\n\r\n }\r\n\r\n ServerSideDatasource(data: any, newSearch: any, loaderState: any) {\r\n return {\r\n getRows: (params) => {\r\n var newfilters: server.ReeferSearchFiltersSSRM = {\r\n SelectedOem: self.state.tempFilters.SelectedOem,\r\n SelectedCountry: self.state.tempFilters.SelectedCountry,\r\n SelectedGeofence: self.state.tempFilters.SelectedGeofence,\r\n SelectedGeofenceInside: self.state.tempFilters.SelectedGeofenceInside,\r\n SelectedInterval: self.state.tempFilters.SelectedInterval,\r\n SelectedReefer: self.state.tempFilters.SelectedReefer,\r\n SelectedVesselCode: self.state.tempFilters.SelectedVesselCode,\r\n StatusFilters: self.state.tempFilters.StatusFilters,\r\n AllReefers: self.state.tempFilters.AllReefers,\r\n CustomAttributeFilters: self.state.tempFilters.CustomAttributeFilters,\r\n SelectedAssetTypes: self.state.tempFilters.SelectedAssetTypes,\r\n SelectedAssetStates: self.state.tempFilters.SelectedAssetStates,\r\n SelectedBookingNumber: self.state.tempFilters.SelectedBookingNumber,\r\n StartRow: params.request.startRow,\r\n EndRow: params.request.endRow,\r\n RowGroupCols: params.request.rowGroupCols,\r\n GroupKeys: params.request.groupKeys,\r\n SortModels: params.request.sortModel,\r\n SelectedVesselCD: self.state.tempFilters.SelectedVesselCD,\r\n SelectedVoyage: self.state.tempFilters.SelectedVoyage,\r\n SelectedCall: self.state.tempFilters.SelectedCall,\r\n SelectedCargoCareProfiles: self.state.tempFilters.SelectedCargoCareProfiles\r\n };\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/GetDCCurrentConditionDataSP', { method: 'POST', body: JSON.stringify(newfilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n var response:any = this.getData_old(finalData, params.request, newSearch);\r\n if (response.rows.length == 0) {\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n }\r\n else {\r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n setTimeout(function () {\r\n if (response.success) { \r\n params.successCallback(response.rows, response.lastRow);\r\n if(!loaderState)\r\n $('#globalLoader').hide();\r\n } else {\r\n params.failCallback();\r\n }\r\n }, 200);\r\n });\r\n\r\n },\r\n };\r\n };\r\n\r\n\r\n getData_old(params, req, newSearch) {\r\n if(req.startRow != 0 && newSearch == true)\r\n newSearch = false; \r\n var newData = params;\r\n let dryData = cloneDeep(params);\r\n //let reefersData = Object.assign({}, params);\r\n var dryStateData = self.state.rowData;\r\n //if (req.endRow != reeferStateData.length && req.endRow > reeferStateData.length && params.length != reeferStateData.length) {\r\n if (req.endRow != dryStateData.length && req.endRow > dryStateData.length && req.endRow != this.state.PrevEndRow) {\r\n dryData.push(...dryStateData);\r\n self.setState({ rowData: dryData, PrevEndRow: req.endRow, PrevStartRow: req.startRow }, () => {\r\n if(!newSearch)\r\n ReeferCallout.BindClusterMapPushpins(self.state.rowData, 'dry', self.state.reeferFormatter);\r\n });\r\n }\r\n else {\r\n if(!newSearch)\r\n ReeferCallout.BindClusterMapPushpins(self.state.rowData, 'dry', self.state.reeferFormatter);\r\n }\r\n\r\n return {\r\n success: true,\r\n rows: newData,\r\n lastRow: this.getLastRowIndex(req, newData),//params.length,//getLastRowIndex(req, newData),\r\n };\r\n }\r\n\r\n getLastRowIndex(request, results) {\r\n if (!results || results.length === 0) {\r\n return request.startRow;\r\n }\r\n if (self.state.rowData.length == request.endRow || (parseInt(self.state.rowData.length) % parseInt(self.state.pageSize) == 0)) {\r\n var currentLastRow = request.startRow + results.length+1;\r\n } else {\r\n var currentLastRow = request.startRow + results.length;\r\n }\r\n\r\n return currentLastRow <= request.endRow ? currentLastRow : -1;\r\n } \r\n\r\n static refreshGridReady(dashboardWidgetsSearch: any) {\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 16);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"DryStatusGrid\");\r\n }, 3000);\r\n }\r\n\r\n \r\n onGridReadyServer(params: any) {\r\n var totalWidgetSearch = self.props.totalWidgetSearch;//WI26412\r\n $('#globalLoader').show();\r\n //this.gridApi.sizeColumnsToFit();\r\n self.setState({ gridApiParams: params.api });\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 16);\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n $('#globalLoader').hide();\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"DryStatusGrid\");\r\n }, 3000);\r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"ReeferStatusGrid\");\r\n var finalData = [];\r\n var filterDefault: server.ReeferSearchFilters = {\r\n SelectedCountry: \"\", SelectedAssetTypes: \"\", SelectedAssetStates: \"\", SelectedGeofence: \"\", SelectedGeofenceInside: \"\", SelectedInterval: \"\", SelectedOem: \"\", SelectedReefer: \"\", SelectedVesselCode: \"\", StatusFilters: [12], CustomAttributeFilters: {}, AllReefers: \"\", SelectedBookingNumber: null, SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n var filterDefault2: server.ReeferSearchFilters = {\r\n SelectedCountry: \"\", SelectedAssetTypes: \"\", SelectedAssetStates: \"\", SelectedGeofence: \"\", SelectedGeofenceInside: \"\", SelectedInterval: \"\", SelectedOem: \"\", SelectedReefer: \"\", SelectedVesselCode: \"\", StatusFilters: [12], CustomAttributeFilters: {}, AllReefers: null, SelectedBookingNumber: null, SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n //if condition added for WI26412\r\n if (totalWidgetSearch) {\r\n var hasDryFilter = self.props.statusFilter.SelectedAssetTypes;\r\n if (hasDryFilter != null && hasDryFilter != undefined && hasDryFilter.length > 0) {\r\n var regexp = /Dry/gi;\r\n if (hasDryFilter.search(regexp) == -1) {\r\n // console.log(\"Does not contain Dry\");\r\n } else {\r\n if (self.props.hasDry) {\r\n let isEquals = isEqual(filterDefault, self.props.statusFilter);\r\n if (!isEquals) {\r\n var datasource = self.ServerSideDatasource(finalData, false, false);\r\n params.api.setServerSideDatasource(datasource);\r\n }\r\n }\r\n }\r\n } else {\r\n let isEquals = isEqual(filterDefault2, self.props.statusFilter);\r\n if (!isEquals) {\r\n var datasource = self.ServerSideDatasource(finalData, false, false);\r\n params.api.setServerSideDatasource(datasource);\r\n }\r\n\r\n }\r\n }\r\n /* WI 26568 changes start */\r\n else {\r\n if (self.props.propsDryData != null && self.props.propsDryData != undefined && self.props.propsDryData.length > 0) {\r\n var datasource = self.ServerSideDatasource(finalData, false, false);\r\n params.api.setServerSideDatasource(datasource);\r\n }\r\n else {\r\n var datasource = self.createServerSideDatasource();\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n \r\n }\r\n }\r\n /* WI 26568 changes end */\r\n }\r\n\r\n static ClearSelection() {\r\n $('#globalLoader').show();\r\n selectedRowIndex = -1;\r\n //DryHistoryGrid.ClearHistoryGridData();\r\n //this.props.clearGridHeaderExtension();\r\n if (self != undefined) {\r\n self.state.gridApiParams.deselectAll();\r\n }\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'dry', self.state.reeferFormatter);\r\n $('#globalLoader').hide();\r\n }\r\n onGridScroll(params: any) {\r\n $(\".drycontext-menu\").hide();\r\n $(\"#drycontextmenu\").hide();\r\n }\r\n\r\n onGridPaginationChanged(params: any) {\r\n if (params.newPage) {\r\n self.props.clearGridHeaderExtension();\r\n if (!commandIssued)\r\n params.api.deselectAll();\r\n commandIssued = false;\r\n DryHistoryGrid.ClearHistoryGridData();\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'status');\r\n }\r\n\r\n //if (params.api.getDisplayedRowCount() == 1) {\r\n // var rowindex = 0;\r\n // var rowNode = params.api.getRowNode(rowindex);\r\n // // do something with the row, eg select it\r\n // if (rowNode != undefined && rowNode != null) {\r\n // rowNode.setSelected(true);\r\n // DryHistoryGrid.ApplyDryHistorySearch(rowNode.data, false);\r\n // }\r\n //}\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.DeviceDataTime)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n onSort(params: any) {\r\n params.api.clearFocusedCell();\r\n this.clearGridRowSelection(params);\r\n }\r\n onGridSelectionChanged(params: any) {\r\n $(\"#drycontextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n //var selected = params.api.getFocusedCell();\r\n //var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n //ReeferCallout.ResetMapPushpins(); // Clear existing pushpins\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n //ReeferHistoryGrid.ApplyReeferHistorySearch(selectedRow);\r\n });\r\n //var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n self.props.getSelectedRow(selectedRows);\r\n //self.props.getLastSelectedRow(selectedRow.data);\r\n //$('#globalLoader').show();\r\n //ReeferHistoryGrid.ApplyReeferHistorySearch(selectedRow.data);\r\n //$(\"#gensetcontextmenu\").show();\r\n\r\n //var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n\r\n //if (selectedReeferData.length > 1) {\r\n // $('#liDetailsRequiresRight').removeClass('enabled');\r\n // $('#liDetailsRequiresRight').addClass('disabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n //}\r\n //else {\r\n // $('#liDetailsRequiresRight').removeClass('disabled');\r\n // $('#liDetailsRequiresRight').addClass('enabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n //}\r\n //var forwardCommandParam = JSON.stringify(selectedReeferData);\r\n //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetAssetAssigned3rdParty';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data == \"assigned\") {\r\n // if ($(\"#liThirdPartyAccessRequiresRightDry\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightDry').removeClass('disabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRightDry\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightDry').addClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightDry\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightDry').removeClass('disabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightDry\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightDry').addClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightDry\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightDry').removeClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightDry\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightDry').addClass('disabled');\r\n\r\n // }\r\n // else if (data == \"unassigned\") {\r\n // if ($(\"#liThirdPartyAccessRequiresRightDry\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightDry').removeClass('disabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRightDry\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightDry').addClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightDry\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightDry').removeClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightDry\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightDry').addClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightDry\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightDry').removeClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightDry\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightDry').addClass('enabled');\r\n // }\r\n // else {\r\n // if ($(\"#liThirdPartyAccessRequiresRightDry\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightDry').removeClass('enabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRightDry\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightDry').addClass('disabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightDry\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightDry').removeClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightDry\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightDry').addClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightDry\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightDry').removeClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightDry\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightDry').addClass('disabled');\r\n // }\r\n // });\r\n }\r\n\r\n }\r\n\r\n\r\n static ReeferStatusResult() {\r\n self.DrySearchFilter(self.state.tempFilters, false, false, false);\r\n }\r\n HideAllContextMenus() {\r\n $(\"#gensetcontextmenu\").hide();\r\n $(\".gensetcontext-menu\").hide();\r\n $(\"#drycontextmenu\").hide();\r\n $(\".drycontext-menu\").hide();\r\n $(\"#chassiscontextmenu\").hide();\r\n $(\".chassiscontext-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n $(\".context-menu\").hide();\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getDryContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"DCCurrentConditionID\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n //var dCCurrentConditionID = selectedrowNode.data.DCCurrentConditionID;\r\n var assetMasterID = selectedrowNode.data.AssetMasterID;\r\n params.api.forEachNode((newRowNode, index) => {\r\n if ((newRowNode.data.AssetMasterID === assetMasterID)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.AssetMasterID == selectedrowNode.data.AssetMasterID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.dryContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('162'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.dryContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('159'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.dryContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('163'),\r\n },\r\n {\r\n name: 'Third Party Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('170,171'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'ThirdPartyAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignToCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('170'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'Assign'),\r\n },\r\n {\r\n name: 'Unassign From Customer',\r\n action: () => {\r\n this.popUpUnAssignFromCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('171'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'UnAssign'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Inventory',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('250,251'),//RCNG-1176\r\n disabled: UserRights.checkMenuItemDisabled(params, 'RetireOrReactivate'),\r\n subMenu: [\r\n {\r\n name: 'Retire',\r\n action: () => {\r\n this.popUpRetire();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('250', params, \"Retire\"),\r\n },\r\n {\r\n name: 'Reactivate',\r\n action: () => {\r\n this.popUpReactivate();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('251', params, \"Reactivate\"),\r\n },\r\n ],\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n //getDryContextMenuItems(params: any) {\r\n // var flag = false;\r\n // var selected = params.api.getFocusedCell();\r\n\r\n // var setRowIndex = selected.rowIndex;\r\n // var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n // if (row != null && row != \"undefined\" && !row.group) {\r\n // var rowId = row.id;\r\n // var selectedrowNode = params.api.getRowNode(rowId);\r\n // //var selectedrowNode = params.api.getRowNode(setRowIndex);\r\n // //var tempArray = [];// if sort is clicked save in temp array\r\n // //params.api.forEachNode(function (rowNode, index) {\r\n // // tempArray.push(rowNode);\r\n // //});\r\n\r\n // //var resortitem = tempArray[setRowIndex];\r\n // var sortflage = false;\r\n // //var reeferid = resortitem.data.ReeferID;\r\n // var dCCurrentConditionID = selectedrowNode.data.DCCurrentConditionID;\r\n // params.api.forEachNode(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.DCCurrentConditionID === dCCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.DCCurrentConditionID == selectedrowNode.data.DCCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // selectedrowNode.setSelected(true);\r\n // }\r\n // /*var selectedrowNode = params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n\r\n // var resortitem = tempArray[selected.rowIndex];\r\n // var dCCurrentConditionID = resortitem.data.DCCurrentConditionID;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.DCCurrentConditionID === dCCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.DCCurrentConditionID == selectedrowNode.data.DCCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n\r\n // //$(\".drycontext-menu\").show(); $(\"#drycontextmenu\").show();\r\n // //Excel.preventDefault();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n // */\r\n // $(document).contextmenu(function (e) {\r\n // self.HideAllContextMenus(); // landing page have multiple context menus close all\r\n // var divmenuwidth = 390;\r\n // var offset = $(\"#DRY-grid .ag-column-hover\").offset();\r\n // if ((typeof (offset) != 'undefined') && offset != null) {\r\n // if (offset.left > 400) {\r\n // divmenuwidth = 390;\r\n // } else if (offset.left > 890) {\r\n // divmenuwidth = 690;\r\n // } else {\r\n // divmenuwidth = 40;\r\n // }\r\n // }\r\n // /// var relativeX = (e.pageX - offset.left);\r\n // if ((typeof (offset) != 'undefined') && offset != null) {\r\n // var relativeY = (e.pageY - offset.top + 50);\r\n // }\r\n // var relativeX = e.pageX - divmenuwidth;\r\n\r\n // if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n // relativeX = relativeX - (divmenuwidth + 5);\r\n // }\r\n // var height = $(window).height() - 200;\r\n // var halfheight = ($(window).height()) / 2;\r\n // if (height < relativeY) {\r\n // relativeY = (relativeY - halfheight) + 20;\r\n // }\r\n // $(\".drycontext-menu\").css({\r\n // top: relativeY + \"px\",\r\n // left: relativeX + \"px\",\r\n // position: \"absolute\"\r\n // });\r\n // });\r\n\r\n\r\n // $(\"#DRY-grid .ag-cell\").unbind(\"contextmenu\");\r\n // $(\"#DRY-grid .ag-cell\").bind('contextmenu', function (e) {\r\n // var flag = false;\r\n // var selected = params.api.getFocusedCell();\r\n\r\n // var setRowIndex = selected.rowIndex;\r\n // var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n // if (row != null && row != \"undefined\" && !row.group) {\r\n // var rowId = row.id;\r\n // var selectedrowNode = params.api.getRowNode(rowId);\r\n // //var selectedrowNode = params.api.getRowNode(setRowIndex);\r\n // //var tempArray = [];// if sort is clicked save in temp array\r\n // //params.api.forEachNode(function (rowNode, index) {\r\n // // tempArray.push(rowNode);\r\n // //});\r\n\r\n // //var resortitem = tempArray[setRowIndex];\r\n // var sortflage = false;\r\n // //var reeferid = resortitem.data.ReeferID;\r\n // var dCCurrentConditionID = selectedrowNode.data.DCCurrentConditionID;\r\n // params.api.forEachNode(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.DCCurrentConditionID === dCCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.DCCurrentConditionID == selectedrowNode.data.DCCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // selectedrowNode.setSelected(true);\r\n // }\r\n\r\n // /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n // var resortitem = tempArray[selected.rowIndex]; \r\n // var sortflage = false;\r\n // var dCCurrentConditionID = resortitem.data.DCCurrentConditionID;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.DCCurrentConditionID === dCCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.DCCurrentConditionID == selectedrowNode.data.DCCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n // */\r\n // var reSized = self.props.isResizeClicked;\r\n // if (JSON.stringify(reSized) === 'false') {\r\n // var divmenuwidth = 280;\r\n // } else {\r\n // var divmenuwidth = 20;\r\n // } \r\n // var offset = $(\"#DRY-grid .ag-column-hover\").offset();\r\n // var relativeY = (e.pageY - offset.top);\r\n // var relativeX = e.pageX - divmenuwidth;\r\n\r\n // if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n // relativeX = relativeX - (divmenuwidth + 5);\r\n // }\r\n // var height = $(window).height();\r\n // var halfheight = ($(window).height()) / 2;\r\n // //if ((window as any).clipboardData) {\r\n // // if (height < relativeY + 560) {\r\n // // //if IE Browser \r\n // // relativeY = (relativeY - 150);\r\n // // }\r\n // //}\r\n // //else\r\n // if (JSON.stringify(reSized) === 'false') {\r\n // // click on below window half height make to Y top to static value 140px\r\n // if (relativeY > 140) {\r\n // relativeY = 140;\r\n // }\r\n // } else {\r\n // var height = $(window).height() - 200;\r\n // var halfheight = ($(window).height()) / 2;\r\n // if ((window as any).clipboardData) {\r\n // if (height < relativeY + 60) {\r\n // //if IE Browser \r\n // relativeY = (relativeY - 150);\r\n // }\r\n // }\r\n // else if (height < relativeY + 378) {\r\n // relativeY = (relativeY - 135);\r\n // }\r\n // }\r\n // $(\".drycontext-menu\").css({\r\n // top: relativeY + \"px\",\r\n // left: relativeX + \"px\",\r\n // position: \"absolute\"\r\n // });\r\n // $(\"#drycontextmenu\").show();\r\n // $(\".drycontext-menu\").show();\r\n // e.preventDefault();\r\n // return false;\r\n // });\r\n\r\n // $(document).contextmenu(function () {\r\n // return false;\r\n // });\r\n\r\n // $(document).bind('drycontextmenu click', function () {\r\n // $(\".drycontext-menu\").hide();\r\n // });\r\n\r\n // $('.drycontext-menu').bind('drycontextmenu', function () {\r\n // return false;\r\n // });\r\n // $('.drycontext-menu').on('click', 'li', function () {\r\n // $(\".drycontext-menu\").hide();\r\n // });\r\n //}\r\n onCancelDryStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n popUpRetire() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a retired asset does not appear in search results, nor does it contribute to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesRetire.bind(this),\r\n self.onCancelDryStatusGrid.bind(this));\r\n }\r\n popUpReactivate() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a reactivated asset appears in search results and contributes to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesReactivate.bind(this),\r\n self.onCancelDryStatusGrid.bind(this));\r\n }\r\n onYesRetire() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits();\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/RetireAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Retired.\");\r\n self.refreshStatusGrid();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n }\r\n }\r\n onYesReactivate() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits();\r\n $('#globalLoader').show();\r\n RCNGWindow.ConfirmWindow.close();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/ReactivateAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Reactivated.\");\r\n self.refreshStatusGrid();\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"AssetMasterID\": value.AssetMasterID,\r\n \"AssetNumber\": value.AssetNumber,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n //\"DCCurrentConditionID\": value.DCCurrentConditionID,\r\n //\"DCConditionID\": value.DCConditionID,\r\n \"RCDID\": value.RCDID,\r\n \"VesselCd\": value.VesselCd\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: false,\r\n sortable: false,\r\n enableRowGroup: false,\r\n resizable: true,\r\n }]\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"PWR\", field: \"DryPWR\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, width: 70,\r\n valueGetter: (params) => { return DryFormatters.dryPWRSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryPwrStateFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"BATT\", field: \"BatteryPct\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.dryBatteryPctSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryBatteryPctFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.BatteryPctFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"VSL\", field: \"VesselCd\", width: 80, enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: DryCellRenderer.AssetStateFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Assignments',\r\n children: [\r\n {\r\n headerName: \"Assigned to\", field: \"customername\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.customername); },\r\n cellRenderer: DryCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Identification',\r\n children: [\r\n { headerName: \"Dry ID\", field: \"AssetNumber\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetNumber\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: \"Report Date/Time and Location\",\r\n children: [\r\n\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventDescription\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", enableRowGroup: false, cellClass: 'myExcelStyle',\r\n sortable: true, filter: false,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door\", field: \"Door1Open\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, getQuickFilterText: DryFormatters.doorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"Door1EventDttm\", enableRowGroup: false, cellClass: 'myExcelStyle',\r\n sortable: false, filter: false, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } },\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"Door1EventDttm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170,\r\n onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Inside temp \", field: \"InsideTemp\", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"InsideTemp\"); }, cellRenderer: DryFormatters.TemperatureValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceNameID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceNameID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n // { headerName: \"Region Fence\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"Region Fence ID\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"GeofenceDefinitionRevision\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Address\", field: \"Address\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Address\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open', cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZipCode\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Battery (V)\", field: \"DeviceBattery\", cellRenderer: Formatters.BattVoltageFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)},\r\n {\r\n headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: DryCellRenderer.GPSCoordsFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.secondsToTimeConverterFilter(params); },\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc acc (m)\", field: \"PositionAccuracy\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSAcctypeSorting(params.data.PositionAccuracy); },\r\n cellRenderer: DryCellRenderer.StringTypeValueFormatter,\r\n columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc HDOP\", field: \"DryGPSHDOP\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.DryGPSHDOP, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter,\r\n columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc sat ct\", field: \"DryGPSSatelliteCount\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.DryGPSSatelliteCount, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter,\r\n columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Speed\", field: \"DrySpeed\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n headerValueGetter: Formatters.SpeedHeaderFormatter,\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"DrySpeed\"); }, cellRenderer: DryFormatters.SpeedConverter,\r\n filterParams: { valueGetter: params => { return DryFormatters.SpeedConverterFilter(params); } },\r\n columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Miles\", field: \"Miles\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"Miles\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n\r\n ]\r\n },\r\n {\r\n headerName: \"Device Status\",\r\n children: [\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: false, sortable: true, filter: false, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => {\r\n return Formatters.stringTypeSortingFieldName(params, \"RCDID\");\r\n }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device data\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, columnGroupShow: 'open',\r\n field: \"DeviceDataTime\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DeviceDataTime\"); }, cellRenderer: Formatters.dateTypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDeviceDataTimeForFilter(params); } },\r\n width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FirmwareVersion\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device temp \", field: \"DeviceTemp\", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: DryFormatters.TemperatureValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: false, cellClass: 'bigInt', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Lux\", field: \"Illumination\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Illumination\"); }, cellRenderer: Formatters.LuxValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Bat mode\", field: \"BatteryMode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.BatteryModeFormatter(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.BatteryModeFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door bat\", field: \"Door1BattPct\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.dryDoorBattPctSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryDoorBattPctFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.DoorBattPctFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 180, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n cellRenderer: DryCellRenderer.RSSITypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } },\r\n width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MNC\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceType\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n {\r\n headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\",\r\n enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CreatedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } },\r\n width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Comments\", field: \"CommentExistsDC\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.CommentExistsforDrySorting(params); }, cellRenderer: DryCellRenderer.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n\r\n {\r\n headerName: \"Device Gravity Vector Status\",\r\n children: [\r\n {\r\n headerName: \"X Axis\", field: \"XAxis\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"XAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Y Axis\", field: \"YAxis\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"YAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Z Axis\", field: \"ZAxis\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n }\r\n\r\n ];\r\n\r\n\r\n }\r\n\r\n clearGridRowSelection(params: any) {\r\n self.props.renderClearSelection();\r\n params.api.deselectAll();\r\n }\r\n columnRowGroupChanged(params: any) {\r\n self.clearGridRowSelection(params);\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n\r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n\r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n refreshStatusGrid() {\r\n selectedRowIndex = -1;\r\n this.props.clearGridHeaderExtension();\r\n DryHistoryGrid.ClearHistoryGridData();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n setTimeout(() => {\r\n this.DrySearchFilter(self.props.statusFilter, false, false, false);\r\n }, 200);\r\n //ReeferStatusGrid.ApplyReeferSearchFilter(self.state.tempFilters); \r\n }\r\n\r\n static refreshDashboardGrid() {\r\n self.refreshStatusGrid();\r\n }\r\n\r\n //RenderContextMenuPopUp(popUpName: string) {\r\n // switch (popUpName) {\r\n // case 'SendEmail':\r\n // return ;\r\n\r\n // }\r\n //}\r\n\r\n static refreshToggleFilters() {\r\n if (self != undefined) {\r\n if (self.state.ToggleSearchParams != undefined && self.state.ToggleSearchParams != null)\r\n self.setState({ ToggleSearchParams: null });\r\n self.setState({ rowData: [] });\r\n }\r\n }\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n switch (popUpName) {\r\n //case 'SendEmail':\r\n //return ;\r\n case 'SendEmail':\r\n return 0 ? true : false} />\r\n case 'Export':\r\n return ;\r\n\r\n case 'Ping':\r\n return ;\r\n case 'MRRI':\r\n return ;\r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var dryData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.DryStatusData[];\r\n filterSet = dryData;\r\n var filterParams = JSON.stringify(filterSet);\r\n if (!isCommands) {\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) }, () => { self.props.getCommandPopupTitle(this.state.modelTitle); self.props.getCommandPopupContent(this.state.popUpHtml); });\r\n $('#btnTriggerPopupDry').click();\r\n }\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', false);\r\n }\r\n\r\n popUpRelatedReportingInterval() {\r\n self.setState({ modelTitle: 'Motion-Related Reporting Intervals' });\r\n self.RenderContextMenuPopUp('MRRI', false);\r\n }\r\n\r\n popUpAssignToCustomer() {\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Assign Asset(s) to Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpUnAssignFromCustomer() {\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Asset(s) From Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n exportToExcel() {\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.state.rowData != 'object' ? JSON.parse(this.state.rowData) : this.state.rowData;\r\n }\r\n\r\n var r = this.state.columnDefs;\r\n\r\n try {\r\n var formName = 'DryGrid';\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridDryStatusToolBar.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean, sensorData: any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, dryAssetSensors);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData: any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, dryAssetSensors);\r\n }\r\n\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n this.props.validateRevisionNum(dashboardPreferenceId);\r\n }\r\n \r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function (item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function () {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"DryStatusGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n\r\n public render() {\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\ninterface DryMasterStatus {\r\n DryCurrentConditionId: number;\r\n EventDTTM?: Date;\r\n StrEventDTTM: string;\r\n CreatedDTTM?: Date;\r\n EventDescription: string;\r\n AssetNumber: string;\r\n FenceName: string;\r\n BackendGeofenceName: string;\r\n RegionGeofence: string;\r\n RegionGeofenceName: string;\r\n GeofenceDefinitionRevision: string;\r\n City: string;\r\n State: string;\r\n Country: string;\r\n ZipCode: string;\r\n BattVoltage: number;\r\n GPSCoords: string;\r\n StrGPSDTTM: string;\r\n GPSHDOP: string;\r\n GPSSatelliteCount: string;\r\n CountryName: string;\r\n MNC: string;\r\n TowerLocalizationAreaCode: string;\r\n TowerBaseStationID: string;\r\n RCDID: string;\r\n FirmwareVersion: string;\r\n DeviceBattery: string;\r\n MSISDN: string;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n EUI: string;\r\n RSSI: string;\r\n Speed: number;\r\n DeviceConfig: string;\r\n DeviceType: string;\r\n RCDReportingInterval: string;\r\n CustomerName: string;\r\n ErrorMessage: string;\r\n Sensor1Value: number;\r\n Sensor2Value: number;\r\n Sensor3Value: number;\r\n Sensor4Value: number;\r\n Sensor5Value: number;\r\n Sensor6Value: number;\r\n Sensor7Value: number;\r\n Sensor8Value: number;\r\n}\r\n\r\n//WI-23853\r\nenum ReeferAndGensetAndChassisStatusEnum {\r\n AllReefer = 0,\r\n Running = 1,\r\n Stopped = 2,\r\n MissedRunning = 3,\r\n MissedStopped = 4,\r\n AllMicroAlaram = 5,\r\n MASevere = 6,\r\n MAMinor = 7,\r\n AllCargoCare = 8,\r\n CCSevere = 9,\r\n CCMinor = 10,\r\n CCInformational = 11,\r\n\r\n PowerOnReporting = 12,\r\n PowerOnNotReporting = 13,\r\n PowerOffReporting = 14,\r\n PowerOffNotReporting = 15,\r\n\r\n ChassisPwrInGeofence = 18,\r\n ChassisPwrOutGeofence = 19,\r\n ChassisNotPwrInGeofence = 20,\r\n ChassisNotPwrOutGeofence = 21\r\n}","module.exports = \"data:image/png;base64,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\"","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport $ from 'jquery';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\n//import ReactTooltip from 'react-tooltip';\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar selReefers;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar selectedReefers = \"\";\r\nvar selectedUnits = \"\";\r\n\r\ninterface AssignToCustomerState {\r\n isLoading: boolean,\r\n collapsed: boolean,\r\n checked: any,\r\n expanded: any,\r\n CustomerGroups: Customers[],\r\n AssignedGroups: AssignedUnitsList[],\r\n CustomerGroupsList: Customers[],\r\n SelectedReefers: any[],\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nvar self;\r\n\r\nexport class AssignToCustomer extends React.Component {\r\n myRequest: any;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n //$('#globalLoader').show();\r\n this.state = {\r\n SelectedReefers: [], isLoading: true, collapsed: false, CustomerGroups: [], AssignedGroups: [], checked: [], expanded: [], CustomerGroupsList: [], IsCommandIssued: false, PrevSelectedItems: []\r\n };\r\n this.onCheck = this.onCheck.bind(this);\r\n this.onExpand = this.onExpand.bind(this);\r\n lastCheckedNodes = [];\r\n selReefers = this.props.SelectedReefersData;\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ isLoading: true });\r\n var assetData = this.props.assetData;\r\n if (assetData != undefined && assetData != null && assetData.length > 0) {\r\n this.setState({ SelectedReefers: assetData }, () => { this.bindCustomerData(this.props.CustomerAccessData); });\r\n }\r\n\r\n selectedReefers = \"\";\r\n if (assetData.length > 1) {\r\n $.each(assetData, function (index, value) {\r\n selectedReefers = selectedReefers == \"\" ? this.GetFormatedReefer(value.AssetNumber) : selectedReefers + \",\" + this.GetFormatedReefer(value.AssetNumber);\r\n });\r\n }\r\n else {\r\n selectedReefers = this.GetFormatedReefer(assetData[0].AssetNumber);\r\n }\r\n this.setState({ isLoading: false });\r\n }\r\n GetFormatedReefer(reeferId) {\r\n if (reeferId != null && reeferId != \"\" && reeferId != undefined) {\r\n return reeferId.slice(0, 4).concat(' ').concat(reeferId.slice(4, 10)).concat(' ').concat(reeferId.slice(10, 11))\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n componentWillReceiveProps(nextProps: any) {\r\n this.setState({ isLoading: true });\r\n var assetData = nextProps.assetData;\r\n if (assetData != undefined && assetData != null && assetData.length > 0) {\r\n this.setState({ SelectedReefers: assetData }, () => { this.bindCustomerData(this.props.CustomerAccessData); });\r\n }\r\n else\r\n this.setState({ isLoading: false });\r\n selectedReefers = \"\";\r\n if (assetData.length > 1) {\r\n $.each(assetData, function (index, value) {\r\n selectedReefers = selectedReefers == \"\" ? this.GetFormatedReefer(value.AssetNumber) : selectedReefers + \",\" + this.GetFormatedReefer(value.AssetNumber);\r\n });\r\n }\r\n else {\r\n selectedReefers = this.GetFormatedReefer(assetData[0].AssetNumber);\r\n }\r\n }\r\n bindCustomerData(customerAccessData: any) {\r\n if (customerAccessData != undefined) {\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customerAccessData)), CustomerGroupsList: customerAccessData });\r\n if (customerAccessData.length > 0) {\r\n var defaultChecked = [];\r\n var defaultExpand = [];\r\n $.each(customerAccessData, function (index, value) {\r\n if (value.isSelected == true) {\r\n defaultExpand.push(value.value);\r\n }\r\n $.each(value.children, function (ind, val) {\r\n if (val.isSelected == true) {\r\n defaultChecked.push(val.value);\r\n }\r\n });\r\n });\r\n this.setState({ isLoading: false, checked: defaultChecked, expanded: defaultExpand }, () => { this.onCheck(this.state.checked); });\r\n }\r\n else {\r\n lastCheckedNodes = [];\r\n this.setState({ isLoading: false, checked: [], expanded: [], CustomerGroups: [], CustomerGroupsList: [] });\r\n }\r\n }\r\n }\r\n\r\n onCheck(checked) {\r\n if (checked.length > 0) {\r\n var customersList = self.state.CustomerGroupsList;\r\n if (lastCheckedNodes.length == 0) {\r\n lastCheckedParentNode = checked[0].toString().split('_')[0];\r\n lastCheckedNodes = checked;\r\n for (var i = 0; i < customersList.length; i++) {\r\n for (var j = 0; j < customersList[i].children.length; j++) {\r\n if (lastCheckedParentNode != customersList[i].children[j].value.split('_')[0]) {\r\n customersList[i].children[j].disabled = true;\r\n }\r\n }\r\n }\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customersList)), checked: checked });\r\n }\r\n else {\r\n $.each(checked, function (index, value) {\r\n if (lastCheckedParentNode != value.split('_')[0]) {\r\n lastCheckedParentNode = value.split('_')[0];\r\n return false;\r\n }\r\n });\r\n for (var i = 0; i < customersList.length; i++) {\r\n for (var j = 0; j < customersList[i].children.length; j++) {\r\n if (lastCheckedParentNode != customersList[i].children[j].value.split('_')[0]) {\r\n customersList[i].children[j].disabled = true;\r\n var chk = checked.indexOf(customersList[i].children[j].value);\r\n if (chk >= 0)\r\n checked.splice(chk, 1);\r\n if (checked.length == 0)\r\n customersList[i].children[j].disabled = false;\r\n }\r\n else {\r\n customersList[i].children[j].disabled = false;\r\n }\r\n }\r\n }\r\n\r\n lastCheckedNodes = checked;\r\n self.setState({ CustomerGroups: JSON.parse(JSON.stringify(customersList)), checked: checked });\r\n }\r\n }\r\n }\r\n\r\n onExpand(expanded) {\r\n self.setState({ expanded: expanded });\r\n }\r\n\r\n AssignToCustomer() {\r\n $('#globalLoader').show();\r\n var checkedGroupIds = [];\r\n var TempcheckedGroupIds = []; //RCNG-1175\r\n var existingGroups = [];//RCNG-1175\r\n var selUnits = [];\r\n var checkedList = self.state.checked;\r\n if (this.state.SelectedReefers.length > 1) {\r\n $.each(this.state.SelectedReefers, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = this.state.SelectedReefers[0].AssetMasterID.toString();\r\n }\r\n $.each(selectedUnits.split(','), function (index, value) {\r\n selUnits.push(parseInt(value));\r\n });\r\n\r\n $.each(checkedList, function (index, value) {\r\n TempcheckedGroupIds.push(value);//RCNG-1175\r\n checkedGroupIds.push(parseInt(value.split(':')[1]));\r\n });\r\n //Start RCNG-1175\r\n if (this.state.CustomerGroupsList.length > 0) {\r\n $.each(this.state.CustomerGroupsList, function (index, value) {\r\n $.each(value.children, function (ind, val) {\r\n if (val.isSelected == true) {\r\n existingGroups.push(val.value);\r\n }\r\n });\r\n });\r\n }\r\n var IsAccessModified = false;\r\n if (TempcheckedGroupIds.length == existingGroups.length) {\r\n if (TempcheckedGroupIds.length > 0 && existingGroups.length > 0) {\r\n $.each(TempcheckedGroupIds, function (key, value) {\r\n var index = $.inArray(value, existingGroups);\r\n if (index == -1) {\r\n IsAccessModified = true\r\n }\r\n });\r\n }\r\n }\r\n else\r\n IsAccessModified = true;\r\n if (!IsAccessModified && checkedList.length > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please modify Customer Access details.\");\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n //End RCNG-1175\r\n var filterset: ParamsData = {\r\n SelectedUnits: selUnits,\r\n Groups: checkedGroupIds\r\n };\r\n if (checkedList.length > 0) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/AssignUnitsToGroups', { method: 'POST', body: JSON.stringify(filterset), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"Assigned\") {\r\n lastCheckedNodes = [];\r\n // self.setState({ checked: lastCheckedNodes });\r\n self.setState({ checked: lastCheckedNodes, IsCommandIssued: true, PrevSelectedItems: this.props.assetData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.assetData) });\r\n $('#globalLoader').hide();\r\n this.props.refreshStatusGrid();\r\n PopupWindow.showErrorMessage(\"Success\", \"Selected Asset(s) have been successfully assigned to the customer group(s).\");\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Information\", \"Selected Asset(s) could not be assigned to the customer group(s).\");\r\n }\r\n });\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Information\", \"Please select one customer group.\");\r\n }\r\n\r\n }\r\n\r\n CloseModal() {\r\n lastCheckedNodes = [];\r\n this.setState({ checked: lastCheckedNodes });\r\n }\r\n\r\n public render() {\r\n const { checked, expanded } = this.state;\r\n\r\n return \r\n }\r\n}\r\n\r\nclass ParamsData {\r\n SelectedUnits: any;\r\n Groups: any;\r\n}\r\nclass Customers {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n children: CustomerAccessGroups[]\r\n}\r\nclass CustomerAccessGroups {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n}\r\nclass AssignedUnitsList {\r\n UnitCustomerAccessGroupID: number;\r\n AssetMasterID: number;\r\n AssetNumber: string;\r\n CustomerID: number;\r\n CustomerAccessGroupID: number;\r\n Name: string;\r\n}\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport $ from 'jquery';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar selAssetsData;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar userId = 1; //User Id Should get from Login.\r\nvar selectedReefers = \"\";\r\nvar selectedUnits = \"\";\r\n\r\ninterface UnAssignFromCustomerState {\r\n isLoading: boolean;\r\n collapsed: boolean;\r\n checked: any;\r\n expanded: any;\r\n CustomerGroups: Customers[];\r\n CustomerGroupsList: Customers[];\r\n SelectedReefers: any[];\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class UnassignReefersFromCustomer extends React.Component {\r\n myRequest: any;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isLoading: true, collapsed: false, CustomerGroups: [], checked: [], expanded: [], CustomerGroupsList: [], SelectedReefers: [], IsCommandIssued: false, PrevSelectedItems: []\r\n }; \r\n lastCheckedNodes = []; \r\n }\r\n\r\n componentDidMount() { \r\n $('#globalLoader').show();\r\n selAssetsData = this.props.SelectedReefersData;\r\n if (selAssetsData.length > 0 && selAssetsData != undefined && selAssetsData != null)\r\n this.setState({ SelectedReefers: selAssetsData }, () => { this.bindCustomerData(this.props.CustomerAccessData); });\r\n //this.bindCustomerData(this.props.CustomerAccessData);\r\n selectedReefers = \"\";\r\n if (selAssetsData.length > 1) {\r\n $.each(selAssetsData, function (index, value) {\r\n selectedReefers = selectedReefers == \"\" ? this.GetFormatedReefer(value.AssetNumber) : selectedReefers + \",\" + this.GetFormatedReefer(value.AssetNumber);\r\n });\r\n }\r\n else {\r\n selectedReefers = this.GetFormatedReefer(selAssetsData[0].AssetNumber);\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n GetFormatedReefer(reeferId) {\r\n if (reeferId != null && reeferId != \"\" && reeferId != undefined) {\r\n return reeferId.slice(0, 4).concat(' ').concat(reeferId.slice(4, 10)).concat(' ').concat(reeferId.slice(10, 11))\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n bindCustomerData(customerAccessData: any) {\r\n if (customerAccessData != undefined) {\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customerAccessData)), CustomerGroupsList: customerAccessData });\r\n if (customerAccessData.length > 0) {\r\n var defaultChecked = [];\r\n var defaultExpand = [];\r\n $.each(customerAccessData, function (index, value) {\r\n if (value.isSelected == true) {\r\n defaultExpand.push(value.value);\r\n }\r\n $.each(value.children, function (ind, val) {\r\n if (val.isSelected == true) {\r\n defaultChecked.push(val.value);\r\n }\r\n });\r\n });\r\n this.setState({ isLoading: false, checked: defaultChecked, expanded: defaultExpand }, () => { lastCheckedNodes = this.state.checked });\r\n }\r\n else {\r\n lastCheckedNodes = [];\r\n this.setState({ isLoading: false, checked: [], expanded: [], CustomerGroups: [], CustomerGroupsList: [] });\r\n }\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n $('#globalLoader').show();\r\n\r\n var reeferData = nextprops.SelectedReefersData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n this.setState({ SelectedReefers: reeferData }, () => { this.bindCustomerData(nextprops.CustomerAccessData); });\r\n }\r\n selectedReefers = \"\";\r\n if (reeferData.length > 1) {\r\n $.each(reeferData, function (index, value) {\r\n selectedReefers = selectedReefers == \"\" ? this.GetFormatedReefer(value.AssetNumber) : selectedReefers + \",\" + this.GetFormatedReefer(value.AssetNumber);\r\n });\r\n }\r\n else {\r\n selectedReefers = this.GetFormatedReefer(reeferData[0].AssetNumber);\r\n }\r\n $('#globalLoader').hide();\r\n ////$('#globalLoader').show();\r\n //this.setState({ isLoading: true, collapsed: false, CustomerGroups: [], checked: [], expanded: [], CustomerGroupsList: [] });\r\n //if (nextprops.SelectedReefersData.length > 0 || nextprops.SelectedReefersData != undefined || nextprops.SelectedReefersData != null)\r\n // this.bindCustomerData(nextprops.SelectedReefersData);\r\n ////$('#globalLoader').hide();\r\n }\r\n\r\n UnAssignFromCustomer() {\r\n if (this.state.checked.length > 0) {\r\n $('#globalLoader').show();\r\n var checkedGroupIds = [];\r\n var selUnits = [];\r\n var checkedList = this.state.checked;\r\n if (this.state.SelectedReefers.length > 1) {\r\n $.each(this.state.SelectedReefers, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = this.state.SelectedReefers[0].AssetMasterID.toString();\r\n }\r\n\r\n $.each(selectedUnits.split(','), function (index, value) {\r\n selUnits.push(parseInt(value));\r\n });\r\n $.each(checkedList, function (index, value) {\r\n checkedGroupIds.push(parseInt(value.split(':')[1]));\r\n });\r\n\r\n var filterset: ParamsData = {\r\n SelectedUnits: selUnits,\r\n Groups: checkedGroupIds\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/UnAssignUnitsFromGroups', { method: 'POST', body: JSON.stringify(filterset), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"Unassigned\") {\r\n lastCheckedNodes = [];\r\n //this.setState({ checked: lastCheckedNodes });\r\n this.setState({ checked: lastCheckedNodes, IsCommandIssued: true, PrevSelectedItems: this.props.SelectedReefersData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.SelectedReefersData) });\r\n this.props.refreshStatusGrid(); \r\n PopupWindow.showErrorMessage(\"Confirmation\", \"Selected Asset(s) have been successfully unassigned from the customer group(s).\");\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Confirmation\", \"Selected Asset(s) could not be unassigned from the customer group(s).\");\r\n }\r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one customer group.\"); \r\n }\r\n }\r\n\r\n CloseModal() {\r\n lastCheckedNodes = [];\r\n this.setState({ checked: lastCheckedNodes });\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n public render() {\r\n const { checked, expanded } = this.state;\r\n\r\n return \r\n }\r\n}\r\n\r\nclass ParamsData {\r\n SelectedUnits: any;\r\n Groups: any; \r\n}\r\nclass Customers {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n children: CustomerAccessGroups[]\r\n}\r\nclass CustomerAccessGroups {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n}\r\nclass AssignedUnitsList {\r\n UnitCustomerAccessGroupID: number;\r\n AssetMasterID: number;\r\n AssetNumber: string;\r\n CustomerID: number;\r\n CustomerAccessGroupID: number;\r\n Name: string;\r\n}\r\n","/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nimport lodashfilter from 'lodash/filter';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport uniq from 'lodash/uniq';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport { SpecificBookingDetails } from '../childcomponents/SpecificBookingDetails';\r\nimport { SpecificBookingReefers } from '../childcomponents/SpecificBookingReefers';\r\nimport { SpecificBookingReeferCommonData } from '../childcomponents/SpecificBookingReeferCommonData';\r\nimport { SpecificBookingReefersGridData } from '../childcomponents/SpecificBookingReefersGridData';\r\nimport { ReeferStatusGrid } from '../childcomponents/ReeferStatusGrid';\r\nimport { ReeferStatusSSRMGrid } from '../childcomponents/ReeferStatusSSRMGrid';\r\nimport ReeferStatus from './ReeferStatus';\r\nimport forEach from 'lodash/forEach';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar self;\r\nvar selReefers;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar selectedReefers = \"\";\r\nvar selectedUnits = \"\";\r\n\r\ninterface WizardState {\r\n renderHtml: any;\r\n BookingDetails: server.BookingDetails;\r\n BookingReefers: server.BookingSearchDetails;\r\n CommonBookingData: server.CommonBookingData;\r\n rowData: server.bookingReefer[];\r\n Thirdparty: server.ThirdParty[];\r\n CargoCareProfiles: any[];\r\n RefTemperatureUnit: server.RefTemperatureUnit[];\r\n AssetCustomer: server.CustomerGroupByAssetID;\r\n isEdit: boolean;\r\n tabFrom: number;\r\n currentTab: number;\r\n AllBooking: any[];\r\n BookingCount: number;\r\n BookingType: any;\r\n IsOpen: any;\r\n buttonState: any;\r\n CopyBookingNumber: any;\r\n formname: any;\r\n ReeferforCreate: any;\r\n UnitmasterId: any;\r\n CargoCareProfileCd: any; //RCNG 999\r\n isViewOnly: boolean;\r\n}\r\n\r\nvar emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '', BKCustomer:''\r\n};\r\n\r\nvar emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n};\r\nvar emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n}\r\n\r\nvar emptyCustomerData: server.CustomerGroupByAssetID = { CustomerAccessGroupID: null, Name: '' }\r\n\r\nexport class NewBookingCreate extends React.Component, WizardState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.resetAllDetails();\r\n this.state = {\r\n renderHtml: '',\r\n BookingDetails: emptyBookingDetails,\r\n BookingReefers: emptyBookingReefers,\r\n CommonBookingData: emptyCommonBookingData,\r\n AssetCustomer: emptyCustomerData,\r\n rowData: [],\r\n Thirdparty: [],\r\n CargoCareProfiles: [],\r\n RefTemperatureUnit: [],\r\n isEdit: false,\r\n tabFrom: 1,\r\n currentTab: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false,\r\n CopyBookingNumber: '',\r\n formname: this.props.location.state != null && this.props.location.state != undefined ? this.props.location.state.formname : '',\r\n ReeferforCreate: this.props.location.state != null && this.props.location.state != undefined ? this.props.location.state.reeferData[0].ReeferID : '',\r\n UnitmasterId: this.props.location.state != null && this.props.location.state != undefined ? this.props.location.state.reeferData[0].UnitMasterID : '',\r\n CargoCareProfileCd: this.props.location.state != null && this.props.location.state != undefined ? this.props.location.state.reeferData[0].CCProfileCode : '', //RCNG 999\r\n isViewOnly: false\r\n };\r\n\r\n self = this;\r\n //var newBookingDetails = emptyBookingDetails;\r\n //var cDate = moment(this.dateTypeFormatter(new Date())).format('LLL');\r\n //var active = new Date(cDate);\r\n //newBookingDetails.VesselETA = DateFormat(active, 'mm/dd/yyyy HH:MM:ss');\r\n //newBookingDetails.VesselETD = DateFormat(active, 'mm/dd/yyyy HH:MM:ss');\r\n //this.setState({\r\n // BookingDetails: newBookingDetails\r\n //});\r\n\r\n }\r\n dateTypeFormatter(eventDate: Date) {\r\n //written considering parameter 'eventDate' sent is IST\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return prefDateTime;\r\n }\r\n resetAllDetails() {\r\n emptyBookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '', BKCustomer:''\r\n }\r\n emptyBookingReefers = { BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[] }\r\n emptyCommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n }\r\n updatemyBookingDimensions() {\r\n $(\"#BookingTabsHeight\").css('min-height', $(window).height() - 150);\r\n $(\"#BookingTabsHeight\").css('max-height', $(window).height() - 150);\r\n }\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsOnly('211');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n this.updatemyBookingDimensions();\r\n window.addEventListener(\"resize\", this.updatemyBookingDimensions.bind(this));\r\n $(\"#SubscriptionMenu li\").click(function (e) {\r\n e.preventDefault();\r\n return false;\r\n });\r\n $('.deploymentWizard').find(\"ul.nav li:nth-child(0)\").attr(\"href\", \"#menu1\");\r\n //if (this.props.location.state != null && this.props.location.state != undefined) {\r\n // this.setState({ formname: this.props.location.state.formname }, () => { this.setState({ renderHtml: this.dynamicRendering(1)}); });\r\n //}\r\n //else\r\n // this.setState({ renderHtml: this.dynamicRendering(1) });\r\n this.getAssetThirdPartyCustomer(self.props);\r\n }\r\n }\r\n getAssetThirdPartyCustomer(params: any) { // RCNG 942\r\n if (params.location.state != null && (params.location.state.formname == \"ReeferStatusGrid\" || params.location.state.formname == \"SSRMReeferStatusGrid\" || params.location.state.formname == \"ReeferStatus\")) {//RCNG-969\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupByAssetID?AssetMasterID=' + params.location.state.reeferData[0].AssetMasterID)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (!(data === undefined)) {\r\n this.setState({ AssetCustomer: data }, () => { this.setState({ renderHtml: this.dynamicRendering(1) }); });\r\n }\r\n });\r\n }\r\n else\r\n this.setState({ renderHtml: this.dynamicRendering(1) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setActiveAndInactiveOld(1, 0);\r\n this.setState({\r\n BookingDetails: emptyBookingDetails,\r\n BookingReefers: emptyBookingReefers,\r\n tabFrom: 1,\r\n currentTab: 1\r\n }, () => { this.getAssetThirdPartyCustomer(nextprops); });\r\n }\r\n\r\n dynamicRendering(tabPane: number) {\r\n if (tabPane == 1)\r\n return \r\n else if (tabPane == 2)\r\n return \r\n else if (tabPane == 3)\r\n return \r\n else if (tabPane == 4)\r\n return \r\n }\r\n setFinalState(tabState: any, tabPaneFrom: number) {\r\n\r\n var str = tabState;\r\n this.setState({ rowData: tabState.rowData }, () => { this.PrepareFinalSubmit(); });\r\n }\r\n ValidateFinalSubmitData() {\r\n var validationsummary = [];\r\n var strValaditionSummary = '';\r\n var reeferData = this.state.rowData;\r\n forEach(reeferData, function (reefer) {\r\n if (reefer.bookedTemperature != \"\" && reefer.bookedTemperature != null && reefer.bookedTemperatureMin != \"\" && reefer.bookedTemperatureMin != null && reefer.bookedTemperatureMax != \"\" && reefer.bookedTemperatureMax != null) {\r\n if (!(self.findInBetween(parseFloat(reefer.bookedTemperature), parseFloat(reefer.bookedTemperatureMin), parseFloat(reefer.bookedTemperatureMax)))) {\r\n var strErr = `Reefer ${reefer.reeferId} Booked Temperature : ${reefer.bookedTemperature} must be between Booked Temperature Min : ${reefer.bookedTemperatureMin} and Booked Temperature Max : ${reefer.bookedTemperatureMax}.`;\r\n validationsummary.push(strErr);\r\n }\r\n }\r\n if (reefer.O2Setpoint != \"\" && reefer.O2Setpoint != null && reefer.O2SetpointMin != \"\" && reefer.O2SetpointMin != null && reefer.O2SetpointMax != \"\" && reefer.O2SetpointMax != null) {\r\n if (!(self.findInBetween(parseFloat(reefer.O2Setpoint), parseFloat(reefer.O2SetpointMin), parseFloat(reefer.O2SetpointMax)))) {\r\n var strErr = `Reefer ${reefer.reeferId} O2Setpoint : ${reefer.O2Setpoint} must be between O2Setpoint Min : ${reefer.O2SetpointMin} and O2Setpoint Max : ${reefer.O2SetpointMax}.`;\r\n validationsummary.push(strErr);\r\n }\r\n }\r\n if (reefer.CO2Setpoint != \"\" && reefer.CO2Setpoint != null && reefer.CO2SetpointMin != \"\" && reefer.CO2SetpointMin != null && reefer.CO2SetpointMax != \"\" && reefer.CO2SetpointMax != null) {\r\n if (!(self.findInBetween(parseFloat(reefer.CO2Setpoint), parseFloat(reefer.CO2SetpointMin), parseFloat(reefer.CO2SetpointMax)))) {\r\n var strErr = `Reefer ${reefer.reeferId} CO2Setpoint : ${reefer.CO2Setpoint} must be between CO2Setpoint Min : ${reefer.CO2SetpointMin} and CO2Setpoint Max : ${reefer.CO2SetpointMax}.`;\r\n validationsummary.push(strErr);\r\n }\r\n }\r\n });\r\n if (validationsummary != null && validationsummary.length > 0) {\r\n strValaditionSummary = validationsummary.join('
');\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Validation Error', strValaditionSummary, self.onOKSubmitValidation.bind(this));\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n findInBetween(val, min, max) {\r\n return (val >= min && val <= max);\r\n }\r\n onOKSubmitValidation() {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n }\r\n\r\n PrepareFinalSubmitWithoutReefers() { //RCNG-925\r\n $('#globalLoader').show();\r\n var bookingDetails = this.state.BookingDetails;\r\n var reeferData = [];\r\n var reefersCount = 0;\r\n var finalBookingData: server.booking = {\r\n bookingNumber: bookingDetails.BookingNumber, reefers: reeferData, shipper: bookingDetails.Shipper, shipperCode: bookingDetails.ShipperCode,\r\n consignee: bookingDetails.Consignee, agent: bookingDetails.Agent, vessel: bookingDetails.VesselCode,\r\n voyage: bookingDetails.VoyageNumber, POR: bookingDetails.POR, POL: bookingDetails.POL, POD: bookingDetails.POD, DEL: bookingDetails.DEL,\r\n vesselETD: bookingDetails.VesselETD != null ? bookingDetails.VesselETD.toString() : '', vesselETA: bookingDetails.VesselETA != null ? bookingDetails.VesselETA.toString() : '', BLNumber: bookingDetails.BLNumber,\r\n contractParty: bookingDetails.ContractParty, consolidation: bookingDetails.Consolidation, forwarder: bookingDetails.Forwarder,\r\n notify: bookingDetails.Notify, thirdpartyaccess: '', customeraccessgroupid: '',\r\n customer: bookingDetails.BKCustomer,\r\n };\r\n var inputBody = JSON.stringify(finalBookingData);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/SubmitReeferLevelBooking';\r\n\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: inputBody, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data.toString() != \"\" && data.toString() == \"Booking assigned successfully.\") {\r\n // PopupWindow.showErrorMessage(\"Create Booking\", \"Booking created successfully.\"); \r\n\r\n if (this.state.formname == 'ReeferStatus' || this.state.formname == 'ReeferStatusGrid' || this.state.formname == 'SSRMReeferStatusGrid') {\r\n\r\n //this.props.history.goBack();//,()=> { PopupWindow.showErrorMessage(\"Create Booking\", \"Booking created successfully.\") };\r\n (reefersCount == 1) ? PopupWindow.showErrorMessage(\"Create Booking\", 'Booking created with ' + reefersCount + ' Reefer successfully.')\r\n : PopupWindow.showErrorMessage(\"Create Booking\", 'Booking created with ' + reefersCount + ' Reefers successfully.');\r\n\r\n setTimeout(() => {\r\n this.props.history.goBack();\r\n }, 2000);\r\n\r\n if (self.state.formname == 'ReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusGrid.refreshStatusGrid(); }, 4000)\r\n if (self.state.formname == 'ReeferStatus')\r\n setTimeout(() => { ReeferStatus.refreshStatusGrid(); }, 4000);\r\n if (self.state.formname == 'SSRMReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusSSRMGrid.refreshDashboardGrid(); }, 4000)\r\n }\r\n else {\r\n (reefersCount == 1) ? RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' created with ' + reefersCount + ' Reefer successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this))\r\n : RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' created with ' + reefersCount + ' Reefers successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this));\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Create Booking\", \"Error while processing booking request.\");\r\n }\r\n });\r\n }\r\n\r\n PrepareFinalSubmit() {\r\n\r\n var result = this.ValidateFinalSubmitData();\r\n if (result) {\r\n $('#globalLoader').show();\r\n var bookingDetails = this.state.BookingDetails;\r\n var reeferData = this.state.rowData;\r\n var reefersCount = this.state.rowData.length; //RCNG 361\r\n var finalBookingData: server.booking = {\r\n bookingNumber: bookingDetails.BookingNumber, reefers: reeferData, shipper: bookingDetails.Shipper, shipperCode: bookingDetails.ShipperCode,\r\n consignee: bookingDetails.Consignee, agent: bookingDetails.Agent, vessel: bookingDetails.VesselCode,\r\n voyage: bookingDetails.VoyageNumber, POR: bookingDetails.POR, POL: bookingDetails.POL, POD: bookingDetails.POD, DEL: bookingDetails.DEL,\r\n vesselETD: bookingDetails.VesselETD != null ? bookingDetails.VesselETD.toString() : '', vesselETA: bookingDetails.VesselETA != null ? bookingDetails.VesselETA.toString() : '', BLNumber: bookingDetails.BLNumber,\r\n contractParty: bookingDetails.ContractParty, consolidation: bookingDetails.Consolidation, forwarder: bookingDetails.Forwarder, notify: bookingDetails.Notify,\r\n thirdpartyaccess: '', customeraccessgroupid: '',\r\n customer: bookingDetails.BKCustomer\r\n };\r\n var inputBody = JSON.stringify(finalBookingData);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/SubmitReeferLevelBooking';\r\n\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: inputBody, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data.toString() != \"\" && data.toString() == \"Booking assigned successfully.\") {\r\n // PopupWindow.showErrorMessage(\"Create Booking\", \"Booking created successfully.\"); \r\n\r\n if (this.state.formname == 'ReeferStatus' || this.state.formname == 'ReeferStatusGrid' || this.state.formname == 'SSRMReeferStatusGrid') {\r\n\r\n //this.props.history.goBack();//,()=> { PopupWindow.showErrorMessage(\"Create Booking\", \"Booking created successfully.\") };\r\n (reefersCount == 1) ? PopupWindow.showErrorMessage(\"Create Booking\", 'Booking created with ' + reefersCount + ' Reefer successfully.')\r\n : PopupWindow.showErrorMessage(\"Create Booking\", 'Booking created with ' + reefersCount + ' Reefers successfully.');\r\n\r\n setTimeout(() => {\r\n this.props.history.goBack();\r\n }, 2000);\r\n\r\n if (self.state.formname == 'ReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusGrid.refreshStatusGrid(); }, 4000)\r\n if (self.state.formname == 'ReeferStatus')\r\n setTimeout(() => { ReeferStatus.refreshStatusGrid(); }, 4000);\r\n if (self.state.formname == 'SSRMReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusSSRMGrid.refreshDashboardGrid(); }, 4000)\r\n }\r\n else {\r\n (reefersCount == 1) ? RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' created with ' + reefersCount + ' Reefer successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this))\r\n : RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' created with ' + reefersCount + ' Reefers successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this));\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Create Booking\", \"Error while processing booking request.\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n onOKSubmit(param: any) {\r\n var emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '',\r\n BKCustomer:''\r\n };\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n }\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false,\r\n CopyBookingNumber: ''\r\n }, () => { this.RedirectToFirstTab(); });\r\n\r\n }\r\n\r\n RedirectToFirstTab() {\r\n\r\n this.setState({ renderHtml: this.dynamicRendering(1) }, () => { this.setActiveAndInactiveOld(1, 0); RCNGWindow.ConfirmWindow.close(); });\r\n }\r\n closeConfirmation() {\r\n var emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '',\r\n BKCustomer:''\r\n };\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n }\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false,\r\n CopyBookingNumber: ''\r\n }, () => {\r\n RCNGWindow.ConfirmWindow.close(); this.props.history.push('/home');\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n setTimeout(() => { ReeferStatusSSRMGrid.refreshDashboardGrid(); }, 5000);\r\n } else {\r\n setTimeout(() => { ReeferStatusGrid.refreshStatusGrid(); }, 5000);\r\n }\r\n });\r\n }\r\n\r\n setActiveAndInactiveOld(TabToActive: number, TabToInactive: number) {\r\n\r\n if (TabToInactive > 0)\r\n document.getElementById(\"atab\" + TabToInactive).classList.remove(\"active\");\r\n\r\n document.getElementById(\"atab\" + TabToActive).classList.add(\"active\");\r\n }\r\n\r\n renderWizardPage(tabPane: number, tabState: any, tabPaneFrom: number) {\r\n this.setState({ tabFrom: tabPaneFrom });\r\n this.setActiveAndInactiveOld(tabPane, tabPaneFrom);\r\n switch (tabPane) {\r\n case 1:\r\n var newBookingDetails = emptyBookingDetails;\r\n newBookingDetails.Shipper = tabState.BookingDetails.Shipper;\r\n newBookingDetails.Consignee = tabState.BookingDetails.Consignee;\r\n newBookingDetails.ShipperCode = tabState.BookingDetails.ShipperCode;\r\n newBookingDetails.POR = tabState.BookingDetails.POR;\r\n newBookingDetails.POL = tabState.BookingDetails.POL;\r\n newBookingDetails.POD = tabState.BookingDetails.POD;\r\n newBookingDetails.VesselETD = tabState.BookingDetails.VesselETD;\r\n newBookingDetails.VesselETA = tabState.BookingDetails.VesselETA;\r\n newBookingDetails.BLNumber = tabState.BookingDetails.BLNumber;\r\n newBookingDetails.ContractParty = tabState.BookingDetails.ContractParty;\r\n newBookingDetails.Consolidation = tabState.BookingDetails.Consolidation;\r\n newBookingDetails.Agent = tabState.BookingDetails.Agent;\r\n newBookingDetails.VesselCode = tabState.BookingDetails.VesselCode;\r\n newBookingDetails.VoyageNumber = tabState.BookingDetails.VoyageNumber;\r\n newBookingDetails.Call = tabState.BookingDetails.Call;\r\n newBookingDetails.Forwarder = tabState.BookingDetails.Forwarder;\r\n newBookingDetails.Notify = tabState.BookingDetails.Notify;\r\n newBookingDetails.BookingNumber = tabState.BookingDetails.BookingNumber;\r\n newBookingDetails.DEL = tabState.BookingDetails.DEL;\r\n newBookingDetails.SelectedVesselCD = tabState.BookingDetails.SelectedVesselCD;\r\n newBookingDetails.SelectedCall = tabState.BookingDetails.SelectedCall;\r\n newBookingDetails.SelectedVoyage = tabState.BookingDetails.SelectedVoyage;\r\n newBookingDetails.ArrSelectedVesselCD = tabState.BookingDetails.ArrSelectedVesselCD;\r\n newBookingDetails.ArrSelectedCall = tabState.BookingDetails.ArrSelectedCall;\r\n newBookingDetails.ArrSelectedVoyage = tabState.BookingDetails.ArrSelectedVoyage;\r\n newBookingDetails.userInput = tabState.BookingDetails.userInput;\r\n newBookingDetails.IsVVCModified = tabState.BookingDetails.IsVVCModified;\r\n newBookingDetails.BKCustomer = tabState.BookingDetails.BKCustomer;\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.SelectedReefer;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.ReeferIds;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.ReeferwithUnitID;\r\n newBookingReefersDetails.BookingNumber = tabState.BookingNumber;\r\n this.setState({ BookingDetails: newBookingDetails, BookingReefers: newBookingReefersDetails, rowData: tabState.rowData, CopyBookingNumber: tabState.CopyBookingNumber, ReeferforCreate: tabState.ReeferforCreate, UnitmasterId: tabState.UnitmasterId }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n case 2:\r\n var newBookingDetails = emptyBookingDetails;\r\n newBookingDetails.Shipper = tabState.BookingDetails.Shipper;\r\n newBookingDetails.Consignee = tabState.BookingDetails.Consignee;\r\n newBookingDetails.ShipperCode = tabState.BookingDetails.ShipperCode;\r\n newBookingDetails.POR = tabState.BookingDetails.POR;\r\n newBookingDetails.POL = tabState.BookingDetails.POL;\r\n newBookingDetails.POD = tabState.BookingDetails.POD;\r\n newBookingDetails.VesselETD = tabState.BookingDetails.VesselETD;\r\n newBookingDetails.VesselETA = tabState.BookingDetails.VesselETA;\r\n newBookingDetails.BLNumber = tabState.BookingDetails.BLNumber;\r\n newBookingDetails.ContractParty = tabState.BookingDetails.ContractParty;\r\n newBookingDetails.Consolidation = tabState.BookingDetails.Consolidation;\r\n newBookingDetails.Agent = tabState.BookingDetails.Agent;\r\n newBookingDetails.VesselCode = tabState.BookingDetails.VesselCode;\r\n newBookingDetails.VoyageNumber = tabState.BookingDetails.VoyageNumber;\r\n newBookingDetails.Call = tabState.BookingDetails.Call;\r\n newBookingDetails.Forwarder = tabState.BookingDetails.Forwarder;\r\n newBookingDetails.Notify = tabState.BookingDetails.Notify;\r\n newBookingDetails.BookingNumber = tabState.BookingDetails.BookingNumber;\r\n newBookingDetails.DEL = tabState.BookingDetails.DEL;\r\n newBookingDetails.SelectedVesselCD = tabState.BookingDetails.SelectedVesselCD;\r\n newBookingDetails.SelectedCall = tabState.BookingDetails.SelectedCall;\r\n newBookingDetails.SelectedVoyage = tabState.BookingDetails.SelectedVoyage;\r\n newBookingDetails.ArrSelectedVesselCD = tabState.BookingDetails.ArrSelectedVesselCD;\r\n newBookingDetails.ArrSelectedCall = tabState.BookingDetails.ArrSelectedCall;\r\n newBookingDetails.ArrSelectedVoyage = tabState.BookingDetails.ArrSelectedVoyage;\r\n newBookingDetails.userInput = tabState.BookingDetails.userInput;\r\n newBookingDetails.BKCustomer = tabState.BookingDetails.BKCustomer;\r\n newBookingDetails.IsVVCModified = tabState.BookingDetails.IsVVCModified;\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.BookingReefers.BookingReefers;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.BookingReefers.SelectedBookingReefers;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.BookingReefers.ReeferwithUnitID;\r\n newBookingReefersDetails.BookingNumber = tabState.BookingReefers.BookingNumber;\r\n var Edit = this.state.isEdit;\r\n var BookingAll = this.state.AllBooking;\r\n var CountBooking = this.state.BookingCount;\r\n //var CopyNumber = this.state.CopyBookingNumber; \r\n this.setState({\r\n BookingDetails: newBookingDetails, BookingReefers: newBookingReefersDetails, rowData: tabState.rowData,\r\n isEdit: tabState.isBookingEdit != undefined ? tabState.isBookingEdit : Edit,\r\n AllBooking: tabState.BookingList != undefined ? tabState.BookingList : BookingAll,\r\n BookingCount: tabState.isAllBooking != undefined ? tabState.isAllBooking : CountBooking,\r\n CopyBookingNumber: tabState.CopyBookingNumber != undefined ? tabState.CopyBookingNumber : '',\r\n ReeferforCreate: tabState.ReeferforCreate != undefined ? tabState.ReeferforCreate : '',\r\n UnitmasterId: tabState.UnitmasterId != undefined ? tabState.UnitmasterId : '',\r\n }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n\r\n break;\r\n case 3:\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.BookingReefers.BookingReefers;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.BookingReefers.SelectedBookingReefers;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.BookingReefers.ReeferwithUnitID;\r\n newBookingReefersDetails.BookingNumber = tabState.BookingReefers.BookingNumber;\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: tabState.CommonBookingData.HighValueCargo != undefined ? tabState.CommonBookingData.HighValueCargo : 'none', CargoCareProfile: this.state.CargoCareProfileCd, ThirdPartyAccess: (this.state.AssetCustomer != null && this.state.AssetCustomer.CustomerAccessGroupID != null) ? this.state.AssetCustomer.CustomerAccessGroupID.toString() : '', CACTNotRequired: tabState.CommonBookingData.CACTNotRequired != undefined ? tabState.CommonBookingData.CACTNotRequired : false, CTRequire: tabState.CommonBookingData.CTRequire != undefined ? tabState.CommonBookingData.CTRequire : false, CARequire: tabState.CommonBookingData.CARequire != undefined ? tabState.CommonBookingData.CARequire : false, CACTDifferByReefer: tabState.CommonBookingData.CACTDifferByReefer != undefined ? tabState.CommonBookingData.CACTDifferByReefer : false,//RCNG-969\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n\r\n var bookedTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperature === item.bookedTemperature) === i\r\n );\r\n if (bookedTemperatureCount.length > 0 && bookedTemperatureCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperature = bookedTemperatureCount[0].bookedTemperature;\r\n }\r\n var bookedTemperatureMaxCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureMax === item.bookedTemperatureMax) === i\r\n );\r\n if (bookedTemperatureMaxCount.length > 0 && bookedTemperatureMaxCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureMax = bookedTemperatureMaxCount[0].bookedTemperatureMax;\r\n }\r\n var bookedTemperatureMinCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureMin === item.bookedTemperatureMin) === i\r\n );\r\n if (bookedTemperatureMinCount.length > 0 && bookedTemperatureMinCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureMin = bookedTemperatureMinCount[0].bookedTemperatureMin;\r\n }\r\n\r\n\r\n var bookedTemperatureQualifierCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureQualifier === item.bookedTemperatureQualifier) === i\r\n );\r\n if (bookedTemperatureQualifierCount.length > 0 && bookedTemperatureQualifierCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureUnit = bookedTemperatureQualifierCount[0].bookedTemperatureQualifier;\r\n }\r\n\r\n var humidityCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.humidity === item.humidity) === i\r\n );\r\n if (humidityCount.length > 0 && humidityCount.length == 1) {\r\n emptyCommonBookingData.HumiditySetPoint = humidityCount[0].humidity;\r\n }\r\n var ventSettingCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.ventSetting === item.ventSetting) === i\r\n );\r\n if (ventSettingCount.length > 0 && ventSettingCount.length == 1) {\r\n emptyCommonBookingData.VentSettings = ventSettingCount[0].ventSetting;\r\n }\r\n var gensetIdCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.gensetId === item.gensetId) === i\r\n );\r\n if (gensetIdCount.length > 0 && gensetIdCount.length == 1) {\r\n emptyCommonBookingData.GensetId = gensetIdCount[0].gensetId;\r\n }\r\n var commodityCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.commodity === item.commodity) === i\r\n );\r\n if (commodityCount.length > 0 && commodityCount.length == 1) {\r\n emptyCommonBookingData.CommodityName = commodityCount[0].commodity;\r\n }\r\n\r\n var STCCCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.STCC === item.STCC) === i\r\n );\r\n if (STCCCount.length > 0 && STCCCount.length == 1) {\r\n emptyCommonBookingData.STCC = STCCCount[0].STCC;\r\n }\r\n\r\n\r\n var HSCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.HS === item.HS) === i\r\n );\r\n if (HSCount.length > 0 && HSCount.length == 1) {\r\n emptyCommonBookingData.HSCode = HSCount[0].HS;\r\n }\r\n var serviceLevelCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.serviceLevel === item.serviceLevel) === i\r\n );\r\n if (serviceLevelCount.length > 0 && serviceLevelCount.length == 1) {\r\n emptyCommonBookingData.ServiceLevel = serviceLevelCount[0].serviceLevel;\r\n }\r\n var HVFlagCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.HVFlag === item.HVFlag) === i\r\n );\r\n if (HVFlagCount.length > 0 && HVFlagCount.length == 1) {\r\n emptyCommonBookingData.HighValueCargo = HVFlagCount[0].HVFlag;\r\n }\r\n var cargoCareCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.cargoCare === item.cargoCare) === i\r\n );\r\n if (cargoCareCount.length > 0 && cargoCareCount.length == 1) {\r\n emptyCommonBookingData.CargoCareProfile = cargoCareCount[0].cargoCare;\r\n }\r\n var accessCodesCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.accessCodes === item.accessCodes) === i\r\n );\r\n if (accessCodesCount.length > 0 && accessCodesCount.length == 1) {\r\n emptyCommonBookingData.ThirdPartyAccess = accessCodesCount[0].accessCodes;\r\n }\r\n var CAFlagCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CAFlag === item.CAFlag) === i\r\n );\r\n if (CAFlagCount.length > 0 && CAFlagCount.length == 1) {\r\n emptyCommonBookingData.CARequire = CAFlagCount[0].CAFlag;\r\n }\r\n var CTFlagCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CTFlag === item.CTFlag) === i\r\n );\r\n if (CTFlagCount.length > 0 && CTFlagCount.length == 1) {\r\n emptyCommonBookingData.CTRequire = CTFlagCount[0].CTFlag;\r\n }\r\n var O2SetpointCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2Setpoint === item.O2Setpoint) === i\r\n );\r\n if (O2SetpointCount.length > 0 && O2SetpointCount.length == 1) {\r\n emptyCommonBookingData.O2SetPoint = O2SetpointCount[0].O2Setpoint;\r\n }\r\n var O2SetpointMaxCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2SetpointMax === item.O2SetpointMax) === i\r\n );\r\n if (O2SetpointMaxCount.length > 0 && O2SetpointMaxCount.length == 1) {\r\n emptyCommonBookingData.O2Max = O2SetpointMaxCount[0].O2SetpointMax;\r\n }\r\n\r\n var O2SetpointMinCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2SetpointMin === item.O2SetpointMin) === i\r\n );\r\n if (O2SetpointMinCount.length > 0 && O2SetpointMinCount.length == 1) {\r\n emptyCommonBookingData.O2Min = O2SetpointMinCount[0].O2SetpointMin;\r\n }\r\n var CO2SetpointCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2Setpoint === item.CO2Setpoint) === i\r\n );\r\n if (CO2SetpointCount.length > 0 && CO2SetpointCount.length == 1) {\r\n emptyCommonBookingData.CO2SetPoint = CO2SetpointCount[0].CO2Setpoint;\r\n }\r\n var CO2SetpointMaxCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2SetpointMax === item.CO2SetpointMax) === i\r\n );\r\n if (CO2SetpointMaxCount.length > 0 && CO2SetpointMaxCount.length == 1) {\r\n emptyCommonBookingData.CO2Max = CO2SetpointMaxCount[0].CO2SetpointMax;\r\n }\r\n var CO2SetpointMinCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2SetpointMin === item.CO2SetpointMin) === i\r\n );\r\n if (CO2SetpointMinCount.length > 0 && CO2SetpointMinCount.length == 1) {\r\n emptyCommonBookingData.CO2Min = CO2SetpointMinCount[0].CO2SetpointMin;\r\n }\r\n var CTDaysCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CTDays === item.CTDays) === i\r\n );\r\n if (CTDaysCount.length > 0 && CTDaysCount.length == 1) {\r\n emptyCommonBookingData.CTDays = CTDaysCount[0].CTDays;\r\n }\r\n var USDAMaxTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.USDAMaxTemperature === item.USDAMaxTemperature) === i\r\n );\r\n if (USDAMaxTemperatureCount.length > 0 && USDAMaxTemperatureCount.length == 1) {\r\n emptyCommonBookingData.CTMaxTemperature = USDAMaxTemperatureCount[0].USDAMaxTemperature;\r\n }\r\n var postCTTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperature === item.postCTTemperature) === i\r\n );\r\n if (postCTTemperatureCount.length > 0 && postCTTemperatureCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperature = postCTTemperatureCount[0].postCTTemperature;\r\n }\r\n var postCTTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperature === item.postCTTemperature) === i\r\n );\r\n if (postCTTemperatureCount.length > 0 && postCTTemperatureCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperature = postCTTemperatureCount[0].postCTTemperature;\r\n }\r\n var postCTTemperatureDeviationCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperatureDeviation === item.postCTTemperatureDeviation) === i\r\n );\r\n if (postCTTemperatureDeviationCount.length > 0 && postCTTemperatureDeviationCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperatureRange = postCTTemperatureDeviationCount[0].postCTTemperatureDeviation;\r\n }\r\n var postCTVentSettingCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTVentSetting === item.postCTVentSetting) === i\r\n );\r\n if (postCTVentSettingCount.length > 0 && postCTVentSettingCount.length == 1) {\r\n emptyCommonBookingData.PostCTVentSettings = postCTVentSettingCount[0].postCTVentSetting;\r\n }\r\n\r\n this.setState({ BookingReefers: newBookingReefersDetails, CommonBookingData: emptyCommonBookingData, rowData: tabState.rowData }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n case 4:\r\n this.setState({ CommonBookingData: tabState.CommonBookingData, rowData: tabState.rowData, CargoCareProfiles: tabState.CargoCareProfiles, Thirdparty: tabState.Thirdparty, RefTemperatureUnit: tabState.RefTemperatureUnit }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n }\r\n }\r\n backScreen() {\r\n if (this.state.currentTab == 2) {\r\n SpecificBookingReefers.BackScreen();\r\n }\r\n else if (this.state.currentTab == 3) {\r\n SpecificBookingReeferCommonData.BackScreen();\r\n }\r\n else if (this.state.currentTab == 4) {\r\n SpecificBookingReefersGridData.BackScreen();\r\n }\r\n\r\n }\r\n\r\n nextScreen() {\r\n if (this.state.currentTab == 1) {\r\n SpecificBookingDetails.NextScreen();\r\n }\r\n else if (this.state.currentTab == 2) {\r\n SpecificBookingReefers.NextScreen();\r\n }\r\n else if (this.state.currentTab == 3) {\r\n SpecificBookingReeferCommonData.NextScreen();\r\n }\r\n else if (this.state.currentTab == 4) {\r\n SpecificBookingReefersGridData.NextScreen();\r\n }\r\n\r\n }\r\n\r\n cancelWizard() {\r\n var emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '', BKCustomer:''\r\n };\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n }\r\n if (this.state.formname == 'ReeferStatus' || this.state.formname == 'ReeferStatusGrid' || this.state.formname == 'SSRMReeferStatusGrid') {\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false,\r\n CopyBookingNumber: ''\r\n }, () => { RCNGWindow.ConfirmWindow.close(); this.props.history.goBack(); });\r\n }\r\n else {\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false,\r\n CopyBookingNumber: ''\r\n }, () => { RCNGWindow.ConfirmWindow.close(); this.props.history.push('/home'); });\r\n }\r\n\r\n }\r\n finishWizard() {\r\n SpecificBookingReefersGridData.finishWizard();\r\n }\r\n static UpdateBookingType(Type: any) {\r\n self.setState({ BookingType: Type });\r\n }\r\n static UpdateButtonStyle(State: any) {\r\n self.setState({ buttonState: State });\r\n }\r\n public render() {\r\n return
\r\n\r\n
{this.state.BookingType}
\r\n\r\n
\r\n
\r\n \r\n
\r\n {this.state.renderHtml}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n\r\n {\r\n this.state.currentTab != 1 ? : ''\r\n }\r\n {\r\n this.state.currentTab == 4 ? \r\n :\r\n \r\n }\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as ReeferStatusState from '../../store/ReeferStatus';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\nimport * as HomeState from '../../store/Home';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport 'ag-grid-enterprise';\r\n//import Excel from '../../actions/ExportToExcel.js';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport $ from 'jquery';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { ReeferStatusAdvanceSearch } from '../childcomponents/ReeferStatusAdvanceSearch';\r\nimport { ReeferToggleButtonsFilter } from '../childcomponents/ReeferToggleButtonsFilter';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PingControl } from './../sharedcomponents/ForwardCommands/PingControl';\r\nimport { TempSetPoint } from './../sharedcomponents/ForwardCommands/TempSetPoint';\r\nimport { HumiditySetPoint } from './../sharedcomponents/ForwardCommands/HumiditySetPoint';\r\nimport { O2SetPoint } from './../sharedcomponents/ForwardCommands/O2SetPoint';\r\nimport { CO2SetPoint } from './../sharedcomponents/ForwardCommands/CO2SetPoint';\r\nimport { ChangeReeferId } from './../sharedcomponents/ForwardCommands/ChangeReeferId';\r\nimport { ChangeReportingInterval } from './../sharedcomponents/ForwardCommands/ChangeReportingInterval';\r\nimport { ChangeDataLogInterval } from './../sharedcomponents/ForwardCommands/ChangeDataLogInterval';\r\nimport { AssignPANID } from './../sharedcomponents/ForwardCommands/AssignPANID';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { RebootReeferController } from './../sharedcomponents/ForwardCommands/RebootReeferController';\r\nimport { VerifyModelValidity } from './../sharedcomponents/ForwardCommands/VerifyModelValidity';\r\nimport { SyncReeferClock } from './../sharedcomponents/ForwardCommands/SyncReeferClock';\r\nimport { StartDeforst } from './../sharedcomponents/ForwardCommands/StartDeforst';\r\nimport { ChangeDeforstInterval } from './../sharedcomponents/ForwardCommands/ChangeDeforstInterval';\r\nimport { TraditionalDataDownload } from './../sharedcomponents/ForwardCommands/TraditionalDataDownload';\r\nimport { StopPTI } from './../sharedcomponents/ForwardCommands/StopPTI';\r\nimport { ScheduledPreTrip } from './../sharedcomponents/ForwardCommands/ScheduledPreTrip';\r\nimport { PreTrip } from './../sharedcomponents/ForwardCommands/PreTrip';\r\nimport uniq from 'lodash/uniq';\r\nimport forEach from 'lodash/forEach';\r\nimport { AssignBookingSystem, UnAssignBookingSystem, EditBookingSystem } from '../sharedcomponents/BookingSystem';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { LastPretripResult } from './../sharedcomponents/ForwardCommands/LastPretripResult';\r\nimport { QueryReeferInventory } from './../sharedcomponents/ForwardCommands/QueryReeferInventory';\r\nimport { UpdateModelConfiguration } from './../sharedcomponents/ForwardCommands/UpdateModelConfiguration';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { PopupConfirm } from './../sharedcomponents/PopupConfirm';\r\nimport { CreateTrip } from './../childcomponents/CreateTrip';\r\nimport { TripStatus } from './../childcomponents/TripStatus';\r\nimport { TripDeviation } from './../childcomponents/TripDeviation';\r\nimport { ChangeReeferClockSyncSetting } from './../sharedcomponents/ForwardCommands/ChangeReeferClockSyncSettings';\r\nimport { ChangeZigbeeSettings } from './../sharedcomponents/ForwardCommands/ChangeZigbeeSettings';\r\nimport { GuestReeferConfiguration } from './../sharedcomponents/ForwardCommands/GuestReeferConfiguration';\r\nimport { GridToolBarExcel } from './../sharedcomponents/GridToolBarExcel';\r\nimport { AutoConfiguration } from './../sharedcomponents/ForwardCommands/AutoConfiguration';\r\nimport { AssetConfiguration } from './../sharedcomponents/ForwardCommands/AssetConfiguration';\r\nimport { MultipleSetpoints } from './../sharedcomponents/ForwardCommands/MultipleSetpoints';\r\nimport { AutomaticColdTreatment } from './../sharedcomponents/ForwardCommands/AutomaticColdTreatment';\r\nimport { GetFreshAirType } from './../sharedcomponents/ForwardCommands/GetFreshAirType';\r\nimport { SetFreshAirType } from './../sharedcomponents/ForwardCommands/SetFreshAirType';\r\nimport { ControlledAtmosphere } from './../sharedcomponents/ForwardCommands/ControlledAtmosphere';\r\nimport UserRights from '../../actions/UserRights';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { DeviceReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { DeviceHardReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { ReeferGetAssetId } from './../sharedcomponents/ForwardCommands/ReeferGetAssetId';\r\nimport { EnableDoorSensor } from './../sharedcomponents/ForwardCommands/EnableDoorSensor';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { TripWiseReport } from './../sharedcomponents/ForwardCommands/TripWiseReport';\r\nimport lodashfilter from 'lodash/filter';\r\nimport CCAlmTooltip from './../sharedcomponents/GridToolTips/CCAlmTooltip';\r\nimport { NewBookingUnAssign } from '../sharedcomponents/NewBookingUnAssign';\r\nimport { ViewBookingDetails } from '../childcomponents/ViewBookingDetails';\r\nimport { EditVoyageVVC } from './../childcomponents/EditVoyageVVC';\r\nimport { DimiSetting } from './../sharedcomponents/ForwardCommands/DIMISettings';\r\nimport { IntelligentPTIFunction } from './../sharedcomponents/ForwardCommands/IntelligentPTIFunction';\r\nimport { FanSpeed } from './../sharedcomponents/ForwardCommands/FanSpeed';\r\n\r\nimport CommonActions from '../../actions/CommonActions';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\nvar reeferColumns;\r\nvar reeferColumns2;\r\nvar reeferStatus;\r\nvar statusFilters;\r\nvar self;\r\nvar customerTypeCd;\r\nvar custId;\r\nvar userEmail;\r\nvar dCXDownloads;\r\nvar functionId;\r\nvar noCarryFwdScreens = [\"gensetstatus\", \"drystatus\", \"chassisstatus\"];\r\nvar customerAccessData: any[];\r\nvar viewBookingData: any[];\r\nvar reeferAssetSensors;\r\nvar newColumns;\r\nvar columnDefs;\r\n// At runtime, Redux will merge together...\r\ntype ReeferStatusProps =\r\n UserDetailState.UserState\r\n & HomeState.HomeState\r\n & ReeferStatusState.ReeferSearchState // ... state we've requested from the Redux store \r\n & typeof ReeferStatusState.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface ReeferStatusSearchState {\r\n selectedItems: any[];\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n popUpHtmlReport: any;\r\n columnDefs: any[];\r\n reeferStatusData: any[];\r\n pageSize: any;\r\n gridApiParams: any;\r\n overlayLoadingTemplate: any;\r\n exportFields: ExportFields;\r\n ToggleSearchParams: any;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n PTReport: string;\r\n ReportReeferId: string;\r\n isStarCoolOem: boolean;\r\n //WI-23732\r\n CustomAttributes: server.CustomAttributes[];\r\n CustomerSpecificCommandData: any;\r\n fullPreTripCommandText: string;\r\n shortPreTripCommandText: string;\r\n funcPreTripCommandText: string;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n TWReport: string;\r\n isTripStatus: boolean;\r\n CargoCareProfiles: any[];\r\n CCActiveAlerts: any[];\r\n frameworkComponents: any;\r\n DashboardPreferenceId: any;\r\n DashboardWidgetsSearch: any[];\r\n IsReadOnly: any;\r\n RevisionNum: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customAttributesInfo;\r\nvar IsTriggered: boolean;\r\nvar EnableLynxCommands: boolean;\r\nvar EnableCT35ML5Commands: boolean;//RCNG-3425\r\nvar ShowTDDForCT36ML5: boolean;\r\nvar ShowTDDForCT35ML5: boolean;\r\nvar tripWISESupport: any;\r\nclass ReeferStatus extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n customerAccessData = [];\r\n var overlayTemplate = 'Loading...'; \r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;//this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;//this.props.loggedInUserData.User.Customer.CustomerId;\r\n userEmail = JSON.parse(sessionStorage.getItem('UserInfo')).UserEmail;\r\n dCXDownloads = JSON.parse(sessionStorage.getItem('customerDetails')).DCXDownloads;\r\n var exportData = new ExportFields();\r\n functionId = 41; // functionId for ReeferStatus Grid\r\n var commandSpecificData: server.CommandSpecificData = { commandId: '', Oem: [] };\r\n \r\n this.state = {\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n popUpHtmlReport: '',\r\n reeferStatusData: [],\r\n pageSize: 25,\r\n gridApiParams: [],\r\n columnDefs: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n exportFields: exportData,\r\n ToggleSearchParams: null,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n PTReport: '',\r\n ReportReeferId: '',\r\n isStarCoolOem: false,\r\n CustomAttributes: [],//WI-23732\r\n CustomerSpecificCommandData: commandSpecificData,\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n fullPreTripCommandText: 'Full', shortPreTripCommandText: 'Short', funcPreTripCommandText: 'Function Test',\r\n TWReport: '',\r\n isTripStatus: false,\r\n CargoCareProfiles: [],\r\n CCActiveAlerts: [],\r\n frameworkComponents: { cCAlmTooltip: CCAlmTooltip},\r\n DashboardWidgetsSearch: [],\r\n IsReadOnly: false,\r\n DashboardPreferenceId: 0,\r\n RevisionNum: 0\r\n };\r\n\r\n $('#globalLoader').show();\r\n this.GetDefaultGridPreferenceColumns();\r\n this.GetCCprofileCode();//RCNG-713\r\n if (this.props.location.state != undefined && this.props.location.state != null) {\r\n statusFilters = this.props.location.state;\r\n }\r\n else if (this.props.searchFilters != undefined && this.props.searchFilters != null) {\r\n if (this.props.searchFilters.SelectedAssetTypes != null && (this.props.searchFilters.SelectedAssetTypes == \"\"\r\n || this.props.searchFilters.SelectedAssetTypes.toString().split(',').indexOf(\"Reefer\") != -1)) {\r\n statusFilters = this.props.searchFilters;\r\n\r\n //WI-24029-start\r\n if (window.location.search != undefined && window.location.search != null && window.location.href != undefined && window.location.href != null) {\r\n if (window.location.href.includes('reeferstatus') && (!noCarryFwdScreens.includes(window.location.search.slice(window.location.search.indexOf(\"=\") + 1))))\r\n statusFilters = this.props.searchFilters;\r\n else\r\n this.clearFilters();\r\n }\r\n else\r\n this.clearFilters();\r\n //WI-24029-end\r\n\r\n }\r\n else {\r\n //RCNG-1012 - start\r\n if (this.props.searchFilters.StatusFilters != undefined && this.props.searchFilters.StatusFilters.length > 0)\r\n statusFilters = this.props.searchFilters;\r\n else\r\n this.clearFilters();\r\n //RCNG-1012 - end\r\n } \r\n }\r\n else\r\n this.clearFilters();\r\n //RCNG-3056\r\n var refAppParams = this.props.refApplicationParams;\r\n if (refAppParams != null && refAppParams != undefined) {\r\n if (refAppParams.EnableLynxCommands != null && refAppParams.EnableLynxCommands != undefined)\r\n EnableLynxCommands = refAppParams.EnableLynxCommands == 'true' ? true : false;\r\n if (refAppParams.EnableCT35ML5Commands != null && refAppParams.EnableCT35ML5Commands != undefined)\r\n EnableCT35ML5Commands = refAppParams.EnableCT35ML5Commands == 'true' ? true : false;\r\n if (refAppParams.ShowTDDForCT36ML5 != null && refAppParams.ShowTDDForCT36ML5 != undefined)\r\n ShowTDDForCT36ML5 = refAppParams.ShowTDDForCT36ML5 == 'true' ? true : false;\r\n if (refAppParams.ShowTDDForCT35ML5 != null && refAppParams.ShowTDDForCT35ML5 != undefined)\r\n ShowTDDForCT35ML5 = refAppParams.ShowTDDForCT35ML5 == 'true' ? true : false;\r\n }\r\n //RCNG-3140\r\n tripWISESupport = this.props.tripWISESupportdeviceTypes;\r\n\r\n //this.props.requestReeferAdvanceSearch(statusFilters, reeferColumns); \r\n self = this;\r\n //this.PopulateReeferenceData();\r\n if (self.state.reeferFormatter == null || self.state.reeferFormatter == undefined) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.setState({\r\n reeferFormatter: data\r\n }, () => { \r\n self.props.requestReeferAdvanceSearch(statusFilters, reeferColumns);\r\n reeferColumns2 = this.createColumnDefs();\r\n columnDefs = this.createColumnDefs();\r\n this.renderSensorColumnsAndAsset();\r\n });\r\n });\r\n }\r\n else {\r\n self.props.requestReeferAdvanceSearch(statusFilters, reeferColumns);\r\n reeferColumns2 = this.createColumnDefs();\r\n columnDefs = this.createColumnDefs();\r\n this.renderSensorColumnsAndAsset();\r\n }\r\n }\r\n\r\n GetDefaultGridPreferenceColumns() {\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n var dbPreID: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserLayoutByDashboardPreferenceId?DashboardPreferenceId=' + dbPreID);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n {\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n if(defaultPreferenceName.length>0) \r\n this.setState({ DashboardPreferenceId: defaultPreferenceName[0].DashboardPreferenceId, IsReadOnly: defaultPreferenceName[0].IsReadOnly, RevisionNum: defaultPreferenceName[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n this.setState({ DashboardPreferenceId: dashboardLayouts[0].DashboardPreferenceId, IsReadOnly: dashboardLayouts[0].IsReadOnly, RevisionNum: dashboardLayouts[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n }\r\n //Added for display the default columns\r\n var gridPreferencesData: any = self.state.DashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 4)\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, this.state.gridApiParams, gridPreferencesData, \"ReeferGrid\");\r\n\r\n }, 1000);\r\n } \r\n }); \r\n }\r\n\r\n //RCNG-713\r\n GetCCprofileCode() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetCargoCareCustomerProfiles');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CargoCareProfiles: data });\r\n });\r\n }\r\n renderSensorColumnsAndAsset(){\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomerDeviceTypeSensor');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var sensorData = data;\r\n if (JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomAttributes');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var attributesdata = data;\r\n this.renderSensorColumnsAndAssetAttributes(attributesdata, sensorData);\r\n });\r\n }\r\n else {\r\n this.renderCustomerDeviceTypeSensorColumns(sensorData);\r\n }\r\n });\r\n }\r\n toolTipValueGetter = (params) => ({ value: params.value });\r\n renderSensorColumnsAndAssetAttributes(attributesData: any, sensorData: any) {\r\n if (sensorData != null && sensorData != undefined)\r\n reeferAssetSensors = sensorData.filter(x => x.AssetTypeCd == 'R');\r\n var newColumns = columnDefs;\r\n var generatedColumns = [];\r\n //WI 26721 First Device sensors and next Custom attributes\r\n\r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n //generatedColumns = [];\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination); \r\n\r\n if (!reeferColumns2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n reeferColumns2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n if (attributesData != null && attributesData != undefined && attributesData.length > 0) {\r\n generatedColumns = [];\r\n $.each(attributesData, function (i, val) {\r\n var customAttributeObject = { headerName: '', field: '', enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: Formatters.stringTypeSortingForCustomefields, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n var attributeName = val.AttributeName;\r\n var columnHeaderName = attributeName.replace(' ', '');\r\n customAttributeObject.headerName = attributeName;\r\n customAttributeObject.field = columnHeaderName;\r\n generatedColumns.push(customAttributeObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Asset Attributes\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Asset Attributes\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!reeferColumns2.some(x => x.headerName === \"Asset Attributes\"))\r\n reeferColumns2.push(newColumnDefination);// = newColumns;\r\n }\r\n\r\n this.setState({ columnDefs: newColumns });\r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns(sensorData: any) {\r\n if (sensorData != null && sensorData != undefined) {\r\n reeferAssetSensors = sensorData.filter(x => x.AssetTypeCd == 'R');\r\n var newColumns = columnDefs;\r\n var generatedColumns = [];\r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n generatedColumns = [];\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, cellClass: 'OneDecimal', resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };//26528\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };//26528//26784\r\n\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!reeferColumns2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n reeferColumns2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n this.setState({ columnDefs: newColumns });\r\n }\r\n }\r\n\r\n PopulateReeferenceData() { \r\n if (self.state.reeferFormatter == null || self.state.reeferFormatter == undefined) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => { \r\n self.setState({\r\n reeferFormatter: data\r\n }, () => { self.props.requestReeferAdvanceSearch(statusFilters, reeferColumns); });\r\n });\r\n }\r\n else {\r\n self.props.requestReeferAdvanceSearch(statusFilters, reeferColumns);\r\n }\r\n\r\n }\r\n\r\n clearFilters() {\r\n customAttributesInfo = {};\r\n var filters: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null, \r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null //WI-26881\r\n };\r\n\r\n statusFilters = filters;\r\n }\r\n\r\n reeferContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.reefermapAction(this.state.selectedItems, 'ReeferStatus');\r\n break;\r\n case \"History\": this.reeferhistoryAction(this.state.selectedItems, 'ReeferStatus');\r\n break;\r\n case \"CommandStatus\": this.reefercommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.reeferdetailsAction(this.state.selectedItems, 'Reefer', 'CurrentDetails');\r\n break;\r\n case \"Copy\": this.reeferdetailsCopyAction();\r\n break;\r\n case \"CopyWithHeader\": this.reeferdetailsCopyWithHeaderAction();\r\n break;\r\n case \"EditBooking\": this.reeferBookingAction(this.state.selectedItems, 'ReeferStatus');\r\n break;\r\n case \"CreateBooking\": this.reeferCreateBookingAction(this.state.selectedItems, 'ReeferStatus');\r\n break;\r\n case \"ViewBooking\": this.reeferViewBookingAction(this.state.selectedItems, 'ReeferStatus');\r\n break;\r\n }\r\n }\r\n\r\n reeferdetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n reeferdetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n\r\n if (event.data != null && event.data != undefined) {\r\n //self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === 0)\r\n this.reeferdetailsAction(this.state.selectedItems, 'Reefer', 'Comments');\r\n }\r\n }\r\n\r\n reeferdetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data[0], reeferFormatter: self.state.reeferFormatter, source: dataSource, isOpenVia: isOpenVia\r\n };\r\n //WI26438 Added reeferFormatter in order to bind Last Event in Details screen\r\n this.props.history.push('/reeferdetails?From=' + window.location.pathname.replace('/', ''), reeferdetails);\r\n }\r\n\r\n reeferhistoryAction(data: any, isOpenVia: any) {\r\n //var reeferdetails = data;\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.state.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/reeferhistory', reeferdetails);\r\n }\r\n\r\n reefermapAction(data: any, isOpenVia: any) {\r\n //var reeferdetails = data;\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.state.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/reefermap', reeferdetails);\r\n }\r\n\r\n reeferBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.history.push('/NewbookingEdit', reeferdetails);\r\n }\r\n reeferCreateBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.history.push('/Newbookingassign', reeferdetails);\r\n }\r\n reeferViewBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.history.push('/ViewBooking', reeferdetails);\r\n }\r\n reefercommandstatusAction(data: any) {\r\n var reeferdetails = data;\r\n this.props.history.push('/reefercommands', reeferdetails);\r\n }\r\n\r\n updateReeferStatusDimensions() {\r\n $(\"#ReeferStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 425);\r\n $(\"#ReeferStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 425);\r\n $(\"#ReeferStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 425);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateReeferStatusDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsForReefers('2');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n ReeferToggleButtonsFilter.ClearToggleFilters();\r\n //this.updateReeferStatusDimensions();\r\n this.setState({\r\n defaultColDef: this.defaultColDef()\r\n });\r\n window.addEventListener(\"resize\", this.updateReeferStatusDimensions.bind(this));\r\n Excel.preventDefault();\r\n \r\n \r\n //5198 setTimeout(() => { this.setPrefenceSettingsColumns() }, 3000);\r\n\r\n \r\n setTimeout(() => { this.updateReeferStatusDimensions() }, 200);\r\n // To make the Modal popups draggable.\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReport\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReportTW\"));\r\n }\r\n\r\n }\r\n\r\n //manageVessel = (param) => {\r\n // $('#globalLoader').show();\r\n // var rowParams = self.state.selectedItems;\r\n // if (rowParams != null && rowParams != undefined) {\r\n // var url = Config.ApiBaseUrl + '/api/reeferstatus/ManageVessel';\r\n // var vesselData = { reeferCommandUnits: rowParams, IsAssign: param };\r\n // var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(vesselData), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => {\r\n // response.json();\r\n // })\r\n // .then(data => {\r\n // this.props.requestReeferAdvanceSearch(this.props.searchFilters, reeferColumns);\r\n // });\r\n // }\r\n //}\r\n\r\n exportToExcel() {\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.props.reeferStatus != 'object' ? JSON.parse(this.props.reeferStatus) : this.props.reeferStatus;\r\n }\r\n $(\"#globalLoader\").show();\r\n var r = this.state.columnDefs;\r\n try {\r\n //Excel.InitializeExcelExport(arrData, r, 'ReeferStatusGrid');\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n var formName = 'ReeferGrid';\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridToolBarExcel.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n\r\n }\r\n\r\n onGridReady(params: any) {\r\n //params.api.showLoadingOverlay();\r\n self.setState({ gridApiParams: params.api });\r\n\r\n /*var gridPreferencesData: any = self.state.DashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 4);*/\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n /*setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferGrid\");\r\n }, 3000); */ \r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"ReeferGrid\");\r\n \r\n }\r\n\r\n onRowDataChanged(params: any): void {\r\n var reeferIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n reeferIdSelected = self.state.PrevSelectedItems[0].ReeferID;\r\n }\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n var gridData = self.state.reeferStatusData;\r\n if (gridData != null && gridData != undefined && gridData.length > 0) {\r\n TotalCount = gridData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && reeferIdSelected !== \"\") {\r\n let count = 0;\r\n if (reeferIdSelected) {\r\n params.api.forEachLeafNode((node) => {\r\n count = count + 1;\r\n if (node.data.ReeferID === reeferIdSelected) {\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n onSelectionChanged(params: any) {\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n //this.setCommandText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd)); \r\n var selectedItems = self.state.selectedItems;\r\n if (self.state.isTripStatus)\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null\r\n //modelTitle: '',\r\n //popUpHtml: ''\r\n\r\n });\r\n else\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n\r\n }\r\n\r\n ValidateBookingID(reeferData: any) {\r\n if (reeferData.length > 0 && reeferData[0].LastBookingEventMasterId != null && reeferData[0].LastBookingEventMasterId.length > 0) {\r\n for (var lastBookingID in reeferData[0].LastBookingEventMasterId) {\r\n if (reeferData[0].EventMasterID == parseInt(reeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n onSortChanged(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.api.refreshInMemoryRowModel('filter');\r\n params.api.gridOptionsWrapper.gridOptions.api.redrawRows();\r\n }\r\n\r\n onGridScroll(params: any) {\r\n\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n assignToCargoCareSubMenu(customerProfileCode: any, params: any) {\r\n var cargoCareSubMenus: any = []; \r\n $.each(this.state.CargoCareProfiles, (index, item) => {\r\n var objCCSubMenu: any = {\r\n name: item.CargoCareCustomerProfileCode,\r\n action: () => {\r\n //this.assignCargoCare(item.CargoCareCustomerProfileID);\r\n self.checkUnitAssignedToCargoCare(item.CargoCareCustomerProfileID, customerProfileCode, item.CargoCareCustomerProfileCode);\r\n },\r\n disabled: UserRights.checkCCAssignSubMenuItemDisabled(params, item.CargoCareCustomerProfileID, 'AssigntoCargoCare')\r\n }\r\n cargoCareSubMenus.push(objCCSubMenu);\r\n });\r\n\r\n return cargoCareSubMenus;\r\n }\r\n\r\n checkUnitAssignedToCargoCare(CCCustomerProfileId: any, customerProfileCode: any, newCustomerProfileCode: any) {\r\n if (customerProfileCode != null && customerProfileCode != \"\" && customerProfileCode != undefined) {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"The chosen profile \" + newCustomerProfileCode + \", will replace any other profiles currently in use by the selected reefer(s). The reefer(s) will be unassigned from those profiles and all of their CargoCare alerts will be cleared prior to reassignment to \" + newCustomerProfileCode + \". Continue?\",\r\n self.onYesAssignToCargoCare.bind(this, CCCustomerProfileId),\r\n self.onCancelRefreshStatusGrid.bind(this));\r\n }\r\n else\r\n self.assignCargoCare(CCCustomerProfileId);\r\n }\r\n\r\n onYesAssignToCargoCare(CCCustomerProfileId: any) {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n\r\n RCNGWindow.ConfirmWindow.close();\r\n self.assignCargoCare(CCCustomerProfileId);\r\n }\r\n }\r\n\r\n ClearCargoCareAlertsSubMenu(selectedReeferData: any) {\r\n var ccAlertsSubMenus: any = [];\r\n var alarmsList = self.state.reeferFormatter.AlarmMasterList;\r\n if (selectedReeferData[0].CCAlarmsList != undefined && selectedReeferData[0].CCAlarmsList != null && selectedReeferData[0].CCAlarmsList != \"\") {\r\n var ccAlarms = selectedReeferData[0].CCAlarmsList.split(',');\r\n\r\n $.each(ccAlarms, function (index, item) {\r\n var lstAlerts = item.split(':');\r\n var almCd = lstAlerts[3] != \"\" ? lstAlerts[3].trim() : '';\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === almCd);\r\n if (alarmDescription.length > 0) {\r\n var objCCSubMenu: any = {\r\n name: alarmDescription[0].AlarmAlias + \" : \" + alarmDescription[0].Description + \" : \" + lstAlerts[2],\r\n action: () => {\r\n self.clearActiveCargoCareAlert(alarmDescription[0].AlarmMasterID);\r\n },\r\n icon: ReeferCellRenderer.GetCargoCareAlmImg(lstAlerts[1]),\r\n }\r\n ccAlertsSubMenus.push(objCCSubMenu);\r\n\r\n }\r\n\r\n\r\n });\r\n\r\n if (ccAlertsSubMenus.length > 1) {\r\n var objCCAllSubMenuSep: any = 'separator';\r\n ccAlertsSubMenus.push(objCCAllSubMenuSep);\r\n var objCCAllSubMenu: any = {\r\n name: \"Clear All\",\r\n action: () => {\r\n self.clearActiveCargoCareAllAlerts();\r\n },\r\n //disabled: UserRights.checkMenuItemDisabled(params, 'AssigntoCargoCare')\r\n }\r\n ccAlertsSubMenus.push(objCCAllSubMenu);\r\n }\r\n }\r\n return ccAlertsSubMenus;\r\n }\r\n\r\n clearActiveCargoCareAlert(alarmMasterId: any) {\r\n $('#globalLoader').show();\r\n this.props.requestClearCargoCareAlert(this.getCargoCareCommandUnits(alarmMasterId, null));\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n\r\n clearActiveCargoCareAllAlerts() {\r\n $('#globalLoader').show();\r\n this.props.requestClearAllCargoCareAlert(this.getCargoCareCommandUnits(null, null));\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n\r\n getReeferContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"ReeferID\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n //this.setCommandText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd)); \r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var reeferid = selectedrowNode.data.ReeferID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.ReeferID === reeferid)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n \r\n var distinctOEM = [];\r\n var fullPreTripLabel = 'Full';\r\n var shortPreTripLabel = 'Short';\r\n var funcPreTripLabel = 'Function Test';\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if ($.inArray(val.ReeferOEMTypeCd, distinctOEM) === -1) {\r\n distinctOEM.push(val.ReeferOEMTypeCd);\r\n }\r\n }\r\n });\r\n if (distinctOEM.length == 1) {\r\n if (self.state.reeferFormatter != null || self.state.reeferFormatter != undefined) {\r\n var customerSpecificCommandList = self.state.reeferFormatter.CustomerSpecificCommandList;\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n if (customerSpecificCommandList != null && customerSpecificCommandList.length > 0) {\r\n var custSpecificCommandList = lodashfilter(customerSpecificCommandList, function (item) {\r\n return item.CustomerId === custId;\r\n });\r\n if (custSpecificCommandList != null && custSpecificCommandList.length > 0) {\r\n var fullCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartFullPTI\";\r\n });\r\n if (fullCustSpecificCommandList != null && fullCustSpecificCommandList.length > 0) {\r\n fullPreTripLabel = fullCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n }\r\n var shortCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartShortPTI\";\r\n });\r\n if (shortCustSpecificCommandList != null && shortCustSpecificCommandList.length > 0) {\r\n shortPreTripLabel = shortCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n shortPreTripLabel = 'Auto 3';\r\n }\r\n var funcCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartCAShortPTI\";\r\n });\r\n if (funcCustSpecificCommandList != null && funcCustSpecificCommandList.length > 0) {\r\n funcPreTripLabel = funcCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n shortPreTripLabel = 'Auto 3';\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n shortPreTripLabel = 'Auto 3';\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n }\r\n self.setState({\r\n fullPreTripCommandText: fullPreTripLabel,\r\n shortPreTripCommandText: shortPreTripLabel,\r\n funcPreTripCommandText: funcPreTripLabel\r\n });\r\n\r\n \r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.reeferContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('14'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.reeferContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('154'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.reeferContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('15'),\r\n },\r\n {\r\n name: 'Command History',\r\n action: () => {\r\n this.reeferContextMenuClick(\"CommandStatus\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('155'),\r\n },\r\n {\r\n name: 'CargoCare',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('76, 77, 224', params),\r\n subMenu: [\r\n {\r\n name: 'Assign to CargoCare',\r\n subMenu: this.assignToCargoCareSubMenu(selectedReeferData[0].CCProfileCode, params),\r\n //action: () => {\r\n // this.assignCargoCare();\r\n //},\r\n cssClasses: UserRights.checkMenuItemVisibility('76'),\r\n //disabled: UserRights.checkMenuItemDisabled(params, 'AssigntoCargoCare'),\r\n },\r\n {\r\n name: 'Unassign from CargoCare',\r\n action: () => {\r\n this.unAssignCaregoCare();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('77'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'UnassignfromCargoCare'),\r\n },\r\n {\r\n name: 'Clear CargoCare Alerts',\r\n subMenu: this.ClearCargoCareAlertsSubMenu(selectedReeferData),\r\n \r\n cssClasses: UserRights.checkMenuItemVisibility('224'),//RCNG-588\r\n disabled: UserRights.checkClearCargoCareAlertsSubMenuItemDisabled(params, 'ClearCargoCareAlerts'),\r\n },\r\n /*{\r\n name: 'Clear Set Point',\r\n action: () => {\r\n this.clearSetPoint();\r\n },\r\n //disabled: UserRights.checkMenuItemClearSetPointDisabled(params),\r\n //disabled: UserRights.checkMenuItemDisabled(params, 'ClearSetPoint'),\r\n\r\n },*/\r\n ],\r\n },\r\n {\r\n name: 'Commands',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('18, 19, 20, 21, 22, 23, 26, 27, 24, 25, 28, 29, 30, 31, 32, 33, 80, 81, 83, 84, 85, 89, 90, 92, 103, 104, 106, 108, 109, 111, 112, 113, 114, 115, 116, 118, 122, 123, 125, 126, 145, 150, 207',params),\r\n disabled:\r\n //EnableLynxCommands ? UserRights.checkMenuItemDisabledForCommands(params, 'Commands') :\r\n UserRights.checkMenuItemDisabledForLynxCommands(params, 'Commands', EnableLynxCommands, EnableCT35ML5Commands, self.state.reeferFormatter.RefControllerTypes),//RCNG-1842 - RCNG-3425\r\n subMenu: [\r\n {\r\n name: 'Reporting',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('26, 81, 145, 150', params, 'Reporting', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Ping / Report',\r\n action: () => {\r\n this.popUpPing();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('26', params, 'Ping', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set Reporting Interval',\r\n action: () => {\r\n this.popUpChangeReporting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('81', params, 'SetReportingInterval', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'SetReportingInterval'),\r\n },\r\n {\r\n name: 'Device Reset',\r\n action: () => {\r\n this.popUpDeviceReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('145', params, 'DeviceReset', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Reset To Defaults',\r\n action: () => {\r\n this.popUpDeviceHardReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('150', params, 'DeviceResetToDefaults', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n\r\n name: 'Reefer Settings',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25, 28, 92, 108,267,268,269', params, 'ReeferSettings', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Change Setpoints',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25', params, 'ChangeSetpoints', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Temperature',\r\n action: () => {\r\n this.popUpChangeTempSetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('23'),\r\n },\r\n {\r\n name: 'Humidity',\r\n action: () => {\r\n this.popUpHumiditySetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('27', params, 'Humidity', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Humidity'),\r\n },\r\n {\r\n name: 'O2',\r\n action: () => {\r\n this.popUpO2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('24', params, 'O2', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CO2',\r\n action: () => {\r\n this.popUpCo2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('25', params, 'CO2', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Clock',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('92, 108', params, 'Clock', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Sync to Device',\r\n action: () => {\r\n this.popUpSyncReeferClock();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('92', params, 'SynctoDevice', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Clock Sync Settings',\r\n action: () => {\r\n this.popUpChangeReeferClockSyncSetting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('108', params, 'ClockSyncSettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Change Reefer ID',\r\n action: () => {\r\n this.popUpChangeReeferId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('28', params, 'ChangeReeferID', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ChangeReeferID'),\r\n },\r\n {\r\n name: 'Controlled Atmosphere',\r\n action: () => {\r\n this.popUpControlledAtmosphere();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('139', params, 'ControlledAtmosphere', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Fan Speed',\r\n action: () => {\r\n this.popUpFanSpeed();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('269', params, 'FanSpeed', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledforDimiSetting(params, 'FanSpeed'),\r\n },\r\n {\r\n name: 'OEM PTI',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('267,268', params, 'OEMPTI', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledforDimiSetting(params, 'OEMPTI'),\r\n subMenu: [\r\n {\r\n name: 'DIMI Settings',\r\n action: () => {\r\n this.popUpDIMISettings();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('267', params, 'DIMISettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Intelligent PTI Function',\r\n action: () => {\r\n this.popUpIntelligentPTIFunction();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('268', params, 'IntelligentPTIFunction', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n }\r\n ],\r\n },\r\n {\r\n name: 'Reefer Data Log',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByDataForTDD('29, 31, 32, 80', params, 'ReeferDataLog', self.state.reeferFormatter.RefControllerTypes, ShowTDDForCT36ML5, ShowTDDForCT35ML5),\r\n disabled: UserRights.checkMenuItemDisabledForTDD(params, 'ReeferDataLog', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Get Data Log',\r\n action: () => {\r\n this.popUpDLTraditional(this);\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyDataForTDD('31', params, 'GetDataLog', self.state.reeferFormatter.RefControllerTypes, ShowTDDForCT36ML5, ShowTDDForCT35ML5),\r\n },\r\n {\r\n name: 'Set Data Log Interval',\r\n action: () => {\r\n this.popUpChangeDatalog();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('29', params, 'SetDataLogInterval', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Real-Time Retrieval Settings',\r\n cssClasses: UserRights.checkMenuItemVisibility('32, 80'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Reefer Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('18, 19, 20, 21, 30, 106, 206', params, 'ReeferPreTrip', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Start Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('18, 19, 20'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StartPre-Trip'),\r\n subMenu: [\r\n {\r\n name: this.state.fullPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripFull();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('18', params, 'fullPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.shortPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripShort();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('19', params, 'shortPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.funcPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('20', params, 'funcPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled',\r\n action: () => {\r\n this.popUpChangeToChilled();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('140', params, 'Chilled', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Frozen',\r\n action: () => {\r\n this.popUpChangeToFrozen();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('141', params, 'Frozen', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA',\r\n action: () => {\r\n this.popUpChangeToCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('142', params, 'CA', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Full',\r\n action: () => {\r\n this.popUpChangeToCAFullPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('143', params, 'CAFull', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Function Test',\r\n action: () => {\r\n this.popUpChangeToCAFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('144', params, 'CAFunctionTest', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled and CA',\r\n action: () => {\r\n this.popUpChangeToChilledandCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('148', params, 'ChilledandCA', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Stop Pre-Trip',\r\n action: () => {\r\n this.popUpStopPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('21', params, 'StopPre-Trip', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StopPre-Trip'),\r\n },\r\n {\r\n name: 'Scheduled Pre-Trip',\r\n action: () => {\r\n this.popUpSchedulePTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('106', params, 'ScheduledPre-Trip', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Get Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'GetPre-TripResults', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Show Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTIReport();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'ShowPre-TripResults', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ShowPreTripResults'),\r\n },\r\n {\r\n name: 'Get TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWR();\r\n },\r\n cssClasses: UserRights.checkTripWISEVisibilitybyData('206', params, 'GetTripWISEReport', tripWISESupport),\r\n },\r\n {\r\n name: 'Show TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWReport();\r\n },\r\n cssClasses: UserRights.checkTripWISEVisibilitybyData('261', params, 'ShowTripWISEReport', tripWISESupport),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ShowTripWISEReport'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Reboot Reefer Controller',\r\n action: () => {\r\n this.popUpRebootReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('22', params, 'RebootReeferController', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Query Reefer Inventory',\r\n action: () => {\r\n this.popUpQueryReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('83,84,85', params, 'QueryReeferInventory', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Reefer Model Configuration',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('89, 90', params, 'ReeferModelConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Update',\r\n action: () => {\r\n this.popUpUpdateModelConfig();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('89', params, 'Update', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Verify',\r\n action: () => {\r\n this.popUpVerifyModelValidity();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('90', params, 'Verify', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Verify'),\r\n },\r\n ],\r\n\r\n },\r\n {\r\n name: 'Defrost',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('103, 104', params, 'Defrost', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Defrost'),\r\n\r\n subMenu: [\r\n\r\n {\r\n name: 'Start Defrost',\r\n action: () => {\r\n this.popUpStartDeforst();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('103', params, 'StartDefrost', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Change Defrost Interval',\r\n action: () => {\r\n this.popUpChangeDeforstInterval();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('104', params, 'ChgDefrostInterval', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledForDefrost(params, 'ChgDefrostInterval', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n\r\n name: 'Multiple Setpoints',\r\n action: () => {\r\n this.popUpMSC();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('123', params, 'MultipleSetpoints', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Automatic Cold Treatment',\r\n action: () => {\r\n this.popUpACT();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('122', params, 'AutomaticColdTreatment', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Guest Reefer configuration',\r\n action: () => {\r\n this.popUpGuestReeferConfigCmd();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('112, 113, 114, 115, 116', params, 'GuestReeferconfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Change Zigbee Config Settings',\r\n action: () => {\r\n this.popUpZigbeeSettings();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('118', params, 'ChangeZigbeeConfigSettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Assign PAN Id',\r\n action: () => {\r\n this.popUpAssignPanId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('109', params, 'AssignPANId', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Configuration',\r\n action: () => {\r\n this.popAutoConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('110', params, 'DeviceConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Asset Configuration',\r\n action: () => {\r\n this.popAssetConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('121', params, 'AssetConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Fresh Air Type',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('125, 126', params, 'FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n\r\n {\r\n name: 'Get - Fresh Air Type',\r\n action: () => {\r\n this.popUpGetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('125', params, 'Get-FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set - Fresh Air Type',\r\n action: () => {\r\n this.popUpSetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('126', params, 'Set-FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Get Asset ID',\r\n action: () => {\r\n this.popUpGetAssetId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('199', params, 'GetAssetId', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Enable Door Sensor',\r\n action: () => {\r\n this.popUpEnableDoorSensor();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('207', params, 'EnableDoorSensor', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('94, 95, 98'),\r\n subMenu: [\r\n {\r\n name: 'Create Trip',\r\n action: () => {\r\n this.popUpCreateTrip();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('95'),\r\n },\r\n {\r\n name: 'Trip Status',\r\n action: () => {\r\n this.popUpTripStatus();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('94'),\r\n },\r\n {\r\n name: 'Clear Deviation',\r\n action: () => {\r\n this.popUpClearDeviation();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('98'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ClearDeviation'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Booking and Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('40, 82, 100, 101, 102'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'BookingandAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('40, 100, 102'),\r\n },\r\n {\r\n name: 'Unassign',\r\n action: () => {\r\n this.popUpUnAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('82, 101'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'Unassign', self.state.reeferFormatter.EventMasterList),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Bookings',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('212,211,213,214,249'),//Added Right id for RCNG-945\r\n disabled: UserRights.checkMenuItemDisabled(params, 'NewBookingandAccess'),\r\n subMenu: [\r\n {\r\n name: 'Create New Booking',\r\n action: () => {\r\n this.reeferContextMenuClick(\"CreateBooking\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('211'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'NewBookingCreate', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Edit Booking',\r\n action: () => {\r\n this.reeferContextMenuClick(\"EditBooking\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('212'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'NewBookingEdit', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'View Booking',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"ViewBooking\");\r\n this.popUpViewBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('213'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'ViewBooking', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Unassign Booking',\r\n action: () => {\r\n this.popUpNewUnAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('214'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'Unassign', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Third-Party Access',\r\n action: () => {\r\n this.popUpAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('249'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Edit Voyage',\r\n action: () => {\r\n this.popUpEditVoyage();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('248'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'EditVoyage'),\r\n },\r\n {\r\n name: 'Inventory',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('208,209'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'RetireOrReactivate'),\r\n subMenu: [\r\n {\r\n name: 'Retire',\r\n action: () => {\r\n this.popUpRetire();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('208', params, \"Retire\"),\r\n },\r\n {\r\n name: 'Reactivate',\r\n action: () => {\r\n this.popUpReactivate();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('209', params, \"Reactivate\"),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Confirm Controller Swap',\r\n action: () => {\r\n this.popUpControllerSwap();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('47'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ConfirmControllerSwap'),\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n\r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: true,\r\n sortable: true,\r\n resizable: true,\r\n }]\r\n }\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"CC\", field: \"CCSeverityLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.CargoCareFormatterForFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter, tooltipComponent: 'cCAlmTooltip',\r\n tooltipValueGetter: this.toolTipValueGetter,cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList }, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.statusIndicatorWithDescriptionForALMForFilter(params) } }, valueGetter: (params) => { return ReeferFormatters.statusALMSorting(params); }, resizable: true, width: 65, cellRenderer: (params) => { return ReeferCellRenderer.StatusIndicatorWithDescriptionForAlarms(params, self.state.reeferFormatter.AlarmMasterList) }, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.runStateFormatterForFilter(params); } }, resizable: true, valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferCellRenderer.RunStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.pwrStateFormatterForFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: ReeferCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BATT\", field: \"ReeferBatteryPct\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.reeferBatteryPctFormatterFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return Formatters.reeferBatteryPctSorting(params); }, cellRenderer: ReeferCellRenderer.BatteryPctFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VVC Dep\", field: \"DepartingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.DepartingVVCstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VVC Arr\", field: \"ArrivingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.ArrivingVVCstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltipField: \"TripNameAndStatus\", width: 70, valueGetter: (params) => { return ReeferFormatters.TripSorting(params); }, cellRenderer: ReeferCellRenderer.TripstatusIndicator, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: ReeferCellRenderer.AssetStateFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Identification\",\r\n children: [\r\n {\r\n headerName: \"OEM\", field: \"ReeferOEMTypeCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.oemTypeFormatterForFilter(params); } }, resizable: true,\r\n valueGetter: params => { return ReeferFormatters.OEMTypeValueFormatterFieldName(params); },\r\n width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n\r\n\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ReeferID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Model\", field: \"OEMModel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.UnitTypesListFormatters(params, self.state.reeferFormatter.UnitTypesList); }, cellRenderer: (params) => { return ReeferFormatters.UnitTypesListFormatters(params, self.state.reeferFormatter.UnitTypesList); }, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Booking\",\r\n children: [\r\n { headerName: \"Booking #\", field: \"BookingNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BookingNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK temp \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"TemperatureUnit\"); }, cellRenderer: ReeferFormatters.TemperatureFormatterForBooking, field: \"TemperatureUnit\", columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Assigned to\", field: \"CustomerName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); }, filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } }, cellRenderer: ReeferCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"CC profile\", field: \"CCProfileCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CCProfileCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"CC alerts\", field: \"CCAlarms\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.CCAlarmAliasDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.CCAlertAlarmAliasDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList) }, tooltipComponent: 'cCAlmTooltip',tooltipValueGetter: this.toolTipValueGetter, cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"BK VV\", field: \"BKVV\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.BKVVstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK POR\", field: \"BKPOR\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOR\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"BK POL\", field: \"BKPOL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"BK POD\", field: \"BKPOD\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOD\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"BK DEL\", field: \"BKDEL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKDEL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"BK Customer\", field: \"BKCustomer\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKCustomer\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"Trip Start\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripStartForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripStart\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripStart\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Trip End \", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripEndForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripEnd\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripEnd\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: 'Report Date/Time and Location',\r\n children: [\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params,\r\n self.state.reeferFormatter.CustomerSpecificEventList,\r\n self.state.reeferFormatter.EventMasterList, self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.state.reeferFormatter.Ref_SensorAlerts);\r\n }, cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params,\r\n self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList\r\n , self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.state.reeferFormatter.Ref_SensorAlerts);\r\n }, getQuickFilterText: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params,\r\n self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList\r\n , self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.state.reeferFormatter.Ref_SensorAlerts);\r\n }, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Event time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Event notes\", field: \"EventNotes\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventNotes\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Door\", field: \"DoorOpen\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, getQuickFilterText: ReeferFormatters.doorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.DoorFormatterSorting(params); }, cellRenderer: ReeferFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DoorEventDtm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DoorEventDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence\", field: \"GeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"GeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence\", field: \"ServerGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: ReeferFormatters.stringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence ID\", field: \"Geofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Geofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence ID\", field: \"ServerGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: ReeferFormatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: ReeferCellRenderer.GPSCoordsFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.reeferSecondsToTimeConverterFilter(params); }, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Zip\", field: \"Zip\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Zip\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Datalog Events',\r\n children: [\r\n { headerName: \"DL event\", field: \"DLEventMasterID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, cellRenderer: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, getQuickFilterText: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"DL event time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDLEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DLEventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DLEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 1\", field: \"DLParam1\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam1\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 2\", field: \"DLParam2\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam2\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 3\", field: \"DLParam3\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam3\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 4\", field: \"DLParam4\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam4\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 5\", field: \"DLParam5\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam5\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Status and Sensor Reporting',\r\n children: [\r\n { headerName: \"Alarm\", field: \"AlarmsList\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.AlarmDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.AlarmsDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList) }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Opr mode\", field: \"RunningMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.OperatingModeFormatter(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Reefer data\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"UnitEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T set \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SetPoint\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp2\", columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp2\", columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T amb. \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"AmbientTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"AmbientTemp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HumiditySetpoint\"); }, cellRenderer: ReeferFormatters.HumiditySetpointFormatter, getQuickFilterText: ReeferFormatters.HumiditySetpointFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH read\", field: \"Humidity\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.HumiditySettingFormatter(params); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 set\", field: \"CO2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 read\", field: \"CO2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 set\", field: \"O2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 read\", field: \"O2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T evap in \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorInletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorInletSensor\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T evap out \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorOutletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorOutletSensor\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P suc\", field: \"CompositeSuctionPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompositeSuctionPressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T suc\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorSuctionTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorSuctionTemp\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P dis\", field: \"DischargePressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"DischargePressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T dis \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T dis 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp2\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T econ in \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerInTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerInTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"T econ out \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerOutTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerOutTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"P cond\", field: \"CondenserPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataPCondFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T cond wall \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CondenserTemperature\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CondenserTemperature\", columnGroupShow: 'open', width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"M cond\", field: \"CondenserFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CondenserFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Evap fan set\", field: \"EvaporatorFanSpeedControl\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EvaporatorFanSpeedControl\"); }, columnGroupShow: 'open', cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"LS evap\", field: \"LowSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LowSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"HS evap\", field: \"HighSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HighSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Air pump hr\", field: \"AirPumpRunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.AirPumpRunHoursSorting(params); }, cellRenderer: ReeferFormatters.AirPumpRunHoursFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"Heat on\", field: \"HeaterOnTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HeaterOnTime\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open exp\", field: \"EvaporatorExpansionValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenExpFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open suc\", field: \"SuctionModulationValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenSucFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HotGasValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open econ\", field: \"EconomizerValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"EconomizerValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp freq\", field: \"CompressorFrequency\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp curr\", field: \"CompressorCurrent\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorCurrent\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp hr\", field: \"CompressorRunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CompressorRunHoursSorting(params); }, cellRenderer: ReeferFormatters.CompressorRunHoursFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CT state\", field: \"ColdTreatmentState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ColdTreatmentState\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"CT dur (d)\", field: \"CTDuration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTDurationSorting(params); }, cellRenderer: ReeferFormatters.CTDurationFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) ,columnGroupShow: 'open' }, // RCNG-1818\r\n { headerName: \"CT max \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTTempLimit\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTTempLimit\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },//RCNG-1818\r\n { headerName: \"CT final \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTPostSetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTPostSetPoint\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },//RCNG-1818\r\n { headerName: \"CT rem (hr)\", field: \"CTRemainingTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTRemainingTimeSorting(params); }, cellRenderer: ReeferFormatters.CTRemainingTimeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' }, // RCNG-1818\r\n { headerName: \"CT Time\", cellClass: 'myExcelStyle', enableRowGroup: true, sortable: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCTTimeForFilter(params); } }, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CTTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CTTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"USDA 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA1Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA1Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA2Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA2Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 3 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA3Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA3Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 4 cargo \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"Cargo4Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"Cargo4Temp\", width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Vent pos\", field: \"VentPositionSensorCMH\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VentPositionSensorCMH\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CA mode\", field: \"ControlledAtmosphereMode\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ControlledAtmosphereMode(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Bulb mode\", field: \"BulbMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BulbMode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CA hr\", field: \"CARunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CARunHoursSorting(params); }, cellRenderer: ReeferFormatters.CARunHoursFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"CA SW ver\", field: \"CASoftwareRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CASWVerSorting(params); }, cellRenderer: ReeferFormatters.CASWVerFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"3 ph curr\", field: \"ThreePhaseCurrent\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ThreePhaseCurrentSortingFieldName(params, \"ThreePhaseCurrent\"); }, cellRenderer: ReeferFormatters.Current3PhaseFormatter, columnGroupShow: 'open', width: 135, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Tot curr\", field: \"TotalCurrentDraw\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"TotalCurrentDraw\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage1\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage2\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage3\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n {\r\n headerName: \"EverFRESH\", field: \"EverFRESH\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n getQuickFilterText: ReeferFormatters.everFreshQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.everFreshFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.everFreshFormatterSorting(params); },\r\n cellRenderer: ReeferFormatters.everFreshFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"VFD\", field: \"VFD\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VFD\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"OEM PTI state\", field: \"TripWiseStatusDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TripWiseStatusSorting(params, self.state.reeferFormatter.TripWiseStatusList); }, cellRenderer: (params) => { return ReeferCellRenderer.TripWiseStatusFormatter(params, self.state.reeferFormatter.TripWiseStatusList); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"OEM PTI exp (d)\", field: \"TripWiseExpiration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.TripWiseExpirationSorting(params); }, cellRenderer: ReeferFormatters.TripWiseExpirationFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }, // RCNG-169\r\n { headerName: \"OEM PTI type\", field: \"DimiStartAfter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DimiStartAfter\"); }, cellRenderer: ReeferCellRenderer.OEMPTITypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"OEM PTI time left (hr)\", field: \"DimiRemainTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiRemainTermSorting(params); }, cellRenderer: ReeferFormatters.TripWiseExpirationFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"PTI state\", field: \"PTIState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, cellRenderer: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, getQuickFilterText: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI result\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltip: Formatters.toolTipFormatter, valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); }, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PTIType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"PTRDateTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Freq\", field: \"LineFrequency\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.LineFrequencySorting(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont s/n\", field: \"ControllerSerialNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerSerialNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DataLoggerDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont SW version\", field: \"SoftwareRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SoftwareRevision\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont set\", field: \"ControllerTypeSetting\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerTypeSetting\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FreshAirType\"); }, cellRenderer: Formatters.FreshAirTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Defrost int\", field: \"DefrostInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DefrostInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"Tot pwr kWh\", field: \"PowerMeter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.PowerMeterSorting(params); }, cellRenderer: ReeferFormatters.PowerMeterFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: \"Device Status\",\r\n children: [\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: ReeferFormatters.rcdPowerSourceFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"ReeferACPowerLevel\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, cellRenderer: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, cellRenderer: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, cellRenderer: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device temp \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"DeviceTemp\", columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BatteryVoltage\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.BattVoltageSortingFieldName(params, \"BatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.BatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door bat (V)\", field: \"DoorSensorBatteryVoltage\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.DoorBattVoltageSortingFieldName(params, \"DoorSensorBatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.DoorBatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Geofence revision\", field: \"RevisionNum\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RevisionNum\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MCC (country)\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, field: \"CountryName\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.MNCSorting(params); }, cellRenderer: ReeferCellRenderer.MNCTypeFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: ReeferCellRenderer.RSSITypeFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"RFR Comms\", field: \"RCDRfrComErr\", columnGroupShow: 'open', cellRenderer: ReeferFormatters.reeferCommsFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device config\", field: \"DeviceConfig\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', filterParams: { valueGetter: params => { return Formatters.GuestReeferModeFormatterForFilter(params); } }, cellRenderer: Formatters.GuestReeferModeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n //{ headerName: \"Cmd P\", field: \"PendingCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Cmd A\", field: \"ActiveCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Cmd E\", field: \"ErrorCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Receipt time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterModifiedDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"ModifiedDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"ModifiedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Comments\", field: \"CommentExists\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CommentExistsSorting(params); }, cellRenderer: ReeferCellRenderer.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n //},\r\n //{\r\n // headerName: 'Device Sensor',\r\n // children: [\r\n // { headerName: \"Temp Sup. 1 \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorSupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorSupplyTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n // { headerName: \"Temp Rtn. 1 \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorReturnTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }\r\n // ]\r\n }\r\n ];\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (!nextprops.isLoading) {\r\n this.setState({ reeferStatusData: [] });\r\n $('#globalLoader').hide();\r\n this.setState({\r\n reeferStatusData: nextprops.reeferStatus\r\n });\r\n\r\n if (self.state.ToggleSearchParams != null && self.state.ToggleSearchParams != undefined) {\r\n self.filterReeferStatusGrid(self.state.ToggleSearchParams);\r\n }\r\n\r\n if (nextprops.performCargoAction) {\r\n $('#globalLoader').show();\r\n this.props.requestReeferAdvanceSearch(this.props.searchFilters, reeferColumns);\r\n }\r\n } else {\r\n $('#globalLoader').show();\r\n }\r\n }\r\n\r\n bindingReeferStatusGrid(searchState: server.ReeferSearchFilters) {\r\n $('#globalLoader').show();\r\n ReeferToggleButtonsFilter.ClearToggleFilters();\r\n self.setState({ ToggleSearchParams: null, rowData: [] });\r\n //self.state.gridApiParams.showLoadingOverlay();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n }); \r\n\r\n this.props.requestReeferAdvanceSearch(searchState, reeferColumns);\r\n }\r\n\r\n refreshStatusGrid() {\r\n $('#globalLoader').show();\r\n this.GetCCprofileCode();//RCNG-713\r\n //ReeferToggleButtonsFilter.ClearToggleFilters();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n isTripStatus: false,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n }, () => this.props.requestReeferAdvanceSearch(this.props.searchFilters, reeferColumns));\r\n }\r\n static refreshStatusGrid() {\r\n\r\n var temp: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedGeofence: '', SelectedGeofenceInside: '',\r\n SelectedInterval: '', SelectedReefer: '', SelectedAssetStates: '',\r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: '', CustomAttributeFilters: null,\r\n SelectedAssetTypes: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '',\r\n SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n\r\n $('#globalLoader').show();\r\n //ReeferToggleButtonsFilter.ClearToggleFilters(); \r\n self.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n isTripStatus: false,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n }, () => self.props.requestReeferAdvanceSearch(self.props.searchFilters == undefined || self.props.searchFilters == null ?\r\n temp : self.props.searchFilters , reeferColumns));\r\n }\r\n\r\n refreshStatusGridFromTripStatus() {\r\n $('#globalLoader').show();\r\n this.setState({\r\n isTripStatus: true\r\n }, () => this.props.requestReeferAdvanceSearch(this.props.searchFilters, reeferColumns));\r\n }\r\n\r\n setCommandText(Oem: any) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandLabel';\r\n var input = JSON.stringify(Oem);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n this.setState({\r\n fullPreTripCommandText: data[0] != 'disabled' ? data[0] : 'Full',\r\n shortPreTripCommandText: data[1] != 'disabled' ? data[1] : 'Short',\r\n funcPreTripCommandText: data[2] != 'disabled' ? data[2] : 'Function Test'\r\n });\r\n //if (data[0] == 'disabled') {\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('disabled');\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('disabled');\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('enabled');\r\n //}\r\n //if (data[1] == 'disabled') {\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('disabled');\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('enabled');\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('disabled');\r\n //}\r\n\r\n //if (data[2] == 'disabled') {\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('disabled');\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('enabled');\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('disabled');\r\n //}\r\n });\r\n }\r\n\r\n getCommandWindowText(Oem: any[], command: string) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandData';\r\n this.state.CustomerSpecificCommandData.Oem = Oem;\r\n this.state.CustomerSpecificCommandData.commandId = command;\r\n var input = JSON.stringify(this.state.CustomerSpecificCommandData);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"Selected Reefers must have a valid OEM type.\" || data == \"Selected Reefers must have a Same OEM type.\") {\r\n PopupWindow.showErrorMessage(\"Alert\", data);\r\n }\r\n else\r\n this.setState({ pretripCmd: command, modelTitle: data }, () => self.RenderContextMenuPopUp('PreTrip', true));\r\n });\r\n }\r\n static refreshStatusGridFromTrip(tripStatus: string) {\r\n $('#globalLoader').show();\r\n self.refreshStatusGridFromTripStatus(tripStatus)\r\n\r\n }\r\n\r\n static refreshReeferStatusGrid() {\r\n self.refreshStatusGrid();\r\n }\r\n\r\n getCargoCareCommandUnits(alarmMasterId: any, CCCustomerProfileId: any) {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userData.UserId,\r\n \"TripId\": value.TripId,\r\n \"RCDReportingInterval\": value.RCDReportingInterval,\r\n \"SetTemp\": value.SetPoint,\r\n \"CustomerID\": value.CustomerID,\r\n \"CCCustomerProfileId\": CCCustomerProfileId,\r\n \"AlarmMasterId\": alarmMasterId\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userData.UserId,\r\n \"TripId\": value.TripId,\r\n \"RCDReportingInterval\": value.RCDReportingInterval,\r\n \"SetTemp\": value.SetPoint,\r\n \"CustomerID\": value.CustomerID,\r\n \"CCCustomerProfileId\": null,\r\n \"AlarmMasterId\": null\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n assignCargoCare(CargoCareCustomerProfileID: any) {\r\n $('#globalLoader').show();\r\n this.props.requestAssignCargoCare(this.getCargoCareCommandUnits(null, CargoCareCustomerProfileID));\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n\r\n unAssignCaregoCare() {\r\n $('#globalLoader').show();\r\n this.props.requestUnAssignCargoCare(this.getCargoCareCommandUnits(null, null));\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n\r\n clearSetPoint() {\r\n $('#globalLoader').show();\r\n this.props.requestClearSetPoint(this.getForwardCommandUnits());\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n switch (popUpName) {\r\n case 'SendEmail':\r\n return 0 ? true : false} sensorData={reeferAssetSensors} />\r\n case 'Export':\r\n return ;\r\n case 'Ping':\r\n return ;\r\n case 'ChangeTempSetPoint':\r\n return ;\r\n case 'ChangeHumiditySetPoint':\r\n return ;\r\n case 'ChangeO2SetPoint':\r\n return ;\r\n case 'ChangeCO2SetPoint':\r\n return ;\r\n case 'ChangeControlledAtmosphere':\r\n return ;\r\n case 'GetDLTraditional':\r\n return ;\r\n case 'PreTrip':\r\n return ;\r\n case 'StopPTI':\r\n return ;\r\n case 'SchedulePreTrip':\r\n return ;\r\n case 'GetPTI':\r\n return ;\r\n case 'RebootReefer':\r\n return ;\r\n case 'ChangeDatalogInterval':\r\n return ;\r\n case 'ChangeReeferId':\r\n return ;\r\n case 'ChangeReportingInterval':\r\n return ;\r\n case 'QueryReeferInventory':\r\n return ;\r\n case 'UpdateModelConfiguration':\r\n return ;\r\n case 'VerifyModelValidity':\r\n return ;\r\n case 'SyncReeferClock':\r\n return ;\r\n case 'StartDeforst':\r\n return ;\r\n case 'ChangeDeforstInterval':\r\n return ;\r\n case 'AssignPanId':\r\n return ;\r\n case 'GuestReeferConfiguration':\r\n return ;\r\n case 'CreateTrip':\r\n return ;\r\n case 'TripStatus':\r\n return ;\r\n case 'ClearDeviation':\r\n return ;\r\n case 'AssignBooking':\r\n return ;\r\n case 'UnAssignBooking':\r\n return ;\r\n case 'ViewBooking':\r\n return ;\r\n case 'EditBooking':\r\n return ;\r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n case 'ControllerSwap':\r\n return ;\r\n case 'ChangeReeferClockSyncSettings':\r\n return ;\r\n case 'Zigbee':\r\n return ;\r\n case 'AutoConfig':\r\n return ;\r\n case 'AssetConfig':\r\n return ;\r\n case 'MSC':\r\n return ;\r\n case 'ACT':\r\n return ;\r\n case 'GetFreshAirType':\r\n return ;\r\n case 'SetFreshAirType':\r\n return ;\r\n case 'DeviceReset':\r\n return ;\r\n case 'DeviceHardReset':\r\n return ;\r\n case 'GetAssetId':\r\n return ;\r\n case 'GetTWR':\r\n return ;\r\n case 'EnableDoorSensor':\r\n return ;\r\n case 'NewUnAssignBooking':\r\n return ;\r\n case 'EditVoyage':\r\n return ;\r\n case 'DS':\r\n return ;\r\n case 'IntelligentPTIFunction':\r\n return ;\r\n case 'FanSpeed':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var reeferData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.USP_UnitCurrentConditionUI_Model[];\r\n filterSet = reeferData;\r\n var filterParams = JSON.stringify(filterSet);\r\n var checkBoxInfo = this.state.VCCheckBoxInfo;\r\n if (isCommands) {\r\n if (reeferData != undefined && reeferData != null) {\r\n if (popUpName == \"GetDLTraditional\" || popUpName == \"SchedulePreTrip\") {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = false;\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData, checkBoxInfo) });\r\n $('#btnTrigger').click();\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/CheckIsMsgFromVessel', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n var vesselid = data;\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetVesselInformation?customerID=' + custId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n checkBoxInfo.dropDownVCData = result;\r\n if (result.length > 0) {\r\n if (vesselid == \"-1\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n else if (vesselid == \"0\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = false;\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = true;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = false;\r\n checkBoxInfo.selectedVCData = checkBoxInfo.dropDownVCData.find(d => d.VesselId == parseInt(vesselid));\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = false;\r\n }\r\n\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n $('#globalLoader').hide();\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n });\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n }\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n self.setState({ VCCheckBoxInfo: VCInfo });\r\n }\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n\r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n\r\n popUpGetPTIReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ PTReport: result })\r\n this.setState({ ReportReeferId: reeferData[0].ReeferID })\r\n $('#globalLoader').hide();\r\n if (this.state.PTReport == null || this.state.PTReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'Pre-Trip Report', popUpHtmlReport:
});\r\n $('#btnTriggerReport').click();\r\n }\r\n });\r\n }\r\n }\r\n\r\n downloadPTReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([this.state.PTReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'PT_' + this.state.ReportReeferId + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.state.PTReport));\r\n element.setAttribute('download', 'PT_' + this.state.ReportReeferId + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n\r\n printPTReport() {\r\n var divToPrint = document.getElementById(\"printData\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n popUpGetTWReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetTripWISEReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ TWReport: result, ReportReeferId: reeferData[0].ReeferID }, () => { this.bindTWReport(); });\r\n });\r\n }\r\n }\r\n bindTWReport() {\r\n $('#globalLoader').hide();\r\n if (this.state.TWReport == null || this.state.TWReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No TripWise reports have been collected for this reefer. Execute the ‘Get TripWISE Report’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'TripWISE Report', popUpHtmlReport:
});\r\n $('#btnTriggerReportTW').click();\r\n }\r\n }\r\n downloadTWReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([this.state.TWReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'TripWISEReport_' + this.state.ReportReeferId + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.state.TWReport));\r\n element.setAttribute('download', 'TripWISEReport_' + this.state.ReportReeferId + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n printTWReport() {\r\n var divToPrint = document.getElementById(\"printDataTW\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', true);\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n\r\n popUpChangeTempSetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('SET', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Temperature Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeTempSetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpHumiditySetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('HUM', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemDaikinCount > 0 && oemDaikinCount != self.state.selectedItems.length)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n else {\r\n if (carrrierCount <= 0) {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpO2SetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('ORC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n var isSekstantFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isSekstantFound = val.DeviceType.trim() == 'Sekstant' ? isSekstantFound + 1 : isSekstantFound;\r\n });\r\n if (isSekstantFound > 0 && StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpCo2SetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('CO2', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n var isSekstantFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isSekstantFound = val.DeviceType.trim() == 'Sekstant' ? isSekstantFound + 1 : isSekstantFound;\r\n });\r\n if (isSekstantFound > 0 && StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpDLTraditional(e) {\r\n var IsValid = CommonActions.validateCommandSupport('TDD', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDLCommand(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get Traditional Download' });\r\n self.RenderContextMenuPopUp('GetDLTraditional', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpPreTripFull() {\r\n var IsValid = CommonActions.validateCommandSupport('SFP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartFullPTI');\r\n //self.setState({ pretripCmd: 'StartFullPTI', modelTitle: commandWindowText });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpPreTripShort() {\r\n var IsValid = CommonActions.validateCommandSupport('SSP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartShortPTI');\r\n //self.setState({ pretripCmd: 'StartShortPTI', modelTitle: 'Start Short Pre-Trip' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpFunctionTest() {\r\n var IsValid = CommonActions.validateCommandSupport('SCP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (DaikinCount <= 0) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartCAShortPTI');\r\n //self.setState({ pretripCmd: 'StartCAShortPTI', modelTitle: 'Start Function Test' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin OEM.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpControlledAtmosphere() {\r\n var IsValid = CommonActions.validateCommandSupport('SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemStarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemStarCoolCount == self.state.selectedItems.length) {\r\n if (this.props.refApplicationParams != null && this.props.refApplicationParams != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand != null && this.props.refApplicationParams.ValidateCACommand != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand == \"true\") {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else if (oemDaikinCount == self.state.selectedItems.length) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: false }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else if (oemStarCoolCount >= 1 || oemDaikinCount >= 1) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TK and Carrier OEMs.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToChilled() {\r\n var IsValid = CommonActions.validateCommandSupport('SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Star Cool OEM.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToFrozen() {\r\n var IsValid = CommonActions.validateCommandSupport('SFR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ pretripCmd: 'StartFrozenPTI', modelTitle: 'Start Frozen Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCA() {\r\n var IsValid = CommonActions.validateCommandSupport('SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAPTI', modelTitle: 'Start CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToChilledandCA() {\r\n var IsValid = CommonActions.validateCommandSupport('SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for this combination of OEM Model and Software.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCAFullPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFullPTI', modelTitle: 'Start CA Full' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCAFunctionTest() {\r\n var IsValid = CommonActions.validateCommandSupport('SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var StarCoolCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFunctionTest', modelTitle: 'Start CA Function Test' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpStopPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('SPP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Stop Pre-Trip' });\r\n self.RenderContextMenuPopUp('StopPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSchedulePTI() {\r\n self.setState({ modelTitle: 'Scheduled Pre-Trip' });\r\n self.RenderContextMenuPopUp('SchedulePreTrip', true);\r\n }\r\n\r\n popUpGetPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('LPR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n if (self.state.selectedItems.filter(row => row.ReeferOEMTypeCd.trim() == 'D' && (row.UnitTypeCd == null || row.UnitTypeCd == \"UK\")).length == 0) {\r\n self.setState({ modelTitle: 'Get Last Pre-Trip Result' });\r\n self.RenderContextMenuPopUp('GetPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should have valid OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpGetTWR() {\r\n var IsValid = CommonActions.validateCommandSupport('TWR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Get TripWISE Report' });\r\n self.RenderContextMenuPopUp('GetTWR', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpRebootReefer() {\r\n var IsValid = CommonActions.validateCommandSupport('RFC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Reboot Reefer Controller' });\r\n self.RenderContextMenuPopUp('RebootReefer', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeDatalog() {\r\n var IsValid = CommonActions.validateCommandSupport('SDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateAllOEMs(self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReeferId() {\r\n var IsValid = CommonActions.validateCommandSupport('WRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer ID' });\r\n self.RenderContextMenuPopUp('ChangeReeferId', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReporting() {\r\n self.setState({ modelTitle: 'Change Reporting Interval' });\r\n self.RenderContextMenuPopUp('ChangeReportingInterval', true);\r\n }\r\n\r\n popUpQueryReefer() {\r\n var IsValid = CommonActions.validateCommandSupport('QRI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Query Reefer Inventory' });\r\n self.RenderContextMenuPopUp('QueryReeferInventory', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpUpdateModelConfig() {\r\n var IsValid = CommonActions.validateCommandSupport('UMC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Update Model Configuration' });\r\n self.RenderContextMenuPopUp('UpdateModelConfiguration', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpVerifyModelValidity() {\r\n var IsValid = CommonActions.validateCommandSupport('VMV', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var TKReceiverCount = CommonActions.validateOEMType('TR', self.state.selectedItems);\r\n if (TKReceiverCount == self.state.selectedItems.length) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TKReceiver OEM.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Verify Model Validity' });\r\n self.RenderContextMenuPopUp('VerifyModelValidity', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSyncReeferClock() {\r\n var IsValid = CommonActions.validateCommandSupport('SRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Sync Reefer Clock' });\r\n self.RenderContextMenuPopUp('SyncReeferClock', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReeferClockSyncSetting() {\r\n var IsValid = CommonActions.validateCommandSupport('RCS', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer Clock Sync Settings' });\r\n self.RenderContextMenuPopUp('ChangeReeferClockSyncSettings', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpStartDeforst() {\r\n var IsValid = CommonActions.validateCommandSupport('DSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateMultipleOEMs(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Start Defrost' });\r\n self.RenderContextMenuPopUp('StartDeforst', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpGetFreshAirType() {\r\n var IsValid = CommonActions.validateCommandSupport('GFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('GetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSetFreshAirType() {\r\n var IsValid = CommonActions.validateCommandSupport('SFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Set - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('SetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeDeforstInterval() {\r\n var IsValid = CommonActions.validateCommandSupport('CDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateStarCoolCarrierDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n this.setState({ isChangeDeforstInterval: true });\r\n self.setState({ modelTitle: 'Change Defrost Interval' });\r\n self.RenderContextMenuPopUp('ChangeDeforstInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpAssignPanId() {\r\n self.setState({ modelTitle: 'Assign PAN ID' });\r\n self.RenderContextMenuPopUp('AssignPanId', true);\r\n }\r\n\r\n popUpGuestReeferConfigCmd() {\r\n self.setState({ modelTitle: 'Guest Reefer configuration commands' });\r\n self.RenderContextMenuPopUp('GuestReeferConfiguration', true);\r\n }\r\n\r\n popAutoConfiguration() {\r\n if (self.state.selectedItems.length > 0) {\r\n var reeferData = self.state.selectedItems;\r\n var customerIdsCount = 0;\r\n var DeviceTypeCount = 0;\r\n\r\n $.each(reeferData, function (key, value) {\r\n var customerId = reeferData[0].CustomerID;\r\n if (value.CustomerID != customerId) {\r\n customerIdsCount++;\r\n }\r\n });\r\n $.each(reeferData, function (key, value) {\r\n var DeviceType = reeferData[0].DeviceType;\r\n if (value.DeviceType != DeviceType) {\r\n DeviceTypeCount++;\r\n }\r\n });\r\n if (customerIdsCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same customer.\");\r\n }\r\n else if (DeviceTypeCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same device type.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Device Configuration' });\r\n self.RenderContextMenuPopUp('AutoConfig', true);\r\n }\r\n }\r\n }\r\n //RCNG-3 -start\r\n popUpRetire() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a retired asset does not appear in search results, nor does it contribute to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesRetire.bind(this),//RCNG-44\r\n self.onCancelRefreshStatusGrid.bind(this));//RCNG-44\r\n }\r\n popUpReactivate() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a reactivated asset appears in search results and contributes to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesReactivate.bind(this),//RCNG-44\r\n self.onCancelRefreshStatusGrid.bind(this));//RCNG-44\r\n }\r\n onCancelRefreshStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n onYesRetire() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits() //RCNG-45\r\n //var reeferData = self.state.selectedItems;//RCNG-45\r\n //if (reeferData != undefined && reeferData != null) {//RCNG-45\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/RetireAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })//RCNG-45\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/RetireAsset?containerID=' + reeferData[0].ReeferID;//RCNG-45\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });//RCNG-45\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Retired.\");\r\n self.refreshStatusGrid();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n //}\r\n\r\n }\r\n //}//RCNG-45\r\n }\r\n onYesReactivate() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits()//RCNG-45\r\n //var reeferData = self.state.selectedItems;//RCNG-45\r\n //if (reeferData != undefined && reeferData != null) {//RCNG-45\r\n $('#globalLoader').show();\r\n RCNGWindow.ConfirmWindow.close();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReactivateAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })//RCNG-45\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/ReactivateAsset?containerID=' + reeferData[0].ReeferID;//RCNG-45\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });//RCNG-45\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Reactivated.\");\r\n self.refreshStatusGrid();\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n //}\r\n }\r\n }\r\n //RCNG-3 -end\r\n popUpGetAssetId() {\r\n self.setState({ modelTitle: 'Get Asset ID' });\r\n self.RenderContextMenuPopUp('GetAssetId', true);\r\n }\r\n\r\n popAssetConfiguration() {\r\n self.setState({ modelTitle: 'Asset Configuration' });\r\n self.RenderContextMenuPopUp('AssetConfig', true);\r\n }\r\n\r\n popUpEnableDoorSensor() {\r\n self.setState({ modelTitle: 'Enable Door Sensor' });\r\n self.RenderContextMenuPopUp('EnableDoorSensor', true);\r\n }\r\n\r\n popUpMSC() {\r\n var IsValid = CommonActions.validateCommandSupport('MSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Multiple Setpoint Change', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('MSC', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpACT() {\r\n var IsValid = CommonActions.validateCommandSupport('ACT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Automatic Cold Treatment', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('ACT', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n popUpDIMISettings() {\r\n var validationMessage = CommonActions.validateDaikinDimiTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'DIMI Settings', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('DS', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n popUpIntelligentPTIFunction() {\r\n var validationMessage = CommonActions.validateDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Intelligent PTI Function', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('IntelligentPTIFunction', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n popUpFanSpeed() {\r\n var validationMessage = CommonActions.validateDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Fan Speed', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('FanSpeed', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n popUpCreateTrip() {\r\n self.setState({ modelTitle: 'Trip Details' });\r\n self.RenderContextMenuPopUp(\"CreateTrip\", false);\r\n }\r\n\r\n popUpTripStatus() {\r\n self.setState({ modelTitle: 'Trip Status' });\r\n self.RenderContextMenuPopUp(\"TripStatus\", false);\r\n }\r\n\r\n popUpClearDeviation() {\r\n self.setState({ modelTitle: 'Clear Deviation' });\r\n self.RenderContextMenuPopUp('ClearDeviation', false);\r\n }\r\n\r\n popUpViewBooking() {\r\n $('#globalLoader').show();\r\n viewBookingData = [];\r\n self.setState({ modelTitle: 'View Booking' });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + self.state.selectedItems[0].BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n viewBookingData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('ViewBooking', false);\r\n });\r\n }\r\n\r\n popUpAssignBooking() {\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Third-Party Access' }); //Modified for RCNG-945\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignBooking', false);\r\n });\r\n }\r\n\r\n popUpUnAssignBooking() {\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Booking and Access' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignBooking', false);\r\n });\r\n }\r\n popUpEditVoyage() {\r\n self.setState({ modelTitle: 'Edit Voyage' });\r\n self.RenderContextMenuPopUp('EditVoyage', false);\r\n }\r\n popUpNewUnAssignBooking() {\r\n $('#globalLoader').show();\r\n if (JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd == '3P') //Added for RCNG-975\r\n self.setState({ modelTitle: 'Unassign Booking' });\r\n else\r\n self.setState({ modelTitle: 'Unassign Booking and Access' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('NewUnAssignBooking', false);\r\n });\r\n }\r\n\r\n //popUpEditBooking() {\r\n // self.setState({ modelTitle: 'Edit Booking' });\r\n // self.RenderContextMenuPopUp('EditBooking', false);\r\n //}\r\n\r\n //popUpAssignToCustomer() {\r\n // self.setState({ modelTitle: 'Assign Units To Customer' });\r\n // self.RenderContextMenuPopUp('AssignCustomer', false);\r\n //}\r\n\r\n //popUpUnAssignFromCustomer() {\r\n // self.setState({ modelTitle: 'Unassign Units From Customer' });\r\n // self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n //}\r\n\r\n popUpControllerSwap() {\r\n self.setState({ modelTitle: 'Change Controller swap' });\r\n self.RenderContextMenuPopUp('ControllerSwap', false);\r\n }\r\n\r\n popUpZigbeeSettings() {\r\n self.setState({ modelTitle: 'Change Zigbee Config Settings' });\r\n self.RenderContextMenuPopUp('Zigbee', true);\r\n }\r\n\r\n popUpDeviceReset() {\r\n self.setState({ modelTitle: 'Device Reset' });\r\n self.RenderContextMenuPopUp('DeviceReset', true);\r\n }\r\n\r\n popUpDeviceHardReset() {\r\n self.setState({ modelTitle: 'Device Reset To Defaults' });\r\n self.RenderContextMenuPopUp('DeviceHardReset', true);\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n //var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupD/*ataToSave = { SelectedRowGroups: rowGroupItems };*/\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n // self.clearGridRowSelection(params); \r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"BatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"DoorSensorBatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"TripWiseExpiration\" && fieldName.toString().trim() != \"HumiditySetpoint\" && fieldName.toString().trim() != \"LineFrequency\") // RCNG-169\r\n return \"OOR\";\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n //if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"HumiditySetpoint\")\r\n // return \"OOR\";\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"UnitEventDTTM\" || fieldName.toString() == \"PTRDateTime\" || fieldName.toString() == \"DataLoggerDtm\" || fieldName.toString() == \"ModifiedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"RunState\":\r\n return ReeferCellRenderer.RunStateFormatterGrouping(fieldValue);\r\n case \"AssetState\":\r\n return ReeferCellRenderer.AssetStateFormatterGrouping(fieldValue);//RCNG-56\r\n case \"MASeverityLevel\":\r\n return ReeferCellRenderer.StatusIndicatorALMFormatterGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return ReeferCellRenderer.PowerStateFormatterGrouping(fieldValue);\r\n case \"CCSeverityLevel\":\r\n return ReeferCellRenderer.CargoCareFormatterGrouping(fieldValue);\r\n case \"VesselCd\":\r\n return fieldValue == \"-NA-\" ? \"No VSL\" : fieldValue;\r\n case \"TripStatusCdAndDFlag\":\r\n return ReeferCellRenderer.TripStatusFormatterGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return ReeferCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExists\":\r\n return ReeferCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"PTResult\":\r\n return ReeferCellRenderer.PTResultGrouping(fieldValue);\r\n /* RCNG 108 start*/\r\n case \"AlarmsList\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return ReeferCellRenderer.AlarmDescriptionGroupingFormatter(fieldValue, DeviceType, self.state.reeferFormatter.AlarmMasterList);\r\n }\r\n /* RCNG 108 end*/\r\n //case \"Humidity\":\r\n // return Formatters.HumidityGrouping(params);\r\n //case \"CondenserPressure\":\r\n // return Formatters.sensorDataPCondGrouping(params);\r\n //case \"EvaporatorExpansionValveOpening\":\r\n // return Formatters.sensorDataOpenExpGrouping(params);\r\n //case \"SuctionModulationValveOpening\":\r\n // return Formatters.sensorDataOpenSucGrouping(params);\r\n //case \"ControlledAtmosphereMode\":\r\n // return Formatters.ControlledAtmosphereModeGrouping(params);\r\n case \"TripWiseExpiration\": // RCNG-169\r\n return Formatters.TripWiseExpirationGrouping(fieldValue);\r\n case \"DimiRemainTerm\":\r\n return Formatters.DimiRemainTermGrouping(fieldValue);\r\n case \"CTDuration\": // RCNG-1818\r\n return Formatters.CTDurationGrouping(params);\r\n case \"CTRemainingTime\": // RCNG-1818\r\n return Formatters.CTRemainingTimeGrouping(params);\r\n //case \"RunningMode\":\r\n // return Formatters.RunningModeGrouping(fieldValue);\r\n case \"Cargo4Temp\":\r\n case \"USDA3Temp\":\r\n case \"USDA2Temp\":\r\n case \"USDA1Temp\":\r\n case \"SetPoint\":\r\n case \"SupplyTemp1\":\r\n case \"SupplyTemp2\":\r\n case \"ReturnTemp1\":\r\n case \"AmbientTemp\":\r\n case \"ReturnTemp2\":\r\n case \"EvaporatorTemp\":\r\n case \"CompressorSuctionTemp\":\r\n case \"CompressorDischargeTemp\":\r\n case \"EvaporatorInletSensor\": \r\n case \"EvaporatorOutletSensor\":\r\n case \"CompressorDischargeTemp2\":\r\n case \"EconomizerInTemp\": \r\n case \"EconomizerOutTemp\":\r\n case \"CondenserTemperature\":\r\n case \"DeviceTemp\":\r\n case \"SensorReturnTemp1\":\r\n case \"SensorSupplyTemp1\":\r\n case \"CTTempLimit\"://RCNG-1818\r\n case \"CTPostSetPoint\"://RCNG-1818\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.TemperatureFormatterGrouping(fieldValue, fieldName, params, DeviceType);\r\n }\r\n\r\n case \"TemperatureUnit\":\r\n return Formatters.BookingTemperatureFormatterGrouping(fieldValue, fieldName, params);\r\n case \"EventDTTM\":\r\n case \"UnitEventDTTM\":\r\n case \"PTRDateTime\":\r\n case \"DataLoggerDtm\":\r\n case \"ModifiedDTTM\":\r\n case 'DLEventDTTM':\r\n case \"DoorEventDtm\":\r\n case \"TripStart\":\r\n case \"TripEnd\":\r\n case \"CTTime\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"HumiditySetpoint\":\r\n {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n return Formatters.HumiditySetpointGrouping(fieldValue, HumiditySetpointStatus);\r\n }\r\n case \"TripWiseStatusDescription\":\r\n {\r\n var ReeferOEMTypeCd; var DimiResultActuator; var DimiResultAlarm; var DimiResultOOR;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR);\r\n }\r\n case \"DoorOpen\":\r\n return ReeferFormatters.DoorFormatterGrouping(fieldValue);//RCNG-1106\r\n case \"EverFRESH\":\r\n return Formatters.EverFreshFormatterGrouping(fieldValue);\r\n case 'DimiStartAfter':\r\n return Formatters.OEMPTITypeFormatter(fieldValue);\r\n case 'ReeferBatteryPct':\r\n return ReeferCellRenderer.ReeferDoorBattPctFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n //GridToolBarExcel.GetColumns(params);\r\n /*var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.applyColumnState(preferenceData.colState);\r\n }\r\n \r\n }\r\n });\r\n */\r\n //this.setPrefenceSettingsColumnsWithPreference(params);\r\n\r\n self.rebindGridPreferenceColumns(params)\r\n }\r\n\r\n rebindGridPreferenceColumns(params) {\r\n //var gridPreferencesData: any = self.state.DashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 4);\r\n\r\n //var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //setTimeout(() => {\r\n // GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferGrid\");\r\n //}, 3000);\r\n\r\n //Addded for Export to excel and send mail for Selected Columns\r\n this.GetDefaultGridPreferenceColumns();\r\n }\r\n\r\n setPrefenceSettingsColumnsWithPreference(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n GridToolBarExcel.GetColumns(params);\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n }\r\n setPrefenceSettingsColumns() {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n //GridToolBarExcel.GetColumns(params);\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n }\r\n\r\n filterReeferStatusGrid(searchParam: any) {\r\n this.setState({ ToggleSearchParams: searchParam });\r\n var reeferData = [];\r\n var reeferSearchData = this.props.reeferStatus;\r\n if (!searchParam.AllReefer && !searchParam.Running && !searchParam.MissedRunning && !searchParam.Stopped && !searchParam.MissedStopped && !searchParam.AllMicroAlaram && !searchParam.MASevere && !searchParam.MAMinor && !searchParam.AllCargoCare && !searchParam.CCSevere && !searchParam.CCMinor && !searchParam.CCInformational) {\r\n reeferData.push(...reeferSearchData);\r\n }\r\n if (searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData);\r\n }\r\n if (searchParam.Running && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"I\"));\r\n }\r\n if (searchParam.MissedRunning && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"S\"));\r\n }\r\n if (searchParam.Stopped && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"X\"));\r\n }\r\n if (searchParam.MissedStopped && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"O\"));\r\n }\r\n if (searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && (x.MASeverityLevel == \"1\" || x.MASeverityLevel == \"2\")));\r\n }\r\n if (searchParam.MASevere && !searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != \"\" && x.MASeverityLevel == \"1\"));\r\n }\r\n if (searchParam.MAMinor && !searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != \"\" && x.MASeverityLevel == \"2\"));\r\n }\r\n if (searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && x.CCSeverityLevel != \"\"));\r\n }\r\n if (searchParam.CCSevere && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"1\")));\r\n }\r\n if (searchParam.CCMinor && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"2\")));\r\n }\r\n if (searchParam.CCInformational && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"3\")));\r\n }\r\n\r\n let reeferFilterData = uniq(reeferData);\r\n this.setState({\r\n reeferStatusData: reeferFilterData\r\n });\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.UnitEventDTTM)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function (item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function () {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"ReeferGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n\r\n onColumnResized = (params: any) => {\r\n //console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n \r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNumConfirm.bind(this, dashboardPreferenceId), self.closeRevisionConfirmation.bind(this));\r\n }\r\n \r\n refreshRevisionNumConfirm(dashboardPreferenceId: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n $('#globalLoader').hide(); \r\n });\r\n }\r\n\r\n refreshRevisionNum(dashboardPreferenceId: any) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n });\r\n }\r\n closeRevisionConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'OneDecimal',\r\n numberFormat: {\r\n format: '0.0',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'TwoDecimal',\r\n numberFormat: {\r\n format: '0.00',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n Reefer Status\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.modelTitle}
\r\n \r\n
\r\n
\r\n {this.state.popUpHtml}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.modelTitle}
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.popUpHtmlReport}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.popUpHtmlReport}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n ;\r\n }\r\n}\r\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","\r\n/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport 'ag-grid-enterprise';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { GensetHistoryGrid } from './GensetHistoryGrid';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { GensetCellRender } from '../../actions/GensetCellRender';\r\nimport GensetFormatters from '../../actions/GensetFormatter';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport $ from 'jquery';\r\nimport uniq from 'lodash/uniq';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridGensetStatusToolBar } from '../sharedcomponents/GridGensetStatusToolBar';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { GensetToggleButtonsFilter } from '../childcomponents/GensetToggleButtonsFilter';\r\nimport { GensetPingControl } from './../sharedcomponents/ForwardCommands/GensetCommands/GensetPingControl';\r\nimport UserRights from '../../actions/UserRights';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport forEach from 'lodash/forEach';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\ninterface GensetGridState {\r\n loading: boolean;\r\n Filters: server.ReeferSearchFilters;\r\n rowData: any[];\r\n columnDefs: any[];\r\n selectedItems: any[];\r\n overlayLoadingTemplate: any;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string; \r\n reeferFormatter: server.ReeferFormatter[];\r\n pageSize: any;\r\n gridApiParams: any;\r\n tempFilters: server.ReeferSearchFilters;\r\n exportFields: ExportFields; \r\n CustomAttributes: server.CustomAttributes[];\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar currentMousePos = { x: -1, y: -1 };\r\nvar self;\r\nvar selectedRowData;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customerTypeCd;\r\nvar functionId;\r\nvar customerAccessData: any[];\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar commandIssued: boolean = false;\r\nvar gensetAssetSensors: any[];\r\nvar selectedRowIndex: number;\r\nvar IsTriggered: boolean;\r\n\r\nexport class GensetStatusGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n customerAccessData = [];\r\n selectedRowIndex = -1;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n //customerTypeCd = props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n // new FilterDto();\r\n var overlayTemplate = 'Loading...';\r\n var exportData = new ExportFields();\r\n functionId = 46; // functionId for GensetStatus Grid \r\n this.state = {\r\n loading: true, \r\n Filters: this.props.statusFilter, \r\n rowData: this.props.propsGensetData, \r\n columnDefs: [], \r\n selectedItems: [], \r\n overlayLoadingTemplate: overlayTemplate, \r\n modelTitle: '', \r\n popUpHtml: '', \r\n isChangeDeforstInterval: false, \r\n pretripCmd: null, \r\n reeferFormatter: [], //this.props.propsReeferFormatterData, \r\n tempFilters: null, \r\n pageSize: 25, \r\n gridApiParams: [], \r\n exportFields: exportData, \r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n autoGroupColumnDef: { minWidth: 200 },\r\n CustomAttributes: []\r\n };\r\n \r\n self = this;\r\n } \r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n const propsGensetData: any = this.props.propsGensetData;\r\n if (propsGensetData !== nextprops.propsGensetData)\r\n this.setState({ rowData: [] });\r\n\r\n /*WI-24005 - as custom attributes are not for genset\r\n if (JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable) {\r\n var newColumns = self.createColumnDefs();\r\n var generatedColumns = [];\r\n if (nextprops.CustomAttributes != null && nextprops.CustomAttributes != undefined && nextprops.CustomAttributes.length > 0) {\r\n $.each(nextprops.CustomAttributes, function (i, val) {\r\n var customAttributeObject = { headerName: '', field: '', cellRenderer: Formatters.stringTypeFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n var attributeName = val.AttributeName;\r\n var columnHeaderName = attributeName.replace(' ', '');\r\n customAttributeObject.headerName = attributeName;\r\n customAttributeObject.field = columnHeaderName;\r\n generatedColumns.push(customAttributeObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Asset Attributes\",\r\n children: generatedColumns\r\n };\r\n\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns, CustomAttributes: nextprops.CustomAttributes });\r\n } \r\n }\r\n else {*/\r\n //var columnDefinitions = self.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefinitions });\r\n //this.renderCustomerDeviceTypeSensorColumns(); // Commented for fixing WI 26094\r\n //}\r\n\r\n if (nextprops.propsGensetData != null && nextprops.propsGensetData != undefined && nextprops.propsGensetData.length > 0 && nextprops.statusFilter.StatusFilters != undefined\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.DryInGeofence && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.DryOutGeofence\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.AllReefer && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.Running\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.Stopped && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.MissedRunning\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.MissedStopped && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.AllMicroAlaram\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.MASevere && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.MAMinor\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.AllCargoCare && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.CCSevere\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.CCMinor && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.CCInformational\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.ChassisPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.ChassisPwrOutGeofence\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.ChassisNotPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != ReeferAndDryAndChassisStatusEnum.ChassisNotPwrOutGeofence) {\r\n this.setState({ rowData: nextprops.propsGensetData });\r\n\r\n if (self.state.ToggleSearchParams != null && self.state.ToggleSearchParams != undefined) {\r\n self.filterGensetStatusGrid(self.state.ToggleSearchParams);\r\n }\r\n } \r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns() {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n gensetAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'G');\r\n if (gensetAssetSensors != null && gensetAssetSensors != undefined && gensetAssetSensors.length > 0) {\r\n $.each(gensetAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', enableRowGroup: true, headerClass: val.OORText, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, enableRowGroup: true, headerClass: val.OORText, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n //var columnDefs = this.createColumnDefs();\r\n columnDefs2 = this.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefs });\r\n setTimeout(() => {\r\n this.renderCustomerDeviceTypeSensorColumns();\r\n }, 1000);\r\n\r\n //var functionID = 1;\r\n // var url = Config.ApiBaseUrl + '/api/User/GetDefaultSearchParams?FunctionId=' + functionID;\r\n // var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => { \r\n // if (data != null && data != undefined) {\r\n // if (!data.DefaultSearch)\r\n // this.props.requestGensetAdvanceSearch(this.state.Filters);\r\n // }\r\n // else\r\n // this.props.requestGensetAdvanceSearch(this.state.Filters);\r\n // }); \r\n self.setState({ tempFilters: this.state.Filters });\r\n $('.ag-column-hover').contextmenu(function (e) {\r\n var relX = e.pageX - $('.ag-column-hover').offset().left;\r\n var relY = (e.pageY - $('.ag-column-hover').offset().top);\r\n $(\".gensetcontext-menu\").toggle(100).css({\r\n top: relY,\r\n left: relX\r\n });\r\n $(\"#gensetcontextmenu\").hide();\r\n $(\".gensetcontext-menu\").hide();\r\n e.preventDefault();\r\n });\r\n \r\n \r\n \r\n \r\n $(document).mousemove(function (event) {\r\n currentMousePos.x = event.pageX;\r\n currentMousePos.y = event.pageY;\r\n event.preventDefault();\r\n });\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n }\r\n\r\n onRefreshData = () => {\r\n $('#globalLoader').show();\r\n this.setState({\r\n rowData: this.state.rowData\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n \r\n $('#globalLoader').hide();\r\n };\r\n\r\n columnRowGroupChanged(params: any) {\r\n self.clearGridRowSelection(params);\r\n }\r\n\r\n /* WI 26971 implementation start */\r\n static validateGensetStatusHistoryMismatch(statusEventDttm: any, historyEventDttm: any) {\r\n IsTriggered = false;\r\n if (statusEventDttm != historyEventDttm)\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"New events are available for the Genset Status grid. Refresh now?\", self.onRefreshGensetStatusGrid.bind(this), self.onCancelRefreshGensetStatusGrid.bind(this));\r\n }\r\n\r\n onCancelRefreshGensetStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n onRefreshGensetStatusGrid() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n self.refreshGensetStatusGridForNewEvents();\r\n }\r\n }\r\n\r\n refreshGensetStatusGridForNewEvents() {\r\n selectedRowIndex = -1;\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n }, () => this.GensetSearchFilter(self.props.statusFilter, true, false));\r\n\r\n }\r\n /* WI 26971 implementation end */\r\n \r\n onRowDataChanged(params: any): void {\r\n var gensetIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n //var selItems = self.state.PrevSelectedItems;\r\n gensetIdSelected = self.state.PrevSelectedItems[0].GensetCurrentConditionId;\r\n // gensetIdSelected = \"TEST0000540\";\r\n }\r\n commandIssued = false;\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n var gridData = self.state.rowData;\r\n if (gridData != null && gridData != undefined && gridData.length > 0) {\r\n TotalCount = gridData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && gensetIdSelected !== \"\") {\r\n let count = 0;\r\n if (gensetIdSelected) {\r\n commandIssued = true;\r\n params.api.forEachLeafNode((node) => {\r\n count = count + 1;\r\n if (node.data.GensetCurrentConditionId === gensetIdSelected) {\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n //console.log('pageNo' + pageNo);\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n static ClearGensetStatusGridData() { \r\n if (self != undefined) {\r\n //ReeferCallout.ResetMapPushpins();\r\n selectedRowIndex = -1;\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) { \r\n if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\")\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n }\r\n\r\n\r\n gensetContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.gensetmapAction(this.state.selectedItems);\r\n break;\r\n case \"History\": this.gensethistoryAction(this.state.selectedItems);\r\n break;\r\n case \"CommandStatus\": this.gensetcommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.gensetdetailsAction(this.state.selectedItems, 'Genset','CurrentDetails');\r\n break;\r\n case \"Copy\": this.gensetdetailsCopyAction();\r\n break;\r\n\r\n }\r\n }\r\n\r\n gensetdetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n gensetdetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n } \r\n\t\r\n\tcopyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n var isHistoryCall = false;\r\n\r\n if (selectedRowIndex != event.rowIndex) {\r\n selectedRowIndex = event.rowIndex;\r\n isHistoryCall = true;\r\n }\r\n\r\n if (event.data != null && event.data != undefined) {\r\n self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === \"0\")\r\n this.gensetdetailsAction(this.state.selectedItems, 'Genset','Comments');\r\n else if (isHistoryCall) \r\n GensetHistoryGrid.ApplyGensetHistorySearch(event.data, false, self.props.gensetHistoryEnabled);\r\n }\r\n }\r\n\r\n gensetdetailsAction(data: any, dataSource: any, isOpenVia:any) {\r\n var gensetdetails = data;\r\n this.props.gensetdetailsAction(gensetdetails, dataSource, isOpenVia);\r\n }\r\n\r\n gensethistoryAction(data: any) {\r\n var gensetdetails = data;\r\n this.props.gensethistoryAction(gensetdetails);\r\n }\r\n\r\n gensetmapAction(data: any) {\r\n var gensetdetails = data;\r\n this.props.gensetMapAction(gensetdetails);\r\n }\r\n\r\n gensetcommandstatusAction(data: any) {\r\n var gensetdetails = data;\r\n this.props.gensetcommandstatusAction(gensetdetails);\r\n }\r\n\r\n\r\n static SelectCurrentGenset(currentGenset: any) {\r\n self.state.gridApiParams.deselectAll();\r\n GensetHistoryGrid.ClearHistoryGridData();\r\n var countRecordPerPage = 0;\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode(function (node) {\r\n countRecordPerPage = countRecordPerPage + 1;\r\n if (node.data.AssetNumber === currentGenset.AssetNumber) {\r\n var currentPage = Math.trunc(countRecordPerPage / self.state.gridApiParams.paginationProxy.pageSize);\r\n if (currentPage > 1) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.paginationGoToPage(currentPage);\r\n }\r\n\r\n node.setSelected(true);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureIndexVisible(node.rowIndex);\r\n self.setState({ selectedItems: node.data });\r\n self.props.getLastSelectedRow(node.data);\r\n //$('#globalLoader').show();\r\n GensetHistoryGrid.ApplyGensetHistorySearch(node.data, true, self.props.gensetHistoryEnabled);\r\n }\r\n });\r\n }\r\n\r\n static SelectCurrentNode(currentGensetId: string) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode(function (node) {\r\n if (node.data.AssetNumber === currentGensetId) {\r\n node.setSelected(true);\r\n }\r\n });\r\n }\r\n \r\n static ApplyGensetSearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean) { \r\n self.GensetSearchFilter(filters, eventsRefresh, true);\r\n }\r\n\r\n GensetSearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean) { \r\n if (self != undefined) {\r\n $('#globalLoader').show();\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.showLoadingOverlay !== \"undefined\") {\r\n //self.state.gridApiParams.showLoadingOverlay();\r\n //self.state.gridApiParams.paginationGoToFirstPage();\r\n //self.state.gridApiParams.deselectAll();\r\n }\r\n }\r\n \r\n if (filters != null && filters != undefined) {\r\n var customAttributesInfo = {};\r\n var filterset: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null, \r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedVoyage: null, SelectedCall: null, SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n \r\n filterset.SelectedCountry = (filters.SelectedCountry == \"\" || filters.SelectedCountry == undefined) ? null : filters.SelectedCountry;\r\n filterset.SelectedGeofence = (filters.SelectedGeofence == \"\" || filters.SelectedGeofence == undefined) ? null : filters.SelectedGeofence;\r\n filterset.SelectedGeofenceInside = (filters.SelectedGeofenceInside == \"\" || filters.SelectedGeofenceInside == undefined) ? null : filters.SelectedGeofenceInside;\r\n filterset.SelectedInterval = (filters.SelectedInterval == \"\" || filters.SelectedInterval == undefined) ? null : filters.SelectedInterval;\r\n filterset.SelectedAssetTypes = (filters.SelectedAssetTypes == \"\" || filters.SelectedAssetTypes == undefined) ? null : filters.SelectedAssetTypes;\r\n filterset.SelectedAssetStates = (filters.SelectedAssetStates == \"\" || filters.SelectedAssetStates == undefined) ? null : filters.SelectedAssetStates;\r\n filterset.SelectedOem = (filters.SelectedOem == \"\" || filters.SelectedOem == undefined) ? null : filters.SelectedOem;\r\n filterset.SelectedReefer = (filters.SelectedReefer == \"\" || filters.SelectedReefer == undefined) ? null : filters.SelectedReefer;\r\n filterset.AllReefers = (filters.AllReefers == \"\" || filters.AllReefers == undefined) ? null : filters.AllReefers;\r\n filterset.SelectedVesselCode = (filters.SelectedVesselCode == \"\" || filters.SelectedVesselCode == undefined) ? null : filters.SelectedVesselCode;\r\n filterset.SelectedVesselCD = (filters.SelectedVesselCD == \"\" || filters.SelectedVesselCD == undefined) ? null : filters.SelectedVesselCD;//WI-26881\r\n filterset.SelectedVoyage = (filters.SelectedVoyage == \"\" || filters.SelectedVoyage == undefined) ? null : filters.SelectedVoyage//WI-26881\r\n filterset.SelectedCall = (filters.SelectedCall == \"\" || filters.SelectedCall == undefined) ? null : filters.SelectedCall;//WI-26881\r\n filterset.StatusFilters = filters.StatusFilters;\r\n filterset.CustomAttributeFilters = filters.CustomAttributeFilters;\r\n self.setState({\r\n tempFilters: filterset\r\n });\r\n \r\n var resultSet = self.props.requestGensetAdvanceSearch(filterset, eventsRefresh, newSearch,true);\r\n\r\n }\r\n }\r\n }\r\n \r\n onGridReady(params: any) {\r\n //this.gridApi.sizeColumnsToFit();\r\n self.setState({ gridApiParams: params.api });\r\n // params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 12);\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"GensetGrid\");\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"GensetStatusGrid\");\r\n }, 3000); \r\n }\r\n\r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 12);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"GensetStatusGrid\");\r\n }, 500); \r\n }\r\n\r\n static ClearSelection() {\r\n $('#globalLoader').show();\r\n selectedRowIndex = -1;\r\n //GensetHistoryGrid.ClearHistoryGridData();\r\n //this.props.clearGridHeaderExtension();\r\n if (self != undefined) {\r\n self.state.gridApiParams.deselectAll();\r\n }\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'genset', self.state.reeferFormatter);\r\n $('#globalLoader').hide();\r\n }\r\n\r\n onGridPaginationChanged(params: any) {\r\n if (params.newPage) {\r\n self.props.clearGridHeaderExtension();\r\n if (!commandIssued)\r\n params.api.deselectAll();\r\n commandIssued = false;\r\n GensetHistoryGrid.ClearHistoryGridData();\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'genset');\r\n }\r\n\r\n //if (params.api.getDisplayedRowCount() == 1) {\r\n // var rowindex = 0;\r\n // var rowNode = params.api.getRowNode(rowindex);\r\n // // do something with the row, eg select it\r\n // if (rowNode != undefined && rowNode != null) {\r\n // rowNode.setSelected(true);\r\n // GensetHistoryGrid.ApplyGensetHistorySearch(rowNode.data, false);\r\n // }\r\n //}\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.DeviceDataTime)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n onSort(params: any) {\r\n params.api.clearFocusedCell();\r\n this.clearGridRowSelection(params);\r\n }\r\n onGridSelectionChanged(params: any) {\r\n $(\"#gensetcontextmenu\").show();\r\n var selectedGensetData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n //var selected = params.api.getFocusedCell();\r\n //var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n //ReeferCallout.ResetMapPushpins(); // Clear existing pushpins\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedGensetData.push(selectedRow);\r\n //ReeferHistoryGrid.ApplyReeferHistorySearch(selectedRow);\r\n });\r\n //var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedGensetData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n self.props.getSelectedRow(selectedRows);\r\n //self.props.getLastSelectedRow(selectedRow.data);\r\n //$('#globalLoader').show();\r\n //ReeferHistoryGrid.ApplyReeferHistorySearch(selectedRow.data);\r\n //$(\"#gensetcontextmenu\").show();\r\n //if (selectedGensetData.length > 1) {\r\n // $('#liDetailsRequiresRight').removeClass('enabled');\r\n // $('#liDetailsRequiresRight').addClass('disabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n //}\r\n //else {\r\n // $('#liDetailsRequiresRight').removeClass('disabled');\r\n // $('#liDetailsRequiresRight').addClass('enabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n //}\r\n //var forwardCommandParam = JSON.stringify(selectedGensetData);\r\n //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetAssetAssigned3rdParty';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data == \"assigned\") {\r\n // if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('disabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('disabled');\r\n\r\n // }\r\n // else if (data == \"unassigned\") {\r\n // if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('enabled');\r\n // }\r\n // else {\r\n // if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('disabled');\r\n // }\r\n // });\r\n }\r\n }\r\n\r\n HideAllContextMenus() {\r\n $(\"#gensetcontextmenu\").hide();\r\n $(\".gensetcontext-menu\").hide();\r\n $(\"#drycontextmenu\").hide();\r\n $(\".drycontext-menu\").hide();\r\n $(\"#chassiscontextmenu\").hide();\r\n $(\".chassiscontext-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n $(\".context-menu\").hide();\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n //1477-start\r\n popUpRetire() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a retired asset does not appear in search results, nor does it contribute to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesRetire.bind(this),\r\n self.onCancelGensetStatusGrid.bind(this));\r\n }\r\n popUpReactivate() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a reactivated asset appears in search results and contributes to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesReactivate.bind(this),\r\n self.onCancelGensetStatusGrid.bind(this));\r\n }\r\n\r\n onYesRetire() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits()\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/RetireAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Retired.\");\r\n self.refreshStatusGrid();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n }\r\n }\r\n onYesReactivate() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits();\r\n $('#globalLoader').show();\r\n RCNGWindow.ConfirmWindow.close();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/ReactivateAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Reactivated.\");\r\n self.refreshStatusGrid();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n }\r\n }\r\n onCancelGensetStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"AssetMasterID\": value.AssetMasterID,\r\n \"AssetNumber\": value.AssetNumber,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n //\"DCCurrentConditionID\": value.DCCurrentConditionID,\r\n //\"DCConditionID\": value.DCConditionID,\r\n \"RCDID\": value.RCDID\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n return commandUnits;\r\n }\r\n //1477-end\r\n getGensetContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"AssetNumber\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var assetNumber = selectedrowNode.data.AssetNumber;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.AssetNumber === assetNumber)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.AssetNumber == selectedrowNode.data.AssetNumber) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.gensetContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('152'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.gensetContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('156'),\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.gensetContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('153'),\r\n },\r\n {\r\n name: 'Command History',\r\n action: () => {\r\n this.gensetContextMenuClick(\"CommandStatus\");\r\n }, \r\n cssClasses: UserRights.checkMenuItemVisibilityGT1030(params, 'CommandStatus', '157'),\r\n //UserRights.checkMenuItemVisibility('157'),\r\n },\r\n {\r\n name: 'Commands',\r\n cssClasses: UserRights.checkMenuItemVisibilityGT1030(params, 'Commands', '166'),\r\n //cssClasses: UserRights.checkMenuItemVisibility('166'),\r\n subMenu: [\r\n {\r\n name: 'Reporting',\r\n cssClasses: UserRights.checkMenuItemVisibility('166'),\r\n subMenu: [\r\n {\r\n name: 'Ping / Report',\r\n action: () => {\r\n this.popUpPing();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('166'),\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Third Party Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('168,169'),\r\n\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'ThirdPartyAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignToCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('168'),\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'Assign'),\r\n },\r\n {\r\n name: 'Unassign From Customer',\r\n action: () => {\r\n this.popUpUnAssignFromCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('169'),\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'UnAssign'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Inventory',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('255,256'),//RCNG-1176\r\n disabled: UserRights.checkMenuItemDisabled(params, 'RetireOrReactivate'),\r\n subMenu: [\r\n {\r\n name: 'Retire',\r\n action: () => {\r\n this.popUpRetire();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('255', params, \"Retire\"),\r\n },\r\n {\r\n name: 'Reactivate',\r\n action: () => {\r\n this.popUpReactivate();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('256', params, \"Reactivate\"),\r\n },\r\n ],\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n \r\n getGensetContextMenuItemsOld(params: any) {\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n //var selectedrowNode = params.api.getRowNode(setRowIndex);\r\n //var tempArray = [];// if sort is clicked save in temp array\r\n //params.api.forEachLeafNode(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n //});\r\n\r\n //var resortitem = tempArray[setRowIndex];\r\n var sortflage = false;\r\n //var reeferid = resortitem.data.ReeferID;\r\n var gensetCurrentConditionId = selectedrowNode.data.GensetCurrentConditionId;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.GensetCurrentConditionId === gensetCurrentConditionId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.GensetCurrentConditionId == selectedrowNode.data.GensetCurrentConditionId) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var gensetCurrentConditionId = resortitem.data.GensetCurrentConditionId;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.GensetCurrentConditionId === gensetCurrentConditionId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) { \r\n if (item.GensetCurrentConditionId == selectedrowNode.data.GensetCurrentConditionId) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n // var rowNode = params.api.getRowNode(selected.rowIndex);\r\n //params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n \r\n $(document).contextmenu(function (e) {\r\n self.HideAllContextMenus(); // landing page have multiple context menus close all\r\n var divmenuwidth = 390;\r\n var offset = $(\"#Grid-AlignGenset .ag-column-hover\").offset();\r\n if ((typeof (offset) != 'undefined') && offset != null) {\r\n if (offset.left > 400) {\r\n divmenuwidth = 390;\r\n } else if (offset.left > 890) {\r\n divmenuwidth = 690;\r\n } else {\r\n divmenuwidth = 40;\r\n }\r\n }\r\n /// var relativeX = (e.pageX - offset.left);\r\n if ((typeof (offset) != 'undefined') && offset != null) {\r\n var relativeY = (e.pageY - offset.top + 50);\r\n }\r\n var relativeX = e.pageX - divmenuwidth;\r\n\r\n if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n relativeX = relativeX - (divmenuwidth + 5);\r\n }\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n if (height < relativeY) {\r\n relativeY = (relativeY - halfheight) + 20;\r\n }\r\n $(\".gensetcontext-menu\").css({\r\n top: relativeY + \"px\",\r\n left: relativeX + \"px\",\r\n position: \"absolute\"\r\n }); \r\n\r\n }); \r\n\t\t\r\n\t\t\r\n $(\"#Grid-AlignGenset .ag-cell\").unbind(\"contextmenu\");\r\n $(\"#Grid-AlignGenset .ag-cell\").bind('contextmenu', function (e) {\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n //var selectedrowNode = params.api.getRowNode(setRowIndex);\r\n //var tempArray = [];// if sort is clicked save in temp array\r\n //params.api.forEachLeafNode(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n //});\r\n\r\n //var resortitem = tempArray[setRowIndex];\r\n var sortflage = false;\r\n //var reeferid = resortitem.data.ReeferID;\r\n var gensetCurrentConditionId = selectedrowNode.data.GensetCurrentConditionId;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.GensetCurrentConditionId === gensetCurrentConditionId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.GensetCurrentConditionId == selectedrowNode.data.GensetCurrentConditionId) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var gensetCurrentConditionId = resortitem.data.GensetCurrentConditionId;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.GensetCurrentConditionId === gensetCurrentConditionId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.GensetCurrentConditionId == selectedrowNode.data.GensetCurrentConditionId) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n var reSized = self.props.isResizeClicked;\r\n if (JSON.stringify(reSized) === 'false') {\r\n var divmenuwidth = 280;\r\n } else {\r\n var divmenuwidth = 20;\r\n } \r\n var offset = $(\"#Grid-AlignGenset .ag-column-hover\").offset();\r\n var relativeY = (e.pageY - offset.top);\r\n var relativeX = e.pageX - divmenuwidth;\r\n\r\n if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n relativeX = relativeX - (divmenuwidth + 5);\r\n }\r\n var height = $(window).height();\r\n var halfheight = ($(window).height()) / 2;\r\n //if ((window as any).clipboardData) {\r\n // if (height < relativeY + 560) {\r\n // //if IE Browser \r\n // relativeY = (relativeY - 150);\r\n // }\r\n //}\r\n //else\r\n if (JSON.stringify(reSized) === 'false') {\r\n // click on below window half height make to Y top to static value 140px\r\n if (relativeY > 140) {\r\n relativeY = 140;\r\n }\r\n } else {\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n if ((window as any).clipboardData) {\r\n if (height < relativeY + 60) {\r\n //if IE Browser \r\n relativeY = (relativeY - 150);\r\n }\r\n }\r\n else if (height < relativeY + 378) {\r\n relativeY = (relativeY - 135);\r\n }\r\n }\r\n $(\".gensetcontext-menu\").css({\r\n top: relativeY + \"px\",\r\n left: relativeX + \"px\",\r\n position: \"absolute\"\r\n });\r\n $(\"#gensetcontextmenu\").show();\r\n $(\".gensetcontext-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('gensetcontextmenu click', function () {\r\n $(\".gensetcontext-menu\").hide();\r\n });\r\n\r\n $('.gensetcontext-menu').bind('gensetcontextmenu', function () {\r\n return false;\r\n });\r\n $('.gensetcontext-menu').on('click', 'li', function () {\r\n $(\".gensetcontext-menu\").hide();\r\n });\r\n }\r\n \r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: true,\r\n sortable: true,\r\n enableRowGroup: true,\r\n resizable: true,\r\n }]\r\n }\r\n \r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n //{ headerName: \"CC\", field: \"CCSeverityLevelGenset\", width: 65, cellRenderer: Formatters.stringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"SW\", field: \"IgnitionOn\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.gensetSwitchFormatterImgForFilter(params); } },\r\n resizable: true, width: 65, valueGetter: (params) => { return GensetFormatters.gensetSwitchSorting(params); },\r\n cellRenderer: GensetCellRender.gensetSwitchFormatterImg, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"ENG\", field: \"GensetRunning\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.gensetRunningFormatterForFilter(params); } }, resizable: true, valueGetter: (params) => { return GensetFormatters.EngineSorting(params); }, width: 65, cellRenderer: GensetCellRender.gensetRunningFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80,\r\n valueGetter: (params) => { return Formatters.vesselCdSorting(params); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ,\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: true, cellClass: 'myExcelStyle', filter: true, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: GensetCellRender.AssetStateFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n //,{ headerName: \"ALRT\", field: \"AlertSeverityID\", width: 65, cellRenderer: (params) => { return Formatters.statusIndicatorWithDescriptionForALR(params, self.state.reeferFormatter.AlertMasterList); }, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Assignments',\r\n children: [\r\n {\r\n headerName: \"Assigned to\", field: \"CustomerName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); },\r\n filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } }, resizable: true, cellRenderer: GensetCellRender.stringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Identification',\r\n children: [\r\n {\r\n headerName: \"OEM\", field: \"OEMTypeCD\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.oemTypeFormatterGensetForFilter(params); } }, resizable: true, width: 100,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.OEMTypeValueFormatter(params.data.OEMTypeCD); }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 150,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.AssetNumber); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Model\", field: \"ModelType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ModelType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"Cust. Model\", field: \"ModelNumber\", width: 120, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Form\", field: \"FormType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FormType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Tank sz (gal)\", field: \"GensetTankSize\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.GensetTankSize); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Mfd. year\", field: \"ManufacturedDate\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.YearFromdateTypeFormatterForFilter(params); } }, resizable: true, width: 80, valueGetter: (params) => { return Formatters.ManufactureYearSorting(params); }, cellRenderer: Formatters.YearFromdateTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"Profile\", field: \"Profile\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Engine\", field: \"EngineType\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Generator\", field: \"GeneratorType\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"ID Plate\", field: \"IdPlate\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Assigned\", field: \"Assigned\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Report Date/Time and Location',\r\n children: [\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, cellRenderer: GensetCellRender.stringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Event time\", field: \"EventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n\r\n {\r\n headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceNameID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceNameID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofenceNameID\", cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.GeofenceDefinitionRevision); }, cellRenderer: GensetCellRender.floatTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: GensetCellRender.GPSCoordsFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); }, resizable: true, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc HDOP\", field: \"GPSHDOP\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.GPSHDOP, params.data.GPSLockState); }, cellRenderer: GensetCellRender.GPSfloatTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc sat ct\", field: \"GPSSatelliteCount\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.GPSSatelliteCount, params.data.GPSLockState); }, cellRenderer: GensetCellRender.GPSfloatTypeValueFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Speed\", field: \"Speed\", headerValueGetter: Formatters.SpeedHeaderFormatter, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.Speed); }, cellRenderer: GensetFormatters.gensetSpeedValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {// RCNG 1257\r\n headerName: \"Address\", field: \"Address\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Address\"); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open', cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.City); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.State); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Country); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ZipCode); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Genset Status and Sensor Reporting',\r\n children: [\r\n //{ headerName: \"Alerts\", field: \"Alerts\", cellRenderer: (params) => { return Formatters.AlertDescriptionFormatter(params, self.state.reeferFormatter.AlertMasterList); }, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)},\r\n {\r\n headerName: \"Battery (V)\", field: \"ExtBattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.ExtBattVoltage); }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.BattVoltageFormatterForFilter(params); } }, resizable: true, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Fuel sensor\", field: \"HasFuelSensor\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, getQuickFilterText: GensetFormatters.FuelSensorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return GensetFormatters.fuelSensorTrace(params); } }, resizable: true, valueGetter: (params) => { return GensetFormatters.FuelSensorSorting(params); }, cellRenderer: GensetFormatters.fuelSensorTrace, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Fuel level (gal)\", field: \"FuelLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, getQuickFilterText: GensetFormatters.FuelLevelGalQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return GensetFormatters.fillLevelGalTrace(params); } }, resizable: true, valueGetter: (params) => { return GensetFormatters.FuelLevelGalSorting(params); }, cellRenderer: GensetFormatters.fillLevelGalTrace, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Fuel level\", field: \"FractionDisplay\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, getQuickFilterText: GensetCellRender.FuelLevelQuickFilterFormatter,\r\n valueGetter: (params) => { return GensetFormatters.FuelLevelSorting(params); }, cellRenderer: GensetCellRender.fillLevelTrace, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 140,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Reefer state\", field: \"ReeferStateDsc\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferStateDsc); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Uses LOP\", field: \"HasOilPressureSwitch\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.YesNoValueSorting(params.data.HasOilPressureSwitch); },\r\n filterParams: { valueGetter: params => { return GensetFormatters.YesNoConverterForFilter(params); } }, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: \"Device Status\",\r\n children: [\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device Data Time\", field: \"DeviceDataTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDeviceDataTimeForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, cellRenderer: Formatters.dateTypeFormatter, width: 150, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FirmwareVersion); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDReportingInterval); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MSISDN); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.SIM_IMSI); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ICCID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.EUI); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: GensetCellRender.RSSITypeFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.CountryName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MNC); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerLocalizationAreaCode); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerBaseStationID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Speed (mph)\", field: \"Speed\", columnGroupShow: 'open', cellRenderer: Formatters.floatTypeFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)},\r\n {\r\n headerName: \"Device config\", field: \"DeviceConfig\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.GuestReeferModeFormatterForFilter(params); } }, resizable: true, columnGroupShow: 'open', cellRenderer: Formatters.GuestReeferModeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n {\r\n headerName: \"Receipt time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\", cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n { headerName: \"Comments\", field: \"CommentExistsGenset\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, cellRenderer: GensetCellRender.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n clearGridRowSelection(params: any) {\r\n self.props.renderClearSelection();\r\n params.api.deselectAll();\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n \r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n //self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var columnDisplayName = params.node.columnApi.gridOptions.columnApi.rowGroupColumns[0].colDef.headerName;\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"DeviceDataTime\" || fieldName.toString() == \"CreatedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n if (fieldValue == \"-NA-\" || (fieldValue == \"-999\" && self.validateFieldName(fieldName.toString().trim())))\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"IgnitionOn\":\r\n return GensetCellRender.GensetSwitchFormatterGrouping(fieldValue);\r\n case \"GensetRunning\":\r\n return GensetCellRender.EngineSortingFormatterGrouping(fieldValue);\r\n case \"OEMTypeCD\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n //case \"VesselCd\":\r\n // return fieldValue == \"-NA-\" ? \"*No VSL\" : fieldValue;\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"RSSI\":\r\n return GensetCellRender.RSSIFormatterGrouping(fieldValue);\r\n //case \"HasOilPressureSwitch\":\r\n // return Formatters.YesNoFormatterGrouping(fieldValue);\r\n case \"FuelLevel\":\r\n return Formatters.FuelLevelGalGrouping(fieldValue);\r\n case \"FractionDisplay\":\r\n return GensetCellRender.FillLevelTraceGrouping(fieldValue);\r\n case \"HasFuelSensor\":\r\n return Formatters.FuelSensorGrouping(fieldValue);\r\n case \"ManufacturedDate\":\r\n return fieldValue == 0 ? '*No Mfd. Year' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExistsGenset\":\r\n return fieldValue == 0 ? \"Comments\" : \"*No Comments\";\r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n //case \"GPSLastLock\":\r\n // return fieldValue == \"-NA-\" ? \"*No Last GPS (h:m:s)\" : fieldValue;\r\n //case \"ExtBattVoltage\":\r\n // return fieldValue == \"-NA-\" ? \"*No Battery (V)\" : fieldValue;\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, gensetAssetSensors, colDef);\r\n case \"AssetState\":\r\n return GensetCellRender.AssetStateFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue\r\n }\r\n }\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n refreshStatusGrid() { \r\n selectedRowIndex = -1;\r\n this.props.clearGridHeaderExtension();\r\n GensetHistoryGrid.ClearHistoryGridData();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n }, () => this.GensetSearchFilter(self.props.statusFilter, false, false));\r\n }\r\n\r\n static refreshDashboardGrid() {\r\n self.refreshStatusGrid();\r\n } \r\n\r\n static refreshToggleFilters() {\r\n if (self != undefined) {\r\n if (self.state.ToggleSearchParams != undefined && self.state.ToggleSearchParams != null)\r\n self.setState({ ToggleSearchParams: null });\r\n self.setState({ rowData: [] });\r\n }\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n switch (popUpName) {\r\n case 'SendEmail':\r\n return 0 ? true : false} sensorData={gensetAssetSensors}/>\r\n case 'Export':\r\n return ;\r\n\r\n case 'Ping':\r\n return ; \r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var gensetData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.GensetStatusUI[];\r\n filterSet = gensetData;\r\n var filterParams = JSON.stringify(filterSet); \r\n if (!isCommands) {\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) }, () => { self.props.getCommandPopupTitle(this.state.modelTitle); self.props.getCommandPopupContent(this.state.popUpHtml); });\r\n $('#btnTriggerPopupGenset').click(); \r\n } \r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', false);\r\n }\r\n\r\n popUpAssignToCustomer() {\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Assign Asset(s) to Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpUnAssignFromCustomer() {\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Asset(s) From Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n } \r\n \r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n exportToExcel() { \r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.state.rowData != 'object' ? JSON.parse(this.state.rowData) : this.state.rowData;\r\n }\r\n\r\n $(\"#globalLoader\").show();\r\n var r = this.state.columnDefs;\r\n try {\r\n var formName = 'GensetGrid';\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridGensetStatusToolBar.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n\r\n }\r\n \r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean, sensorData:any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, gensetAssetSensors);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData:any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, gensetAssetSensors);\r\n }\r\n\r\n filterGensetStatusGrid(searchParam: any) {\r\n self.setState({ ToggleSearchParams: searchParam });\r\n $('#globalLoader').show();\r\n ReeferCallout.ResetMapPushpins();\r\n var gensetData = [];\r\n var gensetSearchData = this.props.propsGensetData;\r\n if (!searchParam.AllGenset && !searchParam.ReportingSWOn && !searchParam.LastReportedSWOn && !searchParam.ReportingSWOff && !searchParam.LastReportedSWOff) {\r\n gensetData.push(...gensetSearchData);\r\n }\r\n if (searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData);\r\n }\r\n if (searchParam.ReportingSWOn && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => x.IgnitionOn == true && x.IsReportingDelay == false));\r\n }\r\n if (searchParam.LastReportedSWOn && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => x.IgnitionOn == true && x.IsReportingDelay == true));\r\n }\r\n if (searchParam.ReportingSWOff && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => (x.IgnitionOn == false || x.IgnitionOn == null) && x.IsReportingDelay == false));\r\n }\r\n if (searchParam.LastReportedSWOff && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => (x.IgnitionOn == false || x.IgnitionOn == null) && x.IsReportingDelay == true));\r\n }\r\n let gensetFilterData = uniq(gensetData); \r\n\t\t\r\n if(gensetFilterData.length>0)\r\n ReeferCallout.BindClusterMapPushpins(gensetFilterData, 'genset', self.state.reeferFormatter);\r\n\r\n this.setState({\r\n rowData: gensetFilterData\r\n }, () => $('#globalLoader').hide());\r\n \r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != []) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n \r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".gensetcontext-menu\").hide();\r\n $(\"#gensetcontextmenu\").hide();\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"GensetStatusGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\nclass ReeferHistorySearch {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\n\r\n//WI-23853\r\nenum ReeferAndDryAndChassisStatusEnum {\r\n AllReefer = 0,\r\n Running = 1,\r\n Stopped = 2,\r\n MissedRunning = 3,\r\n MissedStopped = 4,\r\n AllMicroAlaram = 5,\r\n MASevere = 6,\r\n MAMinor = 7,\r\n AllCargoCare = 8,\r\n CCSevere = 9,\r\n CCMinor = 10,\r\n CCInformational = 11,\r\n\r\n DryInGeofence = 16,\r\n DryOutGeofence = 17, \r\n ChassisPwrInGeofence = 18,\r\n ChassisPwrOutGeofence = 19,\r\n ChassisNotPwrInGeofence = 20,\r\n ChassisNotPwrOutGeofence = 21\r\n}\r\n\r\n\r\n","import * as React from 'react';\r\n\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\n\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\n\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridDryHistoryToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', renderGridPreferenceHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false,\r\n excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderExportToExcelHTML: ''\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n //return ;\r\n return ;\r\n }\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n this.props.validateRevisionNum(dashboardPreferenceId);\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n

Email

\r\n \r\n \r\n
\r\n
\r\n {this.state.renderEmailHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n modelDialogGridPreferenceHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Grid Preference
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderGridPreferenceHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n modelDialogExportToExcelHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Export To Excel
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderExportToExcelHTML}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardHistory_' + this.props.formName).hide();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"DryStatusGrid\" || this.props.formName == \"DryHistoryGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName,\r\n this.props.parentchild, functionId, widgetId, this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"DryHistoryGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardHistory_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"DryHistoryGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadDryHistory').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#DryrHistoryQuickFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.props.formName == \"DryHistoryGrid\" ?\r\n : \"\"}\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
\r\n
\r\n
\r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
\r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
\r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport 'ag-grid-enterprise';\r\nimport Formatters from '../../actions/Formatters';\r\nimport DryFormatters from '../../actions/DryFormatter';\r\nimport { DryCellRenderer } from '../../actions/DryCellRenderer';\r\nimport DateFormat from 'dateformat';\r\nimport { RCUtils } from './../../RCUtils';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\n//import \"../../../node_modules/bootstrap/dist/css/bootstrap.css\";\r\nimport $ from 'jquery';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridDryHistoryToolBar } from '../sharedcomponents/GridDryHistoryToolBar';\r\nimport { DryStatusSSRMGrid } from './DryStatusSSRMGrid';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ReeferMap } from '../childcomponents/ReeferMap';\r\nimport moment from 'moment';\r\nimport lodashfilter from 'lodash/filter';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface DryHistoryGridState {\r\n loading: boolean;\r\n rowData: DryUnitHistoryUI[];\r\n Filters: DryHistoryFilter;\r\n columnDefs: any[];\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n reeferFormatter: server.ReeferFormatter;\r\n buttonState: boolean;\r\n PreferenceDTTM: any;\r\n //buttonSearchHtml: any;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n selectedDataItems: any[];\r\n}\r\nvar self;\r\nvar functionId;\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar isMapEnable: boolean;\r\nvar dryAssetSensors: any[];\r\n\r\nexport class DryHistoryGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.initHistoryFilters();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n functionId = 49; // functionId for DryHistory Grid\r\n\r\n var overlayTemplate = 'Loading...';\r\n this.state = {\r\n loading: true,\r\n rowData: [],\r\n columnDefs: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n Filters: filterSet,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n reeferFormatter: this.props.propsReeferFormatterData,\r\n buttonState: false,\r\n // buttonSearchHtml: this.renderSearchButton(false),\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n selectedDataItems: []\r\n };\r\n\r\n //var columnDefs = this.createColumnDefs();\r\n self = this;\r\n\r\n }\r\n\r\n initHistoryFilters() {\r\n var dryHistoryFilter = new DryHistoryFilter();\r\n dryHistoryFilter.AssetNumber = '';\r\n dryHistoryFilter.DeviceNumber = '';\r\n dryHistoryFilter.EventCode = '';\r\n dryHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n dryHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n\r\n return dryHistoryFilter;\r\n }\r\n componentDidMount() {\r\n //var filterParams = JSON.stringify(this.state.Filters);\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // rowData: data,\r\n // loading: false,\r\n // columnDefs: this.createColumnDefs()\r\n // });\r\n\r\n // //self.state.gridApiParams.paginationGoToFirstPage();\r\n // //self.state.gridApiParams.hideOverlay();\r\n // });\r\n this.renderDateFields();\r\n self.enableDisableSearchButton(false);\r\n\r\n //var columnDefs = this.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefs });\r\n\r\n columnDefs2 = this.createColumnDefs();\r\n setTimeout(() => {\r\n this.renderCustomerDeviceTypeSensorColumns();\r\n }, 1000);\r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns() {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n if (this.props.customerDeviceTypeSensor != null && this.props.customerDeviceTypeSensor != undefined)\r\n dryAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'D');\r\n\r\n if (dryAssetSensors != null && dryAssetSensors != undefined && dryAssetSensors.length > 0) {\r\n //var door1Column = {\r\n // headerName: \"Door\", field: \"Door1Open\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n // filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n // valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140, getQuickFilterText: DryFormatters.doorQuickFilterFormatter\r\n //};\r\n //generatedColumns.push(door1Column);\r\n\r\n $.each(dryAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 17);\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api, \"DryHistoryGrid\");\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"DryHistoryGrid\");\r\n }, 3000);\r\n }\r\n\r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 17);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"DryHistoryGrid\");\r\n }, 3000); \r\n }\r\n\r\n //WI 26721\r\n static GetDryHistoryGridPrefColumns(gridPreferencesData: any) {\r\n //var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 17);\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"DryHistoryGrid\");\r\n }\r\n\r\n refreshGrid = () => {\r\n $('#globalLoader').show();\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n isMapEnable = self.props.mapEnabled;\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindDryTracePushpins(data, 'dryTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n\r\n this.setState({\r\n rowData: data\r\n }, () => { $('#globalLoader').hide(); });\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.hideOverlay();\r\n //$(\"#globalLoader\").hide();\r\n });\r\n };\r\n\r\n static ApplyDryHistorySearch(params: any, isFromMap: boolean, isHistoryEnabled: boolean) {\r\n $('#globalLoader').show();\r\n this.ClearHistoryGridData();\r\n if (self != undefined && isHistoryEnabled) {\r\n isMapEnable = self.props.mapEnabled;\r\n self.state.gridApiParams.showLoadingOverlay();\r\n self.setState({ loading: true });\r\n self.enableDisableSearchButton(true);\r\n if (params.EventDTTM != null && params.EventDTTM != \"\") {\r\n //var toDTTM = DateFormat(new Date(params.EventDTTM), 'mm/dd/yyyy');\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currenttoDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var toDTTM = Formatters.DateTimeFormatter(params.EventDTTM);\r\n //var toDTTM = Formatters.DateTimeFormatter(params.EventDTTM);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString(); //moment(new Date(toDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n else {\r\n //var currentUtcDttm = new Date(new Date().toUTCString()).toISOString();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n\r\n //self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM:ss');\r\n //self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM:ss');\r\n self.state.Filters.AssetNumber = params.AssetMasterID;\r\n self.state.Filters.DeviceNumber = params.RCDID;\r\n self.state.Filters.EventCode = params.EventCD;\r\n var filterParams = JSON.stringify(self.state.HistoryFilters);\r\n\r\n var filterParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.state.gridApiParams.hideOverlay();\r\n self.setState({\r\n rowData: data,\r\n loading: false\r\n });\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n DryStatusSSRMGrid.validateDryStatusHistoryMismatch(params.EventDTTM, data[0].EventDTTM);//WI 26971\r\n ReeferCallout.BindDryTracePushpins(data, 'dryTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.props.dryIdForHeader(params.AssetNumber);\r\n if (isFromMap)\r\n DryStatusSSRMGrid.SelectCurrentNode(params.AssetNumber);\r\n });\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n\r\n static ClearHistoryGridData() {\r\n if (self != undefined) {\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n //self.enableDisableSearchButton(false);\r\n }\r\n }\r\n\r\n static refreshDataGrid() {\r\n self.setState({\r\n rowData: self.state.rowData\r\n });\r\n };\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getDryHistoryContextMenuItems = params => {\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n // coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var dCHistoryID = selectedrowNode.data.DCHistoryID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.DCHistoryID === dCHistoryID)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.DCHistoryID == selectedrowNode.data.DCHistoryID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"PWR\", field: \"DryPWR\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 70,\r\n valueGetter: (params) => { return DryFormatters.dryPWRSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryPwrStateFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.PwrStateFormatter\r\n },\r\n {\r\n headerName: \"BATT\", field: \"BatteryPct\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => { return DryFormatters.dryBatteryPctSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryBatteryPctFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.BatteryPctFormatter, width: 70\r\n },\r\n\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', filter: true, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: DryCellRenderer.AssetStateFormatter }\r\n ]\r\n },\r\n {\r\n headerName: \"Latest Event\",\r\n children: [\r\n { headerName: \"Dry ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetNumber\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventDescription\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, enableTooltip: true },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n //{\r\n // headerName: \"Door\", field: \"Door1Open\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n // filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n // valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140, getQuickFilterText: DryFormatters.doorQuickFilterFormatter\r\n\r\n //}\r\n ]\r\n },\r\n {\r\n headerName: 'Last Reported Device Data',\r\n children: [\r\n {\r\n headerName: \"Door\", field: \"Door1Open\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140, getQuickFilterText: DryFormatters.doorQuickFilterFormatter\r\n },\r\n {\r\n headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"Door1EventDttm\", enableRowGroup: true, cellClass: 'myExcelStyle',\r\n sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } },\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"Door1EventDttm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170,\r\n },\r\n {\r\n headerName: \"Inside temp \", field: \"InsideTemp\", headerValueGetter: Formatters.TempHeaderFormatter,enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"InsideTemp\"); }, cellRenderer: DryFormatters.TemperatureValueFormatter, width: 140\r\n },\r\n { headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceNameID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceNameID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n // { headerName: \"Region Fence\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n // { headerName: \"Region Fence ID\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"GeofenceDefinitionRevision\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n {\r\n headerName: \"Address\", field: \"Address\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Address\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150\r\n },\r\n { headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70 },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70 },\r\n { headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZipCode\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 130 },\r\n //{ headerName: \"Battery (V)\", field: \"DeviceBattery\", cellRenderer: Formatters.BattVoltageFormatter, width: 140 },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: DryCellRenderer.GPSCoordsFormatter, width: 140 },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } }, valueGetter: (params) => { return Formatters.secondsToTimeConverterFilter(params); }, width: 140 },\r\n { headerName: \"Loc acc (m)\", field: \"PositionAccuracy\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSAcctypeSorting(params.data.PositionAccuracy); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"Loc HDOP\", field: \"DryGPSHDOP\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.DryGPSHDOP, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100 },\r\n { headerName: \"Loc sat ct\", field: \"DryGPSSatelliteCount\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.DryGPSSatelliteCount, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MNC\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, columnGroupShow: 'open', sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100 },\r\n { headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FirmwareVersion\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70 },\r\n {\r\n headerName: \"Device temp \", field: \"DeviceTemp\", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: DryFormatters.TemperatureValueFormatter, columnGroupShow: 'open', width: 70\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, cellRenderer: Formatters.BattVoltageValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"Lux\", field: \"Illumination\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Illumination\"); }, cellRenderer: Formatters.LuxValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Bat mode\", field: \"BatteryMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.BatteryModeFormatter(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.BatteryModeFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 120\r\n },\r\n {\r\n headerName: \"Door bat\", field: \"Door1BattPct\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.dryDoorBattPctSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryDoorBattPctFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.DoorBattPctFormatter, width: 120\r\n },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true,columnGroupShow: 'open', sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true,columnGroupShow: 'open', sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true,columnGroupShow: 'open', sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100 },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: DryCellRenderer.RSSITypeFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Speed\", field: \"DrySpeed\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n headerValueGetter: Formatters.SpeedHeaderFormatter, filterParams: { valueGetter: params => { return DryFormatters.SpeedConverterFilter(params); } },\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"DrySpeed\"); }, cellRenderer: DryFormatters.SpeedConverter, width: 130\r\n },\r\n { headerName: \"Miles\", field: \"Miles\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"Miles\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150 },\r\n {\r\n headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n { headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true,columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceType\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\", enableRowGroup: true,columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CreatedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 180 }\r\n ]\r\n },\r\n {\r\n headerName: 'Device Gravity Vector Status',\r\n children: [\r\n { headerName: \"X Axis\", field: \"XAxis\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"XAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 180 },\r\n { headerName: \"Y Axis\", field: \"YAxis\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"YAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 180 },\r\n { headerName: \"Z Axis\", field: \"ZAxis\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 180 }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onGridSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedDryData = [];\r\n isMapEnable = self.props.mapEnabled;\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows != null && selectedRows != undefined) {\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedDryData.push(selectedRow);\r\n });\r\n\r\n if (isMapEnable) {\r\n ReeferMap.UpdateIsLocationEstimated(false);\r\n self.BindMapPushPin(selectedRows);\r\n }\r\n\r\n self.setState({\r\n selectedDataItems: selectedRows\r\n });\r\n }\r\n\r\n self.setState({\r\n selectedItems: selectedDryData,\r\n popUpHtml: '',\r\n modelTitle: ''\r\n });\r\n }\r\n\r\n BindMapPushPin(selectedRows: any) {\r\n var selectedRowsWithCoords = lodashfilter(selectedRows, function (item) {\r\n return item.GPSCoords != null && item.GPSCoords != undefined && item.GPSCoords.toString() != \"\";\r\n });\r\n if (selectedRowsWithCoords != null && selectedRowsWithCoords.length > 0)\r\n ReeferCallout.DisplayDrySelectedPushpin(selectedRowsWithCoords[0]);\r\n else {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData.length > 0) {\r\n var selectedRowIndex = self.state.rowData.findIndex(row => row.DCHistoryID === selectedRows[0].DCHistoryID);\r\n if (selectedRowIndex != -1) {\r\n if (selectedRowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplayDrySelectedPushpin(selectedRows[0]);\r\n }\r\n else {\r\n for (var rowIndex = selectedRowIndex + 1; rowIndex < self.state.rowData.length; rowIndex++) {\r\n var rowCurrentData = self.state.rowData[rowIndex];\r\n if (rowCurrentData.GPSCoords != null && rowCurrentData.GPSCoords != undefined && rowCurrentData.GPSCoords.toString() != \"\") {\r\n ReeferMap.UpdateIsLocationEstimated(true);\r\n selectedRows[0].Latitude = rowCurrentData.Latitude;\r\n selectedRows[0].Longitude = rowCurrentData.Longitude;\r\n ReeferCallout.DisplayDrySelectedPushpin(selectedRows[0]);\r\n break;\r\n }\r\n else if (rowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplayDrySelectedPushpin(selectedRows[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n navigateToNextCell(params: any) {\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always on of the 4 keys above\";\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.FromDate;\r\n var toDttm = filters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n getDryHistoryDetails() {\r\n isMapEnable = this.props.mapEnabled;\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n self.state.gridApiParams.showLoadingOverlay();\r\n var fromDate = moment(new Date(filters.FromDate)).toString();\r\n var toDate = moment(new Date(filters.ToDate)).toString();\r\n filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.setState({\r\n rowData: data\r\n });\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindDryTracePushpins(data, 'dryTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.hideOverlay();\r\n });\r\n }\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n renderDateFields() {\r\n var currentDateFilters = this.state.Filters;\r\n if (currentDateFilters.ToDate != null && currentDateFilters.ToDate != undefined) {\r\n var currenttoDTTM = this.state.PreferenceDTTM;\r\n var toDTTM = DateFormat(new Date(currentDateFilters.ToDate), 'mm/dd/yyyy');\r\n var fromDTTM = DateFormat(new Date(currentDateFilters.FromDate), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean, sensorData: any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, dryAssetSensors);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData: any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, dryAssetSensors);\r\n }\r\n\r\n //renderSearchButton(isClickEnable: boolean) {\r\n // if (isClickEnable)\r\n // return ;\r\n // else\r\n // return ;\r\n //}\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n \r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n //self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n if (fieldValue == \"-NA-\" || (fieldValue == \"-999\" && self.validateFieldName(fieldName.toString().trim())))\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"BatteryStatus\":\r\n return DryCellRenderer.DryBatteryStatusFormatterGrouping(fieldValue);\r\n case \"DryPWR\":\r\n return DryCellRenderer.DryPwrStateFormatterGrouping(fieldValue);\r\n case \"AssetState\":\r\n return DryCellRenderer.AssetStateFormatterGrouping(fieldValue);\r\n //case \"TripStatusCdAndDFlag\":\r\n // return DryCellRenderer.TripStatusFormatterGrouping(fieldValue);\r\n case \"customername\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"Door1Open\":\r\n return Formatters.Door1FormatterGrouping(fieldValue); //RCNG-2369\r\n case \"RSSI\":\r\n return DryCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"CommentExistsDC\":\r\n return DryCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, dryAssetSensors, colDef);\r\n case \"Door1EventDttm\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"Door1BattPct\": case \"BatteryPct\": \r\n return DryCellRenderer.DryDoorBattPctFormatterGrouping(fieldValue);\r\n case 'XAxis': case 'YAxis': case 'ZAxis':\r\n return Formatters.GravityVectorValueFormatterforGroup(fieldValue);\r\n case \"Illumination\":\r\n return Formatters.LuxValueFormatterforGroup(fieldValue);\r\n default:\r\n return fieldValue;\r\n }\r\n }\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function (item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function () {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"DryHistoryGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n this.props.validateRevisionNum(dashboardPreferenceId);\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n From\r\n \r\n To\r\n \r\n\r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
;\r\n }\r\n}\r\n\r\nclass DryHistoryFilter {\r\n AssetNumber: string;\r\n DeviceNumber: string;\r\n FromDate: string;\r\n ToDate: string;\r\n EventCode: string;\r\n}\r\n\r\ninterface DryUnitHistoryUI {\r\n DCConditionLogID: number;\r\n EventDTTM?: Date;\r\n StrEventDTTM: string;\r\n Latitude?: number;\r\n Longitude?: number;\r\n EventCD: string;\r\n IsAlarm?: boolean;\r\n CreatedDTTM?: Date;\r\n RCDID: string;\r\n FirmwareVersion: string;\r\n EventDescription: string;\r\n AssetNumber: string;\r\n Speed?: number;\r\n GPSHDOP?: number;\r\n GPSSatelliteCount?: number;\r\n GPSLockState: string;\r\n GeofenceDefinitionRevision?: number;\r\n GPSDTTM?: Date;\r\n StrGPSDTTM: string;\r\n BattVoltage?: number;\r\n BackUpBattVoltage?: number;\r\n ExtBattVoltage?: number;\r\n LSCallFlag: string;\r\n BackendGeofenceName: string;\r\n RSSI?: number;\r\n ManufacturedDate?: Date;\r\n FenceID: string;\r\n FenceName: string;\r\n City: string;\r\n State: string;\r\n RegionGeofenceName: string;\r\n HasAlarm?: boolean;\r\n AlertCount?: number;\r\n ZipCode: string;\r\n Country: string;\r\n CustomerName: string;\r\n GPSCoords: string;\r\n AssetOemDsc: string;\r\n CountryName: string;\r\n MNC: string;\r\n TowerLocalizationAreaCode: string;\r\n TowerBaseStationID: string;\r\n RCDReportingInterval?: number;\r\n MSISDN: string;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n EUI: string;\r\n DeviceConfig?: boolean;\r\n DeviceType: string;\r\n CCSeverityLevelDC: string;\r\n VesselCd: string;\r\n GPSLastLock: string;\r\n FenceNameID: string;\r\n RegionGeofenceNameID: string;\r\n BackendGeofenceNameID: string;\r\n CommentExistsDC: string;\r\n Sensor1Value: number;\r\n Sensor2Value: number;\r\n Sensor3Value: number;\r\n Sensor4Value: number;\r\n Sensor5Value: number;\r\n Sensor6Value: number;\r\n Sensor7Value: number;\r\n Sensor8Value: number;\r\n BatteryPct: number;\r\n}","import * as React from 'react';\r\n\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\n\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\n\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridChassisHistoryToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', renderGridPreferenceHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false,\r\n excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderExportToExcelHTML: ''\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n //return ;\r\n return ;\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Email
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderEmailHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n modelDialogGridPreferenceHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n \r\n

Grid Preference

\r\n
\r\n
\r\n {this.state.renderGridPreferenceHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n modelDialogExportToExcelHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Export To Excel
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderExportToExcelHTML}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardHistory_' + this.props.formName).hide();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ChassisStatusGrid\" || this.props.formName == \"ChassisHistoryGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName,\r\n this.props.parentchild, functionId, widgetId, this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"ChassisHistoryGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardHistory_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ChassisHistoryGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadChassisHistory').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#ChassisHistoryQuickFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.props.formName == \"ChassisHistoryGrid\" ?\r\n : \"\"}\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
\r\n
\r\n
\r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
\r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
\r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport { ChassisCellRenderer } from '../../actions/ChassisCellRenderer';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ChassisFormatter from '../../actions/ChassisFormatter';\r\nimport DateFormat from 'dateformat';\r\nimport { RCUtils } from './../../RCUtils';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\n//import \"../../../node_modules/bootstrap/dist/css/bootstrap.css\";\r\nimport $ from 'jquery';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridChassisHistoryToolBar } from '../sharedcomponents/GridChassisHistoryToolBar';\r\nimport { ChassisStatusGrid } from './ChassisStatusGrid';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ReeferMap } from '../childcomponents/ReeferMap';\r\nimport moment from 'moment';\r\nimport lodashfilter from 'lodash/filter';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface ChassisHistoryGridState {\r\n loading: boolean;\r\n rowData: server.ChassisHistoryUI[];\r\n Filters: ChassisHistoryFilter;\r\n columnDefs: any[];\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n reeferFormatter: server.ReeferFormatter;\r\n buttonState: boolean;\r\n PreferenceDTTM: any;\r\n //buttonSearchHtml: any;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n selectedDataItems: any[];\r\n}\r\nvar self;\r\nvar functionId;\r\nvar columnDefs: any[];\r\nvar columnDefs2: any[];\r\nvar isMapEnable: boolean;\r\nvar chassisAssetSensors: any[];\r\n\r\nexport class ChassisHistoryGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.initHistoryFilters();//new ChassisHistoryFilter();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n functionId = 62; // functionId for ChassisHistory Grid\r\n \r\n var overlayTemplate = 'Loading...';\r\n this.state = {\r\n loading: true,\r\n rowData: [],\r\n columnDefs: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n Filters: filterSet,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n reeferFormatter: this.props.propsReeferFormatterData,\r\n buttonState: false,\r\n // buttonSearchHtml: this.renderSearchButton(false),\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n selectedDataItems: []\r\n };\r\n\r\n //var columnDefs = this.createColumnDefs();\r\n self = this;\r\n\r\n }\r\n\r\n initHistoryFilters() {\r\n var chassisHistoryFilter = new ChassisHistoryFilter();\r\n chassisHistoryFilter.AssetNumber = '';\r\n chassisHistoryFilter.DeviceNumber = '';\r\n chassisHistoryFilter.EventCode = '';\r\n chassisHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n chassisHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n\r\n return chassisHistoryFilter;\r\n }\r\n\r\n componentDidMount() {\r\n \r\n //var filterParams = JSON.stringify(this.state.Filters);\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // rowData: data,\r\n // loading: false,\r\n // columnDefs: this.createColumnDefs()\r\n // });\r\n\r\n // //self.state.gridApiParams.paginationGoToFirstPage();\r\n // //self.state.gridApiParams.hideOverlay();\r\n // });\r\n this.renderDateFields();\r\n self.enableDisableSearchButton(false);\r\n\r\n //var columnDefs = this.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefs });\r\n \r\n columnDefs2 = this.createColumnDefs();\r\n setTimeout(() => {\r\n this.renderCustomerDeviceTypeSensorColumns();\r\n }, 1000); \r\n }\r\n\r\n\r\n renderCustomerDeviceTypeSensorColumns() {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n if (this.props.customerDeviceTypeSensor != null && this.props.customerDeviceTypeSensor != undefined)\r\n chassisAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'C');\r\n\r\n if (chassisAssetSensors != null && chassisAssetSensors != undefined && chassisAssetSensors.length > 0) {\r\n $.each(chassisAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n self.setState({ gridApiParams: params.api });\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 21);\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api, \"ChassisHistoryGrid\");\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ChassisHistoryGrid\");\r\n }, 3000); \r\n }\r\n \r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 21);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"ChassisHistoryGrid\");\r\n }, 3000); \r\n }\r\n\r\n //WI 26721\r\n static GetChassisHistoryGridPrefColumns(gridPreferencesData: any) {\r\n //var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 21);\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"ChassisHistoryGrid\");\r\n }\r\n\r\n refreshGrid = () => {\r\n $('#globalLoader').show();\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n isMapEnable = self.props.mapEnabled;\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindChassisTracePushpins(data, 'chassisTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n this.setState({\r\n rowData: data\r\n }, () => { $('#globalLoader').hide(); });\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.hideOverlay();\r\n //$(\"#globalLoader\").hide();\r\n });\r\n };\r\n\r\n static ApplyChassisHistorySearch(params: any, isFromMap: boolean, isHistoryEnabled: boolean) {\r\n $('#globalLoader').show(); \r\n this.ClearHistoryGridData();\r\n if (self != undefined && isHistoryEnabled) {\r\n isMapEnable = self.props.mapEnabled;\r\n self.state.gridApiParams.showLoadingOverlay();\r\n self.setState({ loading: true });\r\n self.enableDisableSearchButton(true);\r\n if (params.EventDTTM != null && params.EventDTTM != \"\") {\r\n //var toDTTM = DateFormat(new Date(params.EventDTTM), 'mm/dd/yyyy');\r\n var toDTTM = Formatters.DateTimeFormatter(params.EventDTTM);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n else {\r\n var currentUtcDttm = new Date(new Date().toUTCString()).toISOString();\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n\r\n //self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM:ss');\r\n //self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM:ss');\r\n self.state.Filters.AssetNumber = params.AssetMasterID;\r\n self.state.Filters.DeviceNumber = params.RCDID;\r\n self.state.Filters.EventCode = params.EventCD;\r\n var filterParams = JSON.stringify(self.state.HistoryFilters);\r\n\r\n var filterParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.state.gridApiParams.hideOverlay();\r\n self.setState({\r\n rowData: data,\r\n loading: false\r\n });\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n ChassisStatusGrid.validateChassisStatusHistoryMismatch(params.EventDTTM, data[0].EventDTTM);//WI 26971\r\n ReeferCallout.BindChassisTracePushpins(data, 'chassisTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.props.chassisIdForHeader(params.AssetNumber);\r\n if (isFromMap)\r\n ChassisStatusGrid.SelectCurrentNode(params.AssetNumber);\r\n });\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n\r\n static ClearHistoryGridData() {\r\n if (self != undefined) {\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n //self.enableDisableSearchButton(false);\r\n }\r\n }\r\n\r\n static refreshDataGrid() {\r\n self.setState({\r\n rowData: self.state.rowData\r\n });\r\n };\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getChassisHistoryContextMenuItems = params => {\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n // coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var chassisHistoryID = selectedrowNode.data.ChassisHistoryID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.ChassisHistoryID === chassisHistoryID)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.ChassisHistoryID == selectedrowNode.data.ChassisHistoryID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"PWR\", field: \"PWR\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return ChassisFormatter.ChassisPwrStateFormatterFilter(params); } },\r\n valueGetter: (params) => { return ChassisFormatter.ChassisPWRSorting(params); }, width: 70, cellRenderer: ChassisCellRenderer.PwrStateFormatter\r\n },\r\n {\r\n headerName: \"BATT\", field: \"ChassisBatteryStatus\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => { return ChassisFormatter.chassisBatteryStatusSorting(params); },\r\n filterParams: { valueGetter: params => { return ChassisFormatter.chassisBatteryStatusFormatterFilter(params); } },\r\n cellRenderer: ChassisCellRenderer.BatteryStatusFormatter, width: 70\r\n },\r\n {\r\n headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80,\r\n valueGetter: (params) => { return Formatters.vesselCdSorting(params); }, cellRenderer: ChassisCellRenderer.StringTypeValueFormatter\r\n },\r\n {\r\n headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltipField: \"TripNameAndStatus\", width: 70,\r\n valueGetter: (params) => { return Formatters.TripSorting(params); }, cellRenderer: ChassisCellRenderer.TripstatusIndicator\r\n }\r\n ]\r\n },\r\n {\r\n headerName: \"Latest Event\",\r\n children: [\r\n {\r\n headerName: \"Chassis ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.AssetNumber); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: ChassisCellRenderer.StringTypeFormatter, width: 150, enableTooltip: true\r\n },\r\n {\r\n headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\",\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } },\r\n enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter, width: 150\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Last Reported Device Data',\r\n children: [\r\n {\r\n headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceName); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceNameID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceName); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceNameID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n // { headerName: \"Region Fence\", field: \"RegionGeofence\", cellRenderer: ChassisCellRenderer.StringTypeFormatter, width: 150 },\r\n // { headerName: \"Region Fence ID\", field: \"RegionGeofenceName\", cellRenderer: ChassisCellRenderer.StringTypeFormatter, width: 150 },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.GeofenceDefinitionRevision); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.City); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.State); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Country); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ZipCode); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"Battery (V)\", field: \"DeviceBattery\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.DeviceBattery); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBatteryFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } },\r\n cellRenderer: ChassisCellRenderer.GPSCoordsFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); }, width: 140\r\n },\r\n {\r\n headerName: \"Loc HDOP\", field: \"ChassisGPSHDOP\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.ChassisGPSHDOP, params.data.GPSLockState); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 100\r\n },\r\n {\r\n headerName: \"Loc sat ct\", field: \"ChassisGPSSatelliteCount\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.ChassisGPSSatelliteCount, params.data.GPSLockState); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.CountryName); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MNC); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerLocalizationAreaCode); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerBaseStationID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 100\r\n },\r\n {\r\n headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FirmwareVersion); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MSISDN); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.SIM_IMSI); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ICCID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.EUI); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 100\r\n },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: ChassisCellRenderer.RSSITypeFormatter, filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } },\r\n valueGetter: (params) => { return Formatters.RSSISorting(params); }, width: 70\r\n },\r\n {\r\n headerName: \"Speed\", field: \"ChassisSpeed\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n headerValueGetter: Formatters.SpeedHeaderFormatter,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.ChassisSpeed); },\r\n filterParams: { valueGetter: params => { return ChassisFormatter.SpeedConverterChassisFilter(params); } }, cellRenderer: ChassisFormatter.ChassisSpeedConverter, width: 130\r\n },\r\n //{ headerName: \"Door\", field: \"Door1OpenChassis\", cellRenderer: Formatters.DoorFormatterChassis, width: 100 },\r\n {\r\n headerName: \"Loaded\", field: \"Loaded\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return ChassisFormatter.LoadedValueFormatter(params.data.Loaded) },\r\n filterParams: { valueGetter: params => { return ChassisFormatter.LoadedFormatterFilter(params); } }, width: 100\r\n },\r\n {\r\n headerName: \"Brake signal\", field: \"BreakSignal\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ChassisFormatter.BrakeSignalSorting(params); }, cellRenderer: ChassisFormatter.BrakeSignalFormatter, width: 100\r\n },\r\n {\r\n headerName: \"Tire pressure\", field: \"TyrePressure\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.TyrePressure); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 100\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceType); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle',\r\n sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } },\r\n cellRenderer: Formatters.dateTypeFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDReportingInterval); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 180\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onGridSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedChassisData = [];\r\n isMapEnable = self.props.mapEnabled; \r\n var selectedRows = params.api.getSelectedRows(); \r\n\r\n if (selectedRows != null && selectedRows != undefined) {\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedChassisData.push(selectedRow);\r\n });\r\n\r\n if (isMapEnable) {\r\n ReeferMap.UpdateIsLocationEstimated(false);\r\n self.BindMapPushPin(selectedRows);\r\n }\r\n\r\n self.setState({\r\n selectedDataItems: selectedRows\r\n });\r\n } \r\n\r\n self.setState({\r\n selectedItems: selectedChassisData,\r\n popUpHtml: '',\r\n modelTitle: ''\r\n });\r\n }\r\n\r\n BindMapPushPin(selectedRows: any) {\r\n var selectedRowsWithCoords = lodashfilter(selectedRows, function (item) {\r\n return item.GPSCoords != null && item.GPSCoords != undefined && item.GPSCoords.toString() != \"\";\r\n });\r\n if (selectedRowsWithCoords != null && selectedRowsWithCoords.length > 0)\r\n ReeferCallout.DisplayChassisSelectedPushpin(selectedRowsWithCoords[0]);\r\n else {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData.length > 0) {\r\n var selectedRowIndex = self.state.rowData.findIndex(row => row.ChassisHistoryID === selectedRows[0].ChassisHistoryID);\r\n if (selectedRowIndex != -1) {\r\n if (selectedRowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplayChassisSelectedPushpin(selectedRows[0]);\r\n }\r\n else {\r\n for (var rowIndex = selectedRowIndex + 1; rowIndex < self.state.rowData.length; rowIndex++) {\r\n var rowCurrentData = self.state.rowData[rowIndex];\r\n if (rowCurrentData.GPSCoords != null && rowCurrentData.GPSCoords != undefined && rowCurrentData.GPSCoords.toString() != \"\") {\r\n ReeferMap.UpdateIsLocationEstimated(true);\r\n selectedRows[0].Latitude = rowCurrentData.Latitude;\r\n selectedRows[0].Longitude = rowCurrentData.Longitude;\r\n ReeferCallout.DisplayChassisSelectedPushpin(selectedRows[0]);\r\n break;\r\n }\r\n else if (rowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplayChassisSelectedPushpin(selectedRows[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n navigateToNextCell(params: any) {\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always on of the 4 keys above\";\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.FromDate;\r\n var toDttm = filters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n getChassisHistoryDetails() {\r\n isMapEnable = this.props.mapEnabled;\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n self.state.gridApiParams.showLoadingOverlay();\r\n var fromDate = moment(new Date(filters.FromDate)).toString();\r\n var toDate = moment(new Date(filters.ToDate)).toString();\r\n filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.setState({\r\n rowData: data\r\n });\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindChassisTracePushpins(data, 'chassisTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.hideOverlay();\r\n });\r\n }\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n renderDateFields() {\r\n var currentDateFilters = this.state.Filters;\r\n if (currentDateFilters.ToDate != null && currentDateFilters.ToDate != undefined) {\r\n var currenttoDTTM = this.state.PreferenceDTTM;\r\n var toDTTM = DateFormat(new Date(currentDateFilters.ToDate), 'mm/dd/yyyy');\r\n var fromDTTM = DateFormat(new Date(currentDateFilters.FromDate), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean, sensorData:any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, chassisAssetSensors);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, widgetId:any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData:any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, chassisAssetSensors);\r\n }\r\n\r\n //renderSearchButton(isClickEnable: boolean) {\r\n // if (isClickEnable)\r\n // return ;\r\n // else\r\n // return ;\r\n //}\r\n\r\n onGridScroll(params: any) {\r\n $(\".chassiscontext-menu\").hide();\r\n $(\"#chassiscontextmenu\").hide();\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n }); \r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n //self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"DeviceDataTime\" || fieldName.toString() == \"CreatedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n if (fieldValue == \"-NA-\" || (fieldValue == \"-999\" && self.validateFieldName(fieldName.toString().trim())))\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"PWR\":\r\n return ChassisCellRenderer.ChassisPwrStateFormatterGrouping(fieldValue);\r\n case \"ChassisBatteryStatus\":\r\n return ChassisCellRenderer.ChassisBatteryStatusFormatterGrouping(fieldValue);\r\n case \"TripStatusCdAndDFlag\":\r\n return ChassisCellRenderer.TripStatusFormatterGrouping(fieldValue);\r\n case \"customername\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n //case \"Loaded\":\r\n // return Formatters.LoadedFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return ChassisCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n //case \"BreakSignal\":\r\n // return \"-NA-\"; \r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, chassisAssetSensors, colDef);\r\n default:\r\n return fieldValue;\r\n }\r\n }\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"ChassisHistoryGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n From\r\n \r\n To\r\n \r\n\r\n\r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
;\r\n }\r\n}\r\n\r\nclass ChassisHistoryFilter {\r\n AssetNumber: string;\r\n DeviceNumber: string;\r\n FromDate: string;\r\n ToDate: string;\r\n EventCode: string;\r\n}\r\n","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface DeviceResetGridState {\r\n SelectedReefers: any[],\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.ForwardCommandParameters,\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class DeviceReset extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderDeviceResetGrid(this.props.reeferData);\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitDeviceResetCommand() {\r\n var command = \"DeviceReset\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, null, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderDeviceResetGrid(reeferData);\r\n }\r\n\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderDeviceResetGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"DeviceReset\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"DeviceReset\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n}\r\n\r\nexport class DeviceHardReset extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderDeviceResetGrid(this.props.reeferData);\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitDeviceHardResetCommand() {\r\n var command = \"DeviceHardReset\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, null, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderDeviceResetGrid(reeferData);\r\n }\r\n\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderDeviceResetGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"DeviceHardReset\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"DeviceHardReset\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport $, { param } from 'jquery';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { GensetCellRender } from '../../actions/GensetCellRender';\r\nimport GensetFormatters from '../../actions/GensetFormatter';\r\n//import * as moment from 'moment';\r\nimport moment from 'moment';\r\nimport DateFormat from 'dateformat';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport 'ag-grid-enterprise';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\n//import \"../../../node_modules/bootstrap/dist/css/bootstrap.css\";\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridGensetHistoryToolBar } from '../sharedcomponents/GridGensetHistoryToolBar';\r\nimport { GensetStatusGrid } from './GensetStatusGrid';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ReeferMap } from '../childcomponents/ReeferMap';\r\nimport lodashfilter from 'lodash/filter';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface GensetHistoryGridState {\r\n loading: boolean;\r\n rowData: server.GensetHistoryUI[];\r\n Filters: GensetHistoryFilter;\r\n columnDefs: any[];\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n reeferFormatter: server.ReeferFormatter;\r\n buttonState: boolean;\r\n PreferenceDTTM: any;\r\n //buttonSearchHtml: any;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n selectedDataItems: any[];\r\n}\r\nvar self;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar functionId;\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar isMapEnable: boolean;\r\nvar gensetAssetSensors: any[];\r\n\r\nexport class GensetHistoryGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.initHistoryFilters();//new GensetHistoryFilter();\r\n functionId = 47; // functionId for GensetHistory Grid\r\n\r\n var overlayTemplate = 'Loading...';\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n this.state = {\r\n loading: true,\r\n rowData: [],\r\n columnDefs: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n Filters: filterSet,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n reeferFormatter: this.props.propsReeferFormatterData,\r\n buttonState: false,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n selectedDataItems: []\r\n };\r\n\r\n //var columnDefs = this.createColumnDefs();\r\n self = this;\r\n //var filterParams = JSON.stringify(this.state.Filters);\r\n //if (this.state.reeferFormatter === null) {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // reeferFormatter: data\r\n // }, () => {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // rowData: data,\r\n // loading: false\r\n // });\r\n // });\r\n // });\r\n // });\r\n //}\r\n //else {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // rowData: data,\r\n // loading: false\r\n // });\r\n // });\r\n //}\r\n\r\n }\r\n\r\n initHistoryFilters() {\r\n var gensetHistoryFilter = new GensetHistoryFilter();\r\n gensetHistoryFilter.AssetNumber = '';\r\n gensetHistoryFilter.DeviceNumber = '';\r\n gensetHistoryFilter.EventCode = '';\r\n gensetHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n gensetHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n\r\n return gensetHistoryFilter;\r\n }\r\n renderCustomerDeviceTypeSensorColumns() {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n if (this.props.customerDeviceTypeSensor != null && this.props.customerDeviceTypeSensor != undefined)\r\n gensetAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'G');\r\n\r\n if (gensetAssetSensors != null && gensetAssetSensors != undefined && gensetAssetSensors.length > 0) {\r\n $.each(gensetAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n //var columnDefs = this.createColumnDefs();\r\n columnDefs2 = this.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefs });\r\n setTimeout(() => {\r\n this.renderCustomerDeviceTypeSensorColumns();\r\n }, 1000);\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.renderDateFields();\r\n self.enableDisableSearchButton(false);\r\n }\r\n\r\n onGridReady(params: any) {\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 13);\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api, \"GensetHistoryGrid\");\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"GensetHistoryGrid\");\r\n }, 3000);\r\n }\r\n \r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 13);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"GensetHistoryGrid\");\r\n }, 3000); \r\n }\r\n\r\n //WI 26721\r\n static GetGensetHistoryGridPrefColumns(gridPreferencesData: any) {\r\n //var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 13);\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"GensetHistoryGrid\");\r\n }\r\n\r\n //renderEmailDialog(gridData: any, colDefs: any, formName: string, parentChild: string) {\r\n // this.props.renderDataToEmailControl(gridData, colDefs, formName, parentChild);\r\n //}\r\n\r\n refreshGrid = () => {\r\n $('#globalLoader').show();\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n isMapEnable = self.props.mapEnabled;\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindGensetTracePushpins(data, 'gensetTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n this.setState({\r\n rowData: data\r\n }, () => { $('#globalLoader').hide(); });\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.hideOverlay();\r\n //$(\"#globalLoader\").hide();\r\n });\r\n };\r\n\r\n onCellClickedCopy(event) {\r\n coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n coppiedData = event.value;\r\n\r\n if (event.data != null && event.data != undefined) {\r\n self.props.getLastSelectedRow(event.data);\r\n // $('#globalLoader').show();\r\n }\r\n }\r\n\r\n static ApplyGensetHistorySearch(params: any, isFromMap: boolean, isHistoryEnabled: boolean) {\r\n $('#globalLoader').show();\r\n this.ClearHistoryGridData();\r\n if (self != undefined && isHistoryEnabled) {\r\n isMapEnable = self.props.mapEnabled;\r\n self.state.gridApiParams.showLoadingOverlay();\r\n self.setState({ loading: true });\r\n self.enableDisableSearchButton(true);\r\n if (params.EventDTTM != null && params.EventDTTM != \"\") {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currenttoDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var toDTTM = Formatters.DateTimeFormatter(params.EventDTTM);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n else {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n\r\n self.state.Filters.AssetNumber = params.AssetMasterID;\r\n self.state.Filters.DeviceNumber = params.RCDID;\r\n self.state.Filters.EventCode = params.EventCD;\r\n var filterParams = JSON.stringify(self.state.HistoryFilters);\r\n\r\n var filterParams = JSON.stringify(self.state.Filters);\r\n //if (self.state.reeferFormatter === null) {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // self.setState({\r\n // reeferFormatter: data\r\n // }, () => {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // self.state.gridApiParams.hideOverlay();\r\n // self.setState({\r\n // rowData: data,\r\n // loading: false\r\n // });\r\n\r\n // if (data.length > 0 && isMapEnable)\r\n // ReeferCallout.BindGensetTracePushpins(data, 'gensetTrace');\r\n // else\r\n // $('#globalLoader').hide();\r\n\r\n // self.props.gensetIdForHeader(params.AssetNumber);\r\n // if (isFromMap)\r\n // GensetStatusGrid.SelectCurrentNode(params.AssetNumber);\r\n // });\r\n // });\r\n // });\r\n //}\r\n //else {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.state.gridApiParams.hideOverlay();\r\n self.setState({\r\n rowData: data,\r\n loading: false\r\n });\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n GensetStatusGrid.validateGensetStatusHistoryMismatch(params.EventDTTM, data[0].EventDTTM);//WI 26971\r\n ReeferCallout.BindGensetTracePushpins(data, 'gensetTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.props.gensetIdForHeader(params.AssetNumber);\r\n if (isFromMap)\r\n GensetStatusGrid.SelectCurrentNode(params.AssetNumber);\r\n });\r\n //}\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n\r\n static ClearHistoryGridData() {\r\n if (self != undefined) {\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n //self.enableDisableSearchButton(false);\r\n }\r\n }\r\n\r\n static refreshDataGrid() {\r\n self.setState({\r\n rowData: self.state.rowData\r\n });\r\n };\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getGensetHistoryContextMenuItems = params => {\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n // coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var gensetHistoryID = selectedrowNode.data.GensetHistoryID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.GensetHistoryID === gensetHistoryID)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.GensetHistoryID == selectedrowNode.data.GensetHistoryID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n //{ headerName: \"CC\", field: \"CCSeverityLevelGenset\", width: 65, cellRenderer: Formatters.stringTypeFormatter },\r\n {\r\n headerName: \"SW\", field: \"IgnitionOn\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 65,\r\n filterParams: { valueGetter: params => { return GensetFormatters.gensetSwitchFormatterImgForFilter(params); } },\r\n valueGetter: (params) => { return GensetFormatters.gensetSwitchSorting(params); }, cellRenderer: GensetCellRender.gensetSwitchFormatterImg\r\n },\r\n {\r\n headerName: \"ENG\", field: \"GensetRunning\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.gensetRunningFormatterForFilter(params); } },\r\n valueGetter: (params) => { return GensetFormatters.EngineSorting(params); }, width: 65, cellRenderer: GensetCellRender.gensetRunningFormatter\r\n },\r\n {\r\n headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80,\r\n valueGetter: (params) => { return Formatters.vesselCdSorting(params); }, cellRenderer: GensetCellRender.stringTypeValueFormatter\r\n },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', filter: true, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: GensetCellRender.AssetStateFormatter }\r\n //,{ headerName: \"ALRT\", field: \"AlertSeverityID\", width: 65, cellRenderer: (params) => { return Formatters.statusIndicatorWithDescriptionForALR(params, self.state.reeferFormatter.AlertMasterList); } }\r\n ]\r\n },\r\n {\r\n headerName: 'Latest Event',\r\n children: [\r\n {\r\n headerName: \"OEM\", field: \"OEMTypeCD\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 130,\r\n filterParams: { valueGetter: params => { return GensetFormatters.oemTypeFormatterGensetForFilter(params); } },\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.OEMTypeValueFormatter(params.data.OEMTypeCD); }\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 150,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.AssetNumber); }, cellRenderer: GensetCellRender.stringTypeValueFormatter\r\n },\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: GensetCellRender.stringTypeFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Event time\", field: \"EventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n headerValueGetter: Formatters.TimeZoneHeaderFormatter, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } },\r\n cellRenderer: Formatters.dateTypeFormatter, width: 150\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Last Reported Genset and Device Data',\r\n children: [\r\n {\r\n headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n {\r\n headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceNameID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceNameID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofenceNameID\", cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', width: 150 },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.GeofenceDefinitionRevision); }, cellRenderer: GensetCellRender.floatTypeValueFormatter, width: 150\r\n },\r\n {// RcNG 1257\r\n headerName: \"Address\", field: \"Address\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Address\"); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 150\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.City); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.State); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Country); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ZipCode); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 100\r\n },\r\n {\r\n headerName: \"Battery (V)\", field: \"ExtBattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.ExtBattVoltage); }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.BattVoltageFormatterForFilter(params); } }, width: 150\r\n },\r\n //{ headerName: \"Alerts\", field: \"Alerts\", cellRenderer: (params) => { return Formatters.AlertDescriptionFormatter(params, self.state.reeferFormatter.AlertMasterList); }, width: 150 },\r\n {\r\n headerName: \"Fuel sensor\", field: \"HasFuelSensor\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.fuelSensorTrace(params); } },\r\n valueGetter: (params) => { return GensetFormatters.FuelSensorSorting(params); }, cellRenderer: GensetFormatters.fuelSensorTrace, width: 120, getQuickFilterText: GensetFormatters.FuelSensorQuickFilterFormatter\r\n },\r\n {\r\n headerName: \"Fuel level (gal.)\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.fillLevelGalTrace(params); } },\r\n valueGetter: (params) => { return GensetFormatters.FuelLevelGalSorting(params); }, field: \"FuelLevel\", cellRenderer: GensetFormatters.fillLevelGalTrace, width: 120, getQuickFilterText: GensetFormatters.FuelLevelGalQuickFilterFormatter\r\n },\r\n {\r\n headerName: \"Fuel level\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return GensetFormatters.FuelLevelSorting(params); },\r\n field: \"FractionDisplay\", cellRenderer: GensetCellRender.fillLevelTrace, width: 100, getQuickFilterText: GensetCellRender.FuelLevelQuickFilterFormatter\r\n },\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 140,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter\r\n },\r\n {\r\n headerName: \"Reefer state\", field: \"ReeferStateDsc\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferStateDsc); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Uses LOP\", field: \"HasOilPressureSwitch\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.YesNoConverterForFilter(params); } }, valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.YesNoValueSorting(params.data.HasOilPressureSwitch); }, width: 120\r\n },\r\n {\r\n headerName: \"Model\", field: \"ModelType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ModelType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter\r\n },\r\n //{ headerName: \"Cust. Model\", field: \"ModelNumber\", width: 120, cellRenderer: Formatters.stringTypeFormatter },\r\n {\r\n headerName: \"Form\", field: \"FormType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FormType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter\r\n },\r\n {\r\n headerName: \"Tank sz (gal)\", field: \"GensetTankSize\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.GensetTankSize); }, cellRenderer: GensetCellRender.stringTypeValueFormatter\r\n },\r\n {\r\n headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: GensetCellRender.GPSCoordsFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); }, width: 150\r\n },\r\n {\r\n headerName: \"Loc HDOP\", field: \"GPSHDOP\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.GPSHDOP, params.data.GPSLockState); }, cellRenderer: GensetCellRender.GPSfloatTypeValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"Loc sat ct\", field: \"GPSSatelliteCount\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.GPSSatelliteCount, params.data.GPSLockState); }, cellRenderer: GensetCellRender.GPSfloatTypeValueFormatter, width: 120\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.CountryName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MNC); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerLocalizationAreaCode); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerBaseStationID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FirmwareVersion); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, width: 130\r\n },\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MSISDN); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.SIM_IMSI); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ICCID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.EUI); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150\r\n },\r\n {\r\n headerName: \"Cell Signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } },\r\n valueGetter: (params) => { return Formatters.RSSISorting(params); }, cellRenderer: GensetCellRender.RSSITypeFormatter, width: 80\r\n },\r\n {\r\n headerName: \"Speed\", field: \"Speed\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.Speed); },\r\n headerValueGetter: Formatters.SpeedHeaderFormatter, cellRenderer: GensetFormatters.gensetSpeedValueFormatter, width: 100\r\n },\r\n {\r\n headerName: \"Device config\", field: \"DeviceConfig\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.GuestReeferModeFormatterForFilter(params); } },\r\n cellRenderer: Formatters.GuestReeferModeFormatter, width: 120\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, filter: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 120\r\n },\r\n {\r\n headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } },\r\n cellRenderer: Formatters.dateTypeFormatter, width: 150\r\n },\r\n //{ headerName: \"Comments\", field: \"CommentExistsGenset\", cellRenderer: Formatters.stringTypeFormatter, width: 90 },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDReportingInterval); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"Mfd. year\", field: \"ManufacturedDate\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 80,\r\n filterParams: { valueGetter: params => { return Formatters.YearFromdateTypeFormatterForFilter(params); } },\r\n valueGetter: (params) => { return Formatters.ManufactureYearSorting(params); }, cellRenderer: Formatters.YearFromdateTypeFormatter\r\n },\r\n //{ headerName: \"Profile\", field: \"Profile\", width: 80, cellRenderer: Formatters.stringTypeFormatter },\r\n //{ headerName: \"Engine\", field: \"EngineType\", width: 80, cellRenderer: Formatters.stringTypeFormatter },\r\n //{ headerName: \"Generator\", field: \"GeneratorType\", width: 80, cellRenderer: Formatters.stringTypeFormatter },\r\n //{ headerName: \"ID Plate\", field: \"IdPlate\", width: 80, cellRenderer: Formatters.stringTypeFormatter },\r\n //{ headerName: \"Assigned\", field: \"Assigned\", width: 80, cellRenderer: Formatters.stringTypeFormatter }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onGridSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedGensetData = [];\r\n isMapEnable = self.props.mapEnabled;\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows != null && selectedRows != undefined) {\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedGensetData.push(selectedRow);\r\n });\r\n\r\n if (isMapEnable) {\r\n ReeferMap.UpdateIsLocationEstimated(false);\r\n self.BindMapPushPin(selectedRows);\r\n }\r\n\r\n self.setState({\r\n selectedDataItems: selectedRows\r\n });\r\n }\r\n\r\n self.setState({\r\n selectedItems: selectedGensetData,\r\n popUpHtml: '',\r\n modelTitle: ''\r\n });\r\n }\r\n\r\n BindMapPushPin(selectedRows: any) {\r\n var selectedRowsWithCoords = lodashfilter(selectedRows, function (item) {\r\n return item.GPSCoords != null && item.GPSCoords != undefined && item.GPSCoords.toString() != \"\";\r\n });\r\n if (selectedRowsWithCoords != null && selectedRowsWithCoords.length > 0)\r\n ReeferCallout.DisplayGensetSelectedPushpin(selectedRowsWithCoords[0]);\r\n else {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData.length > 0) {\r\n var selectedRowIndex = self.state.rowData.findIndex(row => row.GensetHistoryID === selectedRows[0].GensetHistoryID);\r\n if (selectedRowIndex != -1) {\r\n if (selectedRowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplayGensetSelectedPushpin(selectedRows[0]);\r\n }\r\n else {\r\n for (var rowIndex = selectedRowIndex + 1; rowIndex < self.state.rowData.length; rowIndex++) {\r\n var rowCurrentData = self.state.rowData[rowIndex];\r\n if (rowCurrentData.GPSCoords != null && rowCurrentData.GPSCoords != undefined && rowCurrentData.GPSCoords.toString() != \"\") {\r\n ReeferMap.UpdateIsLocationEstimated(true);\r\n selectedRows[0].Latitude = rowCurrentData.Latitude;\r\n selectedRows[0].Longitude = rowCurrentData.Longitude;\r\n ReeferCallout.DisplayGensetSelectedPushpin(selectedRows[0]);\r\n break;\r\n }\r\n else if (rowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplayGensetSelectedPushpin(selectedRows[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n navigateToNextCell(params: any) {\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always on of the 4 keys above\";\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.FromDate;\r\n var toDttm = filters.ToDate;\r\n\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n getGensetHistoryDetails() {\r\n isMapEnable = this.props.mapEnabled;\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n self.state.gridApiParams.showLoadingOverlay();\r\n var fromDate = moment(new Date(filters.FromDate)).toString();\r\n var toDate = moment(new Date(filters.ToDate)).toString();\r\n filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(filters);\r\n //if (this.state.reeferFormatter === null) {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // reeferFormatter: data\r\n // }, () => {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // rowData: data\r\n // });\r\n\r\n // if (data.length > 0)\r\n // ReeferCallout.BindGensetTracePushpins(data, 'gensetTrace');\r\n\r\n // self.state.gridApiParams.hideOverlay();\r\n // });\r\n // });\r\n // });\r\n //}\r\n //else {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n });\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindGensetTracePushpins(data, 'gensetTrace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.state.gridApiParams.hideOverlay();\r\n });\r\n //}\r\n }\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n renderDateFields() {\r\n var currentDateFilters = this.state.Filters;\r\n if (currentDateFilters.ToDate != null && currentDateFilters.ToDate != undefined) {\r\n var currenttoDTTM = this.state.PreferenceDTTM;\r\n var toDTTM = DateFormat(new Date(currentDateFilters.ToDate), 'mm/dd/yyyy');\r\n var fromDTTM = DateFormat(new Date(currentDateFilters.FromDate), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean, sensorData: any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, gensetAssetSensors);\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".gensetcontext-menu\").hide();\r\n $(\"#gensetcontextmenu\").hide();\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData: any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, gensetAssetSensors);\r\n }\r\n\r\n //renderSearchButton(isClickEnable: boolean) {\r\n // if (isClickEnable)\r\n // return ;\r\n // else\r\n // return ;\r\n //}\r\n openGensetMonitorGraph() {\r\n if (this.state.rowData.length > 0)\r\n this.props.openGensetMonitorGraph(this.state.rowData, this.state.Filters);\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No data to draw graph\");\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n \r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"DeviceDataTime\" || fieldName.toString() == \"CreatedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n if (fieldValue == \"-NA-\" || (fieldValue == \"-999\" && self.validateFieldName(fieldName.toString().trim())))\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"IgnitionOn\":\r\n return GensetCellRender.GensetSwitchFormatterGrouping(fieldValue);\r\n case \"GensetRunning\":\r\n return GensetCellRender.EngineSortingFormatterGrouping(fieldValue);\r\n case \"OEMTypeCD\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"RSSI\":\r\n return GensetCellRender.RSSIFormatterGrouping(fieldValue);\r\n //case \"HasOilPressureSwitch\":\r\n // return Formatters.YesNoFormatterGrouping(fieldValue);\r\n case \"FuelLevel\":\r\n return Formatters.FuelLevelGalGrouping(fieldValue);\r\n case \"FractionDisplay\":\r\n return GensetCellRender.FillLevelTraceGrouping(fieldValue);\r\n case \"HasFuelSensor\":\r\n return Formatters.FuelSensorGrouping(fieldValue);\r\n case \"ManufacturedDate\":\r\n return fieldValue == 0 ? '*No Mfd. Year' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, gensetAssetSensors, colDef);\r\n case \"AssetState\":\r\n return GensetCellRender.AssetStateFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue\r\n }\r\n }\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups;\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function (item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function () {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"GensetHistoryGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n From\r\n \r\n To\r\n \r\n\r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
;\r\n }\r\n}\r\n\r\nclass GensetHistoryFilter {\r\n AssetNumber: string;\r\n DeviceNumber: string;\r\n FromDate: string;\r\n ToDate: string;\r\n EventCode: string;\r\n}\r\n","import * as React from 'react';\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n ProfileName: any;\r\n CargoCareProfiles: any[];\r\n}\r\n\r\nvar self;\r\nexport class GridDropdownCCProfileRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n ProfileName: this.props.data.cargoCare,\r\n CargoCareProfiles: this.props.colDef.cellRendererParams.refCargoCareProfiles\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n \r\n cancelRowData(event: any) {\r\n\r\n this.props.onProfileNameChange(event.target.value);\r\n this.setState({ ProfileName: event.target.value });\r\n //setProfileName(event.target.value);\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n CargoCareProfileChange(e) {\r\n\r\n var Value: string = e.currentTarget.value;\r\n this.setState({\r\n ProfileName: Value\r\n });\r\n const row = this.props.data;\r\n row.cargoCare = Value;\r\n }\r\n\r\n public render() {\r\n return
\r\n \r\n
;\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n RefTemperatureUnit: server.RefTemperatureUnit[];\r\n BookedTemperatureUnit: any;\r\n}\r\n\r\nvar self;\r\nexport class GridDropdownTempUnitRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n RefTemperatureUnit: this.props.colDef.cellRendererParams.refTempUnitData,\r\n BookedTemperatureUnit: props.value\r\n };\r\n self = this;\r\n }\r\n \r\n\r\n componentDidMount() {\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n cancelRowData(event: any) {\r\n\r\n this.props.onTempUnitChange(event.target.value);\r\n this.setState({ BookedTemperatureUnit: event.target.value });\r\n //setBookedTemperatureUnit(event.target.value);\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n BookedTemperatureUnitChange(e) {\r\n\r\n var Value: string = e.currentTarget.value;\r\n this.setState({\r\n BookedTemperatureUnit: Value\r\n });\r\n const tempUnits = this.state.RefTemperatureUnit.filter(obj => {\r\n return obj.TemperatureUnitCd == Value;\r\n });\r\n const row = this.props.data;\r\n row.bookedTemperatureQualifier = tempUnits[0].TemperatureUnitDesc;\r\n //this.gridOptions.api.applyTransaction({ update: [row] });\r\n }\r\n\r\n public render() {\r\n return
\r\n \r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\n\r\nimport forEach from 'lodash/forEach';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n CustomerGroups: any;\r\n Thirdparty: server.ThirdParty[];\r\n ThirdPartyAccess: any;\r\n}\r\n\r\n\r\nvar self;\r\nexport class GridDropdownThirdPartyRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n CustomerGroups: [],\r\n Thirdparty: this.props.colDef.cellRendererParams.refThirdParty,\r\n ThirdPartyAccess: props.value\r\n };\r\n \r\n self = this;\r\n }\r\n\r\n \r\n componentDidMount() {\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n cancelRowData(event: any) {\r\n\r\n this.props.onThirdPartyNameChange(event.target.value);\r\n this.setState({ ThirdPartyAccess: event.target.value });\r\n //setThirdPartyName(event.target.value);\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n ThirdPartyAccessChange(e) {\r\n\r\n var Value: string = e.currentTarget.value;\r\n this.setState({\r\n ThirdPartyAccess: Value\r\n });\r\n const thirdpartyUnits = this.state.Thirdparty.filter(obj => {\r\n return obj.ThirdPartyCd == Value;\r\n });\r\n const row = this.props.data;\r\n // var accCodes = [];\r\n // accCodes.push(thirdpartyUnits[0].ThirdPartyCd);\r\n if(Value==\"-1\")\r\n row.accessCodes=\"-1\";\r\n else\r\n row.accessCodes = thirdpartyUnits[0].ThirdPartyCd;\r\n }\r\n\r\n public render() {\r\n return
\r\n \r\n
;\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n}\r\n\r\nvar self;\r\nexport class GridButtonCACTClearRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n \r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n clearCAValues(e) {\r\n if(this.props.column.colDef.headerName == 'Clear CA')\r\n {\r\n this.props.node.setDataValue('O2Setpoint', '');\r\n this.props.node.setDataValue('O2SetpointMin', '');\r\n this.props.node.setDataValue('O2SetpointMax', '');\r\n this.props.node.setDataValue('CO2Setpoint', '');\r\n this.props.node.setDataValue('CO2SetpointMin', '');\r\n this.props.node.setDataValue('CO2SetpointMax', '');\r\n }\r\n if(this.props.column.colDef.headerName == 'Clear CT')\r\n {\r\n this.props.node.setDataValue('CTDays', '');\r\n this.props.node.setDataValue('USDAMaxTemperature', '');\r\n this.props.node.setDataValue('postCTTemperature', '');\r\n this.props.node.setDataValue('postCTTemperatureDeviation', '');\r\n this.props.node.setDataValue('postCTVentSetting', '');\r\n }\r\n }\r\n\r\n public render() {\r\n return
\r\n \r\n \r\n
;\r\n }\r\n}","import * as React from 'react';\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n HVFlag: any;\r\n}\r\n\r\nvar self;\r\nexport class GridDropdownHVCRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n HVFlag: this.props.data.HVFlag\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n \r\n \r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n HVFlagChange(e) {\r\n\r\n var Value: string = e.currentTarget.value;\r\n this.setState({\r\n HVFlag: Value\r\n });\r\n const row = this.props.data;\r\n row.HVFlag = Value;\r\n }\r\n\r\n public render() {\r\n return
\r\n \r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n NuValue: any;\r\n\r\n}\r\n\r\nvar self;\r\nvar isValidRange = true;\r\n\r\nexport class GridValidateNumericCellEditorRenderer extends React.Component {\r\n private inputRef: React.RefObject;\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n NuValue: props.value,\r\n\r\n };\r\n this.inputRef = React.createRef();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n $('.validating-msg').hide();\r\n this.inputRef.current.focus();\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n\r\n isCancelAfterEnd() {\r\n\r\n let value = this.getValue();\r\n if (!this.isValid(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isCancelBeforeStart() {\r\n return false;\r\n }\r\n\r\n\r\n getValue() {\r\n return this.state.NuValue;\r\n }\r\n\r\n\r\n isValid = function (val) {\r\n if(val != null && val !=\"\"){\r\n isValidRange = this.props.validationCondition(val);\r\n const numregex = new RegExp(/^[+-]?[0-9]{1,9}(?:\\.[0-9]{1})?$/);\r\n if ((val === '' || numregex.test(val)) && (isValidRange)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n else{\r\n return true;\r\n }\r\n }\r\n\r\n NuValueChange(event: any) {\r\n let val = event.target.value;\r\n if(val != null && val !=''){\r\n var preloader = document.getElementById(\"clr\");\r\n\r\n if (this.isValid(val)) {\r\n preloader.classList.remove('red-bg');\r\n $('.validating-msg').hide(); \r\n $('#validating-resultRight').show();\r\n $('#validating-resultCross').hide();\r\n } else {\r\n preloader.classList.add('red-bg');\r\n $('.validating-msg').show();\r\n $('#validating-resultRight').hide();\r\n $('#validating-resultCross').show();\r\n }\r\n }\r\n //this.props.onNuValueChange(event.target.value);\r\n this.setState({ NuValue: event.target.value });\r\n //setNuValue(event.target.value);\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n\r\n\r\n public render() {\r\n return
\r\n this.NuValueChange(e)} className='required-editor' />\r\n {this.props.errorMessage} \r\n \r\n \r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n strvalue: any;\r\n\r\n}\r\n\r\nvar self;\r\nvar isValidStr = true;\r\n\r\nexport class GridValidateStringCellEditorRenderer extends React.Component {\r\n private inputRef: React.RefObject;\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n strvalue: props.value,\r\n\r\n };\r\n this.inputRef = React.createRef();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n $('.validating-msg').hide();\r\n this.inputRef.current.focus();\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n isCancelAfterEnd() {\r\n\r\n let value = this.getValue();\r\n if (!this.isValid(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isCancelBeforeStart() {\r\n return false;\r\n }\r\n\r\n\r\n getValue() {\r\n return this.state.strvalue;\r\n }\r\n\r\n isValid = function (val) {\r\n if(val != null && val !=\"\"){\r\n isValidStr = this.props.validationCondition(val);\r\n const numregex = new RegExp(/^[a-zA-Z0-9]+$/);\r\n if ((val === '' || numregex.test(val)) && (isValidStr)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n else{\r\n return true;\r\n }\r\n }\r\n\r\n strcellValueChange(event: any) {\r\n let val = event.target.value;\r\n if(val != null && val !=''){\r\n var preloader = document.getElementById(\"strclr\");\r\n\r\n if (this.isValid(val)) {\r\n preloader.classList.remove('red-bg');\r\n $('.validating-msg').hide(); \r\n $('#validating-resultRight').show();\r\n $('#validating-resultCross').hide();\r\n } else {\r\n preloader.classList.add('red-bg');\r\n $('.validating-msg').show();\r\n $('#validating-resultRight').hide();\r\n $('#validating-resultCross').show();\r\n }\r\n }\r\n this.setState({ strvalue: event.target.value });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n\r\n\r\n public render() {\r\n return
\r\n this.strcellValueChange(e)} className='required-editor' />\r\n {this.props.errorMessage} \r\n \r\n \r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n strvalue: any;\r\n\r\n}\r\n\r\nvar self;\r\nvar isValidStr = true;\r\n\r\nexport class GridValidateStrTextAreaCellEditorRenderer extends React.Component {\r\n private inputRef: React.RefObject;\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n strvalue: props.value,\r\n\r\n };\r\n this.inputRef = React.createRef();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n $('.validating-msg').hide();\r\n this.inputRef.current.focus();\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n isCancelAfterEnd() {\r\n\r\n let value = this.getValue();\r\n if (!this.isValid(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isCancelBeforeStart() {\r\n return false;\r\n }\r\n\r\n\r\n getValue() {\r\n return this.state.strvalue;\r\n }\r\n\r\n isValid = function (val) {\r\n if(val != null && val !=\"\"){\r\n isValidStr = this.props.validationCondition(val);\r\n if (isValidStr) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n strcellValueChange(event: any) {\r\n let val = event.target.value;\r\n if(val != null && val !=''){\r\n var preloader = document.getElementById(\"strTxtclr\");\r\n if (this.isValid(val)) {\r\n preloader.classList.remove('red-bg');\r\n $('.validating-msg').hide(); \r\n \r\n } else {\r\n preloader.classList.add('red-bg');\r\n $('.validating-msg').show(); \r\n }\r\n }\r\n this.setState({ strvalue: event.target.value });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n\r\n\r\n public render() {\r\n return
\r\n \r\n {this.props.errorMessage} \r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n strvalue: any;\r\n\r\n}\r\n\r\nvar self;\r\nvar isValidStr = true;\r\n\r\nexport class GridValidateStringMultiTextCellEditorRenderer extends React.Component {\r\n private inputRef: React.RefObject;\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n strvalue: props.value,\r\n\r\n };\r\n this.inputRef = React.createRef();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n $('.validating-msg').hide();\r\n this.inputRef.current.focus();\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n isCancelAfterEnd() {\r\n\r\n let value = this.getValue();\r\n if (!this.isValid(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isCancelBeforeStart() {\r\n return false;\r\n }\r\n\r\n\r\n getValue() {\r\n return this.state.strvalue;\r\n }\r\n\r\n isValid = function (val) {\r\n isValidStr = this.props.validationCondition(val);\r\n const numregex = new RegExp(/^[a-zA-Z0-9]+$/);\r\n if ((val === '' || numregex.test(val)) && (isValidStr)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n strcellValueChange(event: any) {\r\n let val = event.target.value;\r\n var preloader = document.getElementById(\"strclr\");\r\n\r\n if (this.isValid(val)) {\r\n preloader.classList.remove('red-bg');\r\n $('.validating-msg').hide();\r\n $('#validating-resultRight').show();\r\n $('#validating-resultCross').hide();\r\n } else {\r\n preloader.classList.add('red-bg');\r\n $('.validating-msg').show();\r\n $('#validating-resultRight').hide();\r\n $('#validating-resultCross').show();\r\n\r\n }\r\n this.setState({ strvalue: event.target.value });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n\r\n\r\n public render() {\r\n return
\r\n this.strcellValueChange(e)} className='required-editor' aria-multiline=\"true\" />\r\n {this.props.errorMessage} \r\n \r\n \r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface CustomEditRendererState {\r\n isEditMode: boolean;\r\n isDisabled: any;\r\n wholeNumber: any;\r\n\r\n}\r\n\r\nvar self;\r\nvar isValidLength = true;\r\n\r\nexport class GridValidateWholeNumberCellEditorRenderer extends React.Component {\r\n private inputRef: React.RefObject;\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isEditMode: false,\r\n isDisabled: null,\r\n wholeNumber: props.value,\r\n\r\n };\r\n this.inputRef = React.createRef();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n $('.validating-msg').hide();\r\n this.inputRef.current.focus();\r\n this.setState({ isDisabled: false });\r\n\r\n }\r\n setSaveButtonDisabled(flag) {\r\n this.setState({ isDisabled: flag });\r\n }\r\n\r\n isCancelAfterEnd() {\r\n let value = this.getValue();\r\n if (!this.isValid(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isCancelBeforeStart() {\r\n return false;\r\n }\r\n\r\n\r\n getValue() {\r\n return this.state.wholeNumber;\r\n }\r\n\r\n\r\n isValid = function (val) {\r\n if(val != null && val !=\"\"){\r\n isValidLength = this.props.validationCondition(val);\r\n const numregex = new RegExp(/^[0-9\\b]+$/);\r\n if ((val === '' || numregex.test(val)) && (isValidLength)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n else{\r\n return true;\r\n }\r\n }\r\n\r\n wholeNumChange(event: any) {\r\n\r\n let val = event.target.value; \r\n if(val != null && val !=''){ \r\n var preloader = document.getElementById(\"wholeNum\");\r\n \r\n if (this.isValid(val)) {\r\n preloader.classList.remove('red-bg');\r\n $('.validating-msg').hide(); \r\n $('#validating-resultRight').show();\r\n $('#validating-resultCross').hide();\r\n //preloader.classList.add('regex-editor');\r\n } else {\r\n preloader.classList.add('red-bg');\r\n $('.validating-msg').show();\r\n $('#validating-resultRight').hide();\r\n $('#validating-resultCross').show();\r\n\r\n }\r\n }\r\n this.setState({ wholeNumber: event.target.value });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n\r\n }\r\n\r\n\r\n public render() {\r\n return
\r\n this.wholeNumChange(e)} className='required-editor' />\r\n {this.props.errorMessage} \r\n \r\n \r\n
;\r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport difference from 'lodash/difference';\r\nimport remove from 'lodash/remove';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport forEach from 'lodash/forEach';\r\nimport isEqual from 'lodash/isEqual';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport { GridDropdownCCProfileRenderer } from '../sharedcomponents/GridDropdownCCProfileRenderer';\r\nimport { GridDropdownTempUnitRenderer } from '../sharedcomponents/GridDropdownTempUnitRenderer';\r\nimport { GridDropdownThirdPartyRenderer } from '../sharedcomponents/GridDropdownThirdPartyRenderer';\r\nimport { GridButtonCACTClearRenderer } from '../sharedcomponents/GridButtonCACTClearRenderer';\r\nimport { GridDropdownHVCRenderer } from '../sharedcomponents/GridDropdownHVCRenderer';\r\nimport { GridValidateNumericCellEditorRenderer } from '../sharedcomponents/GridValidateNumericCellEditorRenderer';\r\nimport { GridValidateStringCellEditorRenderer } from '../sharedcomponents/GridValidateStringCellEditorRenderer';\r\nimport { GridValidateStrTextAreaCellEditorRenderer } from '../sharedcomponents/GridValidateStrTextAreaCellEditorRenderer';\r\nimport { GridValidateStringMultiTextCellEditorRenderer } from '../sharedcomponents/GridValidateStringMultiTextCellEditorRenderer';\r\nimport { GridValidateWholeNumberCellEditorRenderer } from '../sharedcomponents/GridValidateWholeNumberCellEditorRenderer';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport { ViewBookingDetails } from '../childcomponents/ViewBookingDetails';\r\nimport { ViewBooking } from '../routecomponents/ViewBooking';\r\nimport Formatters from '../../actions/Formatters';\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar self;\r\nexport interface Reefers {\r\n ReeferIds: string;\r\n editingId: any;\r\n isSavedButtonDisabled: boolean;\r\n defaultColDef: any;\r\n rowData: server.bookingReefer[];\r\n BookingReefers: server.BookingSearchDetails;\r\n disassociaterowData: server.bookingReefer[];\r\n CommonBookingData: server.CommonBookingData;\r\n Thirdparty: server.ThirdParty[];\r\n CargoCareProfiles: any[];\r\n RefTemperatureUnit: server.RefTemperatureUnit[];\r\n BookingDetails: server.BookingDetails;\r\n BookingViewData: server.BookingViewData;\r\n frameworkComponents: any;\r\n getRowNodeId: any;\r\n context: any;\r\n columnDefs: any;\r\n gridApiParams: any;\r\n}\r\nvar self;\r\nvar colDefs;\r\nvar isFromViewBooking = false;\r\nvar emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: true, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n};\r\n\r\nexport class SpecificBookingReefersGridData extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props); \r\n var propsBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: this.props.formState.BookingReefers.BookingReefers, SelectedBookingReefers: this.props.formState.BookingReefers.SelectedBookingReefers,\r\n ReeferwithUnitID: this.props.formState.BookingReefers.ReeferwithUnitID, BookingNumber: this.props.formState.BookingReefers.BookingNumber\r\n }\r\n this.state = {\r\n ReeferIds: '',\r\n editingId: null,\r\n isSavedButtonDisabled: false,\r\n columnDefs: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false, resizable: true, },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellEditorParams: { validation: /^\\d*\\.?\\d*$/ }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: \"dropdownTempUnit\", cellRendererParams: { refTempUnitData: this.props.formState.RefTemperatureUnit }, editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", headerValueGetter: Formatters.TempHeaderFormatter, field: \"humidity\", editable: true, width: 145, resizable: true,\r\n\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", editable: true, width: 265, resizable: true,\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", resizable: true,\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: \"gridDropdownHVCRenderer\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"CargoCareProfile\", cellRenderer: \"dropdownCCProfile\", cellRendererParams: { refCargoCareProfiles: this.props.formState.CargoCareProfiles }, editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"accessCodes\", cellRenderer: \"dropdownThirdParty\", cellRendererParams: { refThirdParty: this.props.formState.Thirdparty }, cellEditorPopup: true, editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: 'CT',\r\n children: [\r\n\r\n {\r\n headerName: \"CT Days\", field: \"CTDays\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"USDA Max Temp\", field: \"USDAMaxTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Post CT Temp\", field: \"postCTTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Post CT Temp Range\", field: \"postCTTemperatureDeviation\", headerValueGetter: Formatters.TempHeaderFormatter, editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Post CT Vent Settings\", field: \"postCTVentSetting\", editable: true, width: 265, resizable: true,\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'CA',\r\n children: [\r\n {\r\n headerName: \"O2 SetPoint\", field: \"O2Setpoint\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"O2 Min\", field: \"O2SetpointMin\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"O2 Max\", field: \"O2SetpointMax\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"CO2 SetPoint\", field: \"CO2Setpoint\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"CO2 Min\", field: \"CO2SetpointMin\", editable: true, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"CO2 Max\", field: \"CO2SetpointMax\", editable: true, width: 145, resizable: true,\r\n }\r\n ]\r\n },\r\n \r\n\r\n ],\r\n defaultColDef: {\r\n flex: 1,\r\n // cellClass: 'cell-wrap-text',\r\n minWidth: 100,\r\n rowHeight: 50,\r\n },\r\n rowData: [],\r\n disassociaterowData: [],\r\n BookingReefers: propsBookingReefers,\r\n CommonBookingData: this.props.formState.CommonBookingData,\r\n BookingViewData: this.props.formState.BookingViewData,\r\n Thirdparty: this.props.formState.Thirdparty ,\r\n CargoCareProfiles: this.props.formState.CargoCareProfiles ,\r\n RefTemperatureUnit: this.props.formState.RefTemperatureUnit,\r\n BookingDetails: this.props.formState.BookingDetails,\r\n getRowNodeId: function (data) {\r\n return data.id;\r\n },\r\n context: {\r\n componentParent: this,\r\n getCurrentlyEditingId: () => {\r\n return this.state.editingId;\r\n },\r\n setCurrentlyEditingId: id => {\r\n this.setState({ editingId: id });\r\n },\r\n },\r\n frameworkComponents: {\r\n dropdownThirdParty: GridDropdownThirdPartyRenderer,\r\n dropdownTempUnit: GridDropdownTempUnitRenderer,\r\n dropdownCCProfile: GridDropdownCCProfileRenderer,\r\n gridButtonCACTClearRenderer: GridButtonCACTClearRenderer,\r\n gridDropdownHVCRenderer: GridDropdownHVCRenderer,\r\n gridValidateNumericCellEditorRenderer: GridValidateNumericCellEditorRenderer,\r\n gridValidateStringCellEditorRenderer: GridValidateStringCellEditorRenderer,\r\n gridValidateStrTextAreaCellEditorRenderer: GridValidateStrTextAreaCellEditorRenderer,\r\n gridValidateWholeNumberCellEditorRenderer: GridValidateWholeNumberCellEditorRenderer,\r\n gridValidateStringMultiTextCellEditorRenderer: GridValidateStringMultiTextCellEditorRenderer,\r\n },\r\n gridApiParams:[]\r\n };\r\n self = this;\r\n } \r\n\r\n PrepareDataSetForGrid() {\r\n var gridCommonData = [];\r\n var reeferIds = this.props.formState.CommonBookingData.ReeferIds;\r\n var tempBookedTemperature = this.props.formState.CommonBookingData.BookedTemperature;\r\n var tempBookedTemperatureUnit = this.props.formState.CommonBookingData.BookedTemperatureUnit;\r\n var tempBookedTemperatureMin = this.props.formState.CommonBookingData.BookedTemperatureMin;\r\n var tempBookedTemperatureMax = this.props.formState.CommonBookingData.BookedTemperatureMax;\r\n var tempHumiditySetPoint = this.props.formState.CommonBookingData.HumiditySetPoint;\r\n var tempVentSettings = this.props.formState.CommonBookingData.VentSettings;\r\n var tempGensetId = this.props.formState.CommonBookingData.GensetId;\r\n var tempCommodityName = this.props.formState.CommonBookingData.CommodityName;\r\n var tempSTCC = this.props.formState.CommonBookingData.STCC;\r\n var tempHSCode = this.props.formState.CommonBookingData.HSCode;\r\n var tempServiceLevel = this.props.formState.CommonBookingData.ServiceLevel;\r\n var tempHighValueCargo = this.props.formState.CommonBookingData.HighValueCargo;\r\n var tempCargoCareProfile = this.props.formState.CommonBookingData.CargoCareProfile;\r\n var tempaccCode = this.props.formState.CommonBookingData.ThirdPartyAccess;\r\n var tempCACTNotRequired = this.props.formState.CommonBookingData.CACTNotRequired;\r\n var tempCTRequire = this.props.formState.CommonBookingData.CTRequire;\r\n var tempCARequire = this.props.formState.CommonBookingData.CARequire;\r\n var tempCACTDifferByReefer = this.props.formState.CommonBookingData.CACTDifferByReefer;\r\n var tempCTDays = this.props.formState.CommonBookingData.CTDays;\r\n var tempCTMaxTemperature = this.props.formState.CommonBookingData.CTMaxTemperature;\r\n var tempPostCTTemperature = this.props.formState.CommonBookingData.PostCTTemperature;\r\n var tempPostCTTemperatureRange = this.props.formState.CommonBookingData.PostCTTemperatureRange;\r\n var tempPostCTVentSettings = this.props.formState.CommonBookingData.PostCTVentSettings;\r\n var tempO2SetPoint = this.props.formState.CommonBookingData.O2SetPoint;\r\n var tempO2Min = this.props.formState.CommonBookingData.O2Min;\r\n var tempO2Max = this.props.formState.CommonBookingData.O2Max;\r\n var tempCO2SetPoint = this.props.formState.CommonBookingData.CO2SetPoint;\r\n var tempCO2Min = this.props.formState.CommonBookingData.CO2Min;\r\n var tempCO2Max = this.props.formState.CommonBookingData.CO2Max;\r\n var tempCAGName = this.props.formState.CommonBookingData.CAGName;\r\n if (reeferIds.length == 0) {\r\n var item = {\r\n action: '', reeferId: '-NA-', cargoCare: tempCargoCareProfile, accessCodes: tempaccCode, bookedTemperature: tempBookedTemperature,\r\n bookedTemperatureQualifier: tempBookedTemperatureUnit, bookedTemperatureMin: tempBookedTemperatureMin, bookedTemperatureMax: tempBookedTemperatureMax,\r\n humidity: tempHumiditySetPoint, commodity: tempCommodityName, STCC: tempSTCC, HS: tempHSCode, gensetId: tempGensetId, ventSetting: tempVentSettings,\r\n HVFlag: tempHighValueCargo, serviceLevel: tempServiceLevel, CAFlag: tempCARequire, O2Setpoint: tempO2SetPoint, O2SetpointMin: tempO2Min, O2SetpointMax: tempO2Max,\r\n CO2Setpoint: tempCO2SetPoint, CO2SetpointMin: tempCO2Min, CO2SetpointMax: tempCO2Max, CTFlag: tempCTRequire,\r\n CTDays: tempCTDays, USDAMaxTemperature: tempCTMaxTemperature, postCTTemperature: tempPostCTTemperature, postCTTemperatureDeviation: tempPostCTTemperatureRange, postCTVentSetting: tempPostCTVentSettings,\r\n UnitMasterId: 0, CustomerAccessGroupIdsStr: '', CAGName: tempCAGName\r\n };\r\n gridCommonData.push(item);\r\n }\r\n forEach(reeferIds, function (refId) {\r\n if (refId != \"\" && refId != null) {\r\n var splittedReefer = refId.split(\"-\");\r\n var item = {\r\n action: '', reeferId: splittedReefer[0], cargoCare: tempCargoCareProfile, accessCodes: tempaccCode, bookedTemperature: tempBookedTemperature,\r\n bookedTemperatureQualifier: tempBookedTemperatureUnit, bookedTemperatureMin: tempBookedTemperatureMin, bookedTemperatureMax: tempBookedTemperatureMax,\r\n humidity: tempHumiditySetPoint, commodity: tempCommodityName, STCC: tempSTCC, HS: tempHSCode, gensetId: tempGensetId, ventSetting: tempVentSettings,\r\n HVFlag: tempHighValueCargo, serviceLevel: tempServiceLevel, CAFlag: tempCARequire, O2Setpoint: tempO2SetPoint, O2SetpointMin: tempO2Min, O2SetpointMax: tempO2Max,\r\n CO2Setpoint: tempCO2SetPoint, CO2SetpointMin: tempCO2Min, CO2SetpointMax: tempCO2Max, CTFlag: tempCTRequire,\r\n CTDays: tempCTDays, USDAMaxTemperature: tempCTMaxTemperature, postCTTemperature: tempPostCTTemperature, postCTTemperatureDeviation: tempPostCTTemperatureRange, postCTVentSetting: tempPostCTVentSettings,\r\n UnitMasterId: splittedReefer[1], CustomerAccessGroupIdsStr: '', CAGName: tempCAGName\r\n };\r\n gridCommonData.push(item);\r\n }\r\n });\r\n return gridCommonData;\r\n }\r\n\r\n PrepareDataSetForViewGrid(data: any) {\r\n var gridCommonData = []; \r\n forEach(data, function (datarow) {\r\n if (datarow != null) {\r\n var item = {\r\n action: '', reeferId: datarow.reeferId, cargoCare: datarow.cargoCare, accessCodes: datarow.accessCodes, bookedTemperature: datarow.bookedTemperature,\r\n bookedTemperatureQualifier: datarow.bookedTemperatureQualifier, bookedTemperatureMin: datarow.bookedTemperatureMin, bookedTemperatureMax: datarow.bookedTemperatureMax,\r\n humidity: datarow.humidity, commodity: datarow.commodity, STCC: datarow.STCC, HS: datarow.HS, gensetId: datarow.gensetId, ventSetting: datarow.ventSetting,\r\n HVFlag: datarow.HVFlag, serviceLevel: datarow.serviceLevel, CAFlag: datarow.CAFlag, O2Setpoint: datarow.O2Setpoint, O2SetpointMin: datarow.O2SetpointMin, O2SetpointMax: datarow.O2SetpointMax,\r\n CO2Setpoint: datarow.CO2Setpoint, CO2SetpointMin: datarow.CO2SetpointMin, CO2SetpointMax: datarow.CO2SetpointMax, CTFlag: datarow.CTFlag,\r\n CTDays: datarow.CTDays, USDAMaxTemperature: datarow.USDAMaxTemperature, postCTTemperature: datarow.postCTTemperature, postCTTemperatureDeviation: datarow.postCTTemperatureDeviation, postCTVentSetting: datarow.postCTVentSetting,\r\n UnitMasterId: datarow.UnitMasterId, CustomerAccessGroupIdsStr: datarow.CustomerAccessGroupIdsStr, CAGName: datarow.CAGName\r\n };\r\n gridCommonData.push(item);\r\n }\r\n });\r\n return gridCommonData;\r\n }\r\n\r\n updateBookingGridDimensions() {\r\n if (isFromViewBooking) {\r\n $(\"#Booking-Grid-height-Tab .ag-root-wrapper-body\").css('min-height', $(window).height() - 341);\r\n $(\"#Booking-Grid-height-Tab .ag-root-wrapper-body\").css('height', $(window).height() - 341);\r\n $(\"#Booking-Grid-height-Tab .ag-root-wrapper-body\").css('max-height', $(window).height() - 341);\r\n }\r\n else {\r\n $(\"#Booking-Grid-height-Tab .ag-root-wrapper-body\").css('min-height', $(window).height() - 269);\r\n $(\"#Booking-Grid-height-Tab .ag-root-wrapper-body\").css('height', $(window).height() - 269);\r\n $(\"#Booking-Grid-height-Tab .ag-root-wrapper-body\").css('max-height', $(window).height() - 269);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateBookingGridDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n var reefs = this.props.formState;\r\n if (this.props.isFromViewBooking != null && this.props.isFromViewBooking != undefined) {\r\n isFromViewBooking = this.props.isFromViewBooking;\r\n }\r\n else { isFromViewBooking = false; }\r\n\r\n window.addEventListener(\"resize\", this.updateBookingGridDimensions.bind(this));\r\n if (this.props.formState.isViewOnly == false) {\r\n if (this.props.formState.CommonBookingData.CACTNotRequired) {\r\n this.setState({ columnDefs: this.createColumnDefsForCACTNotRequired() });\r\n } else if (this.props.formState.CommonBookingData.CTRequire) {\r\n this.setState({ columnDefs: this.createColumnDefsForCTOnly() });\r\n } else if (this.props.formState.CommonBookingData.CARequire) {\r\n this.setState({ columnDefs: this.createColumnDefsForCAOnly() });\r\n } else if (this.props.formState.CommonBookingData.CACTDifferByReefer) {\r\n this.setState({ columnDefs: this.createColumnDefsForCACTDiffer() });\r\n } else {\r\n this.setState({ columnDefs: this.createColumnDefsForCACTNotRequired() });\r\n }\r\n }\r\n else {\r\n if (this.props.formState.BookingViewData.CACTNotRequired) {\r\n this.setState({ columnDefs: this.createColumnDefsForCACTNotRequiredForView() });\r\n } else if (this.props.formState.BookingViewData.CTRequire) {\r\n this.setState({ columnDefs: this.createColumnDefsForCTOnlyForView() });\r\n } else if (this.props.formState.BookingViewData.CARequire) {\r\n this.setState({ columnDefs: this.createColumnDefsForCAOnlyForView() });\r\n } else if (this.props.formState.BookingViewData.CACTDifferByReefer) {\r\n this.setState({ columnDefs: this.createColumnDefsForCACTDifferForView() });\r\n } else {\r\n this.setState({ columnDefs: this.createColumnDefsForCACTNotRequiredForView() });\r\n }\r\n }\r\n //this.setState({ rowData: this.props.formState.isEdit ? this.PrepareDataSetForCommonDataGrid(this.props.formState.rowData) : this.PrepareDataSetForGrid() });\r\n this.setState({ rowData: ((this.props.formState.isEdit == true || this.props.formState.CopyBookingNumber != '') && this.props.formState.isViewOnly == false) ? this.PrepareDataSetForCommonDataGrid(this.props.formState.rowData) : ((this.props.formState.isEdit == false && this.props.formState.isViewOnly == false) ? this.PrepareDataSetForGrid() : this.PrepareDataSetForViewGrid(this.props.formState.rowData)) });\r\n\r\n setTimeout(() => { this.updateBookingGridDimensions() }, 200);\r\n\r\n }\r\n PrepareDataSetForCommonDataGrid(data) {\r\n var tempRowData = data; \r\n var modifiedreeferIds = this.props.formState.CommonBookingData.ReeferIds;// 2 3 5 \r\n var unitMasterReefersData = [];\r\n forEach(modifiedreeferIds, function (refId, bk) {\r\n var splittedReefer = refId.split(\"-\");\r\n var item = { reefer: splittedReefer[0], unitmaster: splittedReefer[1]}\r\n unitMasterReefersData.push(item);\r\n });\r\n var modefiedreefersonly = unitMasterReefersData.map(({ reefer }) => reefer);\r\n var originalIds = data.map(({ reeferId }) => reeferId); // 1 2 3\r\n var disList = [];\r\n var diffReefersModified = difference(modefiedreefersonly, originalIds);\r\n var diffReefersOriginal = difference(originalIds, modefiedreefersonly);\r\n if (diffReefersModified != null && diffReefersModified.length > 0) {\r\n var diffReefersOriginal = difference(originalIds, modefiedreefersonly);\r\n var diffreefersTotal = [...diffReefersModified, ...diffReefersOriginal];\r\n let isEquals = isEqual(modefiedreefersonly, diffReefersModified);\r\n if (isEquals) {\r\n data = [];\r\n }\r\n forEach(diffreefersTotal, function (difrefId, bk) {\r\n var isfound = originalIds.filter(x => x == difrefId);\r\n if (isfound.length > 0) {\r\n var disAcc = data.filter(x => x.reeferId == difrefId);\r\n disList.push(disAcc[0]);\r\n\r\n remove(data, x => x.reeferId === difrefId);\r\n }\r\n else {\r\n var itm = unitMasterReefersData.filter(x => x.reefer == difrefId);\r\n var item = {\r\n action: '', reeferId: itm[0].reefer, cargoCare: tempCargoCareProfile, accessCodes: tempaccCode, bookedTemperature: tempBookedTemperature,\r\n bookedTemperatureQualifier: tempBookedTemperatureUnit, bookedTemperatureMin: tempBookedTemperatureMin, bookedTemperatureMax: tempBookedTemperatureMax,\r\n humidity: tempHumiditySetPoint, commodity: tempCommodityName, STCC: tempSTCC, HS: tempHSCode, gensetId: tempGensetId, ventSetting: tempVentSettings,\r\n HVFlag: tempHighValueCargo, serviceLevel: tempServiceLevel, CAFlag: tempCARequire, O2Setpoint: tempO2SetPoint, O2SetpointMin: tempO2Min, O2SetpointMax: tempO2Max,\r\n CO2Setpoint: tempCO2SetPoint, CO2SetpointMin: tempCO2Min, CO2SetpointMax: tempCO2Max, CTFlag: tempCTRequire,\r\n CTDays: tempCTDays, USDAMaxTemperature: tempCTMaxTemperature, postCTTemperature: tempPostCTTemperature, postCTTemperatureDeviation: tempPostCTTemperatureRange, postCTVentSetting: tempPostCTVentSettings,\r\n UnitMasterId: itm[0].unitmaster, CustomerAccessGroupIdsStr: ''\r\n };\r\n data.push(item);\r\n }\r\n });\r\n var modefiedDisData = disList.map(dList => ({\r\n ...dList, action: 'dissociate'\r\n }));\r\n this.setState({ disassociaterowData: modefiedDisData });\r\n } else if (diffReefersOriginal != null && diffReefersOriginal.length > 0) {\r\n var diffreefersTotal = [...modefiedreefersonly, ...diffReefersOriginal];\r\n forEach(diffReefersOriginal, function (difrefId, bk) {\r\n var disAcc = data.filter(x => x.reeferId == difrefId);\r\n disList.push(disAcc[0]);\r\n\r\n remove(data, x => x.reeferId === difrefId);\r\n });\r\n \r\n var modefiedDisData = disList.map(dList => ({\r\n ...dList, action: 'dissociate'\r\n }));\r\n this.setState({ disassociaterowData: modefiedDisData });\r\n }\r\n var tempBookedTemperature = this.props.formState.CommonBookingData.BookedTemperature;\r\n var tempBookedTemperatureUnit = this.props.formState.CommonBookingData.BookedTemperatureUnit;\r\n var tempBookedTemperatureMin = this.props.formState.CommonBookingData.BookedTemperatureMin;\r\n var tempBookedTemperatureMax = this.props.formState.CommonBookingData.BookedTemperatureMax;\r\n var tempHumiditySetPoint = this.props.formState.CommonBookingData.HumiditySetPoint;\r\n var tempVentSettings = this.props.formState.CommonBookingData.VentSettings;\r\n var tempGensetId = this.props.formState.CommonBookingData.GensetId;\r\n var tempCommodityName = this.props.formState.CommonBookingData.CommodityName;\r\n var tempSTCC = this.props.formState.CommonBookingData.STCC;\r\n var tempHSCode = this.props.formState.CommonBookingData.HSCode;\r\n var tempServiceLevel = this.props.formState.CommonBookingData.ServiceLevel;\r\n var tempHighValueCargo = this.props.formState.CommonBookingData.HighValueCargo;\r\n var tempCargoCareProfile = this.props.formState.CommonBookingData.CargoCareProfile;\r\n var tempaccCode = this.props.formState.CommonBookingData.ThirdPartyAccess;\r\n var tempCACTNotRequired = this.props.formState.CommonBookingData.CACTNotRequired;\r\n var tempCTRequire = this.props.formState.CommonBookingData.CTRequire;\r\n var tempCARequire = this.props.formState.CommonBookingData.CARequire;\r\n var tempCACTDifferByReefer = this.props.formState.CommonBookingData.CACTDifferByReefer;\r\n var tempCTDays = this.props.formState.CommonBookingData.CTDays;\r\n var tempCTMaxTemperature = this.props.formState.CommonBookingData.CTMaxTemperature;\r\n var tempPostCTTemperature = this.props.formState.CommonBookingData.PostCTTemperature;\r\n var tempPostCTTemperatureRange = this.props.formState.CommonBookingData.PostCTTemperatureRange;\r\n var tempPostCTVentSettings = this.props.formState.CommonBookingData.PostCTVentSettings;\r\n var tempO2SetPoint = this.props.formState.CommonBookingData.O2SetPoint;\r\n var tempO2Min = this.props.formState.CommonBookingData.O2Min;\r\n var tempO2Max = this.props.formState.CommonBookingData.O2Max;\r\n var tempCO2SetPoint = this.props.formState.CommonBookingData.CO2SetPoint;\r\n var tempCO2Min = this.props.formState.CommonBookingData.CO2Min;\r\n var tempCO2Max = this.props.formState.CommonBookingData.CO2Max;\r\n if (this.props.formState.CommonBookingData.CACTDifferByReefer) { //RCNG-1070 Added Emptycheck for Grid Fileds\r\n var modefiedRowData = data.map(cd => ({\r\n ...cd,\r\n bookedTemperature: (tempBookedTemperature != null && tempBookedTemperature != '') ? tempBookedTemperature : cd.bookedTemperature,\r\n bookedTemperatureQualifier: (tempBookedTemperatureUnit != null && tempBookedTemperatureUnit != '') ? tempBookedTemperatureUnit : cd.bookedTemperatureQualifier,\r\n bookedTemperatureMin: (tempBookedTemperatureMin != null && tempBookedTemperatureMin != '') ? tempBookedTemperatureMin : cd.bookedTemperatureMin,\r\n bookedTemperatureMax: (tempBookedTemperatureMax != null && tempBookedTemperatureMax!='') ? tempBookedTemperatureMax : cd.bookedTemperatureMax,\r\n humidity: (tempHumiditySetPoint != null && tempHumiditySetPoint!='') ? tempHumiditySetPoint : cd.humidity,\r\n commodity: (tempCommodityName != null && tempCommodityName != '') ? tempCommodityName : cd.commodity,\r\n STCC: (tempSTCC != null && tempSTCC != '') ? tempSTCC : cd.STCC,\r\n HS: (tempHSCode != null && tempHSCode != '') ? tempHSCode : cd.HS,\r\n gensetId: (tempGensetId != null && tempGensetId != '') ? tempGensetId : cd.gensetId,\r\n ventSetting: (tempVentSettings != null && tempVentSettings != '') ? tempVentSettings : cd.ventSetting,\r\n HVFlag: tempHighValueCargo != null ? tempHighValueCargo != 'none' ? tempHighValueCargo : cd.HVFlag : cd.HVFlag,\r\n cargoCare: (tempCargoCareProfile != null && tempCargoCareProfile != '') ? tempCargoCareProfile : cd.cargoCare,\r\n accessCodes: (tempaccCode != null && tempaccCode != '') ? tempaccCode : cd.accessCodes,\r\n serviceLevel: (tempServiceLevel != null && tempServiceLevel != '') ? tempServiceLevel : cd.serviceLevel,\r\n CAFlag: cd.CAFlag,\r\n O2Setpoint: cd.CAFlag ? cd.O2Setpoint : '',\r\n O2SetpointMin: cd.CAFlag ? cd.O2SetpointMin : '',\r\n O2SetpointMax: cd.CAFlag ? cd.O2SetpointMax : '',\r\n CO2Setpoint: cd.CAFlag ? cd.CO2Setpoint : '',\r\n CO2SetpointMin: cd.CAFlag ? cd.CO2SetpointMin : '',\r\n CO2SetpointMax: cd.CAFlag ? cd.CO2SetpointMax : '',\r\n CTFlag: cd.CTFlag,\r\n CTDays: cd.CTFlag ? cd.CTDays : '',\r\n USDAMaxTemperature: cd.CTFlag ? cd.USDAMaxTemperature : '',\r\n postCTTemperature: cd.CTFlag ? cd.postCTTemperature : '',\r\n postCTTemperatureDeviation: cd.CTFlag ? cd.postCTTemperatureDeviation : '',\r\n postCTVentSetting: cd.CTFlag ? cd.postCTVentSetting : ''\r\n }));\r\n } else {\r\n var modefiedRowData = data.map(cd => ({\r\n ...cd,\r\n bookedTemperature: (tempBookedTemperature != null && tempBookedTemperature != '') ? tempBookedTemperature : cd.bookedTemperature,\r\n bookedTemperatureQualifier: (tempBookedTemperatureUnit != null && tempBookedTemperatureUnit != '') ? tempBookedTemperatureUnit : cd.bookedTemperatureQualifier,\r\n bookedTemperatureMin: (tempBookedTemperatureMin != null && tempBookedTemperatureMin != '') ? tempBookedTemperatureMin : cd.bookedTemperatureMin,\r\n bookedTemperatureMax: (tempBookedTemperatureMax != null && tempBookedTemperatureMax != '') ? tempBookedTemperatureMax : cd.bookedTemperatureMax,\r\n humidity: (tempHumiditySetPoint != null && tempHumiditySetPoint != '') ? tempHumiditySetPoint : cd.humidity,\r\n commodity: (tempCommodityName != null && tempCommodityName != '') ? tempCommodityName : cd.commodity,\r\n STCC: (tempSTCC != null && tempSTCC != '') ? tempSTCC : cd.STCC,\r\n HS: (tempHSCode != null && tempHSCode != '') ? tempHSCode : cd.HS,\r\n gensetId: (tempGensetId != null && tempGensetId != '' )? tempGensetId : cd.gensetId,\r\n ventSetting: (tempVentSettings != null && tempVentSettings != '') ? tempVentSettings : cd.ventSetting,\r\n HVFlag: (tempHighValueCargo != null && tempHighValueCargo != '') ? tempHighValueCargo != 'none' ? tempHighValueCargo : cd.HVFlag : cd.HVFlag,\r\n cargoCare: (tempCargoCareProfile != null && tempCargoCareProfile != '') ? tempCargoCareProfile : cd.cargoCare,\r\n accessCodes: (tempaccCode != null && tempaccCode!='') ? tempaccCode : cd.accessCodes,\r\n serviceLevel: (tempServiceLevel != null && tempServiceLevel !='') ? tempServiceLevel : cd.serviceLevel,\r\n CAFlag: tempCARequire == true ? tempCARequire : cd.CAFlag,\r\n O2Setpoint: (tempO2SetPoint != null && tempO2SetPoint != '') ? tempO2SetPoint : cd.CAFlag ? cd.O2Setpoint : '',\r\n O2SetpointMin: (tempO2Min != null && tempO2Min != '') ? tempO2Min : cd.CAFlag ? cd.O2SetpointMin : '',\r\n O2SetpointMax: (tempO2Max != null && tempO2Max != '') ? tempO2Max : cd.CAFlag ? cd.O2SetpointMax : '',\r\n CO2Setpoint: (tempCO2SetPoint != null && tempCO2SetPoint != '') ? tempCO2SetPoint : cd.CAFlag ? cd.CO2Setpoint : '',\r\n CO2SetpointMin: (tempCO2Min != null && tempCO2Min != '') ? tempCO2Min : cd.CAFlag ? cd.CO2SetpointMin : '',\r\n CO2SetpointMax: (tempCO2Max != null && tempCO2Max != '') ? tempCO2Max : cd.CAFlag ? cd.CO2SetpointMax : '',\r\n CTFlag: tempCTRequire == true ? tempCTRequire : cd.CTFlag,\r\n CTDays: (tempCTDays != null && tempCTDays!='') ? tempCTDays : cd.CTFlag ? cd.CTDays : '',\r\n USDAMaxTemperature: (tempCTMaxTemperature != null && tempCTMaxTemperature != '') ? tempCTMaxTemperature : cd.CTFlag ? cd.USDAMaxTemperature : '',\r\n postCTTemperature: (tempPostCTTemperature != null && tempPostCTTemperature != '') ? tempPostCTTemperature : cd.CTFlag ? cd.postCTTemperature : '',\r\n postCTTemperatureDeviation: (tempPostCTTemperatureRange!=null && tempPostCTTemperatureRange != '') ? tempPostCTTemperatureRange : cd.CTFlag ? cd.postCTTemperatureDeviation : '',\r\n postCTVentSetting: (tempPostCTVentSettings != null && tempPostCTVentSettings != '') ? tempPostCTVentSettings : cd.CTFlag ? cd.postCTVentSetting : ''\r\n }));\r\n }\r\n return modefiedRowData;\r\n\r\n }\r\n createColumnDefsForCACTDiffer() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false, width: 145, resizable: true, enableFillHandle: false, enableRangeSelection: false, suppressMovable: true },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: \"dropdownTempUnit\", cellRendererParams: { refTempUnitData: this.props.formState.RefTemperatureUnit }, editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value <= 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n //headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value < 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateWholeNumberCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 265, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 11), errorMessage: 'input value should not be exceed 11 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", cellClass: \"tooltipOverflow\", cellEditorParams: {\r\n validationCondition: value => (value.length >= 0 && value.length <= 1200), errorMessage: 'input value should not be exceed 1200 characters.', maxLength: '1201',cols: '50',rows: '6' }, cellEditor: \"gridValidateStrTextAreaCellEditorRenderer\", editable: true, width: 310, resizable: true, suppressMovable: true, valueGetter: (params) => { return Formatters.commoditystringTypeFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 7), errorMessage: 'input value should not be exceed 7 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 15), errorMessage: 'input value should not be exceed 15 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: \"gridDropdownHVCRenderer\", editable: true, width: 145, resizable: true, enableFillHandle: false, suppressMovable: true\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"CargoCareProfile\", cellRenderer: \"dropdownCCProfile\", cellRendererParams: { refCargoCareProfiles: this.props.formState.CargoCareProfiles }, editable: true, width: 145, resizable: true, enableFillHandle: false, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"accessCodes\", cellRenderer: \"dropdownThirdParty\", cellRendererParams: { refThirdParty: this.props.formState.Thirdparty }, cellEditorPopup: true, editable: true, width: 145, resizable: true, enableFillHandle: false, suppressMovable: true\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Controlled Atmosphere', width: 185,\r\n children: [\r\n {\r\n headerName: \"O2 SetPoint\", field: \"O2Setpoint\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }, width: 185, resizable: true, suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n },\r\n \r\n },\r\n },\r\n {\r\n headerName: \"O2 Min\", field: \"O2SetpointMin\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\",editable: function (params) {\r\n return ((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }\r\n },\r\n },\r\n {\r\n headerName: \"O2 Max\", field: \"O2SetpointMax\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }\r\n },\r\n },\r\n {\r\n headerName: \"CO2 SetPoint\", field: \"CO2Setpoint\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }\r\n },\r\n },\r\n {\r\n headerName: \"CO2 Min\", field: \"CO2SetpointMin\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }\r\n },\r\n },\r\n {\r\n headerName: \"CO2 Max\", field: \"CO2SetpointMax\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.CTDays === null || params.node.data.CTDays === '') && (params.node.data.USDAMaxTemperature === null || params.node.data.USDAMaxTemperature === '') && (params.node.data.postCTTemperature === null || params.node.data.postCTTemperature === '') && (params.node.data.postCTTemperatureDeviation === null || params.node.data.postCTTemperatureDeviation === '') && (params.node.data.postCTVentSetting === null || params.node.data.postCTVentSetting === ''));\r\n }\r\n },\r\n },\r\n {\r\n headerName: \"Clear CA\", field: \"\", cellRenderer: \"gridButtonCACTClearRenderer\", width: 145, resizable: true, enableFillHandle: false, suppressMovable: true\r\n },\r\n\r\n ]\r\n },\r\n {\r\n headerName: 'Cold Treatment', width: 185,\r\n children: [\r\n\r\n {\r\n headerName: \"CT Days\", field: \"CTDays\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value < 45, errorMessage: 'input value must be less than 45' }, cellEditor: \"gridValidateWholeNumberCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }, width: 185, resizable: true, suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }\r\n }\r\n },\r\n {\r\n headerName: \"USDA Max Temp\", field: \"USDAMaxTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\",editable: function (params) {\r\n return ((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }\r\n }\r\n },\r\n {\r\n headerName: \"Post CT Temp\", field: \"postCTTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }\r\n }\r\n },\r\n {\r\n headerName: \"Post CT Temp Range\", field: \"postCTTemperatureDeviation\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 10), errorMessage: 'input must be numeric value between 0 to 10 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }\r\n }\r\n },\r\n {\r\n headerName: \"Post CT Vent Settings\", field: \"postCTVentSetting\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: function (params) {\r\n return ((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }, width: 265, resizable: true, columnGroupShow: 'open', suppressMovable: true, cellClassRules: {\r\n 'gray-bg': params => {\r\n return !((params.node.data.O2Setpoint === '' || params.node.data.O2Setpoint === null) && (params.node.data.O2SetpointMin === '' || params.node.data.O2SetpointMin === null) && (params.node.data.O2SetpointMax === '' || params.node.data.O2SetpointMax === null) && (params.node.data.CO2Setpoint === '' || params.node.data.CO2Setpoint === null) && (params.node.data.CO2SetpointMin === '' || params.node.data.CO2SetpointMin === null) && (params.node.data.CO2SetpointMax === '' || params.node.data.CO2SetpointMax === null));\r\n }\r\n }\r\n },\r\n {\r\n headerName: \"Clear CT\", field: \"\", cellRenderer: \"gridButtonCACTClearRenderer\", width: 145, resizable: true, enableFillHandle: false, suppressMovable: true\r\n },\r\n ]\r\n },\r\n ]\r\n }\r\n\r\n createColumnDefsForCTOnly() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false, width: 145, resizable: true, suppressMovable:true },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: \"dropdownTempUnit\", cellRendererParams: { refTempUnitData: this.props.formState.RefTemperatureUnit }, editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value <= 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n //headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value < 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateWholeNumberCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 265, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 11), errorMessage: 'input value should not be exceed 11 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 1200), errorMessage: 'input value should not be exceed 1200 characters.', maxLength: '1201', cols: '50', rows: '6' }, cellEditor: \"gridValidateStrTextAreaCellEditorRenderer\", editable: true, width: 310, resizable: true, suppressMovable: true, valueGetter: (params) => { return Formatters.commoditystringTypeFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 7), errorMessage: 'input value should not be exceed 7 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 15), errorMessage: 'input value should not be exceed 15 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: \"gridDropdownHVCRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"CargoCareProfile\", cellRenderer: \"dropdownCCProfile\", cellRendererParams: { refCargoCareProfiles: this.props.formState.CargoCareProfiles }, editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"accessCodes\", cellRenderer: \"dropdownThirdParty\", cellRendererParams: { refThirdParty: this.props.formState.Thirdparty }, cellEditorPopup: true, editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Cold Treatment', width: 185,\r\n children: [\r\n\r\n {\r\n headerName: \"CT Days\", field: \"CTDays\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value < 45, errorMessage: 'input value must be less than 45' }, cellEditor: \"gridValidateWholeNumberCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable:true\r\n },\r\n {\r\n headerName: \"USDA Max Temp\", field: \"USDAMaxTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable:true\r\n },\r\n {\r\n headerName: \"Post CT Temp\", field: \"postCTTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable:true\r\n },\r\n {\r\n headerName: \"Post CT Temp Range\", field: \"postCTTemperatureDeviation\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 10), errorMessage: 'input must be numeric value between 0 to 10 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable:true\r\n },\r\n {\r\n headerName: \"Post CT Vent Settings\", field: \"postCTVentSetting\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 265, resizable: true, columnGroupShow: 'open', suppressMovable:true\r\n },\r\n ]\r\n },\r\n\r\n\r\n ]\r\n }\r\n createColumnDefsForCACTNotRequired() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false, width: 145, resizable: true, suppressMovable: true },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: \"dropdownTempUnit\", cellRendererParams: { refTempUnitData: this.props.formState.RefTemperatureUnit }, editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value <= 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n //headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value < 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateWholeNumberCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 265, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 11), errorMessage: 'input value should not be exceed 11 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 1200), errorMessage: 'input value should not be exceed 1200 characters.', maxLength: '1201', cols: '50', rows: '6' }, cellEditor: \"gridValidateStrTextAreaCellEditorRenderer\", editable: true, width: 310, resizable: true, suppressMovable: true, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 7), errorMessage: 'input value should not be exceed 7 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 15), errorMessage: 'input value should not be exceed 15 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: \"gridDropdownHVCRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"CargoCareProfile\", cellRenderer: \"dropdownCCProfile\", cellRendererParams: { refCargoCareProfiles: this.props.formState.CargoCareProfiles }, editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"accessCodes\", cellRenderer: \"dropdownThirdParty\", cellRendererParams: { refThirdParty: this.props.formState.Thirdparty }, cellEditorPopup: true, editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n ]\r\n }\r\n ]\r\n }\r\n\r\n createColumnDefsForCAOnly() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false, width: 145, resizable: true, suppressMovable: true },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: \"dropdownTempUnit\", cellRendererParams: { refTempUnitData: this.props.formState.RefTemperatureUnit }, editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= -100 && value <= 100), errorMessage: 'input must be numeric value between -100 to 100 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value <= 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n //headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value < 100, errorMessage: 'input value must be less than 100' }, cellEditor: \"gridValidateWholeNumberCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 265, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 11), errorMessage: 'input value should not be exceed 11 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 1200), errorMessage: 'input value should not be exceed 1200 characters.',maxLength: '1201', cols: '50', rows: '6' }, cellEditor: \"gridValidateStrTextAreaCellEditorRenderer\", editable: true, width: 310, resizable: true, suppressMovable: true, valueGetter: (params) => { return Formatters.commoditystringTypeFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 7), errorMessage: 'input value should not be exceed 7 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 15), errorMessage: 'input value should not be exceed 15 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value.length >= 0 && value.length <= 10), errorMessage: 'input value should not be exceed 10 characters(special characters not allowed).' }, cellEditor: \"gridValidateStringCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: \"gridDropdownHVCRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"CargoCareProfile\", cellRenderer: \"dropdownCCProfile\", cellRendererParams: { refCargoCareProfiles: this.props.formState.CargoCareProfiles }, editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"accessCodes\", cellRenderer: \"dropdownThirdParty\", cellRendererParams: { refThirdParty: this.props.formState.Thirdparty }, cellEditorPopup: true, editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Controlled Atmosphere', width: 185,\r\n children: [\r\n {\r\n headerName: \"O2 SetPoint\", field: \"O2Setpoint\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, suppressMovable: true\r\n },\r\n {\r\n headerName: \"O2 Min\", field: \"O2SetpointMin\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open',suppressMovable: true\r\n },\r\n {\r\n headerName: \"O2 Max\", field: \"O2SetpointMax\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true\r\n },\r\n {\r\n headerName: \"CO2 SetPoint\", field: \"CO2Setpoint\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true\r\n },\r\n {\r\n headerName: \"CO2 Min\", field: \"CO2SetpointMin\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true\r\n },\r\n {\r\n headerName: \"CO2 Max\", field: \"CO2SetpointMax\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: true, width: 145, resizable: true, columnGroupShow: 'open', suppressMovable: true\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n }\r\n\r\n createColumnDefsForCACTDifferForView() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: ReeferCellRenderer.TemperatureUnitFormatter, editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Booked Temp Max\", field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", editable: false, width: 265,\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", editable: false, width: 310, valueGetter: (params) => { return Formatters.commoditystringTypeFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter,\r\n },\r\n {\r\n headerName: \"STCC\", field: \"STCC\", editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: ReeferCellRenderer.isHighValueCargoFormatter, editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"cargoCare\", cellRenderer: ReeferCellRenderer.CargoCareProfileFormatter, editable: false, width: 145,\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"CAGName\", editable: false, width: 160,\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Controlled Atmosphere', width: 185,\r\n children: [\r\n {\r\n headerName: \"O2 SetPoint\", field: \"O2Setpoint\", cellClass: \"tooltipOverflow\", editable: false, width: 185, resizable: true\r\n },\r\n {\r\n headerName: \"O2 Min\", field: \"O2SetpointMin\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"O2 Max\", field: \"O2SetpointMax\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"CO2 SetPoint\", field: \"CO2Setpoint\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"CO2 Min\", field: \"CO2SetpointMin\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"CO2 Max\", field: \"CO2SetpointMax\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Cold Treatment', width: 185,\r\n children: [\r\n\r\n {\r\n headerName: \"CT Days\", field: \"CTDays\", cellClass: \"tooltipOverflow\", editable: false, width: 185, resizable: true,\r\n },\r\n {\r\n headerName: \"USDA Max Temp\", field: \"USDAMaxTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"Post CT Temp\", field: \"postCTTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"Post CT Temp Range\", field: \"postCTTemperatureDeviation\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"Post CT Vent Settings\", field: \"postCTVentSetting\", editable: false, width: 265, resizable: true, columnGroupShow: 'open'\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n\r\n createColumnDefsForCTOnlyForView() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false, width: 145, resizable: true },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: ReeferCellRenderer.TemperatureUnitFormatter, editable: false, width: 145, resizable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", cellClass: \"tooltipOverflow\", editable: false, width: 265, resizable: true,\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", cellClass: \"tooltipOverflow\", editable: false, width: 310, resizable: true, valueGetter: (params) => { return Formatters.commoditystringTypeFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: ReeferCellRenderer.isHighValueCargoFormatter, editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"cargoCare\", cellRenderer: ReeferCellRenderer.CargoCareProfileFormatter, editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"CAGName\", editable: false, width: 160, resizable: true,\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Cold Treatment', width: 185,\r\n children: [\r\n\r\n {\r\n headerName: \"CT Days\", field: \"CTDays\", cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => value < 45, errorMessage: 'input value must be less than 45' }, cellEditor: \"gridValidateWholeNumberCellEditorRenderer\", editable: false, width: 185, resizable: true,\r\n },\r\n {\r\n headerName: \"USDA Max Temp\", field: \"USDAMaxTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"Post CT Temp\", field: \"postCTTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 25), errorMessage: 'input must be numeric value between 0 to 25 with one digit after decimal.' }, editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"Post CT Temp Range\", field: \"postCTTemperatureDeviation\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", cellEditorParams: { validationCondition: value => (value >= 0 && value <= 10), errorMessage: 'input must be numeric value between 0 to 10 with one digit after decimal.' }, cellEditor: \"gridValidateNumericCellEditorRenderer\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"Post CT Vent Settings\", field: \"postCTVentSetting\", editable: false, width: 265, resizable: true, columnGroupShow: 'open'\r\n },\r\n ]\r\n },\r\n ]\r\n }\r\n\r\n createColumnDefsForCACTNotRequiredForView() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n {\r\n headerName: \"Reefer ID\", field: \"reeferId\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true\r\n },\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellClass: \"tooltipOverflow\", cellRenderer: ReeferCellRenderer.TemperatureUnitFormatter, editable: false, width: 145, resizable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", cellClass: \"tooltipOverflow\", editable: false, width: 265, resizable: true,\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", cellClass: \"tooltipOverflow\", editable: false, width: 310, resizable: true, valueGetter: (params) => { return Formatters.commoditystringTypeFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellClass: \"tooltipOverflow\", cellRenderer: ReeferCellRenderer.isHighValueCargoFormatter, editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"cargoCare\", cellClass: \"tooltipOverflow\", cellRenderer: ReeferCellRenderer.CargoCareProfileFormatter, editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"CAGName\", cellClass: \"tooltipOverflow\", editable: false, width: 160, resizable: true,\r\n },\r\n ]\r\n }\r\n ]\r\n }\r\n\r\n createColumnDefsForCAOnlyForView() {\r\n return [\r\n {\r\n headerName: 'Reefer Booking Data',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"reeferId\", editable: false, width: 145, resizable: true },\r\n\r\n {\r\n headerName: \"Booked Temp\", field: \"bookedTemperature\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Temp Qualifier\", field: \"bookedTemperatureQualifier\", cellRenderer: ReeferCellRenderer.TemperatureUnitFormatter, editable: false, width: 145, resizable: true\r\n },\r\n {\r\n headerName: \"Booked Temp Min\", field: \"bookedTemperatureMin\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Booked Temp Max\",\r\n field: \"bookedTemperatureMax\", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Humidity Setpoint (%)\", field: \"humidity\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Vent Settings\", field: \"ventSetting\", cellClass: \"tooltipOverflow\", editable: false, width: 265, resizable: true,\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"gensetId\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Commodity Name\", field: \"commodity\", cellClass: \"tooltipOverflow\", editable: false, width: 310, resizable: true, valueGetter: (params) => { return Formatters.commoditystringTypeFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeCommodityValueFormatter\r\n //headerName: \"Commodity Name\", field: \"commodity\",width: 502,editable: false,cellEditor: 'agLargeTextCellEditor',\r\n //cellEditorParams: {\r\n // maxLength: '300', // override the editor defaults\r\n // cols: '50',\r\n // rows: '6'\r\n //}\r\n },\r\n\r\n {\r\n headerName: \"STCC\", field: \"STCC\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"HS Code\", field: \"HS\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Service Level\", field: \"serviceLevel\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"High Value Cargo\", field: \"HVFlag\", cellRenderer: ReeferCellRenderer.isHighValueCargoFormatter, editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"CargoCare Profile\", field: \"cargoCare\", cellRenderer: ReeferCellRenderer.CargoCareProfileFormatter, editable: false, width: 145, resizable: true,\r\n },\r\n {\r\n headerName: \"Third Party Access\", field: \"CAGName\", editable: false, width: 160, resizable: true,\r\n },\r\n ]\r\n },\r\n {\r\n headerName: 'Controlled Atmosphere', width: 185,\r\n children: [\r\n {\r\n headerName: \"O2 SetPoint\", field: \"O2Setpoint\", cellClass: \"tooltipOverflow\", editable: false, width: 185, resizable: true\r\n },\r\n {\r\n headerName: \"O2 Min\", field: \"O2SetpointMin\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"O2 Max\", field: \"O2SetpointMax\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"CO2 SetPoint\", field: \"CO2Setpoint\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"CO2 Min\", field: \"CO2SetpointMin\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n },\r\n {\r\n headerName: \"CO2 Max\", field: \"CO2SetpointMax\", cellClass: \"tooltipOverflow\", editable: false, width: 145, resizable: true, columnGroupShow: 'open'\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n //this.gridColumnApi = params.columnApi;\r\n }\r\n gridOptions(params: any) {\r\n //params.api.gridOptionsWrapper.gridOptions.rowData = rowData;\r\n //params.api.gridOptionsWrapper.gridOptions.frameworkComponents = {\r\n // editButtonRenderer: EditButtonRenderer\r\n //}\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n\r\n }\r\n \r\n UpdateCommonDataFromGridData() {\r\n var rowdata = self.state.rowData;\r\n if (rowdata.length > 1) {\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: self.state.CommonBookingData.CACTNotRequired, CTRequire: self.state.CommonBookingData.CTRequire, CARequire: self.state.CommonBookingData.CARequire, CACTDifferByReefer: self.state.CommonBookingData.CACTDifferByReefer,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName:''\r\n };\r\n var bookedTemperatureCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperature === item.bookedTemperature) === i\r\n );\r\n if (bookedTemperatureCount.length > 0 && bookedTemperatureCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperature = bookedTemperatureCount[0].bookedTemperature;\r\n }\r\n var bookedTemperatureMaxCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureMax === item.bookedTemperatureMax) === i\r\n );\r\n if (bookedTemperatureMaxCount.length > 0 && bookedTemperatureMaxCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureMax = bookedTemperatureMaxCount[0].bookedTemperatureMax;\r\n }\r\n var bookedTemperatureMinCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureMin === item.bookedTemperatureMin) === i\r\n );\r\n if (bookedTemperatureMinCount.length > 0 && bookedTemperatureMinCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureMin = bookedTemperatureMinCount[0].bookedTemperatureMin;\r\n }\r\n\r\n\r\n var bookedTemperatureQualifierCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureQualifier === item.bookedTemperatureQualifier) === i\r\n );\r\n if (bookedTemperatureQualifierCount.length > 0 && bookedTemperatureQualifierCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureUnit = bookedTemperatureQualifierCount[0].bookedTemperatureQualifier;\r\n }\r\n\r\n var humidityCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.humidity === item.humidity) === i\r\n );\r\n if (humidityCount.length > 0 && humidityCount.length == 1) {\r\n emptyCommonBookingData.HumiditySetPoint = humidityCount[0].humidity;\r\n }\r\n var ventSettingCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.ventSetting === item.ventSetting) === i\r\n );\r\n if (ventSettingCount.length > 0 && ventSettingCount.length == 1) {\r\n emptyCommonBookingData.VentSettings = ventSettingCount[0].ventSetting;\r\n }\r\n var gensetIdCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.gensetId === item.gensetId) === i\r\n );\r\n if (gensetIdCount.length > 0 && gensetIdCount.length == 1) {\r\n emptyCommonBookingData.GensetId = gensetIdCount[0].gensetId;\r\n }\r\n var commodityCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.commodity === item.commodity) === i\r\n );\r\n if (commodityCount.length > 0 && commodityCount.length == 1) {\r\n emptyCommonBookingData.CommodityName = commodityCount[0].commodity;\r\n }\r\n\r\n var STCCCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.STCC === item.STCC) === i\r\n );\r\n if (STCCCount.length > 0 && STCCCount.length == 1) {\r\n emptyCommonBookingData.STCC = STCCCount[0].STCC;\r\n }\r\n\r\n\r\n var HSCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.HS === item.HS) === i\r\n );\r\n if (HSCount.length > 0 && HSCount.length == 1) {\r\n emptyCommonBookingData.HSCode = HSCount[0].HS;\r\n }\r\n var serviceLevelCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.serviceLevel === item.serviceLevel) === i\r\n );\r\n if (serviceLevelCount.length > 0 && serviceLevelCount.length == 1) {\r\n emptyCommonBookingData.ServiceLevel = serviceLevelCount[0].serviceLevel;\r\n }\r\n var HVFlagCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.HVFlag === item.HVFlag) === i\r\n );\r\n if (HVFlagCount.length > 0 && HVFlagCount.length == 1) {\r\n emptyCommonBookingData.HighValueCargo = HVFlagCount[0].HVFlag;\r\n }\r\n var cargoCareCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.cargoCare === item.cargoCare) === i\r\n );\r\n if (cargoCareCount.length > 0 && cargoCareCount.length == 1) {\r\n emptyCommonBookingData.CargoCareProfile = cargoCareCount[0].cargoCare;\r\n }\r\n var accessCodesCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.accessCodes === item.accessCodes) === i\r\n );\r\n if (accessCodesCount.length > 0 && accessCodesCount.length == 1) {\r\n emptyCommonBookingData.ThirdPartyAccess = accessCodesCount[0].accessCodes;\r\n }\r\n var CAFlagCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CAFlag === item.CAFlag) === i\r\n );\r\n if (CAFlagCount.length > 0 && CAFlagCount.length == 1) {\r\n emptyCommonBookingData.CARequire = CAFlagCount[0].CAFlag;\r\n }\r\n var CTFlagCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CTFlag === item.CTFlag) === i\r\n );\r\n if (CTFlagCount.length > 0 && CTFlagCount.length == 1) {\r\n emptyCommonBookingData.CTRequire = CTFlagCount[0].CTFlag;\r\n }\r\n var O2SetpointCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2Setpoint === item.O2Setpoint) === i\r\n );\r\n if (O2SetpointCount.length > 0 && O2SetpointCount.length == 1) {\r\n emptyCommonBookingData.O2SetPoint = O2SetpointCount[0].O2Setpoint;\r\n }\r\n var O2SetpointMaxCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2SetpointMax === item.O2SetpointMax) === i\r\n );\r\n if (O2SetpointMaxCount.length > 0 && O2SetpointMaxCount.length == 1) {\r\n emptyCommonBookingData.O2Max = O2SetpointMaxCount[0].O2SetpointMax;\r\n }\r\n\r\n var O2SetpointMinCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2SetpointMin === item.O2SetpointMin) === i\r\n );\r\n if (O2SetpointMinCount.length > 0 && O2SetpointMinCount.length == 1) {\r\n emptyCommonBookingData.O2Min = O2SetpointMinCount[0].O2SetpointMin;\r\n }\r\n var CO2SetpointCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2Setpoint === item.CO2Setpoint) === i\r\n );\r\n if (CO2SetpointCount.length > 0 && CO2SetpointCount.length == 1) {\r\n emptyCommonBookingData.CO2SetPoint = CO2SetpointCount[0].CO2Setpoint;\r\n }\r\n var CO2SetpointMaxCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2SetpointMax === item.CO2SetpointMax) === i\r\n );\r\n if (CO2SetpointMaxCount.length > 0 && CO2SetpointMaxCount.length == 1) {\r\n emptyCommonBookingData.CO2Max = CO2SetpointMaxCount[0].CO2SetpointMax;\r\n }\r\n var CO2SetpointMinCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2SetpointMin === item.CO2SetpointMin) === i\r\n );\r\n if (CO2SetpointMinCount.length > 0 && CO2SetpointMinCount.length == 1) {\r\n emptyCommonBookingData.CO2Min = CO2SetpointMinCount[0].CO2SetpointMin;\r\n }\r\n var CTDaysCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CTDays === item.CTDays) === i\r\n );\r\n if (CTDaysCount.length > 0 && CTDaysCount.length == 1) {\r\n emptyCommonBookingData.CTDays = CTDaysCount[0].CTDays;\r\n }\r\n var USDAMaxTemperatureCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.USDAMaxTemperature === item.USDAMaxTemperature) === i\r\n );\r\n if (USDAMaxTemperatureCount.length > 0 && USDAMaxTemperatureCount.length == 1) {\r\n emptyCommonBookingData.CTMaxTemperature = USDAMaxTemperatureCount[0].USDAMaxTemperature;\r\n }\r\n var postCTTemperatureCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperature === item.postCTTemperature) === i\r\n );\r\n if (postCTTemperatureCount.length > 0 && postCTTemperatureCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperature = postCTTemperatureCount[0].postCTTemperature;\r\n }\r\n var postCTTemperatureCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperature === item.postCTTemperature) === i\r\n );\r\n if (postCTTemperatureCount.length > 0 && postCTTemperatureCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperature = postCTTemperatureCount[0].postCTTemperature;\r\n }\r\n var postCTTemperatureDeviationCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperatureDeviation === item.postCTTemperatureDeviation) === i\r\n );\r\n if (postCTTemperatureDeviationCount.length > 0 && postCTTemperatureDeviationCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperatureRange = postCTTemperatureDeviationCount[0].postCTTemperatureDeviation;\r\n }\r\n var postCTVentSettingCount = rowdata.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTVentSetting === item.postCTVentSetting) === i\r\n );\r\n if (postCTVentSettingCount.length > 0 && postCTVentSettingCount.length == 1) {\r\n emptyCommonBookingData.PostCTVentSettings = postCTVentSettingCount[0].postCTVentSetting;\r\n }\r\n\r\n this.setState({ CommonBookingData: emptyCommonBookingData }, () => { self.props.renderWizardPage(3, self.state, 4); });\r\n } else {\r\n self.props.renderWizardPage(3, self.state, 4);\r\n }\r\n }\r\n\r\n static BackScreen() {\r\n if (self.props.formState.isViewOnly) {\r\n if (self.props.formState.IsOpen == 'View') {\r\n if(self.props.viewPopup == true)\r\n ViewBookingDetails.UpdateButtonStyle(false);\r\n else\r\n ViewBooking.UpdateButtonStyle(false);\r\n\r\n self.props.renderWizardPage(1, self.state, 4);\r\n\r\n }\r\n self.props.renderWizardPage(1, self.state, 2);\r\n }\r\n else\r\n self.UpdateCommonDataFromGridData();\r\n \r\n }\r\n static NextScreen() {\r\n //if (self.state.ReeferIds != null && self.state.ReeferIds != '' && self.state.ReeferIds != undefined)\r\n self.props.renderWizardPage(5, self.state, 4);\r\n //else\r\n // PopupWindow.showErrorMessage(\"Alert\", \"Please Select at least one Reefer.\");\r\n }\r\n static finishWizard() {\r\n const instances = self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.getCellEditorInstances();\r\n if (instances.length > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Cell is still open for validation,Click on focused cell and press enter key.\");\r\n }\r\n else {\r\n //if (self.state.ReeferIds != null && self.state.ReeferIds != '' && self.state.ReeferIds != undefined)\r\n self.props.finishWizard(self.state, 4);\r\n //else\r\n // PopupWindow.showErrorMessage(\"Alert\", \"Please Select at least one Reefer.\");\r\n }\r\n } \r\n public render() {\r\n\r\n return
\r\n {/**/}\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
;\r\n\r\n }\r\n}\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/Unplug.404571c2.svg\";","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport $ from 'jquery';\r\nimport Workbook from 'react-excel-workbook';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Select from 'react-select';\r\nimport forEach from 'lodash/forEach';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n selectedheaderName: string;\r\n isClearable: boolean;\r\n AllColumns:any[];\r\n PrevGroupId: number;\r\n PrevColId: string;\r\n IsEnableServerSide: boolean;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridReeferStatusToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData,\r\n formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderGridPreferenceHtml: '', renderExportToExcelHTML: '',\r\n selectedheaderName: null, isClearable: true, AllColumns: [], PrevGroupId: -1, PrevColId: null, IsEnableServerSide: false\r\n };\r\n self = this;\r\n }\r\n \r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n //return ;\r\n return ;\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId:any) {\r\n return ;\r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Email
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderEmailHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n modelDialogGridPreferenceHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Grid Preference
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderGridPreferenceHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n modelDialogExportToExcelHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Export To Excel
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderExportToExcelHTML}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardStatus_' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) { \r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ReeferStatusGrid\" || this.props.formName == \"ReeferHistoryGrid\" || this.props.formName == \"PTResultGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2,\r\n this.props.formName, this.props.parentchild, functionId, widgetId, this.props.gridApiParams,\r\n this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData\r\n );\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"ReeferStatusGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ReeferStatusGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadReeferExcel').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#ReeferQucikFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n onQuickFilterChanged(event: any) { \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n ColumnChange(event:any) {\r\n if (event != null) {\r\n var name: string = event.value;\r\n this.setState({\r\n selectedheaderName: name\r\n });\r\n var defaultKeys = this.state.AllColumns.filter(x => x.colDef.headerName == name);\r\n var colId = defaultKeys[0].colId;\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n if (defaultKeys.length > 0 && defaultKeys[0].colDef.columnGroupShow == \"open\") {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader(); \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(defaultKeys[0].parent.groupId, true);\r\n //this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.onGroupExpandedOrCollapsed();\r\n setTimeout(() => {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n }, 200);\r\n this.setState({ PrevGroupId: defaultKeys[0].parent.groupId, PrevColId: colId });\r\n }\r\n else {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n this.setState({ PrevGroupId: -1, PrevColId: colId });\r\n }\r\n }\r\n else {\r\n this.setState({\r\n selectedheaderName: null\r\n });\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n }\r\n }\r\n static GetColumns(params: any) {\r\n var newColumns = [];\r\n var Displayedcolumns = params.columnApi.getAllDisplayedColumnGroups();\r\n forEach(Displayedcolumns, function (value, key) {\r\n forEach(value.children, function (bv, bk) {\r\n newColumns.push(bv);\r\n });\r\n });\r\n self.setState({ AllColumns: newColumns})\r\n }\r\n\r\n public render() {\r\n if (this.props.formName == \"ReeferStatusGrid\") {\r\n if (this.state.AllColumns!=null && this.state.AllColumns.length >0) {\r\n var Alldisplayedcolumns = this.state.AllColumns;\r\n\r\n if (Alldisplayedcolumns != undefined && Alldisplayedcolumns != null && Alldisplayedcolumns.length > 0) {\r\n var Selectedcolumns = Alldisplayedcolumns.map(function (Columns) {\r\n return (\r\n { value: Columns.colDef.headerName, label: Columns.colDef.headerName }\r\n );\r\n });\r\n }\r\n }\r\n }\r\n return
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n {(this.props.formName == \"ReeferStatusGrid\") ?\r\n : \"\"}\r\n {(this.props.formName == \"DryStatusGrid\") ?\r\n : \"\"}\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
\r\n
\r\n {JSON.parse(sessionStorage.getItem('SSRM')) == false ?\r\n
\r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
: ''}\r\n
\r\n \r\n
\r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogGridPreferenceHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
\r\n }\r\n}","import * as React from 'react';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport $ from 'jquery';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridChassisStatusToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData,\r\n formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderGridPreferenceHtml: '', renderExportToExcelHTML: ''\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n //return ;\r\n return ;\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Email
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderEmailHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n modelDialogGridPreferenceHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Grid Preference
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderGridPreferenceHtml}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n modelDialogExportToExcelHtml() {\r\n return
\r\n
\r\n
\r\n
\r\n
Export To Excel
\r\n \r\n \r\n
\r\n
\r\n {this.state.renderExportToExcelHTML}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardStatus_' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ChassisStatusGrid\" || this.props.formName == \"ChassisHistoryGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName, this.props.parentchild,\r\n functionId, widgetId, this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"ChassisStatusGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ChassisStatusGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadChassisStatus').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#ChassisQuickFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.props.formName == \"ChassisStatusGrid\" ?\r\n : \"\"}\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
\r\n
\r\n
\r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
\r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
\r\n }\r\n}","/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { ChassisHistoryGrid } from './ChassisHistoryGrid';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ChassisFormatter from '../../actions/ChassisFormatter';\r\nimport { ChassisCellRenderer } from '../../actions/ChassisCellRenderer';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport $ from 'jquery';\r\nimport uniq from 'lodash/uniq';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport './../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { ChassisStatusToggleButtonsFilter } from '../childcomponents/ChassisStatusToggleButtonsFilter';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { GridChassisStatusToolBar } from '../sharedcomponents/GridChassisStatusToolBar';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport UserRights from '../../actions/UserRights';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ChassisGridState {\r\n loading: boolean;\r\n Filters: server.ReeferSearchFilters;\r\n rowData: any[];\r\n columnDefs: any[];\r\n selectedItems: any[];\r\n overlayLoadingTemplate: any;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string;\r\n reeferFormatter: server.ReeferFormatter[];\r\n pageSize: any;\r\n gridApiParams: any;\r\n tempFilters: server.ReeferSearchFilters;\r\n exportFields: ExportFields;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar currentMousePos = { x: -1, y: -1 };\r\nvar self;\r\nvar selectedRowData;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customerTypeCd;\r\nvar functionId;\r\nvar customerAccessData: any[];\r\nvar columnDefs: any[];\r\nvar columnDefs2: any[];\r\nvar commandIssued: boolean = false;\r\nvar chassisAssetSensors: any[];\r\nvar selectedRowIndex: number;\r\nvar IsTriggered: boolean;\r\n\r\nexport class ChassisStatusGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n customerAccessData = [];\r\n selectedRowIndex = -1;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n //customerTypeCd = props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n functionId = 61; // functionId for Chassis Status Grid\r\n // new FilterDto();\r\n var overlayTemplate = 'Loading...';\r\n var exportData = new ExportFields();\r\n this.state = {\r\n loading: true,\r\n Filters: this.props.statusFilter,\r\n rowData: this.props.propsChassisData,\r\n columnDefs: [],\r\n selectedItems: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n reeferFormatter: [],\r\n tempFilters: null,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n autoGroupColumnDef: { minWidth: 200 }\r\n };\r\n \r\n\r\n self = this;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n const propsChassisData: any = this.props.propsChassisData;\r\n if (propsChassisData !== nextprops.propsChassisData)\r\n this.setState({ rowData: [] });\r\n if (nextprops.propsChassisData != null && nextprops.propsChassisData != undefined && nextprops.propsChassisData.length > 0 && nextprops.statusFilter.StatusFilters != undefined\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.AllReefer && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.Running\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.Stopped && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.MissedRunning\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.MissedStopped && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.AllMicroAlaram\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.MASevere && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.MAMinor\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.AllCargoCare && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.CCSevere\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.CCMinor && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.CCInformational\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.PowerOffNotReporting && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.PowerOffReporting\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.PowerOnNotReporting && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.PowerOnReporting\r\n && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.DryInGeofence && nextprops.statusFilter.StatusFilters[0] != ReeferAndGensetAndDryStatusEnum.DryOutGeofence) {\r\n this.setState({ rowData: nextprops.propsChassisData });\r\n \r\n if (self.state.ToggleSearchParams != null && self.state.ToggleSearchParams != undefined) {\r\n self.filterChassisStatusGrid(self.state.ToggleSearchParams);\r\n }\r\n }\r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns() {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n chassisAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'C');\r\n if (chassisAssetSensors != null && chassisAssetSensors != undefined && chassisAssetSensors.length > 0) {\r\n $.each(chassisAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', enableRowGroup: true, sortable: true, headerClass: val.OORText, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, enableRowGroup: true, sortable: true, headerClass: val.OORText, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n //var columnDefs = this.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefs });\r\n \r\n columnDefs2 = this.createColumnDefs();\r\n setTimeout(() => {\r\n this.renderCustomerDeviceTypeSensorColumns();\r\n }, 1000); \r\n //var functionID = 1;\r\n //var url = Config.ApiBaseUrl + '/api/User/GetDefaultSearchParams?FunctionId=' + functionID;\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data != null && data != undefined) {\r\n // if (!data.DefaultSearch)\r\n // this.props.requestChassisAdvanceSearch(this.state.Filters);\r\n // }\r\n // else\r\n // this.props.requestChassisAdvanceSearch(this.state.Filters);\r\n // });\r\n //this.props.requestReeferAdvanceSearch(this.state.Filters);\r\n self.setState({ tempFilters: this.state.Filters });\r\n $('.ag-column-hover').contextmenu(function (e) {\r\n var relX = e.pageX - $('.ag-column-hover').offset().left;\r\n var relY = (e.pageY - $('.ag-column-hover').offset().top);\r\n $(\".chassiscontext-menu\").toggle(100).css({\r\n top: relY,\r\n left: relX\r\n });\r\n $(\"#chassiscontextmenu\").hide();\r\n $(\".chassiscontext-menu\").hide();\r\n e.preventDefault();\r\n });\r\n \r\n \r\n \r\n \r\n $(document).mousemove(function (event) {\r\n currentMousePos.x = event.pageX;\r\n currentMousePos.y = event.pageY;\r\n event.preventDefault();\r\n });\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReport\"));\r\n \r\n }\r\n\r\n onRefreshData = () => { \r\n $('#globalLoader').show();\r\n this.setState({\r\n rowData: this.state.rowData\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n $('#globalLoader').hide();\r\n };\r\n\r\n static ClearChassisStatusGridData() {\r\n if (self != undefined) {\r\n //ReeferCallout.ResetMapPushpins();\r\n selectedRowIndex = -1;\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) { \r\n if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\")\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n } \r\n }\r\n }\r\n\r\n\r\n chassisContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.chassismapAction(this.state.selectedItems);\r\n break;\r\n case \"History\": this.chassishistoryAction(this.state.selectedItems);\r\n break;\r\n case \"CommandStatus\": this.chassiscommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.chassisdetailsAction(this.state.selectedItems, 'Chassis', 'CurrentDetails');\r\n break;\r\n case \"Copy\": this.chassisdetailsCopyAction();\r\n break;\r\n\r\n }\r\n }\r\n\r\n\r\n columnRowGroupChanged(params: any) {\r\n self.clearGridRowSelection(params);\r\n }\r\n\r\n /* WI 26971 implementation start */\r\n static validateChassisStatusHistoryMismatch(statusEventDttm: any, historyEventDttm: any) {\r\n IsTriggered = false;\r\n if (statusEventDttm != historyEventDttm)\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"New events are available for the Chassis Status grid. Refresh now?\", self.onRefreshChassisStatusGrid.bind(this), self.onCancelRefreshChassisStatusGrid.bind(this));\r\n }\r\n\r\n onCancelRefreshChassisStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n onRefreshChassisStatusGrid() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n self.refreshChassisStatusGridForNewEvents();\r\n }\r\n }\r\n\r\n refreshChassisStatusGridForNewEvents() {\r\n selectedRowIndex = -1;\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n }, () => this.ChassisSearchFilter(self.props.statusFilter, true, false));\r\n\r\n }\r\n /* WI 26971 implementation end */\r\n\r\n onRowDataChanged(params: any): void {\r\n var chassisIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n //var selItems = self.state.PrevSelectedItems;\r\n chassisIdSelected = self.state.PrevSelectedItems[0].ChassisCurrentConditionID;\r\n // gensetIdSelected = \"TEST0000540\";\r\n }\r\n commandIssued = false;\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n var gridData = self.state.rowData;\r\n if (gridData != null && gridData != undefined && gridData.length > 0) {\r\n TotalCount = gridData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && chassisIdSelected !== \"\") {\r\n let count = 0;\r\n if (chassisIdSelected) {\r\n commandIssued = true;\r\n params.api.forEachLeafNode((node) => {\r\n count = count + 1;\r\n if (node.data.ChassisCurrentConditionID === chassisIdSelected) {\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n //console.log('pageNo' + pageNo);\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n chassisdetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n chassisdetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n var isHistoryCall = false;\r\n\r\n if (selectedRowIndex != event.rowIndex) {\r\n selectedRowIndex = event.rowIndex;\r\n isHistoryCall = true;\r\n }\r\n\r\n if (event.data != null && event.data != undefined) {\r\n self.props.getLastSelectedRow(event.data);\r\n if (event.colDef.headerName === \"Comments\" && event.value === \"0\")\r\n this.chassisdetailsAction(this.state.selectedItems, 'Chassis', 'Comments');\r\n else if (isHistoryCall) \r\n //$('#globalLoader').show();\r\n ChassisHistoryGrid.ApplyChassisHistorySearch(event.data, false, self.props.chassisHistoryEnabled);\r\n //$(\"#globalLoader\").hide();\r\n }\r\n }\r\n\r\n chassisdetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var chassisdetails = data;\r\n this.props.chassisdetailsAction(chassisdetails, dataSource, isOpenVia);\r\n }\r\n\r\n gensethistoryAction(data: any) {\r\n var gensetdetails = data;\r\n this.props.gensethistoryAction(gensetdetails);\r\n }\r\n\r\n chassishistoryAction(data: any) {\r\n var chassisdetails = data;\r\n this.props.chassishistoryAction(chassisdetails);\r\n }\r\n\r\n chassismapAction(data: any) {\r\n var chassisdetails = data;\r\n this.props.chassisMapAction(chassisdetails);\r\n }\r\n\r\n chassiscommandstatusAction(data: any) {\r\n var chassisdetails = data;\r\n this.props.chassiscommandstatusAction(chassisdetails);\r\n }\r\n\r\n\r\n\r\n static SelectCurrentChassis(currentReefer: any) {\r\n self.state.gridApiParams.deselectAll();\r\n ChassisHistoryGrid.ClearHistoryGridData();\r\n var countRecordPerPage = 0;\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode(function (node) {\r\n countRecordPerPage = countRecordPerPage + 1;\r\n if (node.data.AssetNumber === currentReefer.AssetNumber) {\r\n var currentPage = Math.trunc(countRecordPerPage / self.state.gridApiParams.paginationProxy.pageSize);\r\n if (currentPage > 1) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.paginationGoToPage(currentPage);\r\n }\r\n\r\n node.setSelected(true);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureIndexVisible(node.rowIndex);\r\n self.setState({ selectedItems: node.data });\r\n self.props.getLastSelectedRow(node.data);\r\n //$('#globalLoader').show();\r\n ChassisHistoryGrid.ApplyChassisHistorySearch(node.data, true, self.props.chassisHistoryEnabled);\r\n }\r\n });\r\n }\r\n\r\n static SelectCurrentNode(currentReeferId: string) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode(function (node) {\r\n if (node.data.AssetNumber === currentReeferId) {\r\n node.setSelected(true);\r\n }\r\n });\r\n }\r\n\r\n static ApplyChassisSearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean) {\r\n self.ChassisSearchFilter(filters, eventsRefresh, true);\r\n }\r\n \r\n\r\n ChassisSearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean) {\r\n if (self != undefined) {\r\n $('#globalLoader').show();\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.showLoadingOverlay !== \"undefined\") {\r\n // self.state.gridApiParams.showLoadingOverlay();\r\n // self.state.gridApiParams.paginationGoToFirstPage();\r\n // self.state.gridApiParams.deselectAll();\r\n }\r\n }\r\n\r\n if (filters != null && filters != undefined) {\r\n var customAttributesInfo = {};\r\n var filterset: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null,\r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null\r\n , SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null //WI-26881\r\n };\r\n\r\n filterset.SelectedCountry = (filters.SelectedCountry == \"\" || filters.SelectedCountry == undefined) ? null : filters.SelectedCountry;\r\n filterset.SelectedGeofence = (filters.SelectedGeofence == \"\" || filters.SelectedGeofence == undefined) ? null : filters.SelectedGeofence;\r\n filterset.SelectedGeofenceInside = (filters.SelectedGeofenceInside == \"\" || filters.SelectedGeofenceInside == undefined) ? null : filters.SelectedGeofenceInside;\r\n filterset.SelectedInterval = (filters.SelectedInterval == \"\" || filters.SelectedInterval == undefined) ? null : filters.SelectedInterval;\r\n filterset.SelectedAssetTypes = (filters.SelectedAssetTypes == \"\" || filters.SelectedAssetTypes == undefined) ? null : filters.SelectedAssetTypes;\r\n filterset.SelectedAssetStates = (filters.SelectedAssetStates == \"\" || filters.SelectedAssetStates == undefined) ? null : filters.SelectedAssetStates;\r\n filterset.SelectedOem = (filters.SelectedOem == \"\" || filters.SelectedOem == undefined) ? null : filters.SelectedOem;\r\n filterset.SelectedReefer = (filters.SelectedReefer == \"\" || filters.SelectedReefer == undefined) ? null : filters.SelectedReefer;\r\n filterset.AllReefers = (filters.AllReefers == \"\" || filters.AllReefers == undefined) ? null : filters.AllReefers;\r\n filterset.SelectedVesselCode = (filters.SelectedVesselCode == \"\" || filters.SelectedVesselCode == undefined) ? null : filters.SelectedVesselCode;\r\n filterset.SelectedVesselCD = (filters.SelectedVesselCD == \"\" || filters.SelectedVesselCD == undefined) ? null : filters.SelectedVesselCD;//WI-26881\r\n filterset.SelectedVoyage = (filters.SelectedVoyage == \"\" || filters.SelectedVoyage == undefined) ? null : filters.SelectedVoyage;//WI-26881\r\n filterset.SelectedCall = (filters.SelectedCall == \"\" || filters.SelectedCall == undefined) ? null : filters.SelectedCall;//WI-26881\r\n filterset.StatusFilters = filters.StatusFilters;\r\n filterset.CustomAttributeFilters = filters.CustomAttributeFilters;\r\n self.setState({\r\n tempFilters: filterset\r\n });\r\n \r\n var resultSet = self.props.requestChassisAdvanceSearch(filterset, eventsRefresh, newSearch,true); \r\n }\r\n }\r\n \r\n }\r\n\r\n onGridReady(params: any) {\r\n //this.gridApi.sizeColumnsToFit();\r\n self.setState({ gridApiParams: params.api });\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 20);\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"ChassisStatusGrid\");\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ChassisStatusGrid\");\r\n }, 3000); \r\n }\r\n \r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 20);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"ChassisStatusGrid\");\r\n }, 3000); \r\n }\r\n\r\n static ClearSelection() {\r\n $('#globalLoader').show();\r\n selectedRowIndex = -1;\r\n //ChassisHistoryGrid.ClearHistoryGridData();\r\n //this.props.clearGridHeaderExtension();\r\n if (self != undefined) {\r\n self.state.gridApiParams.deselectAll();\r\n }\r\n \r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'chassis', self.state.reeferFormatter);\r\n $('#globalLoader').hide();\r\n }\r\n onGridScroll(params: any) {\r\n $(\".chassiscontext-menu\").hide();\r\n $(\"#chassiscontextmenu\").hide();\r\n }\r\n\r\n onGridPaginationChanged(params: any) {\r\n if (params.newPage) {\r\n self.props.clearGridHeaderExtension();\r\n if (!commandIssued)\r\n params.api.deselectAll();\r\n commandIssued = false;\r\n ChassisHistoryGrid.ClearHistoryGridData();\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'status');\r\n }\r\n\r\n //if (params.api.getDisplayedRowCount() == 1) {\r\n // var rowindex = 0;\r\n // var rowNode = params.api.getRowNode(rowindex);\r\n // // do something with the row, eg select it\r\n // if (rowNode != undefined && rowNode != null) {\r\n // rowNode.setSelected(true);\r\n // ChassisHistoryGrid.ApplyChassisHistorySearch(rowNode.data, false);\r\n // }\r\n //}\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.DeviceDataTime)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n onSort(params: any) {\r\n params.api.clearFocusedCell();\r\n this.clearGridRowSelection(params);\r\n }\r\n onGridSelectionChanged(params: any) {\r\n $(\"#chassiscontextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n //var selected = params.api.getFocusedCell();\r\n //var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n //ReeferCallout.ResetMapPushpins(); // Clear existing pushpins\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n //ReeferHistoryGrid.ApplyReeferHistorySearch(selectedRow);\r\n });\r\n //var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n self.props.getSelectedRow(selectedRows);\r\n //self.props.getLastSelectedRow(selectedRow.data);\r\n //$('#globalLoader').show();\r\n //ReeferHistoryGrid.ApplyReeferHistorySearch(selectedRow.data);\r\n //$(\"#gensetcontextmenu\").show();\r\n\r\n //var selectedItems = self.state.selectedItems;\r\n //self.setState({\r\n // selectedItems: selectedReeferData,\r\n // isChangeDeforstInterval: false,\r\n // pretripCmd: null,\r\n // modelTitle: '',\r\n // popUpHtml: ''\r\n //});\r\n\r\n //if (selectedReeferData.length > 1) {\r\n // $('#liDetailsRequiresRight').removeClass('enabled');\r\n // $('#liDetailsRequiresRight').addClass('disabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n //}\r\n //else {\r\n // $('#liDetailsRequiresRight').removeClass('disabled');\r\n // $('#liDetailsRequiresRight').addClass('enabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n // //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n //}\r\n //var forwardCommandParam = JSON.stringify(selectedReeferData);\r\n //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetAssetAssigned3rdParty';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data == \"assigned\") {\r\n // if ($(\"#liThirdPartyAccessRequiresRightChassis\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightChassis').removeClass('disabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRightChassis\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightChassis').addClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightChassis').removeClass('disabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightChassis').addClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightChassis').removeClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightChassis').addClass('disabled');\r\n\r\n // }\r\n // else if (data == \"unassigned\") {\r\n // if ($(\"#liThirdPartyAccessRequiresRightChassis\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightChassis').removeClass('disabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRightChassis\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightChassis').addClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightChassis').removeClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightChassis').addClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightChassis').removeClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightChassis').addClass('enabled');\r\n // }\r\n // else {\r\n // if ($(\"#liThirdPartyAccessRequiresRightChassis\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightChassis').removeClass('enabled');\r\n // if ($(\"#liThirdPartyAccessRequiresRightChassis\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRightChassis').addClass('disabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightChassis').removeClass('enabled');\r\n // if ($(\"#liUnassignFromCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRightChassis').addClass('disabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightChassis').removeClass('enabled');\r\n // if ($(\"#liAssignToCustomerRequiresRightChassis\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRightChassis').addClass('disabled');\r\n // }\r\n // });\r\n }\r\n\r\n }\r\n\r\n\r\n static ReeferStatusResult() {\r\n self.ChassisSearchFilter(self.state.tempFilters, false, false);\r\n }\r\n HideAllContextMenus() {\r\n $(\"#gensetcontextmenu\").hide();\r\n $(\".gensetcontext-menu\").hide();\r\n $(\"#drycontextmenu\").hide();\r\n $(\".drycontext-menu\").hide();\r\n $(\"#chassiscontextmenu\").hide();\r\n $(\".chassiscontext-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n $(\".context-menu\").hide();\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getChassisContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"ChassisCurrentConditionID\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var chassisCurrentConditionID = selectedrowNode.data.AssetMasterID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.AssetMasterID === chassisCurrentConditionID)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.AssetMasterID == selectedrowNode.data.AssetMasterID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.chassisContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('182'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.chassisContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('180'),\r\n disabled: UserRights.checkMenuItemDisabledForChassis(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.chassisContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('183'),\r\n },\r\n {\r\n name: 'Third Party Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('184,185'),\r\n disabled: UserRights.checkMenuItemDisabledForChassis(params, 'ThirdPartyAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignToCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('184'),\r\n disabled: UserRights.checkMenuItemDisabledForChassis(params, 'Assign'),\r\n },\r\n {\r\n name: 'Unassign From Customer',\r\n action: () => {\r\n this.popUpUnAssignFromCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('185'),\r\n disabled: UserRights.checkMenuItemDisabledForChassis(params, 'UnAssign'),\r\n },\r\n ],\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n\r\n //getChassisContextMenuItems(params: any) {\r\n // var flag = false;\r\n // var selected = params.api.getFocusedCell();\r\n\r\n // var setRowIndex = selected.rowIndex;\r\n // var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n // if (row != null && row != \"undefined\" && !row.group) {\r\n // var rowId = row.id;\r\n // var selectedrowNode = params.api.getRowNode(rowId);\r\n // //var selectedrowNode = params.api.getRowNode(setRowIndex);\r\n // //var tempArray = [];// if sort is clicked save in temp array\r\n // //params.api.forEachLeafNode(function (rowNode, index) {\r\n // // tempArray.push(rowNode);\r\n // //});\r\n\r\n // //var resortitem = tempArray[setRowIndex];\r\n // var sortflage = false;\r\n \r\n // var chassisCurrentConditionID = selectedrowNode.data.ChassisCurrentConditionID;\r\n // params.api.forEachLeafNode(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.ChassisCurrentConditionID === chassisCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.ChassisCurrentConditionID == selectedrowNode.data.ChassisCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // selectedrowNode.setSelected(true);\r\n // }\r\n\r\n // /*var selectedrowNode = params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n\r\n // var resortitem = tempArray[selected.rowIndex];\r\n // var chassisCurrentConditionID = resortitem.data.ChassisCurrentConditionID;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.ChassisCurrentConditionID === chassisCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.ChassisCurrentConditionID == selectedrowNode.data.ChassisCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n \r\n // //$(\".chassiscontext-menu\").show(); $(\"#chassiscontextmenu\").show();\r\n // //Excel.preventDefault();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n // */\r\n\r\n // $(document).contextmenu(function (e) {\r\n // self.HideAllContextMenus(); // landing page have multiple context menus close all\r\n // var divmenuwidth = 390;\r\n // var offset = $(\"#CHASSIS-grid .ag-column-hover\").offset();\r\n // if ((typeof (offset) != 'undefined') && offset != null) {\r\n // if (offset.left > 400) {\r\n // divmenuwidth = 390;\r\n // } else if (offset.left > 890) {\r\n // divmenuwidth = 690;\r\n // } else {\r\n // divmenuwidth = 40;\r\n // }\r\n // }\r\n // /// var relativeX = (e.pageX - offset.left);\r\n // if ((typeof (offset) != 'undefined') && offset != null) {\r\n // var relativeY = (e.pageY - offset.top + 50);\r\n // }\r\n // var relativeX = e.pageX - divmenuwidth;\r\n\r\n // if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n // relativeX = relativeX - (divmenuwidth + 5);\r\n // }\r\n // var height = $(window).height() - 200;\r\n // var halfheight = ($(window).height()) / 2;\r\n // if (height < relativeY) {\r\n // relativeY = (relativeY - halfheight) + 20;\r\n // }\r\n // $(\".chassiscontext-menu\").css({\r\n // top: relativeY + \"px\",\r\n // left: relativeX + \"px\",\r\n // position: \"absolute\"\r\n // });\r\n \r\n // //$(\"#chassiscontextmenu\").show();\r\n // //$(\".chassiscontext-menu\").show();\r\n\r\n // });\r\n\r\n\r\n // $(\"#CHASSIS-grid .ag-cell\").unbind(\"contextmenu\");\r\n // $(\"#CHASSIS-grid .ag-cell\").bind('contextmenu', function (e) {\r\n // var flag = false;\r\n // var selected = params.api.getFocusedCell();\r\n\r\n // var setRowIndex = selected.rowIndex;\r\n // var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n // if (row != null && row != \"undefined\" && !row.group) {\r\n // var rowId = row.id;\r\n // var selectedrowNode = params.api.getRowNode(rowId);\r\n // //var selectedrowNode = params.api.getRowNode(setRowIndex);\r\n // //var tempArray = [];// if sort is clicked save in temp array\r\n // //params.api.forEachLeafNode(function (rowNode, index) {\r\n // // tempArray.push(rowNode);\r\n // //});\r\n\r\n // //var resortitem = tempArray[setRowIndex];\r\n // var sortflage = false; \r\n // var chassisCurrentConditionID = selectedrowNode.data.ChassisCurrentConditionID;\r\n // params.api.forEachLeafNode(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.ChassisCurrentConditionID === chassisCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.ChassisCurrentConditionID == selectedrowNode.data.ChassisCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // selectedrowNode.setSelected(true);\r\n // }\r\n\r\n // /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n // var resortitem = tempArray[selected.rowIndex]; \r\n // var sortflage = false;\r\n // var chassisCurrentConditionID = resortitem.data.ChassisCurrentConditionID;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.ChassisCurrentConditionID === chassisCurrentConditionID)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.ChassisCurrentConditionID == selectedrowNode.data.ChassisCurrentConditionID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n // */\r\n // var reSized = self.props.isResizeClicked;\r\n // if (JSON.stringify(reSized) === 'false') {\r\n // var divmenuwidth = 280;\r\n // } else {\r\n // var divmenuwidth = 20;\r\n // } \r\n // var offset = $(\"#CHASSIS-grid .ag-column-hover\").offset(); \r\n // var relativeY = (e.pageY - offset.top);\r\n // var relativeX = e.pageX - divmenuwidth;\r\n\r\n // if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n // relativeX = relativeX - (divmenuwidth + 5);\r\n // }\r\n // var height = $(window).height();\r\n // var halfheight = ($(window).height()) / 2;\r\n // //if ((window as any).clipboardData) {\r\n // // if (height < relativeY + 560) {\r\n // // //if IE Browser \r\n // // relativeY = (relativeY - 150);\r\n // // }\r\n // //}\r\n // //else\r\n // if (JSON.stringify(reSized) === 'false') {\r\n // // click on below window half height make to Y top to static value 140px\r\n // if (relativeY > 140) {\r\n // relativeY = 140;\r\n // }\r\n // } else {\r\n // var height = $(window).height() - 200;\r\n // var halfheight = ($(window).height()) / 2;\r\n // if ((window as any).clipboardData) {\r\n // if (height < relativeY + 60) {\r\n // //if IE Browser \r\n // relativeY = (relativeY - 150);\r\n // }\r\n // }\r\n // else if (height < relativeY + 378) {\r\n // relativeY = (relativeY - 135);\r\n // }\r\n // }\r\n // $(\".chassiscontext-menu\").css({\r\n // top: relativeY + \"px\",\r\n // left: relativeX + \"px\",\r\n // position: \"absolute\"\r\n // });\r\n \r\n // $(\"#chassiscontextmenu\").show();\r\n // $(\".chassiscontext-menu\").show();\r\n // e.preventDefault();\r\n // return false;\r\n // });\r\n\r\n // $(document).contextmenu(function () {\r\n // return false;\r\n // });\r\n\r\n // $(document).bind('chassiscontextmenu click', function () {\r\n // $(\".chassiscontext-menu\").hide();\r\n // });\r\n\r\n // $('.chassiscontext-menu').bind('chassiscontextmenu', function () {\r\n // return false;\r\n // });\r\n // $('.chassiscontext-menu').on('click', 'li', function () {\r\n // $(\".chassiscontext-menu\").hide();\r\n // });\r\n //}\r\n\r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: true,\r\n sortable: true,\r\n enableRowGroup: true,\r\n resizable: true,\r\n }]\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"PWR\", field: \"PWR\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 70,\r\n valueGetter: (params) => { return ChassisFormatter.ChassisPWRSorting(params); },\r\n filterParams: { valueGetter: params => { return ChassisFormatter.ChassisPwrStateFormatterFilter(params); } },\r\n cellRenderer: ChassisCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"BATT\", field: \"ChassisBatteryStatus\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => { return ChassisFormatter.chassisBatteryStatusSorting(params); },\r\n filterParams: { valueGetter: params => { return ChassisFormatter.chassisBatteryStatusFormatterFilter(params); } },\r\n cellRenderer: ChassisCellRenderer.BatteryStatusFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80,\r\n valueGetter: (params) => { return Formatters.vesselCdSorting(params); }, cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true,\r\n tooltipField: \"TripNameAndStatus\", width: 70, valueGetter: (params) => { return Formatters.TripSorting(params); },\r\n cellRenderer: ChassisCellRenderer.TripstatusIndicator, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Assignments',\r\n children: [\r\n {\r\n headerName: \"Assigned to\", field: \"customername\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.customername); },\r\n filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } },\r\n cellRenderer: ChassisCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Identification',\r\n children: [\r\n {\r\n headerName: \"Chassis ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.AssetNumber); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n ]\r\n },\r\n {\r\n headerName: \"Report Date/Time and Location\",\r\n children: [\r\n\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: ChassisCellRenderer.StringTypeFormatter, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\",\r\n enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } },\r\n cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Battery (V)\", field: \"DeviceBattery\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.DeviceBattery); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBatteryFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceName); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceNameID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceName); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceNameID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n // { headerName: \"Region Fence\", field: \"RegionGeofence\", cellRenderer: ChassisCellRenderer.StringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"Region Fence ID\", field: \"RegionGeofenceName\", cellRenderer: ChassisCellRenderer.StringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.GeofenceDefinitionRevision); },\r\n resizable: true, cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.City); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.State); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Country); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ZipCode); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n\r\n {\r\n headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } },\r\n cellRenderer: ChassisCellRenderer.GPSCoordsFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); },\r\n width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc HDOP\", field: \"ChassisGPSHDOP\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.ChassisGPSHDOP, params.data.GPSLockState); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc sat ct\", field: \"ChassisGPSSatelliteCount\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.ChassisGPSSatelliteCount, params.data.GPSLockState); },\r\n resizable: true, cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Speed\", field: \"ChassisSpeed\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.ChassisSpeed); },\r\n cellRenderer: ChassisFormatter.ChassisSpeedConverter, headerValueGetter: Formatters.SpeedHeaderFormatter,\r\n filterParams: { valueGetter: params => { return ChassisFormatter.SpeedConverterChassisFilter(params); } },\r\n columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Door\", field: \"Door1OpenChassis\", cellRenderer: Formatters.DoorFormatterChassis, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n {\r\n headerName: \"Loaded\", field: \"Loaded\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return ChassisFormatter.LoadedValueFormatter(params.data.Loaded) },\r\n filterParams: { valueGetter: params => { return ChassisFormatter.LoadedFormatterFilter(params); } },\r\n columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Brake signal\", field: \"BreakSignal\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ChassisFormatter.BrakeSignalSorting(params); },\r\n cellRenderer: ChassisFormatter.BrakeSignalFormatter,\r\n columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Tire pressure\", field: \"TyrePressure\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.TyrePressure); },\r\n resizable: true, cellRenderer: ChassisCellRenderer.StringTypeValueFormatter,\r\n columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n\r\n ]\r\n },\r\n {\r\n headerName: 'Device Status',\r\n children: [\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device data\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DeviceDataTime\",\r\n enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: Formatters.dateTypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDeviceDataTimeForFilter(params); } },\r\n columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FirmwareVersion); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDReportingInterval); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, width: 180, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MSISDN); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.SIM_IMSI); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ICCID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.EUI); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n cellRenderer: ChassisCellRenderer.RSSITypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } },\r\n width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.CountryName); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MNC); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerLocalizationAreaCode); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerBaseStationID); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceType); },\r\n cellRenderer: ChassisCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n {\r\n headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, columnGroupShow: 'open', field: \"CreatedDTTM\",\r\n enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } },\r\n width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n { headerName: \"Comments\", field: \"CommentExistsDC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, cellRenderer: ChassisCellRenderer.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }\r\n ]\r\n }\r\n ];\r\n\r\n\r\n }\r\n\r\n clearGridRowSelection(params: any) {\r\n self.props.renderClearSelection();\r\n params.api.deselectAll();\r\n }\r\n\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues,colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = {colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n \r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n //self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"DeviceDataTime\" || fieldName.toString() == \"CreatedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n if (fieldValue == \"-NA-\" || (fieldValue == \"-999\" && self.validateFieldName(fieldName.toString().trim())))\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"PWR\":\r\n return ChassisCellRenderer.ChassisPwrStateFormatterGrouping(fieldValue);\r\n case \"ChassisBatteryStatus\":\r\n return ChassisCellRenderer.ChassisBatteryStatusFormatterGrouping(fieldValue);\r\n case \"TripStatusCdAndDFlag\":\r\n return ChassisCellRenderer.TripStatusFormatterGrouping(fieldValue); \r\n case \"customername\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n //case \"Loaded\":\r\n // return Formatters.LoadedFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return ChassisCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n //case \"BreakSignal\":\r\n // return \"-NA-\"; \r\n case \"CommentExistsDC\":\r\n //return fieldValue == 0 ? \"Comments\" : \"*No Comments\";\r\n return ChassisCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, chassisAssetSensors, colDef);\r\n default:\r\n return fieldValue;\r\n }\r\n }\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n refreshStatusGrid() { \r\n selectedRowIndex = -1;\r\n this.props.clearGridHeaderExtension();\r\n ChassisHistoryGrid.ClearHistoryGridData(); \r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n setTimeout(() => {\r\n this.ChassisSearchFilter(self.props.statusFilter, false, false);\r\n }, 200);\r\n //ReeferStatusGrid.ApplyReeferSearchFilter(self.state.tempFilters); \r\n }\r\n\r\n static refreshDashboardGrid() {\r\n self.refreshStatusGrid();\r\n }\r\n\r\n //RenderContextMenuPopUp(popUpName: string) {\r\n // switch (popUpName) {\r\n // case 'SendEmail':\r\n // return ;\r\n\r\n // }\r\n //}\r\n\r\n static refreshToggleFilters() {\r\n if (self != undefined) {\r\n if (self.state.ToggleSearchParams != undefined && self.state.ToggleSearchParams != null)\r\n self.setState({ ToggleSearchParams: null });\r\n self.setState({ rowData: [] });\r\n }\r\n }\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n switch (popUpName) { \r\n case 'SendEmail':\r\n return 0 ? true : false} sensorData={chassisAssetSensors}/>\r\n case 'Export':\r\n return ;\r\n\r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var chassisData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.ChassisStatusData[];\r\n filterSet = chassisData;\r\n var filterParams = JSON.stringify(filterSet);\r\n if (!isCommands) {\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) }, () => { self.props.getCommandPopupTitle(this.state.modelTitle); self.props.getCommandPopupContent(this.state.popUpHtml); });\r\n $('#btnTriggerPopupChassis').click();\r\n }\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', false);\r\n }\r\n\r\n popUpRelatedReportingInterval() {\r\n self.setState({ modelTitle: 'Motion-Related Reporting Intervals' });\r\n self.RenderContextMenuPopUp('MRRI', false);\r\n }\r\n\r\n popUpAssignToCustomer() {\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Assign Asset(s) to Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpUnAssignFromCustomer() {\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Asset(s) From Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n } \r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n exportToExcel() {\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.state.rowData != 'object' ? JSON.parse(this.state.rowData) : this.state.rowData;\r\n }\r\n\r\n var r = this.state.columnDefs;\r\n\r\n try {\r\n var formName = 'ChassisGrid';\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridChassisStatusToolBar.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n \r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean, sensorData:any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, chassisAssetSensors);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData:any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, chassisAssetSensors);\r\n }\r\n\r\n filterChassisStatusGrid(searchParam: any) {\r\n self.setState({ ToggleSearchParams: searchParam });\r\n $('#globalLoader').show();\r\n ReeferCallout.ResetMapPushpins();\r\n var chassisData = [];\r\n var chassisSearchData = this.props.propsChassisData;\r\n if (!searchParam.AllChassis && !searchParam.PwrInGeofence && !searchParam.PwrOutGeofence && !searchParam.NotPwrInGeofence && !searchParam.NotPwrOutGeofence) {\r\n chassisData.push(...chassisSearchData);\r\n }\r\n if (searchParam.AllChassis) {\r\n chassisData.push(...chassisSearchData);\r\n }\r\n if (searchParam.PwrInGeofence && !searchParam.AllChassis) {\r\n chassisData.push(...chassisSearchData.filter(x => x.InGeofence == true && (x.PWR != null && x.PWR.toString().trim() == \"A\")));\r\n }\r\n if (searchParam.PwrOutGeofence && !searchParam.AllChassis) {\r\n chassisData.push(...chassisSearchData.filter(x => x.InGeofence == false && (x.PWR != null && x.PWR.toString().trim() == \"A\")));\r\n }\r\n if (searchParam.NotPwrInGeofence && !searchParam.AllChassis) {\r\n chassisData.push(...chassisSearchData.filter(x => x.InGeofence == true && (x.PWR == null || (x.PWR != null && x.PWR.toString().trim() != \"A\"))));\r\n }\r\n if (searchParam.NotPwrOutGeofence && !searchParam.AllChassis) {\r\n chassisData.push(...chassisSearchData.filter(x => x.InGeofence == false && (x.PWR == null || (x.PWR != null && x.PWR.toString().trim() != \"A\"))));\r\n }\r\n\r\n let reeferFilterData = uniq(chassisData);\r\n\r\n //ReeferCallout.BindClusterMapPushpins(reeferFilterData, 'chassis', this.state.reeferFormatter.AlarmMasterList);\r\n if (reeferFilterData.length > 0)\r\n ReeferCallout.BindClusterMapPushpins(reeferFilterData, 'chassis', self.state.reeferFormatter);\r\n\r\n this.setState({\r\n rowData: reeferFilterData\r\n });\r\n setTimeout(() => {\r\n $('#globalLoader').hide();\r\n }, 500);\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != []) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"ChassisStatusGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\n//WI-23853\r\nenum ReeferAndGensetAndDryStatusEnum {\r\n AllReefer = 0,\r\n Running = 1,\r\n Stopped = 2,\r\n MissedRunning = 3,\r\n MissedStopped = 4,\r\n AllMicroAlaram = 5,\r\n MASevere = 6,\r\n MAMinor = 7,\r\n AllCargoCare = 8,\r\n CCSevere = 9,\r\n CCMinor = 10,\r\n CCInformational = 11,\r\n\r\n PowerOnReporting = 12,\r\n PowerOnNotReporting = 13,\r\n PowerOffReporting = 14,\r\n PowerOffNotReporting = 15,\r\n DryInGeofence = 16,\r\n DryOutGeofence = 17,\r\n}","/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json');\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\nexport interface UserState {\r\n isLoading: boolean;\r\n userName: string;\r\n passWord: string;\r\n loggedInUserData: server.UserLoginDetails,\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestValidateUserAction {\r\n type: 'REQUEST_VALIDATE_USER';\r\n userName: string;\r\n passWord: string;\r\n}\r\n\r\ninterface ReceiveValidateUserAction {\r\n type: 'RECEIVE_VALIDATE_USER';\r\n userName: string;\r\n passWord: string;\r\n loggedInUserData: server.UserLoginDetails\r\n}\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestValidateUserAction | ReceiveValidateUserAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestValidateUser: (userName: string, passWord: string): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n let fetchTask = fetch(Config.ApiBaseUrl + '/api/AuthUser/ValidateUser', { method: 'POST', body: JSON.stringify({ \"Username\": userName, \"Password\": passWord }), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\")\r\n dispatch({ type: 'RECEIVE_VALIDATE_USER', userName: userName, passWord: '', loggedInUserData: data });\r\n else {\r\n PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n dispatch({ type: 'RECEIVE_VALIDATE_USER', userName: userName, passWord: '', loggedInUserData: data });\r\n }\r\n });\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_VALIDATE_USER', userName: userName, passWord: passWord });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst unloadedState: UserState = { isLoading: true, userName: '', passWord: '', loggedInUserData: null };\r\n\r\nexport const reducer: Reducer = (state: UserState, incomingAction: Action) => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_VALIDATE_USER':\r\n return {\r\n userName: action.userName,\r\n passWord: action.passWord,\r\n isLoading: true,\r\n loggedInUserData: state.loggedInUserData,\r\n };\r\n case 'RECEIVE_VALIDATE_USER':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.userName === state.userName) {\r\n return {\r\n userName: action.userName,\r\n passWord: '',\r\n loggedInUserData: action.loggedInUserData,\r\n isLoading: false\r\n };\r\n }\r\n break;\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n return state;\r\n};\r\n","//import * as WeatherForecasts from './WeatherForecasts';\r\n//import * as Counter from './Counter';\r\nimport * as UserDetails from './UserDetails';\r\nimport * as ReeferStatus from './ReeferStatus';\r\nimport * as Home from './Home';\r\nimport * as DryStatus from './DryStatus';\r\nimport * as GensetStatus from './GensetStatus';\r\nimport * as PreferenceSettings from './PreferenceSettings';\r\nimport * as RcdStatus from './RcdStatus';\r\nimport * as AdminCargoCareSettings from './AdminCargoCareSettings';\r\nimport * as SubscriptionManager from './SubscriptionManager';\r\nimport * as VesselStatus from './VesselStatus';\r\nimport * as DeploymentStatus from './DeploymentStatus';\r\nimport * as ChassisStatus from './ChassisStatus';\r\n\r\n\r\n// The top-level state object\r\nexport interface ApplicationState {\r\n //counter: Counter.CounterState | undefined;\r\n //weatherForecasts: WeatherForecasts.WeatherForecastsState | undefined;\r\n userDetails: UserDetails.UserState;\r\n reeferStatus: ReeferStatus.ReeferSearchState;\r\n home: Home.HomeState;\r\n dryStatus: DryStatus.DrySearchState;\r\n gensetStatus: GensetStatus.GensetSearchState;\r\n chassisStatus: ChassisStatus.ChassisSearchState;\r\n preferenceSettings: PreferenceSettings.PreferenceSettingsState;\r\n rcdStatus: RcdStatus.RcdSearchState;\r\n cargoCareSettingsData: AdminCargoCareSettings.AdminCargoCareSettingsState;\r\n subscriptionManager: SubscriptionManager.SubscriptionState;\r\n vesselStatus: VesselStatus.VesselSearchState;\r\n deploymentStatus: DeploymentStatus.DeploymentSearchState;\r\n}\r\n\r\n// Whenever an action is dispatched, Redux will update each top-level application state property using\r\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\r\n// acts on the corresponding ApplicationState property type.\r\nexport const reducers = {\r\n //counter: Counter.reducer,\r\n //weatherForecasts: WeatherForecasts.reducer,\r\n userDetails: UserDetails.reducer,\r\n reeferStatus: ReeferStatus.reducer,\r\n home: Home.reducer,\r\n dryStatus: DryStatus.reducer,\r\n gensetStatus: GensetStatus.reducer,\r\n chassisStatus: ChassisStatus.reducer,\r\n preferenceSettings: PreferenceSettings.reducer,\r\n rcdStatus: RcdStatus.reducer,\r\n cargoCareSettingsData: AdminCargoCareSettings.reducer,\r\n subscriptionManager: SubscriptionManager.reducer,\r\n vesselStatus: VesselStatus.reducer,\r\n deploymentStatus:DeploymentStatus.reducer\r\n};\r\n\r\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\r\n// correctly typed to match your store.\r\nexport interface AppThunkAction {\r\n (dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\r\n}\r\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { routerMiddleware , LOCATION_CHANGE } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, reducers } from './';\r\nimport { persistStore, persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\nimport LZString from 'lz-string';\r\n\r\n\r\nexport default function configureStore(history: History, initialState?: ApplicationState) {\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n const persistConfig = {\r\n timeout: 2000, //Set the timeout function to 2 seconds\r\n key: 'root',\r\n storage: storage,\r\n whitelist: ['reeferStatus', 'home', 'dryStatus', 'gensetStatus', 'preferenceSettings', 'rcdStatus', 'cargoCareSettingsData','deploymentStatus','subscriptionManager'],\r\n transforms: [\r\n {\r\n in: (state) => ({\r\n ...state,\r\n user: compressData(state.user),\r\n }),\r\n out: (state) => ({\r\n ...state,\r\n user: decompressData(state.user),\r\n }),\r\n },\r\n ],\r\n\r\n }\r\n const compressData = (data) => {\r\n return LZString.compressToBase64(JSON.stringify(data));\r\n };\r\n\r\n // Decompress data when loading it from storage\r\n const decompressData = (compressedData) => {\r\n return JSON.parse(LZString.decompressFromBase64(compressedData));\r\n };\r\n const routerReducer = (history) => {\r\n const initialState = {\r\n location: history.location,\r\n action: history.action,\r\n };\r\n return (state = initialState, arg: any = {}) => {\r\n if (arg.type === LOCATION_CHANGE) {\r\n return { ...state, ...arg.payload };\r\n }\r\n return state;\r\n }\r\n };\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: routerReducer(history)\r\n });\r\n const persistedReducer = persistReducer(persistConfig, rootReducer)\r\n const enhancers = [];\r\n \r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any;\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n const store = createStore(\r\n persistedReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers));\r\n persistStore(store);\r\n\r\n return store;\r\n}\r\n\r\n\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const url = process.env.PUBLIC_URL as string;\r\n const publicUrl = new URL(url, window.location.toString());\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing as ServiceWorker;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string) {\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 (response.status === 404 || (contentType && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\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","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from './sharedcomponents/PopupWindow';\r\nimport animatedloader from '../images/animated-loader.gif';\r\n\r\nexport default class GuestLayout extends React.Component<{}, {}> {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n \r\n componentDidMount() {\r\n $('#globalLoader').hide();\r\n }\r\n WithoutMenu() {\r\n return
{this.props.children}
\r\n }\r\n public render() {\r\n PopupWindow.ClosePopup();\r\n return
\r\n
Loading
\r\n
\r\n {this.WithoutMenu()}\r\n
\r\n \r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { NavMenu } from './NavMenu';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from './sharedcomponents/PopupWindow';\r\nimport animatedloader from '../images/animated-loader.gif';\r\nimport { initialize} from \"bing-maps-loader\";\r\nvar Config: any = require('../Config.json');\r\n\r\nexport default class AuthorizedLayout extends React.Component<{}, {}> {\r\n constructor(props: any) {\r\n super(props);\r\n \r\n } \r\n\r\n componentDidMount() {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\"); \r\n $('#globalLoader').hide();\r\n initialize(Config.BingMapsKey);\r\n }\r\n \r\n WithMenu() {\r\n return
{this.props.children}
\r\n }\r\n\r\n public render() {\r\n PopupWindow.ClosePopup();\r\n return
\r\n
Loading
\r\n
\r\n { this.WithMenu() }\r\n
\r\n \r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { isNullOrUndefined } from 'util';\r\nimport moment from 'moment';\r\n\r\nvar packageJson: any = require('../package.json');\r\nvar isLatestBuildDate = false;\r\nconst buildDateGreaterThan = (latestDate, currentDate) => {\r\n const momLatestDateTime = moment(latestDate);\r\n const momCurrentDateTime = moment(currentDate);\r\n\r\n if (momLatestDateTime.isAfter(momCurrentDateTime)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\nconst refreshCacheAndReload = () => {\r\n if (caches) {\r\n // Service worker cache should be cleared with caches.delete()\r\n caches.keys().then((names) => {\r\n for (const name of names) {\r\n caches.delete(name);\r\n }\r\n });\r\n }\r\n // delete browser cache and hard reload\r\n window.location.reload();\r\n};\r\nexport const PrivateRoute = ({ component: Component, layout: Layout, path: Path, ...rest }) => {\r\n //fetch(\"/meta.json?${new Date().getTime()}, { cache: 'no-cache' }\")\r\n fetch(\"/meta.json\")\r\n .then((response) => response.json())\r\n .then((meta) => {\r\n const latestVersionDate = meta.buildDate;\r\n const currentVersionDate = packageJson.buildDate;\r\n const shouldForceRefresh = buildDateGreaterThan(\r\n latestVersionDate,\r\n currentVersionDate\r\n );\r\n if (shouldForceRefresh) {\r\n isLatestBuildDate = false;\r\n refreshCacheAndReload();\r\n } else {\r\n isLatestBuildDate = true;\r\n }\r\n });\r\n var isLoginPath = Path === \"/\";\r\n if(window.location.search != \"\" && window.location.search != null)\r\n sessionStorage.setItem(\"QueryTag\", window.location.search);\r\n if (isNullOrUndefined(sessionStorage.getItem('UserInfo')) && !isLoginPath && Path != \"/forgotpassword\") { \r\n return ;\r\n }\r\n else if (!isNullOrUndefined(sessionStorage.getItem('UserInfo')) && Path === \"/\") { \r\n return ;\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n )} />; \r\n}","\r\nimport * as React from 'react';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\ninterface ResetPasswordState {\r\n resetpasswordFilters: ResetPasswordFields;\r\n}\r\n\r\nexport class ResetPasswordWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n var filterSet = new ResetPasswordFields();\r\n filterSet.UserName = this.props.userName;\r\n this.state = { resetpasswordFilters: filterSet };\r\n }\r\n\r\n OldPasswordChange(event: React.FormEvent) {\r\n var filters = this.state.resetpasswordFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.OldPassword = Value;\r\n this.setState({\r\n resetpasswordFilters: filters\r\n });\r\n }\r\n\r\n NewPasswordChange(event: React.FormEvent) {\r\n var filters = this.state.resetpasswordFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.NewPassword = Value;\r\n this.setState({\r\n resetpasswordFilters: filters\r\n });\r\n }\r\n\r\n ConfirmPasswordChange(event: React.FormEvent) {\r\n var filters = this.state.resetpasswordFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.ConfirmPassword = Value;\r\n this.setState({\r\n resetpasswordFilters: filters\r\n });\r\n }\r\n\r\n closeReset() {\r\n this.props.disableResetWindow();\r\n //$(\"#resetPasswordModel\").css(\"display\", \"none\");\r\n }\r\n\r\n componentDidMount() {\r\n $(document).ready(function () {\r\n $('button_Resetlogin').bind('keypress', function (e) {\r\n if (e.keyCode === 13) {\r\n $('#button_Resetlogin').trigger('click');\r\n }\r\n });\r\n });\r\n }\r\n\r\n SavePassword() {\r\n $(\"#myModal\").css(\"display\", \"block\");\r\n $('#globalLoader').show();\r\n var filterParams = JSON.stringify(this.state.resetpasswordFilters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl +'/api/AuthUser/ResetPassword', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != \"null\") {\r\n if (data == \"Success\") {\r\n this.props.disableResetPassword();\r\n PopupWindow.showErrorMessage(\"Confirmation\", \"Your password has been successfully changed. Please login with your new password.\");\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", data);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n }\r\n });\r\n }\r\n\r\n public render() {\r\n \r\n return
\r\n
\r\n
\r\n Old Password :\r\n
\r\n
\r\n
\r\n this.OldPasswordChange(e)} value={this.state.resetpasswordFilters.OldPassword} />\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n New Password :\r\n
\r\n
\r\n
\r\n this.NewPasswordChange(e)} value={this.state.resetpasswordFilters.NewPassword} />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Confirm Password :\r\n
\r\n
\r\n
\r\n this.ConfirmPasswordChange(e)} value={this.state.resetpasswordFilters.ConfirmPassword} />\r\n
\r\n
\r\n
\r\n
\r\n
Password requirements:
\r\n
    \r\n
  • Password must be at least eight (8) characters in length
  • \r\n
  • Password must contain at least three (3) of the following:
  • \r\n
      \r\n
    • Uppercase letter (A-Z)
    • \r\n
    • Lowercase letter (a-z)
    • \r\n
    • Number (0-9)
    • \r\n
    • Special character {\"(\\\"~`!@#$%^&*()+=|\\\\{}':;.,<>/?[]_-)\"}
    • \r\n
    \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
;\r\n }\r\n}\r\nclass ResetPasswordFields {\r\n OldPassword: string;\r\n NewPassword: string;\r\n ConfirmPassword: string;\r\n UserName: string;\r\n}","import { ResetPasswordWindow } from '../sharedcomponents/ResetPasswordWindow';\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\n\r\ninterface ResetPasswordState {\r\n Username: string\r\n}\r\n\r\nexport class ResetPassword extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { Username: this.props.userName };\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.userName != null)\r\n this.setState({ Username: nextProps.userName });\r\n }\r\n\r\n disableResetPassword() {\r\n this.props.disableResetPassword();\r\n }\r\n disableResetWindow() {\r\n this.props.disableResetWindow();\r\n }\r\n closeReset() {\r\n this.props.disableResetWindow();\r\n //$(\"#resetPasswordModel\").css(\"display\", \"none\");\r\n }\r\n\r\n public render() {\r\n var divStyle = {\r\n display: 'block'\r\n }\r\n\r\n return
\r\n
\r\n
\r\n
\r\n
Reset Your Password
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport 'jquery.cookie';\r\nimport logo2 from '../../images/login_bg1.jpg';\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { ResetPassword } from '../sharedcomponents/ResetPassword';\r\nimport SignIn from '../../images/Microsoft_SignIn.png';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { RCUtils } from './../../RCUtils';\r\n\r\nimport { PublicClientApplication } from '@azure/msal-browser';\r\n\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface UserLoginState {\r\n Username: string;\r\n Password: string;\r\n IsLoggedIn: boolean;\r\n LoginAttempts: number;\r\n IsAccountLocked: boolean;\r\n showResetPasswordComponent: boolean;\r\n renderResetPasswordHtml: any;\r\n isLoading: boolean;\r\n loggedInUserData: server.UserLoginDetails;\r\n}\r\n\r\n// At runtime, Redux will merge together...\r\n//type UserDetailProps =\r\n// UserDetailState.UserState // ... state we've requested from the Redux store\r\n// & typeof UserDetailState.actionCreators // ... plus action creators we've requested\r\n// & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\n\r\nexport default class UserLogin extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n Username: '',\r\n Password: '',\r\n IsLoggedIn: false,\r\n LoginAttempts: 0,\r\n IsAccountLocked: false,\r\n showResetPasswordComponent: false,\r\n renderResetPasswordHtml: '',\r\n isLoading: true,\r\n loggedInUserData: []\r\n\r\n };\r\n //if (sessionStorage.getItem(\"UserInfo\") != null && sessionStorage.getItem(\"UserInfo\") != undefined) {\r\n // this.props.history.push('/home');\r\n //}\r\n }\r\n\r\n UsernameChange(event: React.FormEvent) {\r\n var userid = this.state.Username;\r\n var Value: string = event.currentTarget.value;\r\n userid = Value;\r\n this.setState({\r\n Username: userid\r\n });\r\n }\r\n\r\n PasswordChange(event: React.FormEvent) {\r\n var userPassword = this.state.Password;\r\n var Value: string = event.currentTarget.value;\r\n userPassword = Value;\r\n this.setState({\r\n Password: userPassword\r\n });\r\n }\r\n handlePassword(event: React.FormEvent) {\r\n var IsCheck: boolean = $(\"#spanPassword\").hasClass(\"fas fa-eye-slash\");\r\n if (IsCheck) {\r\n $('#spanPassword').removeClass('fas fa-eye-slash');\r\n $('#spanPassword').addClass('fas fa-eye');\r\n }\r\n else {\r\n $('#spanPassword').removeClass('fas fa-eye');\r\n $('#spanPassword').addClass('fas fa-eye-slash');\r\n }\r\n\r\n if ($(\"#spanPassword\").hasClass(\"fas fa-eye\")) {\r\n\r\n const password = document.querySelector(\"#txtPassWord\");\r\n const type = \"text\";\r\n password.setAttribute(\"type\", type);\r\n }\r\n else {\r\n const password = document.querySelector(\"#txtPassWord\");\r\n const type = \"password\";\r\n password.setAttribute(\"type\", type);\r\n\r\n }\r\n }\r\n cookieStore() {\r\n if ($('input[name=\"remember\"]').is(':checked')) {\r\n var uname = $('#txtUserName').attr(\"value\");\r\n //var pword = $('#txtPassWord').attr(\"value\"); //RCNG-131\r\n // set cookies to expire in 14 days \r\n $.cookie('uname', uname, { expires: 30, path: '/' });\r\n //$.cookie('pword', pword, { expires: 30, path: '/' }); //RCNG-131\r\n $.cookie('pword', '', { path: '/' }); //RCNG-131 \r\n $.cookie('remember', true, { expires: 30, path: '/' });\r\n }\r\n else {\r\n // reset cookies\r\n $.cookie('uname', null, { path: '/' });\r\n $.cookie('pword', null, { path: '/' });\r\n //$.removeCookie(\"uname\");\r\n $.cookie('remember', null, { path: '/' });\r\n }\r\n\r\n }\r\n\r\n async SignInWithAzureAD() {\r\n $('#globalLoader').show();\r\n const loginRequest = {\r\n scopes: [\"api://\" + Config.AzurereApiclientId + \"/access_rc\", \"email\"],\r\n };\r\n const clientConfig = {\r\n auth: {\r\n clientId: Config.AzureclientId,\r\n authority: Config.Azureauthority,\r\n redirectUri: Config.AzureredirectUri,\r\n navigateToLoginRequestUrl: true,\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: false\r\n },\r\n system: {\r\n windowHashTimeout: 60000, // set timeout to 60 seconds\r\n iframeHashTimeout: 60000,\r\n loadFrameTimeout: 60000,\r\n popupTimeout: 60000,\r\n tokenAcquisitionTimeout: 60000,\r\n asyncPopups: false\r\n }\r\n }\r\n\r\n }\r\n const msalInstance = new PublicClientApplication(clientConfig);\r\n try {\r\n const loginResponse = await msalInstance.ssoSilent(loginRequest).then(\r\n function (accessTokenResponse) {\r\n if (accessTokenResponse.accessToken != \"\") {\r\n if (accessTokenResponse.idTokenClaims != undefined && accessTokenResponse.idTokenClaims != \"\" && accessTokenResponse.idTokenClaims.given_name != undefined && accessTokenResponse.idTokenClaims.given_name != \"\") {\r\n sessionStorage.setItem('AZUName', accessTokenResponse.idTokenClaims.given_name);\r\n }\r\n let accessToken = accessTokenResponse.accessToken;\r\n sessionStorage.setItem('JWTToken', accessToken);\r\n var url = Config.ApiBaseUrl + '/api/AuthUser/ValidateAzureADUser';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleOktaError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'AzureSignInOverrideOption': userDetailInfo.User.AzureSignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n\r\n if (userDetailInfo.User.Customer.AzureSignInOption == \"D\") {\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' has been disallowed by your administrator. Please sign in to Maritime platform without using Microsoft.\");\r\n $('#globalLoader').hide();\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n return;\r\n } else if (userDetailInfo.User.AzureSignInOverrideOption == \"D\") {\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' has been disallowed by your administrator. Please sign in to Maritime platform without using Microsoft.\");\r\n $('#globalLoader').hide();\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n return;\r\n } else {\r\n window.location.href = \"/adlogin\";\r\n }\r\n } else {\r\n $('#globalLoader').hide();\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n //$('#globalLoader').hide();\r\n var loader = document.getElementById(\"preloader\");\r\n loader.classList.add(\"hidden\");\r\n PopupWindow.showErrorMessage(\"Login\", \"User data not match with Maritime platform data.Please contact Orbcomm suport team for further information.\");\r\n return;\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n var loaderimg = document.getElementById(\"preloader\");\r\n loaderimg.classList.add(\"hidden\");\r\n PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n }\r\n }).catch((error) => {\r\n $('#globalLoader').hide();\r\n console.log(\"error\" + error);\r\n this.HandelInteractionErrorbyMicrosoft(error);\r\n // error.errorMessage == 'User cancelled the flow.' ? PopupWindow.showErrorMessage(\"Login\", \"User cancelled the 'Sign in with Microsoft' flow.\") : PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account. Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n });\r\n }\r\n\r\n }\r\n );\r\n } catch (error) {\r\n console.log(\"interaction-error by Microsoft:\" + error);\r\n if (\r\n error.errorCode.indexOf(\"consent_required\") > -1 ||\r\n error.errorCode.indexOf(\"monitor_window_timeout\") > -1 ||\r\n error.errorCode.indexOf(\"popup_window_error\") > -1 ||\r\n error.errorCode.indexOf(\"interaction_required\") > -1 ||\r\n error.errorCode.indexOf(\"login_required\") > -1\r\n ) {\r\n //if (error instanceof InteractionRequiredAuthError) {\r\n const loginResponse = await msalInstance.loginPopup(loginRequest).then(\r\n function (accessTokenResponse) {\r\n if (accessTokenResponse.accessToken != \"\") {\r\n if (accessTokenResponse.idTokenClaims != undefined && accessTokenResponse.idTokenClaims != \"\" && accessTokenResponse.idTokenClaims.given_name != undefined && accessTokenResponse.idTokenClaims.given_name != \"\") {\r\n sessionStorage.setItem('AZUName', accessTokenResponse.idTokenClaims.given_name);\r\n }\r\n let accessToken = accessTokenResponse.accessToken;\r\n sessionStorage.setItem('JWTToken', accessToken);\r\n var url = Config.ApiBaseUrl + '/api/AuthUser/ValidateAzureADUser';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleOktaError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'AzureSignInOverrideOption': userDetailInfo.User.AzureSignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n\r\n if (userDetailInfo.User.Customer.AzureSignInOption == \"D\") {\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' has been disallowed by your administrator. Please sign in to Maritime platform without using Microsoft.\");\r\n $('#globalLoader').hide();\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n return;\r\n } else if (userDetailInfo.User.AzureSignInOverrideOption == \"D\") {\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' has been disallowed by your administrator. Please sign in to Maritime platform without using Microsoft.\");\r\n $('#globalLoader').hide();\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n return;\r\n } else {\r\n window.location.href = \"/adlogin\";\r\n }\r\n } else {\r\n //$('#globalLoader').hide();\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n $('#globalLoader').hide();\r\n var loader = document.getElementById(\"preloader\");\r\n loader.classList.add(\"hidden\");\r\n PopupWindow.showErrorMessage(\"Login\", \"User data not match with Maritime platform data.Please contact Orbcomm support team for further information.\");\r\n return;\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n var loaderimg = document.getElementById(\"preloader\");\r\n loaderimg.classList.add(\"hidden\");\r\n PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n }\r\n }).catch((error) => {\r\n $('#globalLoader').hide();\r\n console.log(\"error\" + error);\r\n this.HandelInteractionErrorbyMicrosoft(error);\r\n // error.errorMessage == 'User cancelled the flow.' ? PopupWindow.showErrorMessage(\"Login\", \"User cancelled the 'Sign in with Microsoft' flow.\") : PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account. Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n });\r\n }\r\n\r\n }).catch(error => {\r\n $('#globalLoader').hide();\r\n console.log(\"error\" + error);\r\n this.HandelInteractionErrorbyMicrosoft(error);\r\n //error.errorMessage == 'User cancelled the flow.' ? PopupWindow.showErrorMessage(\"Login\", \"User cancelled the 'Sign in with Microsoft' flow.\") : PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account. Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n });\r\n } else {\r\n if (error != null && error != undefined && error != '') {\r\n $('#globalLoader').hide();\r\n console.log(\"error\" + error);\r\n this.HandelInteractionErrorbyMicrosoft(error);\r\n //error.errorMessage == 'User cancelled the flow.' ? PopupWindow.showErrorMessage(\"Login\", \"User cancelled the 'Sign in with Microsoft' flow.\") : PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account. Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n HandelInteractionErrorbyMicrosoft(error) {\r\n // for user interaction errors due to slow network or login with non configured email display a generic message \r\n //PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account.Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n if (error.errorCode === \"user_cancelled\") {\r\n // dont show any error like PopupWindow.showErrorMessage(\"Login\", \"User cancelled the 'Sign in with Microsoft' flow.\");\r\n }\r\n else if (error.errorCode === \"popup_window_error\") {\r\n // dont show any error PopupWindow.showErrorMessage(\"Login\", \"Error opening popup window.\");\r\n }\r\n else if (error.errorCode === \"monitor_window_timeout\") {\r\n // dont show any error PopupWindow.showErrorMessage(\"Login\", \"monitor_window_timeout.\");\r\n } else {\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account.Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n }\r\n\r\n }\r\n ValidateUser() {\r\n this.setState({ showResetPasswordComponent: false });\r\n if ((this.state.Username != null && this.state.Username.trim() == \"\") && (this.state.Password != null && this.state.Password.trim() == \"\")) {\r\n PopupWindow.showErrorMessage(\"Login failed!\", \"Please enter username and password.\");\r\n }\r\n else if (this.state.Username != null && this.state.Username.trim() == \"\") {\r\n PopupWindow.showErrorMessage(\"Login failed!\", \"Please enter username.\");\r\n }\r\n else if (this.state.Password != null && this.state.Password.trim() == \"\") {\r\n PopupWindow.showErrorMessage(\"Login failed!\", \"Please enter password.\");\r\n }\r\n else {\r\n $('.loader-global').show();\r\n //this.props.requestValidateUser(this.state.Username, this.state.Password);\r\n var url = Config.ApiBaseUrl + '/api/AuthUser/ValidateUser';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify({ \"Username\": this.state.Username, \"Password\": this.state.Password }), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n this.setState({ loggedInUserData: data }, () => { this.SetLoadStateAndProcess(); });\r\n }\r\n else if (!Config.EnableNativeLogin && data.Errmsg == \"showMFAUS\") { \r\n $('#globalLoader').hide();\r\n var strMFAUSMessage = `Your organization now supports multifactor authentication (MFA) for the ORBCOMM Maritime Platform.

You have been directed to your organization’s regional homepage. For quick access to the Maritime Platform, please bookmark this page in your browser. The URL is shown below.

\r\n `;\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Multifactor authentication (MFA)', strMFAUSMessage.toString(), this.onOKMFA_US.bind(this));\r\n\r\n }\r\n else if (!Config.EnableNativeLogin && data.Errmsg == \"showMFAUK\") {\r\n $('#globalLoader').hide();\r\n var strMFAUKMessage = `Your organization now supports multifactor authentication (MFA) for the ORBCOMM Maritime Platform.

You have been directed to your organization’s regional homepage. For quick access to the Maritime Platform, please bookmark this page in your browser. The URL is shown below.

\r\n `;\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Multifactor authentication (MFA)', strMFAUKMessage.toString(), this.onOKMFA_UK.bind(this));\r\n }\r\n else if (!Config.EnableNativeLogin && data.Errmsg == \"showMFACA\") {\r\n $('#globalLoader').hide();\r\n var strMFACAMessage = `Your organization now supports multifactor authentication (MFA) for the ORBCOMM Maritime Platform.

You have been directed to your organization’s regional homepage. For quick access to the Maritime Platform, please bookmark this page in your browser. The URL is shown below.

\r\n `;\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Multifactor authentication (MFA)', strMFACAMessage.toString(), this.onOKMFA_CA.bind(this));\r\n }\r\n else if (!Config.EnableNativeLogin && data.Errmsg == \"showMFAEU\") {\r\n $('#globalLoader').hide();\r\n var strMFAEUMessage = `Your organization now supports multifactor authentication (MFA) for the ORBCOMM Maritime Platform.

You have been directed to your organization’s regional homepage. For quick access to the Maritime Platform, please bookmark this page in your browser. The URL is shown below.

\r\n `;\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Multifactor authentication (MFA)', strMFAEUMessage.toString(), this.onOKMFA_EU.bind(this));\r\n }\r\n else if (!Config.EnableNativeLogin && data.Errmsg == \"showMFAAU\") {\r\n $('#globalLoader').hide();\r\n var strMFAAUMessage = `Your organization now supports multifactor authentication (MFA) for the ORBCOMM Maritime Platform.

You have been directed to your organization’s regional homepage. For quick access to the Maritime Platform, please bookmark this page in your browser. The URL is shown below.

\r\n `;\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Multifactor authentication (MFA)', strMFAAUMessage.toString(), this.onOKMFA_AU.bind(this));\r\n }\r\n else if (!Config.EnableNativeLogin && data.Errmsg == \"showMFAJP\") {\r\n $('#globalLoader').hide();\r\n var strMFAJPMessage = `Your organization now supports multifactor authentication (MFA) for the ORBCOMM Maritime Platform.

You have been directed to your organization’s regional homepage. For quick access to the Maritime Platform, please bookmark this page in your browser. The URL is shown below.

\r\n `;\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Multifactor authentication (MFA)', strMFAJPMessage.toString(), this.onOKMFA_JP.bind(this));\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n\r\n }\r\n });\r\n }\r\n }\r\n SetLoadStateAndProcess() {\r\n this.setState({ isLoading: false }, () => {\r\n if (!this.state.isLoading) {\r\n\r\n if (this.state.loggedInUserData != null) {\r\n\r\n var userDetailInfo = JSON.parse(JSON.stringify(this.state.loggedInUserData));\r\n if (userDetailInfo.User != null) {\r\n if (userDetailInfo.User.ResetPassword && (userDetailInfo.Errmsg == null || userDetailInfo.Errmsg == \"\")) {\r\n this.setState({ showResetPasswordComponent: true, renderResetPasswordHtml: this.renderResetPasswordPage() });\r\n $('#globalLoader').hide();\r\n return;//
{this.state.showResetPasswordComponent == true ? : null}
;\r\n }\r\n }\r\n if (!userDetailInfo.IsAccountLocked) {\r\n if (userDetailInfo.Errmsg == null || userDetailInfo.Errmsg == \"\") {\r\n this.setState({ IsLoggedIn: true, LoginAttempts: userDetailInfo.LoginAttempts, IsAccountLocked: userDetailInfo.IsAccountLocked });\r\n this.cookieStore();\r\n sessionStorage.setItem('JWTToken', userDetailInfo.JWTToken);\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + this.state.Username);\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': this.state.Username, 'IsAccountLocked': this.state.IsAccountLocked, 'IsLoggedIn': true, 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision,\r\n 'LoginAttempts': this.state.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState, 'Auth0UserId': userDetailInfo.User.Auth0_UserId,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'Auth0Region': userDetailInfo.User.Customer.Auth0Region, 'Auth0_OrgId': userDetailInfo.User.Customer.Auth0_OrgId, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n\r\n if (userDetailInfo.User.Customer.SSOSignInTypes != null && userDetailInfo.User.Customer.SSOSignInTypes.includes('Okta') && userDetailInfo.User.OKTASignInOverrideOption == \"R\") {\r\n sessionStorage.setItem('UrlPath', userDetailInfo.User.Customer.URLpath);\r\n $('#globalLoader').hide();\r\n var strRedirectMessage = `Okta sign-in is required. You will now be redirected to your Okta sign-in page at ${window.location.origin}/${userDetailInfo.User.Customer.URLpath}.`;\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in required', strRedirectMessage.toString(), this.onOKSubmitAllow.bind(this));\r\n } else if (userDetailInfo.User.Customer.SSOSignInTypes != null && userDetailInfo.User.Customer.SSOSignInTypes.includes('Azure') && userDetailInfo.User.AzureSignInOverrideOption == \"R\") {\r\n\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Microsoft Sign-In Required\", \"Sign-In options have been limited by your local Maritime platform administrator. Please opt to 'Sign In with Microsoft'.\");\r\n }\r\n\r\n else if ((userDetailInfo.User.Customer.SSOSignInTypes != null && userDetailInfo.User.Customer.SSOSignInTypes.includes('Okta')) && (userDetailInfo.User.OKTASignInOverrideOption == \"D\") && (sessionStorage.getItem('okta-token-storage') != null)) {\r\n $('#globalLoader').hide();\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in disallowed', 'Okta sign-in is disallowed. You will now be redirected to the standard Maritime platform sign-in page at ' + window.location.origin, this.onOKSubmitDisAllow.bind(this));\r\n }\r\n else {\r\n\r\n if (sessionStorage.getItem(\"QueryTag\") != \"\" && sessionStorage.getItem(\"QueryTag\") != null) {\r\n var queryTag = sessionStorage.getItem(\"QueryTag\");\r\n\r\n if (queryTag.indexOf(\"?deviceId\") > -1)\r\n this.props.history.push('/rcdstatus' + queryTag);\r\n else\r\n this.props.history.push('/home' + queryTag);\r\n }\r\n else\r\n if (!Config.EnableNativeLogin && userDetailInfo.User.Customer.Auth0Region != null && userDetailInfo.User.Customer.Auth0Region != \"\" && userDetailInfo.User.Customer.Auth0_OrgId != null && userDetailInfo.User.Customer.Auth0_OrgId != \"\") {\r\n sessionStorage.removeItem('region');\r\n sessionStorage.removeItem('JWTToken');\r\n sessionStorage.removeItem(\"userRights\");\r\n localStorage.removeItem('login_status');\r\n sessionStorage.removeItem(\"customerDetails\");\r\n sessionStorage.removeItem('UserInfo');\r\n sessionStorage.removeItem('OrbInit');\r\n var region = userDetailInfo.User.Customer.Auth0Region;\r\n region = region.replace(/\"/g, '');\r\n window.location.href = \"/\" + region;\r\n //this.props.history.push('/' + region);\r\n\r\n }\r\n else {\r\n\r\n sessionStorage.setItem('OrbInit', 'self');\r\n window.CoralogixRum.init({\r\n application: 'OMPAWSRCNG',\r\n environment: 'OMPAWSPROD',\r\n public_key: 'cxtp_Qf6s9h0gUZ2tB1ZZZHycWc88ekTixU',\r\n coralogixDomain: 'US2',\r\n version: '4.4.80',\r\n labels: {\r\n\r\n username: JSON.parse(sessionStorage.getItem('UserInfo') || '{}').Username || null,\r\n },\r\n\r\n sessionRecordingConfig: {\r\n enable: true,\r\n autoStartSessionRecording: true,\r\n recordConsoleEvents: true,\r\n sessionRecordingSampleRate: 100,\r\n },\r\n });\r\n this.props.history.push('/home');\r\n }\r\n }\r\n }\r\n else if (userDetailInfo.UserID == \"0\") {\r\n $('#globalLoader').hide();\r\n }\r\n else if (userDetailInfo.LoginAttempts <= 5) {\r\n //var attempsLeft = 5 - userDetailInfo.LoginAttempts;\r\n $('#globalLoader').hide();\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n }\r\n // this.setState({ showResetPasswordComponent: false });\r\n }\r\n }\r\n });\r\n }\r\n disableResetPassword() {\r\n this.setState({\r\n showResetPasswordComponent: false,\r\n renderResetPasswordHtml: '',\r\n Username: '',\r\n Password: ''\r\n });\r\n }\r\n disableResetWindow() {\r\n this.setState({\r\n showResetPasswordComponent: false,\r\n renderResetPasswordHtml: '',\r\n Username: this.state.Username,\r\n Password: this.state.Password\r\n });\r\n }\r\n renderResetPasswordPage() {\r\n return ;\r\n }\r\n onOKMFA_US(param: any) {\r\n sessionStorage.setItem('region', 'US');\r\n window.location.href = \"/US\";\r\n }\r\n onOKMFA_UK(param: any) {\r\n sessionStorage.setItem('region', 'UK');\r\n window.location.href = \"/UK\";\r\n }\r\n onOKMFA_EU(param: any) {\r\n sessionStorage.setItem('region', 'EU');\r\n window.location.href = \"/EU\";\r\n }\r\n onOKMFA_AU(param: any) {\r\n sessionStorage.setItem('region', 'AU');\r\n window.location.href = \"/AU\";\r\n }\r\n onOKMFA_JP(param: any) {\r\n sessionStorage.setItem('region', 'JP');\r\n window.location.href = \"/JP\";\r\n }\r\n onOKMFA_CA(param: any) {\r\n sessionStorage.setItem('region', 'CA');\r\n window.location.href = \"/CA\";\r\n }\r\n onOKSubmitAllow(param: any) {\r\n var redirectPath = \"\";\r\n if (sessionStorage.getItem(\"UrlPath\") != null) {\r\n redirectPath = sessionStorage.getItem(\"UrlPath\");\r\n }\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n //this.props.history.push(\"/\" + redirectPath);\r\n window.location.href = \"/\" + redirectPath;\r\n }\r\n onOKSubmitDisAllow(param: any) {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n window.location.href = \"/\";\r\n }\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n\r\n //if (!this.state.isLoading) {\r\n\r\n // if (this.state.loggedInUserData != null) {\r\n\r\n // var userDetailInfo = JSON.parse(JSON.stringify(this.state.loggedInUserData));\r\n // if (userDetailInfo.User != null) {\r\n // if (userDetailInfo.User.ResetPassword && (userDetailInfo.Errmsg == null || userDetailInfo.Errmsg == \"\")) {\r\n // this.setState({ showResetPasswordComponent: true, renderResetPasswordHtml: this.renderResetPasswordPage() });\r\n // $('#globalLoader').hide();\r\n // return;//
{this.state.showResetPasswordComponent == true ? : null}
;\r\n // }\r\n // }\r\n // if (!userDetailInfo.IsAccountLocked) {\r\n // if (userDetailInfo.Errmsg == null || userDetailInfo.Errmsg == \"\") {\r\n // this.setState({ IsLoggedIn: true, LoginAttempts: userDetailInfo.LoginAttempts, IsAccountLocked: userDetailInfo.IsAccountLocked });\r\n // this.cookieStore();\r\n // sessionStorage.setItem('JWTToken', userDetailInfo.JWTToken);\r\n // sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n // localStorage.setItem('login_status', 'logged_in' + '&' + this.state.Username);\r\n // sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n // var userInfo = JSON.stringify({\r\n // 'Username': this.state.Username, 'IsAccountLocked': this.state.IsAccountLocked, 'IsLoggedIn': true, 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision,\r\n // 'LoginAttempts': this.state.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n // 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n // 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n // 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n // 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide\r\n // });\r\n // sessionStorage.setItem('UserInfo', userInfo);\r\n\r\n // if (userDetailInfo.User.Customer.SSOSignInTypes != null && userDetailInfo.User.Customer.SSOSignInTypes.includes('Okta') && userDetailInfo.User.OKTASignInOverrideOption == \"R\") {\r\n // sessionStorage.setItem('UrlPath', userDetailInfo.User.Customer.URLpath);\r\n // $('#globalLoader').hide();\r\n // var strRedirectMessage = `Okta sign-in is required. You will now be redirected to your Okta sign-in page at ${window.location.origin}/${userDetailInfo.User.Customer.URLpath}.`;\r\n // RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in required', strRedirectMessage.toString(), this.onOKSubmitAllow.bind(this));\r\n // } else if (userDetailInfo.User.Customer.SSOSignInTypes != null && userDetailInfo.User.Customer.SSOSignInTypes.includes('Azure') && userDetailInfo.User.AzureSignInOverrideOption == \"R\") {\r\n\r\n // $('#globalLoader').hide();\r\n // PopupWindow.showErrorMessage(\"Microsoft Sign-In Required\", \"Sign-In options have been limited by your local Maritime platform administrator. Please opt to 'Sign In with Microsoft'.\");\r\n // }\r\n\r\n // else if ((userDetailInfo.User.Customer.SSOSignInTypes != null && userDetailInfo.User.Customer.SSOSignInTypes.includes('Okta')) && (userDetailInfo.User.OKTASignInOverrideOption == \"D\") && (sessionStorage.getItem('okta-token-storage') != null)) {\r\n // $('#globalLoader').hide();\r\n // RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in disallowed', 'Okta sign-in is disallowed. You will now be redirected to the standard Maritime platform sign-in page at ' + window.location.origin, this.onOKSubmitDisAllow.bind(this));\r\n // }\r\n // else {\r\n\r\n // if (sessionStorage.getItem(\"QueryTag\") != \"\" && sessionStorage.getItem(\"QueryTag\") != null) {\r\n // var queryTag = sessionStorage.getItem(\"QueryTag\");\r\n\r\n // if (queryTag.indexOf(\"?deviceId\") > -1)\r\n // this.props.history.push('/rcdstatus' + queryTag);\r\n // else\r\n // this.props.history.push('/home' + queryTag);\r\n // }\r\n // else\r\n // this.props.history.push('/home');\r\n // }\r\n // }\r\n // else if (userDetailInfo.UserID == \"0\") {\r\n // $('#globalLoader').hide();\r\n // }\r\n // else if (userDetailInfo.LoginAttempts <= 5) {\r\n // //var attempsLeft = 5 - userDetailInfo.LoginAttempts;\r\n // $('#globalLoader').hide();\r\n // }\r\n // else {\r\n // $('#globalLoader').hide();\r\n // }\r\n // }\r\n // else {\r\n // $('#globalLoader').hide();\r\n // }\r\n // // this.setState({ showResetPasswordComponent: false });\r\n // }\r\n //}\r\n }\r\n\r\n //setUserInfoSession(userSessionData: any) {\r\n // sessionStorage.setItem('UserInfo', userSessionData);\r\n // return \"session created.\";\r\n //}\r\n\r\n componentDidMount() {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n if ($.cookie('uname') != null && $.cookie('uname') != \"null\") {\r\n var uname = $.cookie('uname');\r\n var password = $.cookie('pword');\r\n $('input[name=remember]').prop('checked', true);\r\n this.setState({\r\n Username: uname,\r\n Password: password,\r\n });\r\n }\r\n\r\n $(document).ready(function () {\r\n // var preloader = document.getElementById(\"preloader\");\r\n // preloader.classList.add(\"hidden\");\r\n\r\n //RCNG-3328 -Unable to Sign in from login page when hits \"Enter\" button in keyboard.\r\n $(document).keypress(function (e) { \r\n if (e.keyCode === 13) {\r\n $('#button_login').trigger('click');\r\n }\r\n });\r\n //$('.login-form').bind('keypress', function (e) {\r\n // if (e.keyCode === 13) {\r\n // $('#button_login').trigger('click');\r\n // }\r\n //});\r\n });\r\n //var s = document.createElement(\"script\");\r\n //s.type = \"text/javascript\";\r\n //s.src = \"https://www.bing.com/api/maps/mapcontrol?branch=release\";\r\n //$(\"head\").append(s);\r\n //this.checkUserLoggedInStatus();\r\n sessionStorage.setItem('DefaultSearch', 'enabled');\r\n\r\n }\r\n\r\n //checkUserLoggedInStatus() { \r\n //axios.get(\"http://localhost:59591/\", { withCredentials: true })\r\n // .then(response => { \r\n // console.log(\"logged_in\", response);\r\n // if (!isNullOrUndefined(sessionStorage.getItem('UserInfo')))\r\n // this.props.history.push('/home');\r\n // })\r\n // .catch(error =>\r\n // console.log(\"check login error\", error)\r\n // );\r\n //}\r\n\r\n RedirectToForgotPassword() {\r\n this.props.history.push('/forgotpassword');\r\n }\r\n\r\n public render() {\r\n var divStyle = {\r\n backgroundImage: `url(${logo2})`\r\n }\r\n return
\r\n
\r\n
\r\n
\r\n
\r\n \"Maritime\r\n MARITIME \r\n
\r\n
\r\n
\r\n\r\n
\r\n this.UsernameChange(e)} placeholder='Username' autoComplete='off' />\r\n {/* this.PasswordChange(e)} placeholder='Password' autoComplete='off' />*/}\r\n
\r\n
\r\n
\r\n this.PasswordChange(e)} placeholder='Password' autoComplete='off' />\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n Forgot password?\r\n\r\n
or
\r\n\r\n \r\n\r\n
\r\n
\r\n
© ORBCOMM {(new Date().getFullYear())} All Rights Reserved
\r\n
\r\n {this.state.renderResetPasswordHtml}\r\n
\r\n
;\r\n }\r\n}\r\n\r\n\r\n//export default connect(\r\n// (state: ApplicationState) => state.userDetails, // Selects which state properties are merged into the component's props\r\n// UserDetailState.actionCreators // Selects which action creators are merged into the component's props\r\n//)(UserLogin as any);\r\n\r\n\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\n\r\ninterface State {\r\n copied: boolean;\r\n clipboardSupported: boolean;\r\n}\r\nexport default class InitAuth extends React.Component, any> {\r\n //window.location.href = \"/\"+sessionStorage.getItem(\"region\")\r\n url: string;\r\n baseUrl: string;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n copied: false,\r\n clipboardSupported: !!navigator.clipboard,\r\n copyError: false,\r\n };\r\n //this.url = window.location.href;\r\n this.url = window.location.href;\r\n this.baseUrl = this.url.replace(\"/initAuth\", \"\");\r\n var region = sessionStorage.getItem(\"region\");\r\n if (region) {\r\n region = region.replace(/\"/g, '');\r\n this.baseUrl = this.baseUrl + \"/\" + region;\r\n }\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n }\r\n\r\n handleButtonClick = () => {\r\n this.setState({ copied: true, copyError: false });\r\n var region = sessionStorage.getItem(\"region\");\r\n if (region) {\r\n region = region.replace(/\"/g, '');\r\n window.location.href = \"/\" + region;\r\n setTimeout(() => {\r\n this.url = window.location.href;\r\n window.open(this.url, '_self'); // Open the URL after the delay\r\n }, 6000);\r\n }\r\n \r\n };\r\n\r\n componentDidMount() {\r\n $('#globalLoader').hide();\r\n\r\n }\r\n\r\n public render() {\r\n return
\r\n\r\n
\r\n \r\n
\r\n \"Maritime\r\n MARITIME \r\n
\r\n \r\n
Your org now supports Multi-factor authentication (MFA) for the ORBCOMM Maritime platform
\r\n

{this.baseUrl}

\r\n {

Copy the above url then Press Ctrl+D (or Cmd+D on Mac) to bookmark.

}\r\n \r\n
\r\n \r\n
\r\n\r\n
© ORBCOMM {(new Date().getFullYear())} All Rights Reserved
\r\n
\r\n }\r\n}","import * as React from 'react';\r\nimport { Switch, Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport { PrivateRoute } from './PrivateRoute';\r\n//import Home from './components/routecomponents/Home';\r\nimport UserLogin from './components/routecomponents/UserLogin';\r\nimport InitAuth from './components/routecomponents/InitAuth';\r\n//import ForgotPassword from './components/routecomponents/ForgotPassword';\r\n//import MyProfile from './components/routecomponents/MyProfile';\r\n//import ReeferStatus from './components/routecomponents/ReeferStatus';\r\n//import GensetStatus from './components/routecomponents/GensetStatus';\r\n//import DryStatus from './components/routecomponents/DryStatus';\r\n//import GeofenceManagement from './components/routecomponents/GeofenceManagement';\r\n//import ReeferDetails from './components/routecomponents/ReeferDetails';\r\n//import ReeferCommandStatus from './components/routecomponents/ReeferCommandStatusSearch';\r\n//import PersonalSettings from './components/routecomponents/PersonalSettings';\r\n//import PreferenceSettings from './components/routecomponents/PreferenceSettings';\r\n//import RcdStatus from './components/routecomponents/RcdStatus';\r\n//import { UserSearch } from './components/routecomponents/UserSearch';\r\n//import { GroupManagement } from './components/routecomponents/GroupManagement';\r\n//import FleetManagement from './components/routecomponents/FleetManagement';\r\n//import AccessDenied from './components/routecomponents/AccessDenied';\r\n//import { ManageGenset } from './components/routecomponents/ManageGenset';\r\n//import { ManageDry } from './components/routecomponents/ManageDry';\r\n//import { ManageChassis } from './components/routecomponents/ManageChassis';\r\n//import { ManageReefer } from './components/routecomponents/ManageReefer';\r\n//import { DeviceSearch } from './components/routecomponents/DeviceSearch';\r\n//import SubscriptionManager from './components/routecomponents/SubscriptionManager';\r\n//import CustomAttributes from './components/routecomponents/CustomAttributes';\r\n//import AdminCargoCareSettings from './components/routecomponents/AdminCargoCareSettings';\r\n//import VesselStatus from './components/routecomponents/VesselStatus';\r\n//import { BookingAssignEdit } from './components/routecomponents/BookingAssignEdit';\r\n//import { BookingUnAssign } from './components/routecomponents/BookingUnAssign';\r\n//import GensetCommandStatusSearch from './components/routecomponents/GensetCommandStatusSearch';\r\n//import GensetDetails from './components/routecomponents/GensetDetails';\r\n//import DryCommandStatusSearch from './components/routecomponents/DryCommandStatusSearch';\r\n//import DryDetails from './components/routecomponents/DryDetails';\r\n//import ReeferSoftwareDistribute from './components/routecomponents/ReeferSoftwareDistribute';\r\n//import RCDFirmwareDistribute from './components/routecomponents/RCDFirmwareDistribute';\r\n//import GeofenceDistribute from './components/routecomponents/GeofenceDistribute';\r\n//import FileRepository from './components/routecomponents/FileRepository';\r\n//import ReeferSoftwareFile from './components/routecomponents/ReeferSoftwareFile';\r\n//import RcdFirmwareFile from './components/routecomponents/RcdFirmwareFile';\r\n//import GeofenceFile from './components/routecomponents/GeofenceFile';\r\n//import GensetHistory from './components/routecomponents/GensetHistorySearch';\r\n//import GensetMap from './components/routecomponents/GensetMapSearch';\r\n//import DryHistory from './components/routecomponents/DryHistorySearch';\r\n//import DryMap from './components/routecomponents/DryMapSearch';\r\n//import ReeferHistory from './components/routecomponents/ReeferHistorySearch';\r\n//import RcdHistory from './components/routecomponents/RcdHistorySearch';\r\n//import ReeferMap from './components/routecomponents/ReeferMapSearch';\r\n//import DeploymentStatus from './components/routecomponents/DeploymentStatus';\r\n//import { DeploymentDetails } from './components/routecomponents/DeploymentDetails';\r\n//import { DeploymentStatistics } from './components/routecomponents/DeploymentStatistics';\r\n//import PowerOnOffReport from './components/routecomponents/PowerOnOffReport';\r\n//import DwellTimeReport from './components/routecomponents/DwellTimeReport';\r\n//import GravityVectorReport from './components/routecomponents/GravityVectorReport';\r\n//import FuelGainReport from './components/routecomponents/FuelGainReport';\r\n//import FuelLossReport from './components/routecomponents/FuelLossReport';\r\n//import ShorePowerReport from './components/routecomponents/ShorePowerReport';\r\n//import EngineHourReport from './components/routecomponents/EngineHourReport';\r\n//import DwellTimeDryReport from './components/routecomponents/DwellTimeDryReport';\r\n//import DwellTimeReeferReport from './components/routecomponents/DwellTimeReeferReport';\r\n//import FeedBack from './components/routecomponents/FeedBack';\r\n//import ContactUs from './components/routecomponents/ContactUs';\r\n//import ChassisStatus from './components/routecomponents/ChassisStatus';\r\n//import ChassisHistory from './components/routecomponents/ChassisHistorySearch';\r\n//import ChassisMap from './components/routecomponents/ChassisMapSearch';\r\n//import ChassisDetails from './components/routecomponents/ChassisDetails';\r\n//import FileNotFound from './components/routecomponents/FileNotFound';\r\n//import Unauthorized from './components/routecomponents/Unauthorized';\r\nconst fallback =
loading....
;\r\n\r\nconst FileNotFound = loadable(() => import('./components/routecomponents/FileNotFound'), {\r\n fallback,\r\n});\r\nconst Unauthorized = loadable(() => import('./components/routecomponents/Unauthorized'), {\r\n fallback,\r\n});\r\nconst ForgotPassword = loadable(() => import('./components/routecomponents/ForgotPassword'), {\r\n fallback,\r\n});\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatusSSRM'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\nconst OEMCustomerManager = loadable(() => import('./components/routecomponents/OEMCustomerManager').then(m => m.OEMCustomerManager), {\r\n fallback,\r\n});\r\n\r\nexport const routes = \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n;\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport { useState, useEffect } from 'react';\r\nimport { useHistory, Redirect } from \"react-router-dom\";\r\nimport animatedloader from '../../images/animated-loader.gif';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { RCUtils } from './../../RCUtils';\r\nvar Config: any = require('../../Config.json');\r\n\r\n\r\nconst OktaSecureHome = () => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n const { oktaAuth, authState } = useOktaAuth();\r\n const [userInfo, setUserInfo] = useState(null);\r\n const [hideWelcomeInfo, sethideWelcomeInfo] = useState(false);\r\n const [rightsInfo, setrightsInfo] = useState(false);\r\n const history = useHistory();\r\n useEffect(() => {\r\n if (!authState.isAuthenticated) {\r\n // When user isn't authenticated, forget any user info\r\n setUserInfo(null);\r\n } else {\r\n oktaAuth.getUser().then((info) => {\r\n setUserInfo(info);\r\n if (sessionStorage.getItem(\"OIN\") != null) {\r\n const TemplateUrl = Config.ApiBaseUrl + '/api/AuthUser/ValidateOINOktaUser';\r\n var requestHeaders = new Headers();\r\n requestHeaders.append('pragma', 'no-cache');\r\n requestHeaders.append('cache-control', 'no-cache');\r\n requestHeaders.append('Accept', 'application/json');\r\n requestHeaders.append('Content-Type', 'application/json');\r\n fetch(TemplateUrl, {\r\n method: 'POST',\r\n headers: requestHeaders,\r\n body: JSON.stringify({ \"Username\": info.email })\r\n })\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem('JWTToken', userDetailInfo.JWTToken);\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n if (userDetailInfo.User.OKTASignInOverrideOption == \"D\") {\r\n var welcomeText = document.getElementById(\"welcomeText\");\r\n welcomeText.classList.add(\"hidden\");\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in disallowed', 'Okta sign-in is disallowed. You will now be redirected to the standard Maritime platform sign-in page at ' + window.location.origin + '.', onOKSubmitDisAllow.bind(this));\r\n } else if ((userDetailInfo.User.OKTASignInOverrideOption == \"A\") || (userDetailInfo.User.OKTASignInOverrideOption == \"R\")) {\r\n history.push('/home');\r\n }\r\n } else {\r\n var loader = document.getElementById(\"loaderImg\");\r\n loader.classList.add(\"hidden\");\r\n sethideWelcomeInfo(true);\r\n }\r\n }\r\n else {\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n // PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n setrightsInfo(true);\r\n\r\n }\r\n }).catch((error) => {\r\n console.log(\"error\" + error);\r\n });\r\n\r\n } else {\r\n sessionStorage.setItem('JWTToken', oktaAuth.getAccessToken());\r\n var url = Config.ApiBaseUrl + '/api/AuthUser/ValidateOktaUser';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleOktaError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n if (userDetailInfo.User.OKTASignInOverrideOption == \"D\") {\r\n var welcomeText = document.getElementById(\"welcomeText\");\r\n welcomeText.classList.add(\"hidden\");\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in disallowed', 'Okta sign-in is disallowed. You will now be redirected to the standard Maritime platform sign-in page at ' + window.location.origin + '.', onOKSubmitDisAllow.bind(this));\r\n } else if ((userDetailInfo.User.OKTASignInOverrideOption == \"A\") || (userDetailInfo.User.OKTASignInOverrideOption == \"R\")) {\r\n history.push('/home');\r\n }\r\n } else {\r\n var loader = document.getElementById(\"loaderImg\");\r\n loader.classList.add(\"hidden\");\r\n sethideWelcomeInfo(true);\r\n }\r\n }\r\n else {\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n // PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n setrightsInfo(true);\r\n }\r\n }).catch((error) => {\r\n console.log(\"error\" + error);\r\n });\r\n }\r\n });\r\n }\r\n // }, [authState, oktaAuth]);\r\n }, []);\r\n\r\n\r\n const onOKSubmitDisAllow = () => {\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n window.location.href = \"/\";\r\n }\r\n\r\n const login = () => {\r\n //authService.login('/');\r\n // oktaAuth.signIn('/');\r\n oktaAuth.signInWithRedirect();\r\n };\r\n\r\n\r\n if (!authState) {\r\n return (\r\n
Loading Please Wait ...... Loading
\r\n );\r\n }\r\n return (\r\n\r\n //let oktabaseURI = window.location.href;\r\n \r\n
\r\n Logo\r\n {!hideWelcomeInfo && authState.isAuthenticated && !userInfo\r\n &&
Loading information... Please Wait....
}\r\n {!hideWelcomeInfo && authState.isAuthenticated && userInfo && authState.accessToken != null\r\n && (\r\n
\r\n
\r\n Welcome {userInfo.name}!\r\n
\r\n
\r\n )}\r\n {hideWelcomeInfo && (\r\n
\r\n
Maritime platform cannot find a local account that matches this Okta account.
\r\n
\r\n )}\r\n {rightsInfo && (\r\n
\r\n
Your access rights have been revoked or you have not been assigned any access group. Please contact your Administrator.
\r\n
\r\n )}\r\n {!authState.isAuthenticated\r\n && (\r\n //authService.login('/')\r\n //oktaAuth.signIn('/')\r\n oktaAuth.signInWithRedirect()\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default connect()(OktaSecureHome);\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport { useState, useEffect } from 'react';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport * as RCNGWindow from '../components/sharedcomponents/ConfirmationWindow';\r\nimport { RCUtils } from '../RCUtils';\r\n\r\nvar Config: any = require('../Config.json');\r\n\r\n\r\nconst OktaRedirectHome = () => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n const { oktaAuth, authState } = useOktaAuth();\r\n const [userInfo, setUserInfo] = useState(null);\r\n const [hideWelcomeInfo, sethideWelcomeInfo] = useState(false);\r\n const [rightsInfo, setrightsInfo] = useState(false);\r\n\r\n const history = useHistory();\r\n // const { authState, oktaAuth } = useOktaAuth();\r\n // const login = () => oktaAuth.signInWithRedirect({ originalUri: \"/profile\" });\r\n useEffect(() => {\r\n if (authState && !authState.isAuthenticated) {\r\n // When user isn't authenticated, forget any user info\r\n setUserInfo(null);\r\n } else if (authState && authState.isAuthenticated) {\r\n oktaAuth.getUser().then((info) => {\r\n setUserInfo(info);\r\n if (sessionStorage.getItem(\"OIN\") != null) {\r\n const TemplateUrl = Config.ApiBaseUrl + '/api/AuthUser/ValidateOINOktaUser';\r\n var requestHeaders = new Headers();\r\n requestHeaders.append('pragma', 'no-cache');\r\n requestHeaders.append('cache-control', 'no-cache');\r\n requestHeaders.append('Accept', 'application/json');\r\n requestHeaders.append('Content-Type', 'application/json');\r\n fetch(TemplateUrl, {\r\n method: 'POST',\r\n headers: requestHeaders,\r\n body: JSON.stringify({ \"Username\": info.email })\r\n })\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem('JWTToken', userDetailInfo.JWTToken);\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n if (userDetailInfo.User.OKTASignInOverrideOption == \"D\") {\r\n var welcomeText = document.getElementById(\"welcomeText\");\r\n welcomeText.classList.add(\"hidden\");\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in disallowed', 'Okta sign-in is disallowed. You will now be redirected to the standard Maritime platform sign-in page at ' + window.location.origin + '.', onOKSubmitDisAllow.bind(this));\r\n } else if ((userDetailInfo.User.OKTASignInOverrideOption == \"A\") || (userDetailInfo.User.OKTASignInOverrideOption == \"R\")) {\r\n history.push('/home');\r\n //history.push('/profile');\r\n //window.location.replace('/home');\r\n }\r\n } else {\r\n var loader = document.getElementById(\"loaderImg\");\r\n loader.classList.add(\"hidden\");\r\n sethideWelcomeInfo(true);\r\n }\r\n }\r\n else {\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n // PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n setrightsInfo(true);\r\n }\r\n }).catch((error) => {\r\n console.log(\"error\" + error);\r\n });\r\n\r\n } else {\r\n sessionStorage.setItem('JWTToken', oktaAuth.getAccessToken());\r\n var url = Config.ApiBaseUrl + '/api/AuthUser/ValidateOktaUser';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleOktaError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n if (userDetailInfo.User.OKTASignInOverrideOption == \"D\") {\r\n var welcomeText = document.getElementById(\"welcomeText\");\r\n welcomeText.classList.add(\"hidden\");\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in disallowed', 'Okta sign-in is disallowed. You will now be redirected to the standard Maritime platform sign-in page at ' + window.location.origin + '.', onOKSubmitDisAllow.bind(this));\r\n } else if ((userDetailInfo.User.OKTASignInOverrideOption == \"A\") || (userDetailInfo.User.OKTASignInOverrideOption == \"R\")) {\r\n //history.push('/profile');\r\n history.push('/home');\r\n //window.location.replace('/home');\r\n }\r\n } else {\r\n var loader = document.getElementById(\"loaderImg\");\r\n loader.classList.add(\"hidden\");\r\n sethideWelcomeInfo(true);\r\n }\r\n }\r\n else {\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n // PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n setrightsInfo(true);\r\n }\r\n }).catch((error) => {\r\n console.log(\"error\" + error);\r\n });\r\n }\r\n });\r\n }\r\n }, [authState, oktaAuth]);\r\n //}, []);\r\n\r\n\r\n const onOKSubmitDisAllow = () => {\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n window.location.href = \"/\";\r\n }\r\n\r\n const login = () => {\r\n //authService.login('/');\r\n // oktaAuth.signIn('/');\r\n oktaAuth.signInWithRedirect();\r\n };\r\n\r\n\r\n if (!authState) {\r\n return (\r\n
Loading Please Wait ......
\r\n );\r\n }\r\n return (\r\n //let oktabaseURI = window.location.href;\r\n \r\n
\r\n Logo\r\n {!hideWelcomeInfo && authState.isAuthenticated && !userInfo\r\n &&
Loading information... Please Wait....
}\r\n {!hideWelcomeInfo && authState.isAuthenticated && userInfo && authState.accessToken != null\r\n && (\r\n
\r\n
\r\n Welcome {userInfo.name}!\r\n
\r\n
\r\n )}\r\n {hideWelcomeInfo && (\r\n
\r\n
The platform cannot find a local account that matches this Okta account.
\r\n
\r\n )}\r\n {rightsInfo && (\r\n
\r\n
Your access rights have been revoked or you have not been assigned any access group. Please contact your Administrator.
\r\n
\r\n )}\r\n {!authState.isAuthenticated\r\n && (\r\n //authService.login('/')\r\n //oktaAuth.signIn('/')\r\n oktaAuth.signInWithRedirect()\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default connect()(OktaRedirectHome);\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nconst OktaLogout = () => { \r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n useEffect(() => {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n \r\n }, []); \r\n\r\n return (\r\n
\r\n
You have been successfully logged out!
\r\n
\r\n );\r\n};\r\n\r\nexport default OktaLogout;\r\n","import * as React from 'react';\r\nimport { SecureRoute } from '@okta/okta-react';\r\n\r\nexport const OktaSecuredRoute = ({ component: Component, layout: Layout, path: Path, ...rest }) => {\r\n /* Below code commented WI 26952 Start */\r\n //var isLoginPath = Path === \"/\";\r\n //if (window.location.search != \"\" && window.location.search != null)\r\n // sessionStorage.setItem(\"QueryTag\", window.location.search);\r\n //if (isNullOrUndefined(sessionStorage.getItem('UserInfo')) && !isLoginPath && Path != \"/forgotpassword\") {\r\n // var redirectPath = \"/\";\r\n // if (sessionStorage.getItem('okta-token-storage') != null) {\r\n\r\n // if (sessionStorage.getItem(\"UrlPath\") != null) {\r\n // redirectPath = redirectPath + sessionStorage.getItem(\"UrlPath\");\r\n // }\r\n // //this.props.history.push(\"/\" + redirectPath);\r\n\r\n // }\r\n // return ;\r\n //}\r\n //else if (!isNullOrUndefined(sessionStorage.getItem('UserInfo')) && Path === \"/\") {\r\n // //return ;\r\n // if (isNullOrUndefined(sessionStorage.getItem('UserInfo')) && !isLoginPath && Path != \"/forgotpassword\") {\r\n // var redirectPath = \"/\";\r\n // if (sessionStorage.getItem('okta-token-storage') != null) {\r\n\r\n // if (sessionStorage.getItem(\"UrlPath\") != null) {\r\n // redirectPath = redirectPath + sessionStorage.getItem(\"UrlPath\");\r\n // }\r\n // //this.props.history.push(\"/\" + redirectPath);\r\n\r\n // }\r\n // return ;\r\n // }\r\n //}\r\n /* Below code commented WI 26952 End */\r\n\r\n return (\r\n \r\n \r\n \r\n )} />;\r\n}","import React from \"react\";\r\nimport { Route, Redirect, Switch, useHistory } from \"react-router-dom\";\r\nimport { Security, LoginCallback } from \"@okta/okta-react\";\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport OktaSecureHome from './components/routecomponents/OktaSecureHome';\r\nimport OktaRedirectHome from './components/OktaRedirectHome';\r\nimport OktaLogout from './components/routecomponents/OktaLogout';\r\nimport FileNotFound from './components/routecomponents/FileNotFound';\r\nimport Unauthorized from './components/routecomponents/Unauthorized';\r\nimport { OktaSecuredRoute } from './OktaSecuredRoute';\r\n\r\nconst fallback =
loading....
;\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatusSSRM'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\nvar Config: any = require('./Config.json');\r\n\r\nconst CALLBACK_PATH = \"/implicit/callback\";\r\n\r\nlet oktabaseURI = window.location.href;\r\nvar oauthHomePath = sessionStorage.getItem('KeyWord');\r\n\r\nif (sessionStorage.getItem('KeyWord') == null) {\r\n\r\n var lastTagName = oktabaseURI.split(\"/\").pop();\r\n let validKeyWords = Config.ValidOAuthKeyWords;\r\n let arrValidKeywords = validKeyWords.split(\",\");\r\n if (arrValidKeywords.indexOf(lastTagName) !== -1) {\r\n oauthHomePath = \"/\" + lastTagName;\r\n }\r\n} else {\r\n var lastTagName = sessionStorage.getItem('KeyWord');\r\n oauthHomePath = \"/\" + lastTagName;\r\n}\r\n\r\nconst OktaApp = (props) => {\r\n const history = useHistory();\r\n const restoreOriginalUri = async (_oktaAuth: any, originalUri: any) => {\r\n history.replace(oauthHomePath); \r\n };\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ); \r\n\r\n};\r\n\r\nexport default OktaApp;\r\n\r\n\r\n/* secure route on entire application\r\nconst App = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n*/","import { NavigationClient, NavigationOptions } from \"@azure/msal-browser\";\r\nimport { History } from \"history\";\r\n\r\n/**\r\n * This is an example for overriding the default function MSAL uses to navigate to other urls in your webpage\r\n */\r\nexport class CustomNavigationClient extends NavigationClient {\r\n private history: History;\r\n\r\n constructor(history: History) {\r\n super();\r\n this.history = history;\r\n }\r\n\r\n /**\r\n * Navigates to other pages within the same web application\r\n * You can use the useHistory hook provided by react-router-dom to take advantage of client-side routing\r\n * @param url \r\n * @param options \r\n */\r\n async navigateInternal(url: string, options: NavigationOptions) {\r\n const relativePath = url.replace(window.location.origin, '');\r\n if (options.noHistory) {\r\n this.history.replace(relativePath);\r\n } else {\r\n this.history.push(relativePath);\r\n }\r\n\r\n return false;\r\n }\r\n}","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useState, useEffect } from 'react';\r\n\r\nexport const AzureADUserLogin = (props) => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n const [userInfo, setUserInfo] = useState(null);\r\n const history = useHistory();\r\n useEffect(() => {\r\n if (sessionStorage.getItem('UserInfo')) {\r\n setUserInfo(localStorage.getItem('login_status'))\r\n sessionStorage.setItem('azureInit', 'true')\r\n $('#globalLoader').hide();\r\n history.push('/home');\r\n }\r\n }, []);\r\n\r\n \r\n return (\r\n <> \r\n
\r\n
Loading...
\r\n
\r\n
\r\n
\r\n {props.children}\r\n \r\n );\r\n};\r\nexport default connect()(AzureADUserLogin);\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from './sharedcomponents/PopupWindow';\r\nimport animatedloader from '../images/animated-loader.gif';\r\nimport { UnauthenticatedTemplate } from \"@azure/msal-react\";\r\n\r\nexport default class AzureADGuestLayout extends React.Component<{}, {}> {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n $('#globalLoader').hide();\r\n }\r\n WithoutMenu() {\r\n return
{this.props.children}
\r\n }\r\n public render() {\r\n PopupWindow.ClosePopup();\r\n return
\r\n
Loading
\r\n
\r\n {this.WithoutMenu()}\r\n
\r\n \r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { NavMenu } from './NavMenu';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from './sharedcomponents/PopupWindow';\r\nimport { AuthenticatedTemplate } from \"@azure/msal-react\";\r\nimport animatedloader from '../images/animated-loader.gif';\r\nimport { initialize, whenLoaded } from \"bing-maps-loader\";\r\nvar Config: any = require('../Config.json');\r\n\r\nexport default class AzureADAuthorizedLayout extends React.Component<{}, {}> {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n }\r\n\r\n componentDidMount() {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n $('#globalLoader').hide();\r\n initialize(Config.BingMapsKey);\r\n }\r\n\r\n WithMenu() {\r\n return
{this.props.children}
\r\n }\r\n\r\n public render() {\r\n PopupWindow.ClosePopup();\r\n return
\r\n
Loading
\r\n
\r\n {this.WithMenu()}\r\n
\r\n \r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport logo1 from '../../images/newTitleOrb.png';\r\nimport logo2 from '../../images/login_bg1.jpg';\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\nconst Azuresignout = () => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n useEffect(() => {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n\r\n }, []);\r\n\r\n const RedirectToRC = () => { \r\n window.location.href = \"/\";\r\n };\r\n\r\n var divStyle = {\r\n backgroundImage: `url(${logo2})`\r\n }\r\n\r\n return (\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Maritime\r\n MARITIME \r\n
\r\n
\r\n\r\n
You have been successfully signed out!
\r\n {sessionStorage.getItem('AZRD') == null ? Click here to sign in again : ''}\r\n\r\n\r\n
\r\n
© ORBCOMM All Rights Reserved
\r\n
\r\n );\r\n};\r\n\r\nexport default Azuresignout;\r\n","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { BrowserRouter as Router, Route, Switch, useHistory } from 'react-router-dom';\r\nimport { MsalProvider } from '@azure/msal-react';\r\n\r\nimport { CustomNavigationClient } from \"./NavigationClient\";\r\nimport AzureADUserLogin from './components/routecomponents/AzureADUserLogin';\r\nimport { Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport { PrivateRoute } from './PrivateRoute';\r\nimport AzureADGuestLayout from './components/AzureADGuestLayout';\r\nimport AzureADAuthorizedLayout from './components/AzureADAuthorizedLayout';\r\nimport Azuresignout from './components/routecomponents/Azuresignout';\r\nimport ForgotPassword from './components/routecomponents/ForgotPassword';\r\nimport FileNotFound from './components/routecomponents/FileNotFound';\r\nimport Unauthorized from './components/routecomponents/Unauthorized';\r\nconst fallback =
loading....
;\r\n\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatusSSRM'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nfunction AzureADRoutes() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nconst AzureApp = ({ instance }) => {\r\n const history = useHistory();\r\n const navigationClient = new CustomNavigationClient(history);\r\n instance.setNavigationClient(navigationClient);\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AzureApp;\r\n\r\n\r\n","import React from 'react';\r\nimport { useState, useEffect} from \"react\";\r\nimport { connect } from 'react-redux';\r\nimport { useIsAuthenticated } from '@azure/msal-react';\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { useHistory } from 'react-router-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { AuthenticationResult } from '@azure/msal-common';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport const AzureADRedirectLogin = (props) => {\r\n const { instance } = useMsal();\r\n const isAuthenticated = useIsAuthenticated();\r\n const [userInfo, setUserInfo] = useState(null);\r\n const [redirectInitiated, setRedirectInitiated] = useState(false);\r\n const [signindisallowed, setSignindisallowed] = useState(false);\r\n const [signinError, setSigninError] = useState(false);\r\n const [signinDataError, setSigninDataError] = useState(false);\r\n const [signinDataErrorMsg, setSigninDataErrorMsg] = useState('');\r\n const loginRequest = {\r\n scopes: [\"api://\" + Config.AzurereApiclientId + \"/access_rc\",\"email\"],\r\n\r\n };\r\n\r\n const history = useHistory();\r\n useEffect(() => {\r\n setSigninError(false);\r\n setSigninDataError(false);\r\n setSignindisallowed(false);\r\n instance\r\n .handleRedirectPromise()\r\n .then((tokenResponse: AuthenticationResult) => {\r\n if (tokenResponse !== null && !redirectInitiated) {\r\n setRedirectInitiated(true);\r\n if (tokenResponse.idTokenClaims != undefined && tokenResponse.idTokenClaims != null && tokenResponse.idTokenClaims['given_name'] != undefined && tokenResponse.idTokenClaims['given_name'] != \"\") {\r\n sessionStorage.setItem('AZUName', tokenResponse.idTokenClaims['given_name']);\r\n }\r\n let accessToken = tokenResponse.accessToken;\r\n sessionStorage.setItem('JWTToken', accessToken);\r\n var url = Config.ApiBaseUrl + '/api/AuthUser/ValidateAzureADUser';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleOktaError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'AzureSignInOverrideOption': userDetailInfo.User.AzureSignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n setUserInfo(userInfo);\r\n if (userDetailInfo.User.Customer.AzureSignInOption == \"D\") {\r\n \r\n setSignindisallowed(true);\r\n setTimeout(() => {\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }, 800);\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' has been disallowed by your administrator. Please sign in to Maritime platform without using Microsoft.\");\r\n return;\r\n }\r\n else if (userDetailInfo.User.AzureSignInOverrideOption == \"D\") {\r\n setSignindisallowed(true);\r\n \r\n setTimeout(() => {\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }, 800);\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' has been disallowed by your administrator. Please sign in to Maritime platform without using Microsoft.\");\r\n return;\r\n } else {\r\n sessionStorage.setItem('AZRD', 'true');\r\n history.push('/home');\r\n }\r\n } else {\r\n var loader = document.getElementById(\"preloader\");\r\n loader.classList.add(\"hidden\");\r\n PopupWindow.showErrorMessage(\"Login\", \"User data not match with Maritime platform data. Please contact ORBCOMM support team for further information.\");\r\n }\r\n }\r\n else {\r\n setSigninDataError(true);\r\n setSigninDataErrorMsg(data.Errmsg);\r\n var loader = document.getElementById(\"preloader\");\r\n loader.classList.add(\"hidden\");\r\n PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n }\r\n\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n setSigninError(true);\r\n var loader = document.getElementById(\"preloader\");\r\n loader.classList.add(\"hidden\");\r\n console.error(error);\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account. Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n });\r\n if (sessionStorage.getItem('azureInit') == null) {\r\n sessionStorage.setItem('azureInit', 'true')\r\n instance.loginRedirect(loginRequest).catch(e => {\r\n console.log(e);\r\n setSigninError(true);\r\n PopupWindow.showErrorMessage(\"Login\", \" 'Sign in with Microsoft' is not available for this account. Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.\");\r\n });;\r\n }\r\n }, [redirectInitiated]);\r\n const RedirectToRC = () => { \r\n window.location.href = \"/\";\r\n };\r\n\r\n \r\n \r\n return (\r\n \r\n <>\r\n
\r\n
\r\n {isAuthenticated && !signindisallowed && !signinDataError ?\r\n \r\n
Loading Maritime platform.....
\r\n \r\n \r\n : ''}\r\n
\r\n
\r\n { isAuthenticated && signindisallowed ? \r\n <>\r\n
\r\n
'Sign in with Microsoft' has been disallowed by your administrator. Please sign in to Maritime platform without using Microsoft. You will now be redirected to the Maritime platform Sign-In page
\r\n \r\n
\r\n \r\n \r\n : ''}\r\n
\r\n
\r\n {isAuthenticated && !signindisallowed && signinDataError ?\r\n \r\n\r\n
{signinDataErrorMsg}
\r\n \r\n \r\n : ''}\r\n
\r\n
\r\n {!isAuthenticated && signinError ? \r\n \r\n \r\n
-Sign in with Microsoft- is not available for this account. Please contact your local Maritime platform administrator or ORBCOMM Customer Care for assistance.
\r\n \r\n : ''}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {props.children}\r\n \r\n );\r\n};\r\nexport default connect()(AzureADRedirectLogin);\r\n","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { BrowserRouter as Router, Route, Switch, useHistory } from 'react-router-dom';\r\nimport { MsalProvider } from '@azure/msal-react';\r\nimport { CustomNavigationClient } from \"./NavigationClient\";\r\nimport { Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport { PrivateRoute } from './PrivateRoute';\r\nimport AzureADGuestLayout from './components/AzureADGuestLayout';\r\nimport AzureADAuthorizedLayout from './components/AzureADAuthorizedLayout';\r\nimport Azuresignout from './components/routecomponents/Azuresignout';\r\nimport AzureADRedirectLogin from './components/routecomponents/AzureADRedirectLogin';\r\nimport ForgotPassword from './components/routecomponents/ForgotPassword';\r\nimport FileNotFound from './components/routecomponents/FileNotFound';\r\nimport Unauthorized from './components/routecomponents/Unauthorized';\r\nconst fallback =
loading....
;\r\n\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatusSSRM'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nfunction AzureADRoutes() {\r\n return (\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n );\r\n}\r\nconst AzureADRedirectApp = ({ instance }) => {\r\n const history = useHistory();\r\n const navigationClient = new CustomNavigationClient(history);\r\n instance.setNavigationClient(navigationClient);\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AzureADRedirectApp;\r\n\r\n\r\n","import * as React from 'react';\r\n\r\nconst OktatoRCRedirect = () => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n //useEffect(() => {\r\n \r\n\r\n //}, []); // Update if authState changes\r\n\r\n const RedirectToRC = () => {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n window.location.href = \"/\";\r\n };\r\n return (\r\n
\r\n
Okta sign-in is disallowed. You will now be redirected to the standard Maritime platform sign-in page at {window.location.origin}.
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default OktatoRCRedirect;\r\n","import * as React from 'react';\r\n\r\nconst OktaNoAccount = () => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n\r\n return (\r\n
\r\n
Okta is not configurated for this Fleet.
\r\n
\r\n );\r\n};\r\n\r\nexport default OktaNoAccount;\r\n","// @ts-nocheck\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getEUConfig } from \"./OauthConfig\";\r\nexport const Auth0ProviderWithHistoryEU = ({ children }) => {\r\n const history = useHistory();\r\n const oAuthconfig = getEUConfig();\r\n const domain = oAuthconfig.domain;\r\n const clientId = oAuthconfig.clientId;\r\n const audience = oAuthconfig.audience;\r\n const redirectUri = window.location.origin;\r\n\r\n const onRedirectCallback = (appState) => {\r\n history.push(appState?.returnTo || window.location.pathname);\r\n };\r\n\r\n if (!(domain && clientId && redirectUri)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","// @ts-nocheck\r\nimport configJson from \"./Config.json\";\r\n\r\nexport function getUSConfig() {\r\n // Configure the audience here. By default, it will take whatever is in the config\r\n // (specified by the `audience` key) unless it's the default value of \"YOUR_API_IDENTIFIER\" (which\r\n // is what you get sometimes by using the Auth0 sample download tool from the quickstart page, if you\r\n // don't have an API).\r\n // If this resolves to `null`, the API page changes to show some helpful info about what to do\r\n // with the audience.\r\n const audience =\r\n configJson.OAuthAudience && configJson.OAuthAudience !== configJson.OAuthAudience\r\n ? configJson.OAuthAudience\r\n : null;\r\n\r\n // return {\r\n // domain: configJson.OAuthDomain,\r\n // clientId: configJson.OAuthClientId,\r\n // ...(audience ? { audience } : null),\r\n // };\r\n return {\r\n domain: configJson.OAuthDomain_US,\r\n clientId: configJson.OAuthClientId_US,\r\n audience: configJson.OAuthAudience_US,\r\n };\r\n}\r\n\r\nexport function getEUConfig() {\r\n // Configure the audience here. By default, it will take whatever is in the config\r\n // (specified by the `audience` key) unless it's the default value of \"YOUR_API_IDENTIFIER\" (which\r\n // is what you get sometimes by using the Auth0 sample download tool from the quickstart page, if you\r\n // don't have an API).\r\n // If this resolves to `null`, the API page changes to show some helpful info about what to do\r\n // with the audience.\r\n const audience =\r\n configJson.OAuthAudience && configJson.OAuthAudience !== configJson.OAuthAudience\r\n ? configJson.OAuthAudience\r\n : null;\r\n\r\n // return {\r\n // domain: configJson.OAuthDomain,\r\n // clientId: configJson.OAuthClientId,\r\n // ...(audience ? { audience } : null),\r\n // };\r\n return {\r\n domain: configJson.OAuthDomain_EU,\r\n clientId: configJson.OAuthClientId_EU,\r\n audience: configJson.OAuthAudience_EU,\r\n };\r\n}\r\nexport function getJPConfig() {\r\n const audience =\r\n configJson.OAuthAudience && configJson.OAuthAudience !== configJson.OAuthAudience\r\n ? configJson.OAuthAudience\r\n : null;\r\n\r\n return {\r\n domain: configJson.OAuthDomain_JP,\r\n clientId: configJson.OAuthClientId_JP,\r\n audience: configJson.OAuthAudience_JP,\r\n };\r\n}\r\nexport function getCAConfig() {\r\n const audience =\r\n configJson.OAuthAudience && configJson.OAuthAudience !== configJson.OAuthAudience\r\n ? configJson.OAuthAudience\r\n : null;\r\n\r\n return {\r\n domain: configJson.OAuthDomain_CA,\r\n clientId: configJson.OAuthClientId_CA,\r\n audience: configJson.OAuthAudience_CA,\r\n };\r\n}\r\nexport function getAUConfig() {\r\n const audience =\r\n configJson.OAuthAudience && configJson.OAuthAudience !== configJson.OAuthAudience\r\n ? configJson.OAuthAudience\r\n : null;\r\n\r\n return {\r\n domain: configJson.OAuthDomain_AU,\r\n clientId: configJson.OAuthClientId_AU,\r\n audience: configJson.OAuthAudience_AU,\r\n };\r\n}\r\n\r\nexport function getUKConfig() {\r\n const audience =\r\n configJson.OAuthAudience && configJson.OAuthAudience !== configJson.OAuthAudience\r\n ? configJson.OAuthAudience\r\n : null;\r\n\r\n return {\r\n domain: configJson.OAuthDomain_UK,\r\n clientId: configJson.OAuthClientId_UK,\r\n audience: configJson.OAuthAudience_UK,\r\n };\r\n}","// @ts-nocheck\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getUSConfig } from \"./OauthConfig\";\r\nexport const Auth0ProviderWithHistoryUS = ({ children }) => {\r\n const history = useHistory();\r\n const oAuthconfig = getUSConfig();\r\n const domain = oAuthconfig.domain;\r\n const clientId = oAuthconfig.clientId;\r\n const audience = oAuthconfig.audience;\r\n const redirectUri = window.location.origin;\r\n\r\n const onRedirectCallback = (appState) => {\r\n history.push(appState?.returnTo || window.location.pathname);\r\n };\r\n\r\n if (!(domain && clientId && redirectUri)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","// @ts-nocheck\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getJPConfig } from \"./OauthConfig\";\r\nexport const Auth0ProviderWithHistoryJP = ({ children }) => {\r\n const history = useHistory();\r\n const oAuthconfig = getJPConfig();\r\n const domain = oAuthconfig.domain;\r\n const clientId = oAuthconfig.clientId;\r\n const audience = oAuthconfig.audience;\r\n const redirectUri = window.location.origin;\r\n\r\n const onRedirectCallback = (appState) => {\r\n history.push(appState?.returnTo || window.location.pathname);\r\n };\r\n\r\n if (!(domain && clientId && redirectUri)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","// @ts-nocheck\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getUKConfig } from \"./OauthConfig\";\r\nexport const Auth0ProviderWithHistoryUK = ({ children }) => {\r\n const history = useHistory();\r\n const oAuthconfig = getUKConfig();\r\n const domain = oAuthconfig.domain;\r\n const clientId = oAuthconfig.clientId;\r\n const audience = oAuthconfig.audience;\r\n const redirectUri = window.location.origin;\r\n\r\n const onRedirectCallback = (appState) => {\r\n history.push(appState?.returnTo || window.location.pathname);\r\n };\r\n\r\n if (!(domain && clientId && redirectUri)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","// @ts-nocheck\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getAUConfig } from \"./OauthConfig\";\r\nexport const Auth0ProviderWithHistoryAU = ({ children }) => {\r\n const history = useHistory();\r\n const oAuthconfig = getAUConfig();\r\n const domain = oAuthconfig.domain;\r\n const clientId = oAuthconfig.clientId;\r\n const audience = oAuthconfig.audience;\r\n const redirectUri = window.location.origin;\r\n\r\n const onRedirectCallback = (appState) => {\r\n history.push(appState?.returnTo || window.location.pathname);\r\n };\r\n\r\n if (!(domain && clientId && redirectUri)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","// @ts-nocheck\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getCAConfig } from \"./OauthConfig\";\r\nexport const Auth0ProviderWithHistoryCA = ({ children }) => {\r\n const history = useHistory();\r\n const oAuthconfig = getCAConfig();\r\n const domain = oAuthconfig.domain;\r\n const clientId = oAuthconfig.clientId;\r\n const audience = oAuthconfig.audience;\r\n const redirectUri = window.location.origin;\r\n\r\n const onRedirectCallback = (appState) => {\r\n history.push(appState?.returnTo || window.location.pathname);\r\n };\r\n\r\n if (!(domain && clientId && redirectUri)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport ReeferSettings from '../../images/ReeferSettings.png';\r\nconst Loading = () => (\r\n
\r\n \"Loading\"\r\n
\r\n);\r\n\r\nexport default Loading;","// @ts-nocheck\r\nimport { withAuthenticationRequired } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\nimport Loading from \"./components/routecomponents/Loading\";\r\n\r\nconst AuthOProtectedRoute = ({ component: Component, layout: Layout, ...rest }) => {\r\n const WrappedComponent = withAuthenticationRequired(Component, {\r\n onRedirecting: () => (\r\n
\r\n \r\n
\r\n ),\r\n });\r\n\r\n return (\r\n (\r\n \r\n \r\n \r\n )}\r\n {...rest}\r\n />\r\n );\r\n};\r\n\r\nexport default AuthOProtectedRoute;","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { useState,useEffect } from 'react';\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\nconst LoginOauthEU = () => {\r\n var url: string;\r\n var baseUrl: string;\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n url = window.location.href;\r\n const { user,\r\n isAuthenticated,\r\n loginWithRedirect,\r\n logout, } = useAuth0();\r\n\r\n if (isAuthenticated) {\r\n console.log('user authenticated');\r\n }\r\n\r\n useEffect(() => {\r\n loginWithRedirect({\r\n appState: {\r\n returnTo: \"/authOUserProfile\",\r\n },\r\n authorizationParams: {\r\n prompt: \"login\",\r\n },\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\n\r\nexport default LoginOauthEU;","// @ts-nocheck\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport React from \"react\";\r\nimport { useState, useEffect } from 'react';\r\nimport { useHistory, Redirect } from \"react-router-dom\";\r\n//import animatedloader from '../images/animated-loader.gif';\r\n\r\n\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from './../../RCUtils';\r\nvar Config: any = require('../../Config.json');\r\nexport const AuthOUserProfile = () => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n const [userInfo, setUserInfo] = useState(null);\r\n const [hideWelcomeInfo, sethideWelcomeInfo] = useState(false);\r\n const [rightsInfo, setrightsInfo] = useState(false);\r\n const { user, getAccessTokenSilently } = useAuth0();\r\n const history = useHistory();\r\n //const accessToken1 = await getAccessTokenSilently();\r\n const { accessToken } = user;\r\n\r\n \r\n const AuthOUserLoginProcess = async () => {\r\n const accessToken = await getAccessTokenSilently();\r\n console.log(accessToken);\r\n if (!user) {\r\n // When user isn't authenticated, forget any user info\r\n setUserInfo(null);\r\n PopupWindow.showErrorMessage(\"Login\", \" Login failed from auth0.\");\r\n return;\r\n } else {\r\n setUserInfo(user); \r\n sessionStorage.setItem('JWTToken', accessToken);\r\n var url = Config.ApiBaseUrl + '/api/AuthUser/ValidateAuthOUser';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleOktaError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Errmsg == null || data.Errmsg == \"\") {\r\n var userDetailInfo = JSON.parse(JSON.stringify(data));\r\n if (userDetailInfo != null && userDetailInfo.User != null && userDetailInfo.User != undefined) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(userDetailInfo.User.Customer.Rights));\r\n localStorage.setItem('login_status', 'logged_in' + '&' + JSON.stringify(userDetailInfo.User.UserName));\r\n sessionStorage.setItem(\"customerDetails\", JSON.stringify(userDetailInfo.User.Customer));\r\n\r\n var userInfo = JSON.stringify({\r\n 'Username': userDetailInfo.User.UserName, 'IsAccountLocked': userDetailInfo.IsAccountLocked, 'IsLoggedIn': true,\r\n 'TemperatureRoundPrecision': userDetailInfo.User.TemperatureRoundPrecision, 'SpeedUnitCd': userDetailInfo.User.Customer.SpeedUnitCd,\r\n 'LoginAttempts': userDetailInfo.LoginAttempts, 'TemperatureUnitCd': userDetailInfo.User.Customer.preferenceDetails.TemperatureUnitCd,\r\n 'TimeZoneOffSet': userDetailInfo.User.Customer.preferenceDetails.TimeZoneOffSet, 'TimeZoneCd': userDetailInfo.User.Customer.preferenceDetails.TimeZoneCd,\r\n 'LogonUri': userDetailInfo.User.Customer.LogoUri, 'UserEmail': userDetailInfo.User.UserEmail, 'CustomerId': userDetailInfo.User.Customer.CustomerId, 'UserId': userDetailInfo.User.UserId,\r\n 'IsCustomAttributesEnable': userDetailInfo.IsCustomAttributesEnable, 'ShowSaveSearchOnLoad': userDetailInfo.User.ShowSaveSearchOnLoad, 'ShowMapPinsWithRunState': userDetailInfo.User.ShowMapPinsWithRunState,\r\n 'CustomerFenceTypeCd': userDetailInfo.CustomerFenceTypeCd, 'OKTASignInOverrideOption': userDetailInfo.User.OKTASignInOverrideOption, 'SSOSignInType': userDetailInfo.User.Customer.SSOSignInTypes, 'IsEnableServerSide': userDetailInfo.User.IsEnableServerSide,\r\n 'GravityVectorPrecision': userDetailInfo.User.GravityVectorPrecision\r\n });\r\n sessionStorage.setItem('UserInfo', userInfo);\r\n if (userDetailInfo.User.OKTASignInOverrideOption == \"D\") {\r\n var welcomeText = document.getElementById(\"welcomeText\");\r\n welcomeText.classList.add(\"hidden\");\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Okta sign-in disallowed', 'Okta sign-in is disallowed. You will now be redirected to the standard ReeferConnect sign-in page at ' + window.location.origin + '.', onOKSubmitDisAllow.bind(this));\r\n } else {\r\n history.push('/home');\r\n }\r\n } else {\r\n var loader = document.getElementById(\"loaderImg\");\r\n loader.classList.add(\"hidden\");\r\n sethideWelcomeInfo(true);\r\n }\r\n }\r\n else {\r\n var loaderimg = document.getElementById(\"loaderImg\");\r\n loaderimg.classList.add(\"hidden\");\r\n // PopupWindow.showErrorMessage(\"Login\", data.Errmsg);\r\n setrightsInfo(true);\r\n }\r\n }).catch((error) => {\r\n console.log(\"error\" + error);\r\n });\r\n \r\n }\r\n //const { data, error } = await getProtectedResource(accessToken);\r\n\r\n //if (!isMounted) {\r\n // return;\r\n //}\r\n\r\n //if (data) {\r\n // setMessage(JSON.stringify(data, null, 2));\r\n //}\r\n\r\n //if (error) {\r\n // setMessage(JSON.stringify(error, null, 2));\r\n //}\r\n };\r\n\r\n\r\n const onOKSubmitDisAllow = () => {\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n window.location.href = \"/\";\r\n }\r\n useEffect(() => {\r\n \r\n if (!user) {\r\n return null;\r\n }\r\n else {\r\n AuthOUserLoginProcess();\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n Logo\r\n {!hideWelcomeInfo && !userInfo\r\n &&
Loading information... Please Wait....
}\r\n {!hideWelcomeInfo && userInfo\r\n && (\r\n
\r\n
\r\n Welcome {userInfo.name}!\r\n
\r\n
\r\n )}\r\n {hideWelcomeInfo && (\r\n
\r\n
Maritime platform cannot find a local account that matches this Okta account.
\r\n
\r\n )}\r\n {rightsInfo && (\r\n
\r\n
Your access rights have been revoked or you have not been assigned any access group. Please contact your Administrator.
\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport history from \"./actions/history\";\r\n//import { Switch, Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport AuthOProtectedRoute from './AuthOProtectedRoute';\r\n//import UserLogin from './components/routecomponents/UserLogin';\r\nimport LoginOauth from './components/routecomponents/LoginOauth';\r\nimport LoginOauthEU from './components/routecomponents/LoginOauthEU';\r\nimport Loading from \"./components/routecomponents/Loading\";\r\nimport { AuthOUserProfile } from './components/routecomponents/AuthOUserProfile';\r\n\r\n\r\n\r\nconst fallback =
loading....
;\r\n\r\nconst FileNotFound = loadable(() => import('./components/routecomponents/FileNotFound'), {\r\n fallback,\r\n});\r\nconst Unauthorized = loadable(() => import('./components/routecomponents/Unauthorized'), {\r\n fallback,\r\n});\r\nconst ForgotPassword = loadable(() => import('./components/routecomponents/ForgotPassword'), {\r\n fallback,\r\n});\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatus'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nconst OAuthEUApp = () => {\r\n const { isLoading, error } = useAuth0();\r\n\r\n if (error) {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n return
Oops... {error.message}
Some thing went wrong. Please sign in again.
;\r\n }\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OAuthEUApp;\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { useState,useEffect } from 'react';\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\n\r\nconst LoginOauthUS = () => {\r\n var url: string;\r\n var baseUrl: string;\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n url = window.location.href;\r\n const { user,\r\n isAuthenticated,\r\n loginWithRedirect,\r\n logout, } = useAuth0();\r\n\r\n if (isAuthenticated) {\r\n console.log('user authenticated');\r\n }\r\n\r\n \r\n useEffect(() => {\r\n loginWithRedirect({\r\n appState: {\r\n returnTo: \"/authOUserProfile\",\r\n },\r\n authorizationParams: {\r\n prompt: \"login\",\r\n },\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LoginOauthUS;","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport history from \"./actions/history\";\r\n//import { Switch, Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport AuthOProtectedRoute from './AuthOProtectedRoute';\r\n//import UserLogin from './components/routecomponents/UserLogin';\r\nimport LoginOauth from './components/routecomponents/LoginOauth';\r\nimport LoginOauthUS from './components/routecomponents/LoginOauthUS';\r\nimport Loading from \"./components/routecomponents/Loading\";\r\nimport { AuthOUserProfile } from './components/routecomponents/AuthOUserProfile';\r\n\r\n\r\n\r\nconst fallback =
loading....
;\r\n\r\nconst FileNotFound = loadable(() => import('./components/routecomponents/FileNotFound'), {\r\n fallback,\r\n});\r\nconst Unauthorized = loadable(() => import('./components/routecomponents/Unauthorized'), {\r\n fallback,\r\n});\r\nconst ForgotPassword = loadable(() => import('./components/routecomponents/ForgotPassword'), {\r\n fallback,\r\n});\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatus'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nconst OAuthUSApp = () => {\r\n const { isLoading, error } = useAuth0();\r\n\r\n if (error) {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n return
Oops... {error.message}
Some thing went wrong. Please sign in again.
;\r\n }\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OAuthUSApp;\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\nconst LoginOauthJP = () => {\r\n var url: string;\r\n var baseUrl: string;\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n url = window.location.href;\r\n const { user,\r\n isAuthenticated,\r\n loginWithRedirect,\r\n logout, } = useAuth0();\r\n\r\n if (isAuthenticated) {\r\n console.log('user authenticated');\r\n }\r\n\r\n useEffect(() => {\r\n loginWithRedirect({\r\n appState: {\r\n returnTo: \"/authOUserProfile\",\r\n },\r\n authorizationParams: {\r\n prompt: \"login\",\r\n },\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\n\r\nexport default LoginOauthJP;","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport history from \"./actions/history\";\r\n//import { Switch, Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport AuthOProtectedRoute from './AuthOProtectedRoute';\r\n//import UserLogin from './components/routecomponents/UserLogin';\r\nimport LoginOauth from './components/routecomponents/LoginOauth';\r\nimport LoginOauthJP from './components/routecomponents/LoginOauthJP';\r\nimport Loading from \"./components/routecomponents/Loading\";\r\nimport { AuthOUserProfile } from './components/routecomponents/AuthOUserProfile';\r\n\r\n\r\n\r\nconst fallback =
loading....
;\r\n\r\nconst FileNotFound = loadable(() => import('./components/routecomponents/FileNotFound'), {\r\n fallback,\r\n});\r\nconst Unauthorized = loadable(() => import('./components/routecomponents/Unauthorized'), {\r\n fallback,\r\n});\r\nconst ForgotPassword = loadable(() => import('./components/routecomponents/ForgotPassword'), {\r\n fallback,\r\n});\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatus'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nconst OAuthJPApp = () => {\r\n const { isLoading, error } = useAuth0();\r\n\r\n if (error) {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n return
Oops... {error.message}
Some thing went wrong. Please sign in again.
;\r\n }\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OAuthJPApp;\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\nconst LoginOauthUK = () => {\r\n var url: string;\r\n var baseUrl: string;\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n url = window.location.href;\r\n const { user,\r\n isAuthenticated,\r\n loginWithRedirect,\r\n logout, } = useAuth0();\r\n\r\n if (isAuthenticated) {\r\n console.log('user authenticated');\r\n }\r\n\r\n useEffect(() => {\r\n loginWithRedirect({\r\n appState: {\r\n returnTo: \"/authOUserProfile\",\r\n },\r\n authorizationParams: {\r\n prompt: \"login\",\r\n },\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LoginOauthUK;","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport history from \"./actions/history\";\r\n//import { Switch, Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport AuthOProtectedRoute from './AuthOProtectedRoute';\r\n//import UserLogin from './components/routecomponents/UserLogin';\r\nimport LoginOauth from './components/routecomponents/LoginOauth';\r\nimport LoginOauthUK from './components/routecomponents/LoginOauthUK';\r\nimport Loading from \"./components/routecomponents/Loading\";\r\nimport { AuthOUserProfile } from './components/routecomponents/AuthOUserProfile';\r\n\r\n\r\n\r\nconst fallback =
loading....
;\r\n\r\nconst FileNotFound = loadable(() => import('./components/routecomponents/FileNotFound'), {\r\n fallback,\r\n});\r\nconst Unauthorized = loadable(() => import('./components/routecomponents/Unauthorized'), {\r\n fallback,\r\n});\r\nconst ForgotPassword = loadable(() => import('./components/routecomponents/ForgotPassword'), {\r\n fallback,\r\n});\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatus'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nconst OAuthUKApp = () => {\r\n const { isLoading, error } = useAuth0();\r\n\r\n if (error) {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n return
Oops... {error.message}
Some thing went wrong. Please sign in again.
;\r\n }\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OAuthUKApp;\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\nconst LoginOauthAU = () => {\r\n var url: string;\r\n var baseUrl: string;\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n url = window.location.href;\r\n const { user,\r\n isAuthenticated,\r\n loginWithRedirect,\r\n logout, } = useAuth0();\r\n\r\n if (isAuthenticated) {\r\n console.log('user authenticated');\r\n }\r\n\r\n useEffect(() => {\r\n loginWithRedirect({\r\n appState: {\r\n returnTo: \"/authOUserProfile\",\r\n },\r\n authorizationParams: {\r\n prompt: \"login\",\r\n },\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LoginOauthAU;","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport history from \"./actions/history\";\r\n//import { Switch, Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport AuthOProtectedRoute from './AuthOProtectedRoute';\r\n//import UserLogin from './components/routecomponents/UserLogin';\r\nimport LoginOauth from './components/routecomponents/LoginOauth';\r\nimport LoginOauthAU from './components/routecomponents/LoginOauthAU';\r\nimport Loading from \"./components/routecomponents/Loading\";\r\nimport { AuthOUserProfile } from './components/routecomponents/AuthOUserProfile';\r\n\r\n\r\n\r\nconst fallback =
loading....
;\r\n\r\nconst FileNotFound = loadable(() => import('./components/routecomponents/FileNotFound'), {\r\n fallback,\r\n});\r\nconst Unauthorized = loadable(() => import('./components/routecomponents/Unauthorized'), {\r\n fallback,\r\n});\r\nconst ForgotPassword = loadable(() => import('./components/routecomponents/ForgotPassword'), {\r\n fallback,\r\n});\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatus'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nconst OAuthAUApp = () => {\r\n const { isLoading, error } = useAuth0();\r\n\r\n if (error) {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n return
Oops... {error.message}
Some thing went wrong. Please sign in again.
;\r\n }\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OAuthAUApp;\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\n\r\nconst LoginOauthCA = () => {\r\n var url: string;\r\n var baseUrl: string;\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n url = window.location.href;\r\n const { user,\r\n isAuthenticated,\r\n loginWithRedirect,\r\n logout, } = useAuth0();\r\n\r\n if (isAuthenticated) {\r\n console.log('user authenticated');\r\n }\r\n\r\n useEffect(() => {\r\n loginWithRedirect({\r\n appState: {\r\n returnTo: \"/authOUserProfile\",\r\n },\r\n authorizationParams: {\r\n prompt: \"login\",\r\n },\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n\r\n
\r\n );\r\n};\r\n\r\nexport default LoginOauthCA;","// @ts-nocheck\r\nimport React from \"react\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { useAuth0 } from \"@auth0/auth0-react\";\r\nimport history from \"./actions/history\";\r\n//import { Switch, Redirect } from 'react-router-dom';\r\nimport loadable from '@loadable/component';\r\nimport GuestLayout from './components/GuestLayout';\r\nimport AuthorizedLayout from './components/AuthorizedLayout';\r\nimport AuthOProtectedRoute from './AuthOProtectedRoute';\r\n//import UserLogin from './components/routecomponents/UserLogin';\r\nimport LoginOauth from './components/routecomponents/LoginOauth';\r\nimport LoginOauthCA from './components/routecomponents/LoginOauthCA';\r\nimport Loading from \"./components/routecomponents/Loading\";\r\nimport { AuthOUserProfile } from './components/routecomponents/AuthOUserProfile';\r\n\r\n\r\n\r\nconst fallback =
loading....
;\r\n\r\nconst FileNotFound = loadable(() => import('./components/routecomponents/FileNotFound'), {\r\n fallback,\r\n});\r\nconst Unauthorized = loadable(() => import('./components/routecomponents/Unauthorized'), {\r\n fallback,\r\n});\r\nconst ForgotPassword = loadable(() => import('./components/routecomponents/ForgotPassword'), {\r\n fallback,\r\n});\r\nconst Home = loadable(() => import('./components/routecomponents/Home'), {\r\n fallback,\r\n});\r\nconst ReeferStatus = loadable(() => import('./components/routecomponents/ReeferStatus'), {\r\n fallback,\r\n});\r\nconst ReeferDetails = loadable(() => import('./components/routecomponents/ReeferDetails'), {\r\n fallback,\r\n});\r\nconst MyProfile = loadable(() => import('./components/routecomponents/MyProfile'), {\r\n fallback,\r\n});\r\nconst GensetStatus = loadable(() => import('./components/routecomponents/GensetStatus'), {\r\n fallback,\r\n});\r\nconst DryStatus = loadable(() => import('./components/routecomponents/DryStatus'), {\r\n fallback,\r\n});\r\nconst GeofenceManagement = loadable(() => import('./components/routecomponents/GeofenceManagement'), {\r\n fallback,\r\n});\r\nconst ReeferCommandStatus = loadable(() => import('./components/routecomponents/ReeferCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst PreferenceSettings = loadable(() => import('./components/routecomponents/PreferenceSettings'), {\r\n fallback,\r\n});\r\nconst RcdStatus = loadable(() => import('./components/routecomponents/RcdStatus'), {\r\n fallback,\r\n});\r\n\r\nconst UserSearch = loadable(() => import('./components/routecomponents/UserSearch').then(m => m.UserSearch), {\r\n fallback,\r\n});\r\n\r\nconst CargoCareProfiles = loadable(() => import('./components/routecomponents/CargoCareProfiles').then(m => m.CargoCareProfiles), {\r\n fallback,\r\n});\r\nconst GroupManagement = loadable(() => import('./components/routecomponents/GroupManagement').then(m => m.GroupManagement), {\r\n fallback,\r\n});\r\nconst FleetManagement = loadable(() => import('./components/routecomponents/FleetManagement'), {\r\n fallback,\r\n});\r\nconst AccessDenied = loadable(() => import('./components/routecomponents/AccessDenied'), {\r\n fallback,\r\n});\r\nconst AssetSearch = loadable(() => import('./components/routecomponents/AssetSearch').then(m => m.AssetSearch), {\r\n fallback,\r\n});\r\nconst DeviceSearch = loadable(() => import('./components/routecomponents/DeviceSearch').then(m => m.DeviceSearch), {\r\n fallback,\r\n});\r\nconst SubscriptionManager = loadable(() => import('./components/routecomponents/SubscriptionManager'), {\r\n fallback,\r\n});\r\nconst AdminCargoCareSettings = loadable(() => import('./components/routecomponents/AdminCargoCareSettings'), {\r\n fallback,\r\n});\r\nconst CustomAttributes = loadable(() => import('./components/routecomponents/CustomAttributes'), {\r\n fallback,\r\n});\r\nconst VesselStatus = loadable(() => import('./components/routecomponents/VesselStatus'), {\r\n fallback,\r\n});\r\nconst BookingAssignEdit = loadable(() => import('./components/routecomponents/BookingAssignEdit').then(m => m.BookingAssignEdit), {\r\n fallback,\r\n});\r\nconst NewBookingCreate = loadable(() => import('./components/routecomponents/NewBookingCreate').then(m => m.NewBookingCreate), {\r\n fallback,\r\n});\r\nconst NewBookingEdit = loadable(() => import('./components/routecomponents/NewBookingEdit').then(m => m.NewBookingEdit), {\r\n fallback,\r\n});\r\nconst MenuBookingUnAssign = loadable(() => import('./components/routecomponents/MenuBookingUnAssign').then(m => m.MenuBookingUnAssign), {\r\n fallback,\r\n});\r\nconst ViewBooking = loadable(() => import('./components/routecomponents/ViewBooking').then(m => m.ViewBooking), {\r\n fallback,\r\n});\r\nconst BookingUnAssign = loadable(() => import('./components/routecomponents/BookingUnAssign').then(m => m.BookingUnAssign), {\r\n fallback,\r\n});\r\nconst GensetCommandStatusSearch = loadable(() => import('./components/routecomponents/GensetCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst GensetDetails = loadable(() => import('./components/routecomponents/GensetDetails'), {\r\n fallback,\r\n});\r\nconst DryCommandStatusSearch = loadable(() => import('./components/routecomponents/DryCommandStatusSearch'), {\r\n fallback,\r\n});\r\nconst DryDetails = loadable(() => import('./components/routecomponents/DryDetails'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareDistribute = loadable(() => import('./components/routecomponents/ReeferSoftwareDistribute'), {\r\n fallback,\r\n});\r\nconst RCDFirmwareDistribute = loadable(() => import('./components/routecomponents/RCDFirmwareDistribute'), {\r\n fallback,\r\n});\r\nconst GeofenceDistribute = loadable(() => import('./components/routecomponents/GeofenceDistribute'), {\r\n fallback,\r\n});\r\nconst FileRepository = loadable(() => import('./components/routecomponents/FileRepository'), {\r\n fallback,\r\n});\r\nconst ReeferSoftwareFile = loadable(() => import('./components/routecomponents/ReeferSoftwareFile'), {\r\n fallback,\r\n});\r\nconst RcdFirmwareFile = loadable(() => import('./components/routecomponents/RcdFirmwareFile'), {\r\n fallback,\r\n});\r\nconst GeofenceFile = loadable(() => import('./components/routecomponents/GeofenceFile'), {\r\n fallback,\r\n});\r\nconst GensetHistory = loadable(() => import('./components/routecomponents/GensetHistorySearch'), {\r\n fallback,\r\n});\r\nconst GensetMap = loadable(() => import('./components/routecomponents/GensetMapSearch'), {\r\n fallback,\r\n});\r\n\r\nconst ManageGenset = loadable(() => import('./components/routecomponents/ManageGenset').then(m => m.ManageGenset), {\r\n fallback,\r\n});\r\nconst ManageDry = loadable(() => import('./components/routecomponents/ManageDry').then(m => m.ManageDry), {\r\n fallback,\r\n});\r\nconst ManageChassis = loadable(() => import('./components/routecomponents/ManageChassis').then(m => m.ManageChassis), {\r\n fallback,\r\n});\r\nconst ManageReefer = loadable(() => import('./components/routecomponents/ManageReefer').then(m => m.ManageReefer), {\r\n fallback,\r\n});\r\nconst DwellTimeReeferReport = loadable(() => import('./components/routecomponents/DwellTimeReeferReport'), {\r\n fallback,\r\n});\r\nconst DryHistory = loadable(() => import('./components/routecomponents/DryHistorySearch'), {\r\n fallback,\r\n});\r\nconst DryMap = loadable(() => import('./components/routecomponents/DryMapSearch'), {\r\n fallback,\r\n});\r\nconst ReeferHistory = loadable(() => import('./components/routecomponents/ReeferHistorySearch'), {\r\n fallback,\r\n});\r\nconst RcdHistory = loadable(() => import('./components/routecomponents/RcdHistorySearch'), {\r\n fallback,\r\n});\r\nconst ReeferMap = loadable(() => import('./components/routecomponents/ReeferMapSearch'), {\r\n fallback,\r\n});\r\nconst DeploymentStatus = loadable(() => import('./components/routecomponents/DeploymentStatus'), {\r\n fallback,\r\n});\r\nconst DeploymentDetails = loadable(() => import('./components/routecomponents/DeploymentDetails').then(m => m.DeploymentDetails), {\r\n fallback,\r\n});\r\nconst DeploymentStatistics = loadable(() => import('./components/routecomponents/DeploymentStatistics').then(m => m.DeploymentStatistics), {\r\n fallback,\r\n});\r\nconst PowerOnOffReport = loadable(() => import('./components/routecomponents/PowerOnOffReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeReport = loadable(() => import('./components/routecomponents/DwellTimeReport'), {\r\n fallback,\r\n});\r\nconst GravityVectorReport = loadable(() => import('./components/routecomponents/GravityVectorReport'), {\r\n fallback,\r\n});\r\nconst FuelGainReport = loadable(() => import('./components/routecomponents/FuelGainReport'), {\r\n fallback,\r\n});\r\nconst FuelLossReport = loadable(() => import('./components/routecomponents/FuelLossReport'), {\r\n fallback,\r\n});\r\nconst ShorePowerReport = loadable(() => import('./components/routecomponents/ShorePowerReport'), {\r\n fallback,\r\n});\r\nconst EngineHourReport = loadable(() => import('./components/routecomponents/EngineHourReport'), {\r\n fallback,\r\n});\r\nconst DwellTimeDryReport = loadable(() => import('./components/routecomponents/DwellTimeDryReport'), {\r\n fallback,\r\n});\r\nconst FeedBack = loadable(() => import('./components/routecomponents/FeedBack'), {\r\n fallback,\r\n});\r\nconst UserGuide = loadable(() => import('./components/routecomponents/UserGuide'), {\r\n fallback,\r\n});\r\nconst ReleaseNotes = loadable(() => import('./components/routecomponents/ReleaseNotes'), {\r\n fallback,\r\n});\r\nconst OktaOINConfigGuide = loadable(() => import('./components/routecomponents/OktaOINConfigGuide'), {\r\n fallback,\r\n});\r\nconst ContactUs = loadable(() => import('./components/routecomponents/ContactUs'), {\r\n fallback,\r\n});\r\nconst ChassisStatus = loadable(() => import('./components/routecomponents/ChassisStatus'), {\r\n fallback,\r\n});\r\nconst ChassisHistory = loadable(() => import('./components/routecomponents/ChassisHistorySearch'), {\r\n fallback,\r\n});\r\nconst ChassisMap = loadable(() => import('./components/routecomponents/ChassisMapSearch'), {\r\n fallback,\r\n});\r\nconst ChassisDetails = loadable(() => import('./components/routecomponents/ChassisDetails'), {\r\n fallback,\r\n});\r\n\r\nconst CommandManagement = loadable(() => import('./components/routecomponents/CommandManagement').then(m => m.CommandManagement), {\r\n fallback,\r\n});\r\n\r\n\r\nconst OAuthCAApp = () => {\r\n const { isLoading, error } = useAuth0();\r\n\r\n if (error) {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n return
Oops... {error.message}
Some thing went wrong. Please sign in again.
;\r\n }\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OAuthCAApp;\r\n","// @ts-nocheck\r\n//import \"@babel/polyfill\";\r\n//import \"custom-event-polyfill\";\r\n//import 'react-app-polyfill/ie11';\r\n\r\n//import '../node_modules/jquery/dist/jquery.min';\r\n//import '../node_modules/bootstrap/dist/js/bootstrap.min';\r\n//import './css/all.min.css';\r\n//import './css/font-awesome.min.css';\r\n//import './css/bootstrap.min.css';\r\n//import './css/bootstrap-datetimepicker.min.css';\r\n//import './css/site.css';\r\n\r\nimport './../../ClientApp/node_modules/bootstrap/dist/css/bootstrap.min.css';\r\nimport \"./../../ClientApp/node_modules/react-datepicker/dist/react-datepicker.css\";\r\n//import './css/bootstrap-datetimepicker.min.css';\r\nimport './css/CustomStyleSheet.min.css';\r\n\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport Chromepng from './images/Chrome.png';\r\nimport Edgepng from './images/Edge.png';\r\nimport Firefoxpng from './images/Firefox.png';\r\nimport configureStore from './store/configureStore';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport { ApplicationState } from './store';\r\nimport * as RoutesModule from './routes';\r\nimport { persistStore } from 'redux-persist';\r\nimport OktaApp from './OktaApp';\r\nimport AzureApp from './AzureApp';\r\nimport AzureADRedirectApp from './AzureADRedirectApp';\r\nimport { OktaAuth } from \"@okta/okta-auth-js\";\r\nimport OktatoRCRedirect from \"./components/routecomponents/OktatoRCRedirect\";\r\nimport OktaNoAccount from \"./components/routecomponents/OktaNoAccount\";\r\nimport Auth0NoRegion from \"./components/routecomponents/Auth0NoRegion\";\r\nimport { PublicClientApplication, EventType } from '@azure/msal-browser';\r\n//import { getConfig } from \"./OauthConfig\";\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport { Auth0ProviderWithHistory } from \"./Auth0ProviderWithHistory\";\r\nimport { Auth0ProviderWithHistoryEU } from \"./Auth0ProviderWithHistoryEU\";\r\nimport { Auth0ProviderWithHistoryUS } from \"./Auth0ProviderWithHistoryUS\";\r\nimport { Auth0ProviderWithHistoryJP } from \"./Auth0ProviderWithHistoryJP\";\r\nimport { Auth0ProviderWithHistoryUK } from \"./Auth0ProviderWithHistoryUK\";\r\nimport { Auth0ProviderWithHistoryAU } from \"./Auth0ProviderWithHistoryAU\";\r\nimport { Auth0ProviderWithHistoryCA } from \"./Auth0ProviderWithHistoryCA\";\r\nimport OAuthApp from \"./OAuthApp\";\r\nimport OAuthEUApp from \"./OAuthEUApp\";\r\nimport OAuthUSApp from \"./OAuthUSApp\";\r\nimport OAuthJPApp from \"./OAuthJPApp\";\r\nimport OAuthUKApp from \"./OAuthUKApp\";\r\nimport OAuthAUApp from \"./OAuthAUApp\";\r\nimport OAuthCAApp from \"./OAuthCAApp\";\r\n\r\nconst $ = require('jquery');\r\nvar Config: any = require('./Config.json');\r\n\r\nlet oktabaseURI = window.location.href;\r\nvar lastTagName = oktabaseURI.split(\"/\").pop();\r\nvar auth0Domain = Config.OAuthDomain_US;\r\nvar validKeyWords = Config.ValidOAuthKeyWords.split(\",\");\r\nvar isTagValid = validKeyWords.includes(lastTagName);\r\nif (isTagValid) {\r\n sessionStorage.setItem('KeyWord', lastTagName);\r\n}\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n//const config = getConfig();\r\nconst onRedirectCallback = (appState) => {\r\n history.push(\r\n appState && appState.returnTo ? appState.returnTo : window.location.pathname\r\n );\r\n};\r\n\r\nfunction detectIE() {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.indexOf('MSIE ') > -1 || ua.indexOf('Trident/') > -1;\r\n const edge = ua.indexOf('Edge/') > -1;\r\n return msie || edge;\r\n}\r\n\r\nif (detectIE()) {\r\n $(\"body\").css(\"background-color\", \"white !important\");\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n ReactDOM.render(
\r\n\r\n
ReeferConnect no longer supports Internet Explorer
\r\n\r\n
Please use one of these browsers
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ChromeEdgeFirefox
\r\n
\r\n\r\n\r\n\r\n
,\r\n\r\n\r\n document.getElementById('root'));\r\n}\r\nelse {\r\n if (lastTagName.indexOf('sso') === -1 && sessionStorage.getItem('azureInit') == null && lastTagName.indexOf('adlogin') === -1 && lastTagName.indexOf('#code=') === -1 && validKeyWords.indexOf(sessionStorage.getItem('KeyWord')) !== -1 || lastTagName.indexOf('callback') !== -1 || sessionStorage.getItem('okta-token-storage') != null) {\r\n // Get the application-wide store instance, prepopulating with state from the server where available.\r\n const store = configureStore(history);\r\n let keyWord = sessionStorage.getItem('KeyWord');\r\n let fromISS = false;\r\n if (lastTagName.indexOf('callback?iss') !== -1 && keyWord == null) {\r\n // from tile with iss value\r\n fromISS = true;\r\n sessionStorage.setItem('OIN', 'True');\r\n keyWord = oktabaseURI.split(\"/\").pop().split(\"?\")[1].substr(4);\r\n }\r\n if (!sessionStorage.getItem(\"oData\")) {\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) //RCNG-207\r\n {\r\n persistStore(store, {}).purge();\r\n }\r\n const TemplateUrl = Config.ApiBaseUrl + '/api/User/GetOktaConfigValue?TagName=' + keyWord;\r\n var requestHeaders = new Headers();\r\n requestHeaders.append('pragma', 'no-cache');\r\n requestHeaders.append('cache-control', 'no-cache');\r\n requestHeaders.append('Accept', 'application/json');\r\n requestHeaders.append('Content-Type', 'application/json');\r\n fetch(TemplateUrl, {\r\n method: 'GET',\r\n headers: requestHeaders,\r\n })\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if ((data != null && data.Client_id != null) || (data != null && data.Issuer != null)) {\r\n if (fromISS) {\r\n if ((data.Urlpath != '') && (data.Urlpath != ' ') && (data.Urlpath != null)) {\r\n sessionStorage.setItem('KeyWord', data.Urlpath);\r\n history.replace(\"/\" + data.Urlpath);\r\n sessionStorage.setItem('oData', JSON.stringify(data));\r\n if ((data.Oktasigninoption == 'A') || (data.Oktasigninoption == 'R')) {\r\n const oktaAuth = new OktaAuth({\r\n issuer: data.Issuer,\r\n redirectUri: `${window.location.origin}/implicit/callback`,\r\n clientId: data.Client_id,\r\n tokenManager: {\r\n storage: 'sessionStorage'\r\n },\r\n storageManager: {\r\n token: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n },\r\n cache: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n },\r\n transaction: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n }\r\n }\r\n });\r\n oktaAuth.tokenManager.on('error', function (err) {\r\n if (err.errorCode === 'login_required') {\r\n //window.location.href = \"Unauthorized\";\r\n history.replace('/unauthorized');\r\n }\r\n });\r\n sessionStorage.setItem('UrlPath', data.Urlpath);\r\n\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n }\r\n else {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n\r\n ReactDOM.render(, document.getElementById('root'));\r\n }\r\n }\r\n else {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n\r\n ReactDOM.render(, document.getElementById('root'));\r\n }\r\n return;\r\n }\r\n sessionStorage.setItem('oData', JSON.stringify(data));\r\n if ((data.Oktasigninoption == 'A') || (data.Oktasigninoption == 'R')) {\r\n const oktaAuth = new OktaAuth({\r\n issuer: data.Issuer,\r\n redirectUri: `${window.location.origin}/implicit/callback`,\r\n clientId: data.Client_id,\r\n tokenManager: {\r\n storage: 'sessionStorage'\r\n },\r\n storageManager: {\r\n token: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n },\r\n cache: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n },\r\n transaction: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n }\r\n }\r\n });\r\n\r\n oktaAuth.tokenManager.on('error', function (err) {\r\n if (err.errorCode === 'login_required') {\r\n //window.location.href = \"Unauthorized\";\r\n history.replace('/unauthorized');\r\n }\r\n });\r\n sessionStorage.setItem('UrlPath', data.Urlpath);\r\n\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n }\r\n else {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n\r\n ReactDOM.render(, document.getElementById('root'));\r\n }\r\n }\r\n else {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n\r\n ReactDOM.render(, document.getElementById('root'));\r\n }\r\n });\r\n }\r\n\r\n else if (sessionStorage.getItem(\"oData\")) {\r\n var data = JSON.parse(sessionStorage.getItem(\"oData\"));\r\n if ((data.Oktasigninoption == 'A') || (data.Oktasigninoption == 'R')) {\r\n const oktaAuth = new OktaAuth({\r\n issuer: data.Issuer,\r\n redirectUri: `${window.location.origin}/implicit/callback`,\r\n clientId: data.Client_id,\r\n tokenManager: {\r\n storage: 'sessionStorage'\r\n },\r\n storageManager: {\r\n token: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n },\r\n cache: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n },\r\n transaction: {\r\n storageType: 'sessionStorage',\r\n storageTypes: []\r\n }\r\n }\r\n });\r\n\r\n oktaAuth.tokenManager.on('error', function (err) {\r\n if (err.errorCode === 'login_required') {\r\n //window.location.href = \"Unauthorized\";\r\n history.replace('/unauthorized');\r\n }\r\n });\r\n sessionStorage.setItem('UrlPath', data.Urlpath);\r\n\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n else if (oktabaseURI.split(\"/\").pop() == 'unauthorized' || lastTagName !== '' && validKeyWords.indexOf(sessionStorage.getItem('KeyWord')) !== -1 || lastTagName.indexOf('adlogin') !== -1 || lastTagName.indexOf('#code=') !== -1 || lastTagName.indexOf('sso') !== -1) {\r\n if (lastTagName.indexOf('sso') !== -1 || sessionStorage.getItem('azureInit') != null) {\r\n const store = configureStore(history);\r\n const clientConfig = {\r\n auth: {\r\n clientId: Config.AzureclientId,\r\n authority: Config.Azureauthority,\r\n navigateToLoginRequestUrl: true,\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: false\r\n }\r\n }\r\n }\r\n const msalInstance = new PublicClientApplication(clientConfig);\r\n if (msalInstance != null && msalInstance.getAllAccounts() != null && msalInstance.getAllAccounts().length > 0) {\r\n msalInstance.setActiveAccount(msalInstance.getAllAccounts()[0]);\r\n\r\n }\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n }\r\n else if (lastTagName.indexOf('adlogin') !== -1 || lastTagName.indexOf('#code =') === -1) {\r\n const store = configureStore(history);\r\n const clientConfig = {\r\n auth: {\r\n clientId: Config.AzureclientId,\r\n authority: Config.Azureauthority,\r\n navigateToLoginRequestUrl: true,\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: false\r\n }\r\n }\r\n }\r\n const msalInstance = new PublicClientApplication(clientConfig);\r\n if (!msalInstance.getActiveAccount() && msalInstance.getAllAccounts().length > 0) {\r\n msalInstance.setActiveAccount(msalInstance.getAllAccounts()[0]);\r\n }\r\n\r\n // Optional - This will update account state if a user signs in from another tab or window\r\n msalInstance.enableAccountStorageEvents();\r\n const accounts = msalInstance.getAllAccounts();\r\n if (accounts.length > 0) {\r\n msalInstance.setActiveAccount(accounts[0]);\r\n }\r\n\r\n msalInstance.addEventCallback((event: any) => {\r\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\r\n const payload = event.payload;\r\n const account = payload.account;\r\n msalInstance.setActiveAccount(account);\r\n }\r\n });\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n }\r\n }\r\n else if (lastTagName === \"\" || sessionStorage.getItem('okta-token-storage') == null || sessionStorage.getItem('azureInit') == null) {\r\n let routes = RoutesModule.routes;\r\n // Get the application-wide store instance, prepopulating with state from the server where available.\r\n const initialState = (window as any).initialReduxState as ApplicationState;\r\n const store = configureStore(history, initialState);\r\n\r\n function renderApp() {\r\n if (Config.EnableNativeLogin) {\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else {\r\n if (lastTagName === \"\" || sessionStorage.getItem(\"OrbInit\") == \"self\" ) {\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else if (lastTagName === \"eu\" || lastTagName === \"EU\" || lastTagName.startsWith('EU?iss=') || sessionStorage.getItem(\"region\") == \"EU\") {\r\n sessionStorage.setItem('region', 'EU');\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else if (lastTagName === \"jp\" || lastTagName === \"JP\" || lastTagName.startsWith('JP?iss=') || sessionStorage.getItem(\"region\") == \"JP\") {\r\n sessionStorage.setItem('region', 'JP');\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else if (lastTagName === \"uk\" || lastTagName === \"UK\" || lastTagName.startsWith('UK?iss=') || sessionStorage.getItem(\"region\") == \"UK\") {\r\n sessionStorage.setItem('region', 'UK');\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else if (lastTagName === \"au\" || lastTagName === \"AU\" || lastTagName.startsWith('AU?iss=') || sessionStorage.getItem(\"region\") == \"AU\") {\r\n sessionStorage.setItem('region', 'AU');\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else if (lastTagName === \"us\" || lastTagName === \"US\" || lastTagName.startsWith('US?iss=') || sessionStorage.getItem(\"region\") == \"US\") {\r\n sessionStorage.setItem('region', 'US');\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else if (lastTagName === \"ca\" || lastTagName === \"CA\" || lastTagName.startsWith('CA?iss=') || sessionStorage.getItem(\"region\") == \"CA\") {\r\n sessionStorage.setItem('region', 'CA');\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n else {\r\n if (!sessionStorage.getItem(\"UserInfo\") == null) {\r\n persistStore(store, {}, () => {\r\n persistStore(store, {}, () => {\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }).purge();\r\n }\r\n else {\r\n persistStore(store, {}, () => {\r\n // This code starts up the React app when it runs in a browser. It sets up the routing configuration\r\n // and injects the app into a DOM element.\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n renderApp();\r\n }\r\n}\r\n\r\nregisterServiceWorker();\r\n\r\n","/*eslint eqeqeq: [\"error\", \"smart\"]*/\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Excel from '../../actions/ExportToExcel.js';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow';\r\nimport DateFormat from 'dateformat';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface SendEmailState {\r\n EmailFilters: EmailFields;\r\n okMethod: Function;\r\n cancelMethod: Function;\r\n confirmationMsg: string;\r\n dateTime: any;\r\n confirmOk: boolean;\r\n}\r\n\r\nvar currentDateTime;\r\nvar self;\r\n\r\nexport class EmailControl extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) { \r\n super(props); \r\n var filterSet = this.clearEmailFiltersGenset();\r\n this.state = { EmailFilters: filterSet, okMethod: Function, cancelMethod: Function, confirmationMsg: '', dateTime: currentDateTime, confirmOk: false };\r\n self = this;\r\n }\r\n\r\n FromEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedFrom = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Subjectchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedSubject = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n ToEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedTo = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Messagechange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedMessage = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n dateTypeFormatter(eventDate: Date) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n\r\n clearEmailFiltersGenset() {\r\n currentDateTime = this.dateTypeFormatter((new Date()));\r\n var filters: EmailFields = {\r\n SelectedTo: \"\", SelectedFrom: Config.DefaultEmailAddress, SelectedSubject: \"\", SelectedAttachment: \"\", SelectedMessage: \"\", SelectedForm: \"\"\r\n };\r\n this.setState({\r\n EmailFilters: filters, confirmOk: false, dateTime: currentDateTime\r\n });\r\n return filters;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.clearEmailFiltersGenset();\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n closeConfirmation() {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n SendEmailToUser() {\r\n var uri;\r\n var isLimitNumberOfEmailsReached: boolean = false;\r\n if (this.state.EmailFilters.SelectedTo !== undefined || this.state.EmailFilters.SelectedTo !== \"\") { // WI-26789\r\n var SendTo = this.state.EmailFilters.SelectedTo;\r\n var SendFrom = this.state.EmailFilters.SelectedForm;\r\n var SendToArray = SendTo.split(\",\");\r\n var validemail = true;\r\n var myEmailVLD = /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9\\-\\.])+\\.([A-Za-z]{2,4})$/;\r\n\r\n if (SendToArray !== null && SendToArray !== undefined && SendToArray.length < Config.SendEmailLimit) {\r\n if (SendToArray !== null && SendToArray !== undefined && SendToArray.length > 0) {\r\n for (var i = 0; i < SendToArray.length; i++) {\r\n var valid = myEmailVLD.test(SendToArray[i]);\r\n if (!valid) {\r\n validemail = false;\r\n }\r\n }\r\n }\r\n } \r\n else {\r\n isLimitNumberOfEmailsReached = true;\r\n validemail = false;\r\n }\r\n\r\n if (validemail) {\r\n if ((this.state.confirmOk === false) && (this.state.EmailFilters.SelectedSubject === \"\" || this.state.EmailFilters.SelectedMessage === \"\")) {\r\n this.setState({\r\n confirmOk: true\r\n });\r\n if (this.state.EmailFilters.SelectedSubject === \"\" && !(this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject\";\r\n else if (!(this.state.EmailFilters.SelectedSubject === \"\") && (this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Message?\";\r\n else if (this.state.EmailFilters.SelectedSubject === \"\" && (this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject and Message?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.SendEmailToUser.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n\r\n if (this.props.parentchild === \"P\") {\r\n uri = Excel.SendmailExportParent(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n }\r\n else {\r\n uri = Excel.SendmailExport(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n }\r\n this.state.EmailFilters.SelectedForm = this.props.formname;\r\n this.state.EmailFilters.SelectedAttachment = JSON.stringify(uri);\r\n var filterParams = JSON.stringify(this.state.EmailFilters);\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Email/SendEmail', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n //fetch(request)\r\n // .then(response => response)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#sendEmail .close').click();\r\n $('#globalLoader').hide();\r\n if (this.props.formname === undefined || this.props.formname === null || this.props.formname === undefined || this.props.formname === 'undefined') {\r\n $(\"#contextMenuModel .close\").click();\r\n $(\"#EmailGroupModal .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"ReeferFileRepositoryGrid\")) {\r\n $(\"#ReeferFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"GeofenceFileRepositoryGrid\")) {\r\n $(\"#GeofenceFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"RCDFileRepositoryGrid\")) {\r\n $(\"#RCDFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() !== \"ReeferCommands\") && (this.props.formname.trim() !== \"TripStatus\") && (this.props.formname.trim() !== \"LastPreTrip\") && (this.props.formname.trim() !== \"PreTrip\") && (this.props.formname.trim() !== \"SchedulePreTrip\") && (this.props.formname.trim() !== \"StopPTI\")) {\r\n $(\"#contextMenuModel .close\").click();\r\n $(\"#EmailGroupModal .btn-close\").click();\r\n }\r\n\r\n $('#' + this.props.formname + ' .close').click();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#' + this.props.formname).hide();\r\n PopupWindow.showErrorMessage(\"Information\", data);// \"Email Sent Successfully.\");\r\n })\r\n .catch(err => {\r\n $('#globalLoader').hide();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#' + this.props.formname).hide();\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n }\r\n }\r\n else {\r\n if (isLimitNumberOfEmailsReached) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please check the recipient email id. The recipients email should not be more than \" + Config.SendEmailLimit + \".\");\r\n isLimitNumberOfEmailsReached = false;\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", \"Please verify entered email addresse(s).\");\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter email address.\");\r\n }\r\n }\r\n\r\n static ClearFiltersGenset() { \r\n self.clearEmailFiltersGenset();\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n
\r\n \r\n
Note: Enter multiple email addresses separated by comma(,)
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n this.ToEmailchange(e)} value={this.state.EmailFilters.SelectedTo} />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n this.Subjectchange(e)} value={this.state.EmailFilters.SelectedSubject} />\r\n
\r\n
\r\n
\r\n
\r\n Attachment:
\r\n
\r\n {this.props.formname} {this.state.dateTime}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n}\r\n\r\nclass EmailFields {\r\n SelectedTo: string;\r\n SelectedFrom: string;\r\n SelectedSubject: string;\r\n SelectedAttachment: string;\r\n SelectedMessage: string;\r\n SelectedForm: string;\r\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGeYUxB9wAAACBjSFJNAAB6JQAAgIMAAPn/AACA6AAAUggAARVYAAA6lwAAF2/XWh+QAAADFklEQVR42qSRS2icVRxHz//e+30z40zSNI1NJ5M0aWpj0hCToEiRqAhWS5G2ii7ERVdioSC4E7pyI5SutIsufCJaFIoQRLJQKVpKwaRYA1XTF01MWpukdJLM8/vuw0VF3HvgtzmrHxw5uWPHrvGDBz7u6u3uvvDRJ58uXr3xjktTnEBOQQZIAOcDOE+kVfuD/f3vbhvY9dyN8xdOm7GXDn0zvm/vw/HaXdSzE8fOrZWL1/+8fURpxX+xzpPRes/A2OiHW4eHB27PL8xvNGqXTDYTt6ryKmZ9hd5NJiru6Xvj+2b5qemVxhNBSTkA1ntVatt0Zmxs7FBZqdr01NTRtNH8IADyXrFILjJvPTby0LGhgt2il25SWy7z81+N1Ys1P5QTBoeiaLJUKrVfrtWn55ZuTeTiOMm3tlKrrCOndvZTW1nFJE3aI94fKegjHd5FSdMzV3eVnCNXMEbPeP/ZPesOiyiiOCaXz1OrrKNEBBMZspmYlVr65tnlxs5za+7XtbqjZEMh57z+yboTd7w/jNYEQAARQQCTpgn1pEnTWoxSVIW7SRoi5z0uQFYLmxXPLHuFDQBCYi3NahV8QD/eqNNMU3wIaOgZ9H5ut/O9VRFmjf62JSP94wXVvZBKx5plSgSch6a1JB5UCAFECNA54Nxsv/NbrBYuRerLRSUv/JjKy+tZ7V7cHh9VwiMuQOD+kwAouZ9ZDTg/0xdCm4mFP4y6eQt5NQaanskzd+xrsRZ5ssNMhuAxEv6dkgBF5z4fCr47m9WsRNr+7uV5HcAFMEDDhq++nm8e3503fdti9br84w2ggndbh9rbXikUYsgJM5YTqedKCGA9BAJZBUsN//Yv99Iro3lzXAhoQANqc6FwoO/pCdM22Iu0xCFj5FRPTtGVVXRmFaLAC0QaZjfsfnHhgU6tDuZFKIigqkm6mB0doWP/Xih1+Yb19dQHEh+wIRADERADAa7/VncnuxTDPRp6NOhHrb2WeLevZXtP8YezF08vlCtf1FNPNfVUUo8SRaQEEUGL0IDvanC+AmEDkBAC/4e/BwACT2zMWyQBIAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH1QYGDQU74KgDcgAAATNJREFUOMuVk0FOhDAYhd9Pm7BtIhL3E29h9B7GlcQDmDgZgzqLiRBg9ARGY+IRNC71ApyEoDArF2OpG0oqA4h/wqK07+t7/VuCUVESHAF4wviaowVQ/6koCRTvwuZ5DqUUlFK9W7uuCwDgURJcAVjoiXgZDnre3zvAZLLbjDmAxWzqjw4dL8MNAAAgy7JeERGBiOA4TjPeAAwJTcFogCluQ7STTkCXsO1An0VVKY/32R0D8c8vH/hflrsARquJm7mKogARQQgx2Er5LU8YZ3cAFIXR9bFl0f1s6qMsSymEYEOXaXtr59bzvLPGgn4D+jLFyxCfH8Xhy/Pru17EGKts25YA1mmafgFYm10gM9eqXJ0m8c1bPWcBkACq+lP1/18ApXNd+PNHAKwWsnpN1YJIM9IPjQyRoGSUxmsAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/TripInprogress.4ea74311.png\";","export default __webpack_public_path__ + \"static/media/TripCompletedDeviation.83e0f4e6.png\";","export default __webpack_public_path__ + \"static/media/TripCompleted.89b854bb.png\";","export default __webpack_public_path__ + \"static/media/TripProblemetic.315f0df1.png\";","export default __webpack_public_path__ + \"static/media/TripPending.d5bd5557.png\";","export default __webpack_public_path__ + \"static/media/TripDeleted.4d9560eb.png\";","export default __webpack_public_path__ + \"static/media/TripCancelDeviation.eeda1b06.png\";","export default __webpack_public_path__ + \"static/media/TripCancel.6c3a29af.png\";","module.exports = __webpack_public_path__ + \"static/media/ActiveRA.5dba89bb.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAA7AAAAOwBeShxvQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGiSURBVFiF5Ze9SkMxGIafCrrUOiiC2ouok4OTiKBU8ecGxKU4CGcV70K8i1pwEBGXgoJ1kbp0dxBEcFBR0B6R1iEJpiE9bdOUDL7wDeck5Hl583NyUoTRGHAMjIaCV4AmcDEIQAbYA06AW+AcOACmZZuCV6QZr1oEniTArHegNkj4OhC3getVQyQRBK6SmAoFV7XvC55LgNeBbaBkaTtVAwz1aSAly6ZPCT+ztI33yW3RFvCNPYVn7AmVfBroZMJWu66gDK2RLwFFINuDiUcg7QLfAL6Ashwgj1hoDWBO9ulkIgYWXOH6XFY1eMHouyrbbPBNH3C9IqNvDpi0mHCGryTAm8Alf/NZQCRSlM/KhDM8C7wlwHUTkYTXEQtTaRaRipOOuoCbJ1/eFWbTQ48GqjhuL5uGEZGakDVgJ8FEmfZHs1XtvgUNWaY+gJeE8ebx+K2/o7cpiBFb1puikHCACcTRGwSu316TTLwCy77h+r29gkgiQmyzH/n+HjgEZgYNN1d0ChjxDVVKA1ca3Pu9vVv4zb+Cg/hBDBK70rU0EQT+Cyt4E+uJm/L/AAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/RetiredRA.719166c4.svg\";","import $ from 'jquery';\r\nimport { validate } from 'email-validator';\r\n\r\nconst CommonActions = {\r\n validateOEMType: (oemType: string, reeferData: any[]) => {\r\n var DaikinCount = 0;\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd.trim() == oemType) {\r\n DaikinCount++;\r\n }\r\n });\r\n }\r\n\r\n return DaikinCount;\r\n },\r\n validateSpecificOEMTypeForCommand: (oemType: string, commandType: string, reeferData: any[], reeferConfigTypes: any) => {\r\n var DaikinCount = 0;\r\n if (reeferData.length > 0) {\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd.trim() == oemType) {\r\n if (reeferConfigTypes != null && reeferConfigTypes != undefined) {\r\n if ((reeferConfigTypes.RefCommandSupports != null && reeferConfigTypes.RefCommandSupports != undefined && reeferConfigTypes.RefCommandSupports.length > 0) && (reeferConfigTypes.RefReeferConfigTypes != null && reeferConfigTypes.RefReeferConfigTypes != undefined && reeferConfigTypes.RefReeferConfigTypes.length > 0)) {\r\n var resultReeferConfigType = reeferConfigTypes.RefReeferConfigTypes.filter(obj => {\r\n return obj.ReeferConfigTypeCd === value.ReeferConfigTypeCd\r\n });\r\n\r\n if (resultReeferConfigType != null && resultReeferConfigType != undefined && resultReeferConfigType.length > 0) {\r\n var resultReeferCommandType = reeferConfigTypes.RefCommandSupports.filter(obj => {\r\n return obj.ReeferConfigTypeID === resultReeferConfigType[0].ReeferConfigTypeId\r\n });\r\n\r\n if (resultReeferCommandType != null && resultReeferCommandType != undefined && resultReeferCommandType.length > 0) {\r\n var resultReeferCommandTypeSubList = resultReeferCommandType.filter(obj => {\r\n return obj.CommandTypeCd === commandType && obj.IsActive === true\r\n });\r\n\r\n $.each(resultReeferCommandType, function (i, val) {\r\n if (val.CommandTypeCD == commandType && val.IsActive == true) {\r\n DaikinCount++;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n return DaikinCount;\r\n },\r\n validateCommandSupport: (commandType: string, reeferData: any[], reeferConfigTypes: any) => {\r\n var IsValid = true;\r\n if (reeferData.length > 0) {\r\n $.each(reeferData, function (key, value) {\r\n if (IsValid == true) {\r\n if (reeferConfigTypes != null && reeferConfigTypes != undefined) {\r\n if ((reeferConfigTypes.RefCommandSupports != null && reeferConfigTypes.RefCommandSupports != undefined && reeferConfigTypes.RefCommandSupports.length > 0) && (reeferConfigTypes.RefReeferConfigTypes != null && reeferConfigTypes.RefReeferConfigTypes != undefined && reeferConfigTypes.RefReeferConfigTypes.length > 0)) {\r\n var resultReeferConfigType = reeferConfigTypes.RefReeferConfigTypes.filter(obj => {\r\n return obj.ReeferConfigTypeCd === value.ReeferConfigTypeCd\r\n });\r\n\r\n if (resultReeferConfigType != null && resultReeferConfigType != undefined && resultReeferConfigType.length > 0) {\r\n var resultReeferCommandType = reeferConfigTypes.RefCommandSupports.filter(obj => {\r\n return obj.ReeferConfigTypeID === resultReeferConfigType[0].ReeferConfigTypeId\r\n });\r\n\r\n if (resultReeferCommandType != null && resultReeferCommandType != undefined && resultReeferCommandType.length > 0) {\r\n var resultReeferCommandTypeSubList = resultReeferCommandType.filter(obj => {\r\n return obj.CommandTypeCD === commandType\r\n });\r\n if (resultReeferCommandTypeSubList != null && resultReeferCommandTypeSubList != undefined && resultReeferCommandTypeSubList.length > 0) {\r\n $.each(resultReeferCommandTypeSubList, function (i, val) {\r\n if (val.IsActive == true) {\r\n IsValid = true;\r\n }\r\n else {\r\n IsValid = false;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return IsValid;\r\n },\r\n validateAssociation: (reeferData: any[]) => {\r\n var ValidCount = 0;\r\n var IsValid = true;\r\n if (reeferData.length > 0) {\r\n $.each(reeferData, function (key, value) {\r\n if (value.RCDMasterID != null && value.RCDMasterID != undefined && value.RCDMasterID > 0)\r\n ValidCount++;\r\n });\r\n if (ValidCount == reeferData.length)\r\n IsValid = true;\r\n else\r\n IsValid = false;\r\n }\r\n return IsValid;\r\n },\r\n validateAllOEMs: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '' }\r\n\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var TKReceiverCount = 0;\r\n var UnknownCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"TR\") {\r\n TKReceiverCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length || TKReceiverCount == reeferData.length || DaikinCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n },\r\n validateDLCommand: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '', DeviceType: '' }\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var TKReceiverCount = 0;\r\n var UnknownCount = 0;\r\n var MP4Count = 0;\r\n var CT3000 = 0;\r\n var RCU = 0;\r\n var CT5000 = 0;\r\n var CT4000 = 0;\r\n var CT3100 = 0;\r\n var CT3500 = 0;\r\n var TripLINK = 0;\r\n var DeviceTypeCdCount = 0;\r\n var CarrierCount = 0;\r\n var CT3600 = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n if (value.UnitTypeCd == \"TR\")\r\n MP4Count++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"TR\") {\r\n TKReceiverCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length || DaikinCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n if (ThermokingCount == reeferData.length) { //WI 24753\r\n if (MP4Count > 0) {\r\n if (MP4Count == reeferData.length) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM Model.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n else {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n else {\r\n //validateObject.Message = \"\";\r\n //validateObject.OpenCommandWindow = true;\r\n //validateObject.OEM = '';\r\n $.each(reeferData, function (key, value) {\r\n if (value.DeviceType == null && value.DeviceType == undefined) {\r\n DeviceTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n if (value.DeviceType.trim() == \"RCU\") {\r\n RCU++;\r\n }\r\n else if (value.DeviceType.trim() == \"CT3000\") {\r\n CT3000++;\r\n }\r\n else if (value.DeviceType.trim() == \"CT3100\") {\r\n CT3100++;\r\n }\r\n else if (value.DeviceType.trim() == \"CT4000\") {\r\n CT4000++;\r\n }\r\n else if (value.DeviceType.trim() == \"CT5000\") {\r\n CT5000++;\r\n }\r\n else if (value.DeviceType.trim() == \"CT3500\") {\r\n CT3500++;\r\n }\r\n //WI-RCNG-3349\r\n else if (value.DeviceType.trim().toUpperCase() == \"TRIPLINK\") {\r\n TripLINK++;\r\n }\r\n else if (value.DeviceType.trim().toUpperCase() == \"CT3600\") {\r\n CT3600++;\r\n }\r\n CarrierCount++;\r\n }\r\n });\r\n\r\n if (DeviceTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid Device type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.DeviceType = '';\r\n }\r\n\r\n else if (CarrierCount > 0 && (!(RCU == reeferData.length || CT3000 == reeferData.length || CT3100 == reeferData.length\r\n || CT5000 == reeferData.length || CT4000 == reeferData.length || CT3500 == reeferData.length || TripLINK == reeferData.length\r\n || CT3600 == reeferData.length))) {\r\n validateObject.Message = \"Selected reefers must be of the same Device type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.DeviceType = '';\r\n }\r\n else {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.DeviceType = '';\r\n }\r\n }\r\n }\r\n else if (TKReceiverCount == reeferData.length) {\r\n validateObject.Message = \"Command is not supported for TKReceiver OEM.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (UnknownCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n },\r\n validateMultipleOEMs: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '' }\r\n\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var UnknownCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length || DaikinCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n },\r\n validateCarrierDaikinThermoKingTypes: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '' }\r\n\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var UnknownCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (Starcoolcount == reeferData.length) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = '';\r\n }\r\n else if (CarrierCount == reeferData.length || DaikinCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n validateObject.Message = \"Command is supported for Starcool OEM only.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n },\r\n validateStarCoolCarrierDaikinTypes: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '' }\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var UnknownCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length || DaikinCount == reeferData.length) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = '';\r\n }\r\n else if (ThermokingCount == reeferData.length) {\r\n validateObject.Message = \"Command is not supported for Thermoking OEMs.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (UnknownCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n },\r\n validateDaikinTypes: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '' }\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var TKReceiverCount = 0;\r\n var UnknownCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"TR\") {\r\n TKReceiverCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (DaikinCount == reeferData.length) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = 'D';\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n validateObject.Message = \"Command is not supported for Carrier, Starcool and Thermoking OEMs.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (UnknownCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n },\r\n validateDaikinDimiTypes: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '' }\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var TKReceiverCount = 0;\r\n var UnknownCount = 0;\r\n var IsValidCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n if (value.UnitTypeCd != null && value.UnitTypeCd.trim().toUpperCase() == 'DA') {\r\n var strFirstTwo = value.SoftwareRevision.substring(0, 2);\r\n var strSoftwarehex = value.SoftwareRevision.substring(2, 4);\r\n var number = Number(\"0x\" + strSoftwarehex) \r\n if( parseInt(strFirstTwo)==30 && 77<=parseInt(number.toString()))\r\n IsValidCount++\r\n }\r\n else if (value.UnitTypeCd != null && value.UnitTypeCd.trim().toUpperCase() == 'DB') {\r\n var strFirstTwo = value.SoftwareRevision.substring(0, 2);\r\n var strSoftwarehex = value.SoftwareRevision.substring(2, 4);\r\n var number = Number(\"0x\" + strSoftwarehex) \r\n if (parseInt(strFirstTwo) == 31 && 6 <= parseInt(number.toString()))\r\n IsValidCount++\r\n }\r\n //if (value.UnitTypeCd != null && value.UnitTypeCd.trim().toUpperCase() == 'DV') {\r\n // IsValidCount++\r\n //}\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"TR\") {\r\n TKReceiverCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (reeferData.length > 1 && DaikinCount == reeferData.length) {\r\n if (DaikinCount == IsValidCount || IsValidCount == 0) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = 'D';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same software version/Controller.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n else if (DaikinCount == reeferData.length){\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = 'D';\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n validateObject.Message = \"Command is not supported for Carrier, Starcool and Thermoking OEMs.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (UnknownCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n },\r\n validateDaikinThermoKingTypes: (reeferData: any[]) => {\r\n var validateObject = { Message: \"\", OpenCommandWindow: true, OEM: '' }\r\n if (reeferData.length > 0) {\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var TKReceiverCount = 0;\r\n var UnknownCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"TR\") {\r\n TKReceiverCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length) {\r\n validateObject.Message = \"\";\r\n validateObject.OpenCommandWindow = true;\r\n validateObject.OEM = Starcoolcount == reeferData.length ? 'S' : 'C';\r\n }\r\n else if (DaikinCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n validateObject.Message = \"Command is not supported for Daikin and Thermoking OEMs.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else if (UnknownCount > 0) {\r\n validateObject.Message = \"Selected reefer(s) must have a valid OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n else {\r\n validateObject.Message = \"Selected reefers must be of the same OEM type.\";\r\n validateObject.OpenCommandWindow = false;\r\n validateObject.OEM = '';\r\n }\r\n }\r\n\r\n return validateObject;\r\n }\r\n}\r\n\r\nexport default CommonActions;","// @ts-nocheck\r\n/// \r\nimport * as React from 'react';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport HighCC from '../../../images/Status/Alarms/HighCC.png';\r\nimport MediumCC from '../../../images/Status/Alarms/MediumCC.png';\r\nimport LowCC from '../../../images/Status/Alarms/LowCC.png';\r\nvar Config: any = require('../../../Config.json');\r\nvar self;\r\nexport default class CCAlmTooltip extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n ccAlertData: []\r\n }\r\n self = this;\r\n }\r\n\r\n getReactContainerClasses() {\r\n var propsdata = this.props;\r\n if (propsdata.data != null && propsdata.data != undefined && \r\n propsdata.data.CCProfileCode != null && propsdata.data.CCProfileCode != '') {\r\n if (propsdata.data.UnitControlEventID != null && propsdata.data.UnitControlEventID != undefined && propsdata.data.UnitControlEventID != ''\r\n && propsdata.data.CCAlarms != null && propsdata.data.CCAlarms != '') {\r\n return ['custom-tooltip'];\r\n }\r\n }\r\n else {\r\n return ['custom-tooltipSmall'];\r\n }\r\n }\r\n componentDidMount() {\r\n var propsdata = this.props;\r\n if (propsdata.data != null && propsdata.data != undefined &&\r\n propsdata.data.CCProfileCode != null && propsdata.data.CCProfileCode != '') {\r\n if (propsdata.data.CCAlarmsList != null && propsdata.data.CCAlarmsList != undefined && propsdata.data.CCAlarmsList != ''\r\n && propsdata.data.CCAlarms != null && propsdata.data.CCAlarms != '') {\r\n var finalList =[];\r\n var lstAlerts = propsdata.data.CCAlarmsList.split(',');\r\n $.each(lstAlerts, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n var iList = item.split(':');\r\n finalList.push(iList);\r\n }\r\n });\r\n this.setState({ ccAlertData: finalList, loading: false });\r\n }\r\n }\r\n }\r\n GetAlarmDescription(almCode:any){\r\n var alarmDescription = \"\";\r\n var almCd = almCode != \"\" ? almCode.trim() :'';\r\n if (this.props.colDef.cellRendererParams.almData != undefined && this.props.colDef.cellRendererParams.almData != 'undefined')\r\n {\r\n var alarmsList = this.props.colDef.cellRendererParams.almData\r\n var alarmDescriptions = alarmsList.filter(e => e.AlarmCd === almCd);\r\n if(alarmDescriptions.length > 0)\r\n {\r\n alarmDescription= alarmDescriptions[0].Description;\r\n }\r\n }\r\n return alarmDescription; \r\n }\r\n render() {\r\n return (\r\n self.props.data != null && self.props.data != undefined &&\r\n self.props.data.CCProfileCode != null && self.props.data.CCProfileCode != '' ?\r\n
\r\n
\r\n
\r\n {this.props.data.CCProfileCode} \r\n \r\n
\r\n\r\n {this.state.ccAlertData != null && this.state.ccAlertData != undefined && this.props.data.CCAlarms != null && this.props.data.CCAlarms != '' ? this.state.loading == false ? this.state.ccAlertData.map(function (almData, index) {\r\n\r\n return (\r\n
\r\n \r\n
    \r\n {\r\n
  • \r\n
    \r\n
    {almData[1] == \"1\" ? \r\n : almData[1] == \"2\" ? : almData[1] == \"3\" ? : ''}
    \r\n
    \r\n
    {almData[0]}
    \r\n
    :
    \r\n
    {self.GetAlarmDescription(almData[3])}
    \r\n
    :
    \r\n
    {almData[2]}
    \r\n
    \r\n
    \r\n
  • \r\n\r\n }\r\n
\r\n\r\n
)\r\n }) : 'Loading...' :
All clear. No active alerts.
\r\n }\r\n \r\n\r\n
: null)\r\n\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/0.6bbfa7fe.svg\";","module.exports = __webpack_public_path__ + \"static/media/10.845b9332.svg\";","module.exports = __webpack_public_path__ + \"static/media/20.c260457e.svg\";","module.exports = __webpack_public_path__ + \"static/media/30.4c3bc84f.svg\";","module.exports = __webpack_public_path__ + \"static/media/40.f6e0628f.svg\";","module.exports = __webpack_public_path__ + \"static/media/50.588e05a9.svg\";","module.exports = __webpack_public_path__ + \"static/media/60.d7cf7618.svg\";","module.exports = __webpack_public_path__ + \"static/media/70.e2f0d367.svg\";","module.exports = __webpack_public_path__ + \"static/media/80.23c1231a.svg\";","module.exports = __webpack_public_path__ + \"static/media/90.32f62ca4.svg\";","// @ts-nocheck\r\nimport $ from 'jquery';\r\nimport DateFormat from 'dateformat';\r\nimport { Environment } from 'ag-grid-community';\r\nimport PlugSolid from '../images/PlugSolid.svg';\r\nimport UnPlug from '../images/Unplug.svg';\r\nimport HighALM from '../images/Status/Alarms/HighALM.png';\r\nimport RSSI4 from '../images/RSSI/RSSI_4.png';\r\nimport failed from '../images/failed.png';\r\nimport HighCC from '../images/Status/Alarms/HighCC.png';\r\nimport NotRunning from '../images/NotRunning.png';\r\nimport Running from '../images/Running.png';\r\nimport bulletcommand from '../images/bullet_command.png';\r\nimport batterycritical from '../images/battery-critical.svg';\r\nimport batterylow from '../images/battery-low.svg';\r\nimport batterynormal from '../images/battery-normal.svg';\r\nimport BatteryIndicator from '../images/BatteryIndicator.svg';\r\nimport DualColorBattery from '../images/DualColorBattery.svg';\r\nimport ImgPending1 from '../images/Img_Pending1.png';\r\nimport ImgWarning1 from '../images/Img_Warning1.png';\r\nimport ImgSuccess1 from '../images/Img_Success1.png';\r\nimport RSSIUNK from '../images/RSSI/RSSI_UNK.png';\r\nimport RSSI1 from '../images/RSSI/RSSI_1.png';\r\nimport RSSI2 from '../images/RSSI/RSSI_2.png';\r\nimport RSSI3 from '../images/RSSI/RSSI_3.png';\r\nimport RSSI5 from '../images/RSSI/RSSI_5.png';\r\nimport GroupChat from '../images/GroupChat.png';\r\nimport High from '../images/Status/High.png';\r\nimport Medium from '../images/Status/Medium.png';\r\nimport Low from '../images/Status/Low.png';\r\nimport AssetStateActive from '../images/AssetState/ActiveRA.svg';\r\nimport AssetStateDisconnected from '../images/AssetState/DisconnectedRA.png';\r\nimport AssetStateRetired from '../images/AssetState/RetiredRA.svg';\r\nimport TripInprogress from '../images/Status/RouteDeviation/TripInprogress.png';\r\nimport TripCompletedDeviation from '../images/Status/RouteDeviation/TripCompletedDeviation.png';\r\nimport TripCompleted from '../images/Status/RouteDeviation/TripCompleted.png';\r\nimport TripProblemetic from '../images/Status//RouteDeviation/TripProblemetic.png';\r\nimport TripPending from '../images/Status/RouteDeviation/TripPending.png';\r\nimport TripDeleted from '../images/Status/RouteDeviation/TripDeleted.png';\r\nimport TripCancelDeviation from '../images/Status/RouteDeviation/TripCancelDeviation.png';\r\nimport TripCancel from '../images/Status/RouteDeviation/TripCancel.png';\r\nimport MediumALM from '../images/Status/Alarms/MediumALM.png';\r\nimport UnknownStatus from '../images/Status/UnknownStatus.png';\r\nimport ErrorStatus from '../images/Status/ErrorStatus.png';\r\nimport PendingStatus from '../images/Status/PendingStatus.png';\r\nimport IssuedStatus from '../images/Status/IssuedStatus.png';\r\nimport ExpiredStatus from '../images/Status/ExpiredStatus.png';\r\nimport CancelStatus from '../images/Status/CancelStatus.png';\r\nimport SucessStatus from '../images/Status/SucessStatus.png';\r\nimport AcceptedStatus from '../images/Status/AcceptedStatus.png';\r\nimport RejectedStatus from '../images/Status/RejectedStatus.png';\r\nimport DiscardedStatus from '../images/Status/DiscardedStatus.png';\r\nimport RetryStatus from '../images/Status/RetryStatus.png';\r\nimport AcceptedByBusyRCDStatus from '../images/Status/AcceptedByBusyRCDStatus.png';\r\nimport AwaitingPrerequisites from '../images/Status/AwaitingPrerequisites.png';\r\nimport CancellationRequest from '../images/Status/CancellationRequest.png';\r\nimport SendToVC from '../images/Status/SendToVC.png';\r\nimport ValidationPendingStatus from '../images/Status/ValidationPendingStatus.png';\r\nimport UndeliverableStatus from '../images/Status/UndeliverableStatus.png';\r\nimport Yes from '../images/Status/Yes.png';\r\nimport No from '../images/Status/No.png';\r\nimport NormalCC from '../images/Status/Alarms/NormalCC.png';\r\nimport MediumCC from '../images/Status/Alarms/MediumCC.png';\r\nimport LowCC from '../images/Status/Alarms/LowCC.png';\r\nimport passed from '../images/passed.png';\r\nimport aborted from '../images/aborted.png';\r\nimport runningtime from '../images/running-time.png';\r\nimport Skipped from '../images/Skipped.png';\r\nimport questionMark from '../images/questionMark.png';\r\nimport { Switch } from 'react-router';\r\n\r\nconst formatters = {\r\n dateTypeFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value !='-NA-') {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.value.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else if (params.data != null && params.data != \"null\" && params.data != undefined && params.data != '') {\r\n return '-NA-'\r\n }\r\n else\r\n return '';\r\n },\r\n dateTypeSorting: (param) => {\r\n if (param != null && param != undefined && param != \"null\") {\r\n return param;\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n dateTypeSortingFieldName: (params, FieldName) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != undefined && params.data != null) {\r\n\r\n switch (FieldName) {\r\n case 'EventDTTM':\r\n return params.data.EventDTTM != null && params.data.EventDTTM != \"\" && params.data.EventDTTM != \"null\" ?params.data.EventDTTM:'-NA-';\r\n case 'UnitEventDTTM':\r\n return params.data.UnitEventDTTM != null && params.data.UnitEventDTTM != \"\" && params.data.UnitEventDTTM != \"null\" ? params.data.UnitEventDTTM : '-NA-';\r\n case 'PTRDateTime':\r\n return params.data.PTRDateTime != null && params.data.PTRDateTime != \"\" && params.data.PTRDateTime != \"null\" ? params.data.PTRDateTime : '-NA-';\r\n case 'DataLoggerDtm':\r\n return params.data.DataLoggerDtm != null && params.data.DataLoggerDtm != \"\" && params.data.DataLoggerDtm != \"null\" ? params.data.DataLoggerDtm : '-NA-';\r\n case 'ModifiedDTTM':\r\n return params.data.ModifiedDTTM != null && params.data.ModifiedDTTM != \"\" && params.data.ModifiedDTTM != \"null\" ? params.data.ModifiedDTTM : '-NA-';\r\n case 'DeviceDataTime':\r\n return params.data.DeviceDataTime != null && params.data.DeviceDataTime != \"\" && params.data.DeviceDataTime != \"null\" ? params.data.DeviceDataTime : '-NA-';\r\n case 'R_EventDTTM':\r\n return params.data.R_EventDTTM != null && params.data.R_EventDTTM != \"\" && params.data.R_EventDTTM != \"null\" ? params.data.R_EventDTTM : '-NA-';\r\n case 'R_ModifiedDTTM':\r\n return params.data.R_ModifiedDTTM != null && params.data.R_ModifiedDTTM != \"\" && params.data.R_ModifiedDTTM != \"null\" ? params.data.R_ModifiedDTTM : '-NA-';\r\n case 'CreatedDTTM':\r\n return params.data.CreatedDTTM != null && params.data.CreatedDTTM != \"\" && params.data.CreatedDTTM != \"null\" ? params.data.CreatedDTTM : '-NA-';\r\n case 'CreateDTTM':\r\n return params.data.CreateDTTM != null && params.data.CreateDTTM != \"\" && params.data.CreateDTTM != \"null\" ? params.data.CreateDTTM : '-NA-';\r\n case 'StatusDate':\r\n return params.data.StatusDate != null && params.data.StatusDate != \"\" && params.data.StatusDate != \"null\" ? params.data.StatusDate : '-NA-';\r\n case 'SubmittedOn':\r\n return params.data.SubmittedOn != null && params.data.SubmittedOn != \"\" && params.data.SubmittedOn != \"null\" ? params.data.SubmittedOn : '-NA-';\r\n case 'EndDate':\r\n return params.data.EndDate != null && params.data.EndDate != \"\" && params.data.EndDate != \"null\" ? params.data.EndDate : '-NA-';\r\n case 'scheduledCreatedDTTM':\r\n return params.data.scheduledCreatedDTTM != null && params.data.scheduledCreatedDTTM != \"\" && params.data.scheduledCreatedDTTM != \"null\" ? params.data.scheduledCreatedDTTM : '-NA-';\r\n case 'StartDate':\r\n return params.data.StartDate != null && params.data.StartDate != \"\" && params.data.StartDate != \"null\" ? params.data.StartDate : '-NA-';\r\n case 'LastPreTripDTTM':\r\n return params.data.LastPreTripDTTM != null && params.data.LastPreTripDTTM != \"\" && params.data.LastPreTripDTTM != \"null\" ? params.data.LastPreTripDTTM : '-NA-';\r\n case 'TTL':\r\n return params.data.TTL != null && params.data.TTL != \"\" && params.data.TTL != \"null\" ? params.data.TTL : '-NA-';\r\n case 'GPSDTTM':\r\n return params.data.GPSDTTM != null && params.data.GPSDTTM != \"\" && params.data.GPSDTTM != \"null\" ? params.data.GPSDTTM : '-NA-';\r\n case 'ExpirationTime':\r\n return params.data.ExpirationTime != null && params.data.ExpirationTime != \"\" && params.data.ExpirationTime != \"null\" ? params.data.ExpirationTime : '-NA-';\r\n case 'EarliestDepartureDtm':\r\n return params.data.EarliestDepartureDtm != null && params.data.EarliestDepartureDtm != \"\" && params.data.EarliestDepartureDtm != \"null\" ? params.data.EarliestDepartureDtm : '-NA-';\r\n case 'ArrivalDtm':\r\n return params.data.ArrivalDtm != null && params.data.ArrivalDtm != \"\" && params.data.ArrivalDtm != \"null\" ? params.data.ArrivalDtm : '-NA-';\r\n case 'TWTime':\r\n return params.data.TWTime != null && params.data.TWTime != \"\" && params.data.TWTime != \"null\" ? params.data.TWTime : '-NA-';\r\n case 'DLEventDTTM':\r\n return params.data.DLEventDTTM != null && params.data.DLEventDTTM != \"\" && params.data.DLEventDTTM != \"null\" ? params.data.DLEventDTTM : '-NA-';\r\n case 'DoorEventDtm':\r\n return params.data.DoorEventDtm != null && params.data.DoorEventDtm != \"\" && params.data.DoorEventDtm != \"null\" ? params.data.DoorEventDtm : '-NA-';\r\n case 'Door1EventDttm':\r\n return params.data.Door1EventDttm != null && params.data.Door1EventDttm != \"\" && params.data.Door1EventDttm != \"null\" ? params.data.Door1EventDttm : '-NA-';\r\n case 'InsertedDttm':\r\n return params.data.InsertedDttm != null && params.data.InsertedDttm != \"\" && params.data.InsertedDttm != \"null\" ? params.data.InsertedDttm : '-NA-';\r\n case 'UpdatedDttm':\r\n return params.data.UpdatedDttm != null && params.data.UpdatedDttm != \"\" && params.data.UpdatedDttm != \"null\" ? params.data.UpdatedDttm : '-NA-';\r\n\r\n case 'TripStart':\r\n return params.data.TripStart != null && params.data.TripStart != \"\" && params.data.TripStart != \"null\" ? params.data.TripStart : '-NA-';\r\n case 'TripEnd':\r\n return params.data.TripEnd != null && params.data.TripEnd != \"\" && params.data.TripEnd != \"null\" ? params.data.TripEnd : '-NA-';\r\n case 'CTTime':\r\n return params.data.CTTime != null && params.data.CTTime != \"\" && params.data.CTTime != \"null\" ? params.data.CTTime : '-NA-';\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n dateTypeFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n },\r\n dateTypeGrouping: (param, fieldName,Data) => {\r\n if (param != null && param != undefined && param != '-NA-') {\r\n //var colDef = Data.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = Data.node.rowGroupColumn.colDef.headerName;//WI-26892\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n return \"*No \" + columnDisplayName;\r\n },\r\n dateTypeFormatterDeviceDataTimeForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.DeviceDataTime != null && param.data.DeviceDataTime != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.DeviceDataTime.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterEventDTTMForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.EventDTTM != null && param.data.EventDTTM != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.EventDTTM.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterTripStartForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.TripStart != null && param.data.TripStart != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.TripStart.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterTripEndForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.TripEnd != null && param.data.TripEnd != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.TripEnd.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterDoorEventDtmForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.DoorEventDtm != null && param.data.DoorEventDtm != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.DoorEventDtm.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterCTTimeForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.CTTime != null && param.data.CTTime != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.CTTime.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterR_EventDTTMForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.R_EventDTTM.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterR_ModifiedDTTMForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.R_ModifiedDTTM.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterModifiedDTTMForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.ModifiedDTTM != null && param.data.ModifiedDTTM != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.ModifiedDTTM.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterCreatedDTTMForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.CreatedDTTM != null && param.data.CreatedDTTM != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.CreatedDTTM.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterPTRDateTimeForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.PTRDateTime.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterTWTimeForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.TWTime.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterUnitEventDTTMForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.UnitEventDTTM != null && param.data.UnitEventDTTM != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.UnitEventDTTM.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterDLEventDTTMForFilter: (param) => {\r\n if (param != null && param != undefined && param.data != null && param.data != undefined && param.data.DLEventDTTM != null && param.data.DLEventDTTM != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(param.data.DLEventDTTM.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterforExcel: (params) => {\r\n if (params != null && params != undefined && params != '-NA-') {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return '\\t' + DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatterforCopy: (params) => {\r\n if (params != null && params != undefined && params != '-NA-') {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n dateTypeFormatter12H: (params) => {\r\n if (params.value != null && params.value != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.value.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy hh:MM TT');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n \r\n \r\n GensetSwitchFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == \"1\")\r\n return '
' + \" \" + '
ON
';\r\n else if (param == \"0\")\r\n return '
' + \" \" + '
OFF
';\r\n //else\r\n // return \"-NA-\";\r\n }\r\n return \"*No SW\"\r\n },\r\n GensetSwitchFormatterGroupingExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == \"1\")\r\n return 'ON';\r\n else if (param == \"0\")\r\n return 'OFF';\r\n //else\r\n // return \"-NA-\";\r\n }\r\n return \"*No SW\"\r\n },\r\n //gensetSwitchFormatter: (params) => {\r\n // if (params.value != null && params.value != undefined) {\r\n // if (params.value.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"On\";\r\n // else\r\n // return \"Off\";\r\n // }\r\n // else\r\n // return '-NA-';\r\n //},\r\n gensetSwitchFormatterForExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\" || params.toString() === \"1\")\r\n return \"On\";\r\n else if (params.toString().toUpperCase().trim() == \"FALSE\" || params.toString() === \"0\")\r\n return \"Off\";\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n \r\n gensetRunningFormatterforExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.HasOilPressureSwitch != null && params.GensetRunning != null) {\r\n if (params.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.GensetRunning.toString().toUpperCase().trim() == \"0\" || params.GensetRunning.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.GensetRunning.toString().toUpperCase().trim() == \"1\" || params.GensetRunning.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n EngFormatterforExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.HasOilPressureSwitch != null && params.GensetRunning != null) {\r\n if (params.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.OEMTypeCD != null && params.OEMTypeCD.toString().toUpperCase().trim() == \"C\") {\r\n return \"-NA-\";\r\n }\r\n else if (params.GensetRunning.toString().toUpperCase().trim() == \"0\" || params.GensetRunning.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.GensetRunning.toString().toUpperCase().trim() == \"1\" || params.GensetRunning.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n floatTypeFormatter: (params) => {\r\n if (params.value != null && params.value != undefined) {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n floatTypeSorting: (param) => {\r\n if (param != null && param != undefined) {\r\n return param;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n /* RCNG-108 */\r\n AlarmDescriptionFormatter: (param, DeviceType, alarmsList) => {\r\n var element = document.createElement(\"span\");\r\n if (param != null && param != undefined) {\r\n if (param != null && param != undefined && param != '') {\r\n var lstAlarms = param.split(',');\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (DeviceType != null && DeviceType != undefined && DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return element;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n },\r\n /* RCNG-108 */\r\n GPSHDOPTypeSorting: (GPSHDOP, GPSLockState) => {\r\n //debugger;\r\n if (GPSHDOP != null && GPSHDOP != undefined) { \r\n if (GPSHDOP == \"null\" || GPSLockState == null || GPSLockState == '' || GPSLockState == \"UNLOCKED\")\r\n return '-NA-';\r\n else\r\n {\r\n var decimalPlaces = 2;\r\n var multiplier = Math.pow(10, decimalPlaces);\r\n return (Math.round(GPSHDOP * multiplier) / multiplier).toFixed(decimalPlaces);\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GPSSatCountTypeSorting: (GPSSatelliteCount, GPSLockState) => {\r\n if (GPSSatelliteCount != null && GPSSatelliteCount != undefined) {\r\n if (GPSSatelliteCount == \"null\" || GPSLockState == null || GPSLockState == '' || GPSLockState == \"UNLOCKED\")\r\n return '-NA-';\r\n else\r\n return GPSSatelliteCount;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n floatTypeValueFormatter: (params) => {\r\n if (params.value != '-NA-') {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GPSfloatTypeValueFormatter: (params) => {\r\n if (params.value != '-NA-') {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GPSfloatTypeFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != 0) {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n GPSfloatTypeFormatterForExcel: (params) => {\r\n if (params != null && params != undefined && params != 0) {\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GPSHDOPTypeFormatterForExcel: (GPSHDOP, GPSLockState) => {\r\n if (GPSHDOP != null && GPSHDOP != undefined) {\r\n if (GPSHDOP == \"null\" || GPSLockState == null || GPSLockState == '' || GPSLockState == \"UNLOCKED\")\r\n return '-NA-';\r\n else\r\n {\r\n var decimalPlaces = 2;\r\n var multiplier = Math.pow(10, decimalPlaces);\r\n return (Math.round(GPSHDOP * multiplier) / multiplier).toFixed(decimalPlaces);\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n GPSAcctypeFormatterForExcel: (params) => {\r\n //debugger;\r\n if (params != null && params != undefined && params != '-NA-') {\r\n if (params.toString().trim() == \"-999\") {\r\n return \"OOR\";\r\n }\r\n else {\r\n return (params != null) ? params.toString() : \"-NA-\";\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GPSSatCountTypeFormatterForExcel: (GPSSatelliteCount, GPSLockState) => {\r\n if (GPSSatelliteCount != null && GPSSatelliteCount != undefined) {\r\n if (GPSSatelliteCount == \"null\" || GPSLockState == null || GPSLockState == '' || GPSLockState == \"UNLOCKED\")\r\n return '-NA-';\r\n else\r\n return GPSSatelliteCount;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n BattVoltageFormatter: (params) => {\r\n if (params.value != null && params.value != undefined) {\r\n var tempRoundingValue = \"1\";\r\n return (params.value != null) ? parseFloat(params.value.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n\r\n DigitalSensorFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") {\r\n if (params.colDef.headerClass != null && params.colDef.headerClass != undefined)\r\n return params.colDef.headerClass;\r\n else\r\n return \"OOR\";\r\n }\r\n else {\r\n //var tempRoundingValue = \"1\";\r\n //return (params.value != null) ? parseFloat(params.value.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString() : \"-NA-\";//26528\r\n return (params.value != null) ? params.value.toString() : \"-NA-\";//26784\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n DigitalSensorFormatterForExcel: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") {\r\n if (params.column.colDef.headerClass != null && params.column.colDef.headerClass != undefined)\r\n return params.column.colDef.headerClass;\r\n else\r\n return \"OOR\";\r\n }\r\n else {\r\n var tempRoundingValue = \"1\";\r\n //return (params.value != null) ? parseFloat(params.value.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString() : \"-NA-\";//26528\r\n return (params.value != null) ? params.value.toString() : \"-NA-\";//26784\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n DigitalSensorGroupingForExcel: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") {\r\n if (params.column.colDef.headerClass != null && params.column.colDef.headerClass != undefined)\r\n return params.column.colDef.headerClass;\r\n else\r\n return \"OOR\";\r\n }\r\n else {\r\n var tempRoundingValue = \"1\";\r\n return (params.value != null) ? parseFloat(params.value.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString() : \"-NA-\";//26528\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n BattVoltageValueFormatter: (params) => {\r\n\r\n if (params.value == -999)\r\n return \"-NA-\";\r\n else {\r\n var val = parseFloat(params.value.toString());\r\n return val.toFixed(1);\r\n }\r\n //return params.value;\r\n },\r\n BattVoltageSorting: (param) => {\r\n if (param != null && param != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (param != null) ? parseFloat(param.toFixed(parseInt(tempRoundingValue))) : -999;\r\n if (param != null) {\r\n var val = parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return - 999;\r\n }\r\n else\r\n return -999;\r\n },\r\n BattVoltageSortingGrouping: (param) => {\r\n \r\n if (param != null && param != undefined && param != -999) {\r\n //var tempRoundingValue = \"1\";\r\n //return (param != null) ? parseFloat(param.toFixed(parseInt(tempRoundingValue))) : '-NA-';\r\n\r\n return (param == null) ? '-NA-' : param;// === \"0\" ? param : parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n //RCNG-2227,2228\r\n DoorBattPctSortingGrouping: (param) => {\r\n if (param != null && param != undefined && param != -1) {\r\n return (param == null) ? '-NA-' : param;// === \"0\" ? param : parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n ReeferBattPctSortingGrouping: (param, deviceType) => {\r\n if (deviceType != null && deviceType != undefined) {\r\n if (deviceType.trim() == 'CT3600' && param != null && param != undefined && param != -1) {\r\n return (param == null) ? '-NA-' : param;// === \"0\" ? param : parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n \r\n BattVoltageSortingFieldName: (params, FieldName) => {\r\n\r\n if (params != null && params != undefined) {\r\n\r\n if (params.data != null && params.data != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.BatteryVoltage != null) ? parseFloat(params.data.BatteryVoltage.toFixed(parseInt(tempRoundingValue))) : -999;\r\n if (params.data.BatteryVoltage != null) {\r\n var val = parseFloat(params.data.BatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return - 999;\r\n }\r\n else\r\n return -999;\r\n }\r\n else\r\n return -999;\r\n },\r\n DoorBattVoltageSortingFieldName: (params, FieldName) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.DoorSensorBatteryVoltage != null) ? parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue))) : -999;\r\n if (params.data.DoorSensorBatteryVoltage != null) {\r\n var val = parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return - 999;\r\n }\r\n else\r\n return -999;\r\n }\r\n else\r\n return -999;\r\n },\r\n BattVoltageFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.ExtBattVoltage != null && params.data.ExtBattVoltage != undefined && params.data.ExtBattVoltage != '') {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.ExtBattVoltage != null) ? parseFloat(params.data.ExtBattVoltage.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n if (params.data.ExtBattVoltage != null) {\r\n var val = parseFloat(params.data.ExtBattVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DeviceBatteryFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.DeviceBattery != null && params.data.DeviceBattery != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.DeviceBattery != null) ? parseFloat(params.data.DeviceBattery.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n if (params.data.DeviceBattery != null) {\r\n var val = parseFloat(params.data.DeviceBattery.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DeviceBattVoltageFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.BattVoltage != null && params.data.BattVoltage != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.BattVoltage != null) ? parseFloat(params.data.BattVoltage.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n if (params.data.BattVoltage != null) {\r\n var val = parseFloat(params.data.BattVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n GPSCoordsForFilter: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n var tempRoundingValue = \"6\";\r\n if (params.data.GPSCoords != null && params.data.GPSCoords != undefined && params.data.GPSCoords.toString() != \"\") {\r\n var lstCoordinatePoints = params.data.GPSCoords.split(',');\r\n var lat = parseFloat(lstCoordinatePoints[0].toString());\r\n var long = parseFloat(lstCoordinatePoints[1].toString());\r\n var param = parseFloat(lat.toFixed(parseInt(tempRoundingValue)).toString()) + \",\" + parseFloat(long.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n BatteryVoltageFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.BatteryVoltage != null && params.data.BatteryVoltage != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.BatteryVoltage != null) ? parseFloat(params.data.BatteryVoltage.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n if (params.data.BatteryVoltage != null) {\r\n var val = parseFloat(params.data.BatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DoorBatteryVoltageFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.DoorSensorBatteryVoltage != null && params.data.DoorSensorBatteryVoltage != undefined) {\r\n var tempRoundingValue = \"1\";\r\n if (params.data.DoorSensorBatteryVoltage != null) {\r\n var val = parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n FillLevelTraceGrouping: (params) => {\r\n if (params != null && params != undefined && params != '') { \r\n if (params < 0 ) {\r\n switch (params.toString()) {\r\n case \"-7\": return \"No Sensor\";\r\n case \"-6\": return \"Config Error\";\r\n case \"-5\": return \"Fuel Reading Unavailable\";\r\n case \"-4\": return \"Not Configured\";\r\n case \"-3\": return \"Sensor Error\";\r\n case \"-2\": return \"Sensor Error\";\r\n case \"-1\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Level\";\r\n }\r\n }\r\n else {\r\n var image:any = params;\r\n if (image > 17)\r\n return params;\r\n else\r\n image = params - 1;\r\n\r\n if (image == 0)\r\n image = \"E\";\r\n else if (image == 16)\r\n image = \"F\"; \r\n \r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n imageElement.src = \"../images/FuelFractionImages/\" + image + \".png\";\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n\r\n } \r\n },\r\n \r\n stringTypeFormatter: (params) => {\r\n\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n commoditystringTypeFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data != \"null\") {\r\n return params.data.commodity;\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n rcdFirmwareFormatter: (params) => {\r\n var tempRoundingValue = \"2\";\r\n if (params != null && params != undefined && params.data != null && params.data != undefined) {\r\n var RCDFirmwareVersion = params.data.RCDFirmwareVersion;\r\n var DeviceType = params.data.DeviceType;\r\n\r\n if (RCDFirmwareVersion != null && RCDFirmwareVersion != \"\" && RCDFirmwareVersion != \"null\") {\r\n if (DeviceType != null && DeviceType.trim() == \"CT4000\") {\r\n var tempVal = RCDFirmwareVersion.split(\" \");\r\n var param = tempVal[1];\r\n if (param != null && param != undefined) {\r\n var val = parseFloat(param.toString());\r\n var firmwareRev = tempVal[0] + \" \" + val.toFixed(parseInt(tempRoundingValue));\r\n return firmwareRev;\r\n }\r\n }\r\n\r\n return RCDFirmwareVersion;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n },\r\n\r\n deviceFirmwareFormatter: (params) => {\r\n var tempRoundingValue = \"2\";\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n if (params.data.DeviceType != null && params.data.DeviceType.trim() == \"CT4000\") {\r\n var tempVal = params.value.split(\" \");\r\n var param = tempVal[1];\r\n if (param != null && param != undefined) {\r\n var val = parseFloat(param.toString());\r\n var firmwareRev = tempVal[0] + \" \" + val.toFixed(parseInt(tempRoundingValue));\r\n\r\n return '' + firmwareRev + '';\r\n }\r\n else \r\n return '' + params.value + '';\r\n }\r\n else\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-'; \r\n },\r\n\r\n deviceFirmwareFormatterForExcel: (params) => {\r\n var tempRoundingValue = \"2\";\r\n if (params.FirmwareRev != null && params.FirmwareRev != undefined && params.FirmwareRev != '' && params.FirmwareRev != \"null\") { \r\n try {\r\n if (params.DeviceType != null && params.DeviceType.trim() == \"CT4000\") {\r\n var tempVal = params.FirmwareRev.split(\" \");\r\n var firmwareRev = '';\r\n\r\n if (tempVal[1] != null && tempVal[1] != undefined && tempVal[1] != '' && tempVal[1] != \"null\") {\r\n var param = tempVal[1].toString();\r\n var val = parseFloat(param);\r\n firmwareRev = tempVal[0] + \" \" + val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n else\r\n firmwareRev = tempVal[0];\r\n \r\n return firmwareRev;\r\n }\r\n else\r\n return params.FirmwareRev;\r\n } catch (e) {\r\n return '-NA-';\r\n }\r\n }\r\n else\r\n return '-NA-'; \r\n },\r\n\r\n TemperatureFormatterGrouping: (params, fieldName, Data, DeviceType) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n //var colDef = Data.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = Data.node.rowGroupColumn.colDef.headerName;//WI-26892\r\n if (params != '-NA-') {\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params);\r\n\r\n if ((DeviceType != null && DeviceType != undefined && DeviceType.toString().toUpperCase().trim() == \"ST9100\") && Data.node.field == \"DeviceTemp\") {\r\n //if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '*No ' + columnDisplayName;\r\n },\r\n BookingTemperatureFormatterGrouping: (params, fieldName, Data) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n //var colDef = Data.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = Data.node.rowGroupColumn.colDef.headerName;//WI-26892\r\n var BookedTemperature = null;\r\n var TempUnit = null;\r\n if (params != null && params != '-NA-') {\r\n var strlstValues = params.split('@');\r\n BookedTemperature = strlstValues[0];\r\n TempUnit = strlstValues[1];\r\n if (TempUnit.toUpperCase() == \"N\")\r\n return \"Non-Running\";\r\n else if (TempUnit.toUpperCase() != tempUnitCd.toUpperCase()) {\r\n if (\"F\" == tempUnitCd.toUpperCase()) {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = ((tempValue * 9) / 5) + 32;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = (tempValue - 32) * 5 / 9;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return parseFloat(parseFloat(BookedTemperature.toString()).toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return '*No ' + columnDisplayName;\r\n },\r\n EvaporatorExpansionValveOpeningSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.EvaporatorExpansionValveOpening != null && params.data.EvaporatorExpansionValveOpening != '-NA-') {\r\n return params.data.EvaporatorExpansionValveOpening.toString();\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n \r\n },\r\n SuctionModulationValveOpeningSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.SuctionModulationValveOpening != null && params.data.SuctionModulationValveOpening != '' && params.data.SuctionModulationValveOpening != '-NA-') {\r\n return params.data.SuctionModulationValveOpening.toString();\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n ControlledAtmosphereModeSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data != '-NA-') {\r\n if (params.data.ControlledAtmosphereMode != null && params.data.ControlledAtmosphereMode != '-NA-' && params.data.ControlledAtmosphereMode != undefined && params.data.ControlledAtmosphereMode != '') {\r\n return params.data.ControlledAtmosphereMode.toString();\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n ThreePhaseCurrentSorting: (params) => { \r\n if (params.data.ThreePhaseCurrent != null && params.data.TotalCurrentDraw != \"-N-\") {\r\n return params.data.ThreePhaseCurrent;\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n \r\n vesselCdSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.VesselCd != null && params.data.VesselCd != \"\" && params.data.VesselCd != undefined && params.data.VesselCd != \"null\") {\r\n return params.data.VesselCd;\r\n }\r\n\r\n return \"-NA-\";\r\n }\r\n },\r\n \r\n stringTypeValueFormatter: (params) => { \r\n if (params.value != \"-NA-\") {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DepartingVVCstringTypeValueFormatter: (params) => {\r\n var valueString = '-NA-';\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.DepartingVVC != \"-NA-\") {\r\n valueString = params.data.DepartingVVC.trim();\r\n if (valueString.endsWith(\"-\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n if (valueString == \"\")\r\n return '-NA-';\r\n else\r\n return valueString;\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n BKVVstringTypeValueFormatter: (params) => {\r\n var valueString = '-NA-';\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.BKVV != \"-NA-\" && params.data.BKVV != undefined && params.data.BKVV !=null) {\r\n valueString = params.data.BKVV.trim();\r\n if (valueString.endsWith(\"-\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n if (valueString == \"\")\r\n return '-NA-';\r\n else\r\n return valueString;\r\n }\r\n else\r\n return valueString;\r\n }\r\n return '-NA-';\r\n },\r\n BKVVstringTypeValueFormatter: (params) => {\r\n var valueString = '-NA-';\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.BKVV != \"-NA-\" && params.data.BKVV != undefined && params.data.BKVV !=null) {\r\n valueString = params.data.BKVV.trim();\r\n if (valueString.endsWith(\"-\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n if (valueString == \"\")\r\n return '-NA-';\r\n else\r\n return valueString;\r\n }\r\n else\r\n return valueString;\r\n }\r\n return '-NA-';\r\n },\r\n ArrivingVVCstringTypeValueFormatter: (params) => {\r\n var valueString = '-NA-';\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.ArrivingVVC != \"-NA-\") {\r\n valueString = params.data.ArrivingVVC.trim();\r\n if (valueString.endsWith(\"-\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n if (valueString == \"\")\r\n return '-NA-';\r\n else\r\n return valueString;\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n FreshAirTypeValueFormatter: (params) => {\r\n if (params.value != \"-NA-\") {\r\n return '' + parseFloat(params.value).toFixed(1) + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeSorting: (param) => {\r\n if (param != null && param != undefined && param != '' && param != \"null\") {\r\n return param;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeSortingFieldName: (params,FieldName) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != undefined && params.data != null) {\r\n //if (param != null && param != undefined && param != '' && param != \"null\") {\r\n // return param;\r\n //}\r\n\r\n switch (FieldName) {\r\n case 'AssetNumber':\r\n return params.data.AssetNumber != null && params.data.AssetNumber != \"\" && params.data.AssetNumber != \"null\" ? params.data.AssetNumber : '-NA-';\r\n case 'FenceName':\r\n return params.data.FenceName != null && params.data.FenceName != \"\" && params.data.FenceName != \"null\" ? params.data.FenceName : '-NA-';\r\n case 'FenceNameID':\r\n return params.data.FenceNameID != null && params.data.FenceNameID != \"\" && params.data.FenceNameID != \"null\" ? params.data.FenceNameID : '-NA-';\r\n case 'BackendGeofenceName':\r\n return params.data.BackendGeofenceName != null && params.data.BackendGeofenceName != \"\" && params.data.BackendGeofenceName != \"null\" ? params.data.BackendGeofenceName : '-NA-';\r\n case 'BackendGeofenceNameID':\r\n return params.data.BackendGeofenceNameID != null && params.data.BackendGeofenceNameID != \"\" && params.data.BackendGeofenceNameID != \"null\" ? params.data.BackendGeofenceNameID : '-NA-';\r\n case 'FirmwareVersion':\r\n return params.data.FirmwareVersion != null && params.data.FirmwareVersion != \"\" && params.data.FirmwareVersion != \"null\" ? params.data.FirmwareVersion : '-NA-';\r\n case 'PTIType':\r\n return params.data.PTIType != null && params.data.PTIType.trim() != \"\" && params.data.PTIType != \"null\" ? params.data.PTIType : '-NA-';\r\n case 'ReeferID':\r\n return params.data.ReeferID != null && params.data.ReeferID != \"\" && params.data.ReeferID != \"null\" ? params.data.ReeferID : '-NA-';\r\n case 'CCProfileCode':\r\n return params.data.CCProfileCode != null && params.data.CCProfileCode != \"\" && params.data.CCProfileCode != \"null\" ? params.data.CCProfileCode : '-NA-'; \r\n case 'ColdTreatmentState':\r\n if (params.data.ReeferOEMTypeCd !=null && params.data.ReeferOEMTypeCd.toUpperCase().trim() == \"D\") {\r\n if (params.data.ACTMode != null && params.data.ACTMode.toString().toUpperCase().trim() == \"TRUE\")\r\n return params.data.ColdTreatmentState != null && params.data.ColdTreatmentState != \"\" && params.data.ColdTreatmentState != \"null\" ? params.data.ColdTreatmentState : '-NA-';\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return params.data.ColdTreatmentState != null && params.data.ColdTreatmentState != \"\" && params.data.ColdTreatmentState != \"null\" ? params.data.ColdTreatmentState : '-NA-';\r\n //26668 - start\r\n case 'VesselID':\r\n return params.data.VesselID != null && params.data.VesselID != \"\" && params.data.VesselID != \"null\" ? params.data.VesselID : '-NA-';\r\n case 'VoyageID':\r\n return params.data.VoyageID != null && params.data.VoyageID != \"\" && params.data.VoyageID != \"null\" ? params.data.VoyageID : '-NA-';\r\n case 'PortOfDeparture':\r\n return params.data.PortOfDeparture != null && params.data.PortOfDeparture != \"\" && params.data.PortOfDeparture != \"null\" ? params.data.PortOfDeparture : '-NA-';\r\n case 'PortOfDestination':\r\n return params.data.PortOfDestination != null && params.data.PortOfDestination != \"\" && params.data.PortOfDestination != \"null\" ? params.data.PortOfDestination : '-NA-';\r\n case 'Bay':\r\n return params.data.Bay != null && params.data.Bay != \"\" && params.data.Bay != \"null\" ? params.data.Bay : '-NA-';\r\n case 'Row':\r\n return params.data.Row != null && params.data.Row != \"\" && params.data.Row != \"null\" ? params.data.Row : '-NA-';\r\n case 'Tier':\r\n return params.data.Tier != null && params.data.Tier != \"\" && params.data.Tier != \"null\" ? params.data.Tier : '-NA-';\r\n //26668 -end\r\n\r\n case 'OEMModel':\r\n return params.data.OEMModel != null && params.data.OEMModel != \"\" && params.data.OEMModel != \"null\" ? params.data.OEMModel : '-NA-';\r\n case 'BookingNumber':\r\n return params.data.BookingNumber != null && params.data.BookingNumber != \"\" && params.data.BookingNumber != \"null\" ? params.data.BookingNumber : '-NA-';\r\n case 'EventDescription':\r\n return params.data.EventDescription != null && params.data.EventDescription != \"null\" && params.data.EventDescription != \"\" ? params.data.EventDescription : '-NA-';\r\n case 'GeofenceName':\r\n return params.data.GeofenceName != null && params.data.GeofenceName != \"null\" && params.data.GeofenceName != \"\" ? params.data.GeofenceName : '-NA-';\r\n case 'ServerGeofenceName':\r\n return params.data.ServerGeofenceName != null && params.data.ServerGeofenceName != \"null\" && params.data.ServerGeofenceName != \"\" ? params.data.ServerGeofenceName : '-NA-';\r\n case 'Geofence':\r\n return params.data.Geofence != null && params.data.Geofence != \"null\" && params.data.Geofence != \"\" ? params.data.Geofence : '-NA-';\r\n case 'ServerGeofence':\r\n return params.data.ServerGeofence != null && params.data.ServerGeofence != \"null\" && params.data.ServerGeofence != \"\" ? params.data.ServerGeofence : '-NA-';\r\n case 'Tag':\r\n return params.data.Tag != null && params.data.Tag != \"null\" && params.data.Tag != \"\" ? params.data.Tag : '-NA-';\r\n case 'Name':\r\n return params.data.Name != null && params.data.Name != \"null\" && params.data.Name != \"\" ? params.data.Name : '-NA-';\r\n case 'Address':\r\n return params.data.Address != null && params.data.Address != \"null\" && params.data.Address != \"\" ? params.data.Address : '-NA-';\r\n case 'City':\r\n return params.data.City != null && params.data.City != \"\" && params.data.City != \"null\" ? params.data.City : '-NA-';\r\n case 'State':\r\n return params.data.State != null && params.data.State != \"\" && params.data.State != \"null\" ? params.data.State : '-NA-';\r\n case 'Country':\r\n return params.data.Country != null && params.data.Country != \"\" && params.data.Country != \"null\" ? params.data.Country : '-NA-';\r\n case 'Zip':\r\n return params.data.Zip != null && params.data.Zip != \"\" && params.data.Zip != \"null\" ? params.data.Zip : '-NA-';\r\n case 'ZipCode':\r\n return params.data.ZipCode != null && params.data.ZipCode != \"\" && params.data.ZipCode != \"null\" ? params.data.ZipCode : '-NA-';\r\n case 'TripWiseStatusDescription':\r\n return params.data.TripWiseStatusDescription != null && params.data.TripWiseStatusDescription != \"\" && params.data.TripWiseStatusDescription != \"null\" ? params.data.TripWiseStatusDescription : '-NA-';\r\n case 'PTIState':\r\n return params.data.PTIState != null && params.data.PTIState != \"\" && params.data.PTIState != \"null\" ? params.data.PTIState : '-NA-';\r\n\r\n case 'ControllerSerialNumber':\r\n return params.data.ControllerSerialNumber != null && params.data.ControllerSerialNumber != \"\" && params.data.ControllerSerialNumber != \"null\" ? params.data.ControllerSerialNumber : '-NA-';\r\n case 'SoftwareRevision':\r\n return params.data.SoftwareRevision != null && params.data.SoftwareRevision != \"\" && params.data.SoftwareRevision != \"null\" ? params.data.SoftwareRevision : '-NA-';\r\n \r\n case 'ControllerTypeSetting':\r\n return params.data.ControllerTypeSetting != null && params.data.ControllerTypeSetting != \"\" && params.data.ControllerTypeSetting != \"null\" ? params.data.ControllerTypeSetting : '-NA-';\r\n case 'FreshAirType':\r\n return params.data.FreshAirType != null && params.data.FreshAirType != \"\" && params.data.FreshAirType != \"null\" ? params.data.FreshAirType : '-NA-';\r\n case 'RCDID':\r\n return params.data.RCDID != null && params.data.RCDID != \"\" && params.data.RCDID != \"null\" ? params.data.RCDID : '-NA-';\r\n case 'RCDFirmwareVersion':\r\n return params.data.RCDFirmwareVersion != null && params.data.RCDFirmwareVersion != \"\" && params.data.RCDFirmwareVersion != \"null\" ? params.data.RCDFirmwareVersion : '-NA-';\r\n\r\n case 'RCDBootloaderVersion':\r\n return params.data.RCDBootloaderVersion != null && params.data.RCDBootloaderVersion != \"\" && params.data.RCDBootloaderVersion != \"null\" ? params.data.RCDBootloaderVersion : '-NA-';\r\n case 'RCDMeshFirmwareVersion':\r\n return params.data.RCDMeshFirmwareVersion != null && params.data.RCDMeshFirmwareVersion != \"\" && params.data.RCDMeshFirmwareVersion != \"null\" ? params.data.RCDMeshFirmwareVersion : '-NA-';\r\n case 'RCDReportingInterval':\r\n return params.data.RCDReportingInterval != null && params.data.RCDReportingInterval != \"\" && params.data.RCDReportingInterval != \"null\" ? params.data.RCDReportingInterval : '-NA-';\r\n case 'DefrostInterval':\r\n return params.data.DefrostInterval != null && params.data.DefrostInterval != \"\" && params.data.DefrostInterval != \"null\" ? params.data.DefrostInterval : '-NA-';\r\n case 'PowerMeter':\r\n return params.data.PowerMeter != null && params.data.PowerMeter != \"\" && params.data.PowerMeter != \"null\" ? params.data.PowerMeter : '-NA-';\r\n case 'RevisionNum':\r\n return params.data.RevisionNum != null && params.data.RevisionNum != \"\" && params.data.RevisionNum != \"null\" ? params.data.RevisionNum : '-NA-';\r\n case 'GeofenceRevisionNum':\r\n return params.data.GeofenceRevisionNum != null && params.data.GeofenceRevisionNum != \"\" && params.data.GeofenceRevisionNum != \"null\" ? params.data.GeofenceRevisionNum : '-NA-';\r\n\r\n case 'MSISDN':\r\n return params.data.MSISDN != null && params.data.MSISDN != \"\" && params.data.MSISDN != \"null\" ? params.data.MSISDN : '-NA-';\r\n case 'SIM_IMSI':\r\n return params.data.SIM_IMSI != null && params.data.SIM_IMSI != \"\" && params.data.SIM_IMSI != \"null\" ? params.data.SIM_IMSI : '-NA-';\r\n case 'ICCID':\r\n return params.data.ICCID != null && params.data.ICCID != \"\" && params.data.ICCID != \"null\" ? params.data.ICCID : '-NA-';\r\n case 'EUI':\r\n return params.data.EUI != null && params.data.EUI != \"\" && params.data.EUI != \"null\" ? params.data.EUI : '-NA-';\r\n\r\n case 'CountryName':\r\n return params.data.CountryName != null && params.data.CountryName != \"\" && params.data.CountryName != \"null\" ? params.data.CountryName : '-NA-';\r\n case 'TowerLocalizationAreaCode':\r\n return params.data.TowerLocalizationAreaCode != null && params.data.TowerLocalizationAreaCode != \"\" && params.data.TowerLocalizationAreaCode != \"null\" ? params.data.TowerLocalizationAreaCode : '-NA-';\r\n case 'TowerBaseStationID':\r\n return params.data.TowerBaseStationID != null && params.data.TowerBaseStationID != \"\" && params.data.TowerBaseStationID != \"null\" ? params.data.TowerBaseStationID : '-NA-';\r\n case 'DeviceType':\r\n return params.data.DeviceType != null && params.data.DeviceType != \"\" && params.data.DeviceType != \"null\" ? params.data.DeviceType : '-NA-';\r\n case 'VesselCd':\r\n return params.data.VesselCd != null && params.data.VesselCd != \"\" && params.data.VesselCd != \"null\" ? params.data.VesselCd : '-NA-';\r\n case 'AssetState':\r\n return params.data.AssetState != null && params.data.AssetState != \"\" && params.data.AssetState != \"null\" ? params.data.AssetState : '-NA-';\r\n case 'DeploymentName':\r\n return params.data.DeploymentName != null && params.data.DeploymentName != \"\" && params.data.DeploymentName != \"null\" ? params.data.DeploymentName : '-NA-';\r\n case 'DeploymentTypeName':\r\n return params.data.DeploymentTypeName != null && params.data.DeploymentTypeName != \"\" && params.data.DeploymentTypeName != \"null\" ? params.data.DeploymentTypeName : '-NA-';\r\n case 'DeploymentStatus':\r\n return params.data.DeploymentStatus != null && params.data.DeploymentStatus != \"\" && params.data.DeploymentStatus != \"null\" ? params.data.DeploymentStatus : '-NA-';\r\n case 'Description':\r\n return params.data.Description != null && params.data.Description != \"\" && params.data.Description != \"null\" ? params.data.Description : '-NA-';\r\n case 'CreatedBy':\r\n return params.data.CreatedBy != null && params.data.CreatedBy != \"\" && params.data.CreatedBy != \"null\" ? params.data.CreatedBy : '-NA-';\r\n case 'ModifiedBy':\r\n return params.data.ModifiedBy != null && params.data.ModifiedBy != \"\" && params.data.ModifiedBy != \"null\" ? params.data.ModifiedBy : '-NA-';\r\n case 'FileName':\r\n return params.data.FileName != null && params.data.FileName != \"\" && params.data.FileName != \"null\" ? params.data.FileName : '-NA-';\r\n case 'TagName':\r\n return params.data.TagName != null && params.data.TagName != \"\" && params.data.TagName != \"null\" ? params.data.TagName : '-NA-';\r\n case 'OEMDescription':\r\n return params.data.OEMDescription != null && params.data.OEMDescription != \"\" && params.data.OEMDescription != \"null\" ? params.data.OEMDescription : '-NA-';\r\n case 'OemModelDescription':\r\n return params.data.OemModelDescription != null && params.data.OemModelDescription != \"\" && params.data.OemModelDescription != \"null\" ? params.data.OemModelDescription : '-NA-';\r\n case 'Created':\r\n return params.data.Created != null && params.data.Created != \"\" && params.data.Created != \"null\" ? params.data.Created : '-NA-';\r\n case 'CustomerName':\r\n return params.data.CustomerName != null && params.data.CustomerName != \"\" && params.data.CustomerName != \"null\" ? params.data.CustomerName : '-NA-';\r\n case 'Compression':\r\n return params.data.Compression != null && params.data.Compression != \"\" && params.data.Compression != \"null\" ? params.data.Compression : '-NA-';\r\n case 'GeofenceCategoryDsc':\r\n return params.data.GeofenceCategoryDsc != null && params.data.GeofenceCategoryDsc != \"\" && params.data.GeofenceCategoryDsc != \"null\" ? params.data.GeofenceCategoryDsc : '-NA-';\r\n case 'UserName':\r\n return params.data.UserName != null && params.data.UserName != \"\" && params.data.UserName != \"null\" ? params.data.UserName : '-NA-';\r\n case 'FullName':\r\n return params.data.FullName != null && params.data.FullName != \"\" && params.data.FullName != \"null\" ? params.data.FullName : '-NA-';\r\n case 'SSOSignInTypes':\r\n return params.data.SSOSignInTypes != null && params.data.SSOSignInTypes != \"\" && params.data.SSOSignInTypes != \"null\" ? params.data.SSOSignInTypes : '-NA-';\r\n case 'UserEmail':\r\n return params.data.UserEmail != null && params.data.UserEmail != \"\" && params.data.UserEmail != \"null\" ? params.data.UserEmail : '-NA-';\r\n case 'Domain':\r\n return params.data.Domain != null && params.data.Domain != \"\" && params.data.Domain != \"null\" ? params.data.Domain : '-NA-';\r\n case 'AssignedGroup':\r\n return params.data.AssignedGroup != null && params.data.AssignedGroup != \"\" && params.data.AssignedGroup != \"null\" ? params.data.AssignedGroup : '-NA-';\r\n case 'GroupType':\r\n return params.data.GroupType != null && params.data.GroupType != \"\" && params.data.GroupType != \"null\" ? params.data.GroupType : '-NA-';\r\n case 'DLParam1':\r\n return params.data.DLParam1 != null && params.data.DLParam1 != \"\" && params.data.DLParam1 != \"null\" ? params.data.DLParam1 : '-NA-';\r\n case 'DLParam2':\r\n return params.data.DLParam2 != null && params.data.DLParam2 != \"\" && params.data.DLParam2 != \"null\" ? params.data.DLParam2 : '-NA-';\r\n case 'DLParam3':\r\n return params.data.DLParam3 != null && params.data.DLParam3 != \"\" && params.data.DLParam3 != \"null\" ? params.data.DLParam3 : '-NA-';\r\n case 'DLParam4':\r\n return params.data.DLParam4 != null && params.data.DLParam4 != \"\" && params.data.DLParam4 != \"null\" ? params.data.DLParam4 : '-NA-';\r\n case 'DLParam5':\r\n return params.data.DLParam5 != null && params.data.DLParam5 != \"\" && params.data.DLParam5 != \"null\" ? params.data.DLParam5 : '-NA-';\r\n case 'CellNetGeneration':\r\n return params.data.CellNetGeneration != null && params.data.CellNetGeneration != \"\" && params.data.CellNetGeneration != \"null\" ? params.data.CellNetGeneration : '-NA-';\r\n case 'PersonID':\r\n return params.data.PersonID != null && params.data.PersonID != \"\" && params.data.PersonID != \"null\" ? params.data.PersonID : '-NA-';\r\n case 'DLEventMasterID':\r\n return params.data.DLEventMasterID != null && params.data.DLEventMasterID != \"null\" && params.data.DLEventMasterID != \"\" ? params.data.DLEventMasterID : '-NA-';\r\n case 'EventNotes':\r\n return params.data.EventNotes != null && params.data.EventNotes != \"\" && params.data.EventNotes != \"null\" ? params.data.EventNotes : '-NA-';\r\n case 'DepartingVVC':\r\n return params.data.DepartingVVC != null && params.data.DepartingVVC != \"\" && params.data.DepartingVVC != \"null\" ? params.data.DepartingVVC : '-NA-';\r\n case 'ArrivingVVC':\r\n return params.data.ArrivingVVC != null && params.data.ArrivingVVC != \"\" && params.data.ArrivingVVC != \"null\" ? params.data.ArrivingVVC : '-NA-';\r\n\r\n case 'ProfileCode':\r\n return params.data.ProfileCode != null && params.data.ProfileCode != \"\" && params.data.ProfileCode != \"null\" ? params.data.ProfileCode : '-NA-';\r\n case 'ProfileCodeDescription':\r\n return params.data.ProfileCodeDescription != null && params.data.ProfileCodeDescription != \"\" && params.data.ProfileCodeDescription != \"null\" ? params.data.ProfileCodeDescription : '-NA-';\r\n case 'InsertedBy':\r\n return params.data.InsertedBy != null && params.data.InsertedBy != \"\" && params.data.InsertedBy != \"null\" ? params.data.InsertedBy : '-NA-';\r\n case 'UpdatedBy':\r\n return params.data.UpdatedBy != null && params.data.UpdatedBy != \"\" && params.data.UpdatedBy != \"null\" ? params.data.UpdatedBy : '-NA-'; \r\n case 'DeviceTemp':\r\n return params.data.DeviceTemp != null && params.data.DeviceTemp != \"\" && params.data.DeviceTemp != \"null\" ? params.data.DeviceTemp : '-NA-'; //RCNG-1099\r\n case 'InsideTemp':\r\n return params.data.InsideTemp != null && params.data.InsideTemp != \"\" && params.data.InsideTemp != \"null\" ? params.data.InsideTemp : '-NA-';\r\n case 'MNC':\r\n return params.data.MNC != null && params.data.MNC != \"\" && params.data.MNC != \"null\" ? params.data.MNC : '-NA-'; //RCNG-1183\r\n\r\n case 'BKVV':\r\n return params.data.BKVV != null && params.data.BKVV != \"\" && params.data.BKVV != \"null\" ? params.data.BKVV : '-NA-';\r\n case 'BKPOR':\r\n return params.data.BKPOR != null && params.data.BKPOR != \"\" && params.data.BKPOR != \"null\" ? params.data.BKPOR : '-NA-';\r\n case 'BKPOL':\r\n return params.data.BKPOL != null && params.data.BKPOL != \"\" && params.data.BKPOL != \"null\" ? params.data.BKPOL : '-NA-';\r\n case 'BKPOD':\r\n return params.data.BKPOD != null && params.data.BKPOD != \"\" && params.data.BKPOD != \"null\" ? params.data.BKPOD : '-NA-';\r\n case 'BKDEL':\r\n return params.data.BKDEL != null && params.data.BKDEL != \"\" && params.data.BKDEL != \"null\" ? params.data.BKDEL : '-NA-';\r\n case 'BKCustomer':\r\n return params.data.BKCustomer != null && params.data.BKCustomer != \"\" && params.data.BKCustomer != \"null\" ? params.data.BKCustomer : '-NA-';\r\n case 'DimiRemainTerm':\r\n return params.data.DimiRemainTerm != null && params.data.DimiRemainTerm != \"\" && params.data.DimiRemainTerm != \"null\" ? params.data.DimiRemainTerm : '-NA-';\r\n case 'DimiStartAfter':\r\n return params.data.DimiStartAfter != null && params.data.DimiStartAfter != \"\" && params.data.DimiStartAfter != \"null\" ? params.data.DimiStartAfter : '-NA-';\r\n case 'XAxis':\r\n return params.data.XAxis != null && params.data.XAxis != \"null\" ? params.data.XAxis : '-NA-';\r\n case 'YAxis':\r\n return params.data.YAxis != null && params.data.YAxis != \"null\" ? params.data.YAxis : '-NA-';\r\n case 'ZAxis':\r\n return params.data.ZAxis != null && params.data.ZAxis != \"null\" ? params.data.ZAxis : '-NA-';\r\n case 'Illumination':\r\n return params.data.Illumination != null && params.data.Illumination != \"null\" ? params.data.Illumination : '-NA-';\r\n case 'EvaporatorFanSpeedControl':\r\n return params.data.EvaporatorFanSpeedControl != null && params.data.EvaporatorFanSpeedControl != \"\" && params.data.EvaporatorFanSpeedControl != \"null\" ? params.data.EvaporatorFanSpeedControl : '-NA-';\r\n case 'BulbMode':\r\n return params.data.BulbMode != null && params.data.BulbMode != \"\" && params.data.BulbMode != \"null\" ? params.data.BulbMode : '-NA-';\r\n \r\n //case 'EverFRESH':\r\n // if (params.data.EverFRESH != null && params.data.EverFRESH != \"\" && params.data.EverFRESH != \"null\") {\r\n // if (params.data.EverFRESH == true)\r\n // return 'On';\r\n // else return 'Off';\r\n // }\r\n // else\r\n // return '-NA-';\r\n default:\r\n return '-NA-';\r\n\r\n }\r\n\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\nBatteryModeFormatter:(params) => {\r\n if(params.data != null && params.data != undefined && params.data.BatteryMode != null && params.data.BatteryMode != \"\" && params.data.BatteryMode != \"null\")\r\n {\r\n var BatteryMode = params.data.BatteryMode;\r\n if(BatteryMode == \"N\")\r\n return \"Normal\";\r\n else if(BatteryMode == \"B\")\r\n return \"Backup\";\r\n else if(BatteryMode == \"T\")\r\n return \"Tertiary\";\r\n else if(BatteryMode == \"R\")\r\n return \"Reserve\";\r\n else return \"-NA-\";\r\n }\r\n \r\n else return \"-NA-\";\r\n},\r\n //everFreshSortingFieldName: (params) => {\r\n // if (params.data.EverFRESH != null && params.data.EverFRESH != \"\" && params.data.EverFRESH != \"null\") {\r\n // if (params.data.EverFRESH == true)\r\n // return 'On';\r\n // else return 'Off';\r\n // }\r\n // else\r\n // return '-NA-';\r\n //},\r\n stringTypeSortingForCustomefields: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.column != null && param.column != undefined) {\r\n\r\n if (param.column.colId != null && param.column.colId != undefined) {\r\n if (param.data != null && param.data != undefined) {\r\n var name = param.column.colId; \r\n var value = param.data[name];\r\n if (value != null && value != undefined && value != '' && value != \"null\") {\r\n return value;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n \r\n }, \r\n\r\n stringTypeSortingForSensorfields: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.column != null && param.column != undefined) {\r\n if (param.column.colId != null && param.column.colId != undefined) {\r\n if (param.data != null && param.data != undefined) {\r\n var columnFieldName = param.column.colId;\r\n var deviceType = param.data.DeviceType;\r\n var name = columnFieldName.split(\"_\");\r\n var value = param.data[name[0]];\r\n var deviceTypeCd = name[1];\r\n //if (value != null && value != undefined && value != '') {\r\n if (value != null && value != undefined && value != \"null\") {\r\n if (deviceType != null && deviceType != '' && deviceTypeCd != null && deviceTypeCd != '') {\r\n if (deviceTypeCd.trim() == deviceType.trim())\r\n return value;\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n }, \r\n\r\n stringTypeSortingForDigitalSensorfields: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.column != null && param.column != undefined) { \r\n if (param.column.colId != null && param.column.colId != undefined) {\r\n if (param.data != null && param.data != undefined) {\r\n var columnFieldName = param.column.colId;\r\n var refData = param.colDef.refData; \r\n var deviceType = param.data.DeviceType;\r\n var name = columnFieldName.split(\"_\");\r\n var value = param.data[name[0]];\r\n var deviceTypeCd = name[1];\r\n //if (value != null && value != undefined && value != '') {\r\n if (value != null && value != undefined && value != \"null\") {\r\n if (deviceType != null && deviceType != '' && deviceTypeCd != null && deviceTypeCd != '') {\r\n if (deviceTypeCd.trim() == deviceType.trim()) {\r\n \r\n if (value == 1) {\r\n var sensorSetDsc = refData.split(\",\")[0];\r\n return sensorSetDsc;\r\n }\r\n else if (value == 0) {\r\n var sensorResetDsc = refData.split(\",\")[1];\r\n return sensorResetDsc;\r\n }\r\n else\r\n return value;\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n\r\n TripWiseStatusDescriptionSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.TripWiseStatusDescription != null && params.data.TripWiseStatusDescription != \"\" && params.data.TripWiseStatusDescription != undefined && params.data.TripWiseStatusDescription != \"null\") {\r\n return params.data.TripWiseStatusDescription;\r\n }\r\n\r\n return \"null\";\r\n }\r\n },\r\n PTIStateSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.PTIState != null && params.data.PTIState != \"\" && params.data.PTIState != undefined && params.data.PTIState != \"null\") {\r\n return params.data.PTIState;\r\n }\r\n\r\n return \"null\";\r\n }\r\n },\r\n MNCSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.MNC != null && params.data.MNC != \"\" && params.data.MNC != undefined && params.data.MNC != \"-NA-\") {\r\n return params.data.MNC;\r\n }\r\n\r\n return \"-NA-\";\r\n }\r\n },\r\n GPSCoordsSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.GPSCoords != null && params.data.GPSCoords != undefined && params.data.GPSCoords.toString().trim() != \"\") {\r\n var lstCoordinatePoints = params.data.GPSCoords.split(',');\r\n if (lstCoordinatePoints.length > 1)\r\n {\r\n var lat = parseFloat(lstCoordinatePoints[0].toString());\r\n var long = parseFloat(lstCoordinatePoints[1].toString());\r\n var param = parseFloat(lat.toFixed(parseInt(tempRoundingValue)).toString()) + \",\" + parseFloat(long.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-1000\"; \r\n }\r\n else\r\n return \"-1000\";\r\n }\r\n else\r\n return \"-1000\";\r\n }\r\n else\r\n return \"-1000\";\r\n\r\n },\r\n secondsToTimeSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.GPSLastLock != null && params.data.GPSLastLock != undefined) {\r\n var val = parseInt(params.data.GPSLastLock);\r\n if (val != 0) {\r\n var hours = val / 60;\r\n var minutes = val % 60;\r\n return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n\r\n }\r\n else\r\n return val;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n \r\n },\r\n BookingNumberSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.BookingNumber != null && params.data.BookingNumber != \"\" && params.data.BookingNumber != undefined && params.data.BookingNumber != \"null\") {\r\n return params.data.BookingNumber;\r\n }\r\n\r\n return \"null\";\r\n }\r\n },\r\n \r\n stringTypeFormatterOnlyValue: (params) => {\r\n if (params.value != null && params.value != \"null\" && params.value != undefined && params.value != '') {\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeSortingFor3P: (param) => {\r\n if (param != null && param != \"null\" && param != undefined && param != '') {\r\n if (param === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return param;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeFormatterFor3PforDryAndChassis: (params) => {\r\n if (params.data != null && params.data != \"null\" && params.data != undefined && params.data != '' && params.data != '-NA-') {\r\n if (params.data.customername === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return '' + params.data.customername + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeFormatterFor3P: (params) => {\r\n if (params.value != null && params.value != \"null\" && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n if (params.value === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeFormatterFor3PForFilter: (params) => {\r\n if (params.data != null && params.data != \"null\" && params.data != undefined && params.data != '') {\r\n if (params.data.CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return params.data.CustomerName;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeFormatterFor3PExcel: (params) => {\r\n if (params != null && params != \"null\" && params != undefined && params != '') {\r\n if (params === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n MNCTypeFormatter: (params) => {\r\n if (params.value != null && params.value != undefined) {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GeofenceTypeGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n switch (param.toString().toUpperCase().trim()) {\r\n case \"B\":\r\n return \"Server Geofence\";\r\n case \"D\":\r\n return \"Device Geofence\";\r\n case \"R\":\r\n return \"Region Geofence\";\r\n }\r\n }\r\n\r\n return \"*No Geofence Type\";\r\n },\r\n\r\n GeofenceTypeFormatterForFilter: (params) => {\r\n if (params != null && params != undefined && params.data != null && params.data != undefined && params.data.GeofenceCategoryCd != null && params.data.GeofenceCategoryCd != undefined) {\r\n switch (params.data.GeofenceCategoryCd.toString().toUpperCase().trim()) {\r\n case \"B\":\r\n return \"Server Geofence\";\r\n case \"D\":\r\n return \"Device Geofence\";\r\n case \"R\":\r\n return \"Region Geofence\"; \r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n\r\n fenceTypeFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n if (params.value.toString().trim() == \"D\")\r\n return \"Device Geofence\";\r\n else if (params.value.toString().trim() == \"R\")\r\n return \"Region Geofence\";\r\n else if (params.value.toString().trim() == \"B\")\r\n return \"Server Geofence\";\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n fenceTypeFormatterForExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params == \"D\")\r\n return \"Device Geofence\";\r\n else if (params == \"R\")\r\n return \"Region Geofence\";\r\n else if (params == \"B\")\r\n return \"Server Geofence\";\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeFormatterChildForms: (params) => {\r\n \r\n if (params != null && params != \"null\" && params != undefined && params != '') {\r\n return \"\\t\" + params;\r\n }\r\n //else if (params.data != null && params.data != \"null\" && params.data != undefined && params.data != '') {\r\n // return '-NA-';\r\n //}\r\n else\r\n return '';\r\n },\r\n stringTypeFormatterChildFormsNew: (params) => {\r\n\r\n if (params != null && params != \"null\" && params != undefined && params != '') {\r\n return \"\\t\" + params;\r\n }\r\n else if (params.data != null && params.data != \"null\" && params.data != undefined && params.data != '') {\r\n return '-NA-';\r\n }\r\n else\r\n return '';\r\n },\r\n DimiRemainTermGrouping: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '*No OEM PTI time left (hr)';\r\n },\r\n\r\n OEMPTITypeFormatter(params) {\r\n var returnValue = '';\r\n\r\n if (params != null && params != \"null\" && params != undefined && params != '') {\r\n\r\n returnValue = params.toUpperCase().trim() == \"FULLPTI\" ? \"Full\" : params.toUpperCase().trim() == \"SHORTPTI\" ? \"Short\" : params;\r\n\r\n return returnValue;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n stringTypeFormatterChildFormsForCopy: (params) => {\r\n\r\n if (params != null && params != \"null\" && params != undefined && params != '') {\r\n return params;\r\n }\r\n else if (params.data != null && params.data != \"null\" && params.data != undefined && params.data != '') {\r\n return '-NA-';\r\n }\r\n else\r\n return '';\r\n },\r\n\r\n PTIStateforExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params == \"P\" || params == \"4\") {\r\n params = \"Pending\";\r\n return \"\\t\" + params;\r\n }\r\n else if (params == \"C\") {\r\n params = \"Success\";\r\n return \"\\t\" + params;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n reeferCommsFormatter: (params) => {\r\n if (params.value != null) {\r\n if (params.value.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"True\";\r\n else\r\n return \"False\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n GuestReeferModeFormatter: (params) => {\r\n if (params.value != null) {\r\n if (params.value.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Guest\";\r\n else\r\n return \"Standard\";\r\n }\r\n else\r\n return 'Standard';\r\n },\r\n GuestReeferModeFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.DeviceConfig != null && params.data.DeviceConfig != undefined && params.data.DeviceConfig != '') {\r\n if (params.data.DeviceConfig.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Guest\";\r\n else\r\n return \"Standard\";\r\n }\r\n else\r\n return 'Standard';\r\n },\r\n GuestReeferModeGrouping: (params) => {\r\n if (params != null) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Guest\";\r\n else\r\n return \"Standard\";\r\n }\r\n else\r\n return 'Standard';\r\n },\r\n CommentExistsGrouping: (params) => {\r\n if (params != null && params != '-NA-') {\r\n if (params.toString() == \"0\")\r\n return '' + \" \" + \"yes\";\r\n else\r\n return \"*No Comments\";\r\n }\r\n else\r\n return '*No Comments';\r\n },\r\n \r\n \r\n \r\n LoadedFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Loaded\";\r\n else\r\n return \"Empty\";\r\n }\r\n return \"*No Loaded\";\r\n },\r\n LoadedFormatterForExcel: (params) => {\r\n if (params != null) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Loaded\";\r\n else\r\n return \"Empty\";\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n \r\n \r\n BrakeSignalFormatterForExcel: (params) => {\r\n\r\n return \"-NA-\";\r\n },\r\n \r\n \r\n DoorFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"Open\";\r\n else if (param == 2)\r\n return \"Closed\";\r\n else if (param == 3)\r\n return \"Unknown\"\r\n else if (param == 4)\r\n return \"No Sensor\"\r\n else if (param == 5)\r\n return \"*No Door\"\r\n } \r\n },\r\n //RCNG-2369\r\n Door1FormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1 || param == \"OPN\")\r\n return \"Open\";\r\n else if (param == 2 || param == \"CLS\")\r\n return \"Closed\";\r\n else if (param == 3 || param == \"DIS\")\r\n return \"Sensor Error\"\r\n else if (param == 4 || param == \"UNP\")\r\n return \"No Sensor\"\r\n else if (param == 5 || param == \"UNK\")\r\n return \"*No Door\"\r\n }\r\n },\r\n DeviceDoorFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"Open\";\r\n else if (param == 2)\r\n return \"Closed\";\r\n else if (param == 5)\r\n return \"Unknown\";\r\n else if (param == 3)\r\n return \"Sensor Error\";\r\n else if (param == 4)\r\n return \"No Sensor\";\r\n else if (param == 6)\r\n return \"*No Door\";\r\n }\r\n },\r\n DeviceDoorFormatterExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"Open\";\r\n else if (param == 2)\r\n return \"Closed\";\r\n else if (param == 5)\r\n return \"Unknown\";\r\n else if (param == 3)\r\n return \"Sensor Error\";\r\n else if (param == 4)\r\n return \"No Sensor\";\r\n else if (param == 6)\r\n return \"-NA-\";\r\n }\r\n },\r\n DoorFormatterExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"Open\";\r\n else if (param == 2)\r\n return \"Closed\";\r\n else if (param == 3)\r\n return \"Unknown\"\r\n else if (param == 4)\r\n return \"No Sensor\"\r\n else if (param == 5)\r\n return \"-NA-\"\r\n }\r\n },\r\n //RCNG-2369\r\n Door1FormatterExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1 || param == \"OPN\")\r\n return \"Open\";\r\n else if (param == 2 || param == \"CLS\")\r\n return \"Closed\";\r\n else if (param == 3 || param == \"DIS\")\r\n return \"Sensor Error\"\r\n else if (param == 4 || param == \"UNP\")\r\n return \"No Sensor\"\r\n else if (param == 5 || param == \"UNK\")\r\n return \"-NA-\"\r\n }\r\n },\r\n\r\n \r\n DoorFormatterChassis: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasDoorSensor != null && params.data.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.Door1OpenChassis != null) {\r\n if (params.data.Door1OpenChassis.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\"; \r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DoorFormatterChassisforExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.HasDoorSensor != null && params.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.Door1OpenChassis != null) {\r\n if (params.Door1OpenChassis.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\"; \r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n isOnVesselFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n\r\n if (params.value)\r\n return \"V\";\r\n else\r\n return \"\";\r\n }\r\n\r\n return \"\";\r\n },\r\n isOnVesselFormatterChildForms: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n\r\n if (params)\r\n return \"V\";\r\n else\r\n return \"\";\r\n }\r\n\r\n return \"\";\r\n },\r\n commandTypeFormatter: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n if (params.value) {\r\n\r\n var imageElement = document.createElement(\"img\");\r\n imageElement.src = bulletcommand;\r\n element.appendChild(imageElement);\r\n\r\n return element;\r\n }\r\n else\r\n return element;\r\n }\r\n\r\n return element;\r\n },\r\n // Commented for WI-24141 Reefer Run State Change\r\n //runStateFormatter: (params) => {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-alert\";\r\n\r\n // if (params.value != null && params.value != undefined) {\r\n // var imageElement = document.createElement(\"img\");\r\n\r\n // switch (params.value.toString().trim()) {\r\n // case '1':\r\n // imageElement.src = \"../images/Status/RunState/Reporting.png\";\r\n // break;\r\n // case '2':\r\n // imageElement.src = \"../images/Status/RunState/Last-Reported-Running.png\";\r\n // break;\r\n // case '3':\r\n // imageElement.src = \"../images/Status/RunState/Last-Reported-Stopped.png\";\r\n // break;\r\n // case '4':\r\n // imageElement.src = \"../images/Status/RunState/Stopped.png\";\r\n // break;\r\n // case '5':\r\n // imageElement.src = \"../images/Status/RunState/Stopped.png\";\r\n // break;\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n // }\r\n\r\n // return element;\r\n //},\r\n //runStateFormatterforExcel: (params) => {\r\n // var valueString = \"\";\r\n // if (params != null) {\r\n // if (params == 1)\r\n // valueString = \"1-Running, reporting on schedule\";\r\n // else if (params == 2)\r\n // valueString = \"2-Missed reporting, were running\";\r\n // else if (params == 3)\r\n // valueString = \"3-stopped, reporting on schedule\";\r\n // else if (params == 4)\r\n // valueString = \"4-Missed reporting, were stopped\";\r\n // else if (params == 5)\r\n // valueString = \"5-Missed reporting, were stopped\";\r\n // else\r\n // valueString = \"\";\r\n // }\r\n // else\r\n // valueString = \"\";\r\n // return valueString;\r\n //},\r\n\r\n //Added for WI - 24141 Reefer Run State Change\r\n \r\n \r\n\r\n RunStateFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return '' + \" \" + 'Faulty';\r\n\r\n else if (param == 2)\r\n return '' + \" \" + 'Running';\r\n\r\n else if (param == 3)\r\n return '' + \" \" + 'Standby';\r\n\r\n else if (param == 4)\r\n return '' + \" \" + 'Offline';\r\n else\r\n return '*No Run';\r\n }\r\n },\r\n\r\n AssetStateFormatterGrouping: (param) => {\r\n if (param != null && param != undefined && param != '') {\r\n if (param == \"A\") {\r\n return '' + \" \" + \"Active\";\r\n }\r\n else if (param == \"D\") {\r\n return '' + \" \" + \"Disconnected\";\r\n }\r\n else if (param == \"R\") {\r\n return '' + \" \" + \"Retired\";\r\n }\r\n }\r\n return \"*No INV\";\r\n },\r\n RunStateFormatterGroupingForExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return 'Faulty';\r\n\r\n else if (param == 2)\r\n return 'Running';\r\n\r\n else if (param == 3)\r\n return 'Standby';\r\n\r\n else if (param == 4)\r\n return 'Offline';\r\n else\r\n return '-NA-';\r\n }\r\n },\r\n\r\n AssetStateFormatterGroupingForExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == \"A\")\r\n return 'Active';\r\n\r\n else if (param == \"D\")\r\n return 'Disconnected';\r\n\r\n else if (param == \"R\")\r\n return 'Retired';\r\n else\r\n return '-NA-';\r\n }\r\n },\r\n\r\n runStateFormatterforExcel: (params) => {\r\n var valueString = \"\";\r\n if (params != null && params != undefined) {\r\n if (params == \"I\")\r\n valueString = \"Running\";\r\n else if (params == \"S\")\r\n valueString = \"Standby\";\r\n else if (params == \"X\")\r\n valueString = \"Faulty\";\r\n else if (params == \"O\")\r\n valueString = \"Offline\";\r\n else\r\n valueString = \"-NA-\";\r\n }\r\n else\r\n valueString = \"-NA-\";\r\n return valueString;\r\n },\r\n \r\n \r\n PowerStateFormatterGrouping: (param) => { \r\n if (param != null && param != undefined) {\r\n if (param == 1) {\r\n return '' + \" \" + \"Powered\";\r\n }\r\n else if (param == 2) {\r\n return '' + \" \" + \"On Battery\";\r\n }\r\n else if (param == 3) {\r\n return '' + \" \" + \"Charging\";\r\n }\r\n else if (param == 4) {\r\n return '' + \" \" + \"Critical\";\r\n }\r\n else if (param == 5) {\r\n return '' + \" \" + \"Low\";\r\n }\r\n else if (param == 6) {\r\n return '' + \" \" + \"Normal\";\r\n }\r\n else\r\n return \"*No PWR\";\r\n }\r\n },\r\n PowerStateFormatterGroupingForExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1) {\r\n return 'Powered';\r\n }\r\n else if (param == 2) {\r\n return 'On Battery';\r\n }\r\n else if (param == 3) {\r\n return 'Charging';\r\n }\r\n else if (param == 4) {\r\n return 'Critical';\r\n }\r\n else if (param == 5) {\r\n return 'Low';\r\n }\r\n else if (param == 6) {\r\n return 'Normal';\r\n }\r\n else if (param == 7)\r\n return '*No PWR'\r\n }\r\n },\r\n\r\n GPSCoordsFormatterGrouping: (value, param) => { \r\n if (param != null && param != undefined) { \r\n \r\n if (value != null && value != undefined) {\r\n if (value == -1000) {\r\n return \"*No GPS Coords\";\r\n }\r\n else\r\n return value;\r\n }\r\n}\r\n },\r\n \r\n GPSCoordsFormatterForExcel: (value, param) => {\r\n if (param != null && param != undefined) { \r\n \r\n if (value != null && value != undefined) {\r\n if (value == -1000) {\r\n return \"*No GPS Coords\";\r\n }\r\n else\r\n return value;\r\n }\r\n}\r\n },\r\n GPSCoordsFormatterForGrid: (value) => {\r\n if (value != null && value != undefined) {\r\n if (value == -1000) {\r\n return \"-NA-\";\r\n }\r\n else\r\n return value;\r\n }\r\n },\r\n\r\n GPSCoordsFormatterGroupingForExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.node.data.GPSCoords != null && param.node.data.GPSCoords != undefined) {\r\n if (param.node.data.GPSCoords.toString().trim() != \"\" && param.node.data.GPSCoords != '-1000') {\r\n var tempRoundingValue = \"6\";\r\n if (param.node.data.GPSCoords != null && param.node.data.GPSCoords != undefined && param.node.data.GPSCoords.toString().trim() != \"\") {\r\n var lstCoordinatePoints = param.node.data.GPSCoords.split(',');\r\n var lat = parseFloat(lstCoordinatePoints[0].toString());\r\n var long = parseFloat(lstCoordinatePoints[1].toString());\r\n var paramValue = parseFloat(lat.toFixed(parseInt(tempRoundingValue)).toString()) + \",\" + parseFloat(long.toFixed(parseInt(tempRoundingValue)).toString());\r\n return paramValue;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n ChassisPwrStateFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return '' + \" \" + \"Powered\";\r\n case \"2\":\r\n return '' + \" \" + \"On Battery\";\r\n case \"3\":\r\n return '*No PWR';\r\n }\r\n }\r\n },\r\n\r\n ChassisBatteryStatusFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return '' + \" \" + \"Critical\";\r\n case \"2\":\r\n return '' + \" \" + \"Low\";\r\n case \"3\":\r\n return '' + \" \" + \"Normal\";\r\n case \"-1\":\r\n return '*No BATT';\r\n }\r\n }\r\n },\r\n\r\n ChassisBatteryStatusFormatterGroupingExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return 'Critical';\r\n case \"2\":\r\n return 'Low';\r\n case \"3\":\r\n return 'Normal';\r\n case \"-1\":\r\n return '*No BATT';\r\n }\r\n }\r\n },\r\n\r\n ChassisBatteryStatusFormatterForExcel: (params) => {\r\n var batt = '';\r\n if (params != null && params != undefined) {\r\n switch (params.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n batt = \"Critical\";\r\n break;\r\n case \"L\":\r\n batt = \"Low\";\r\n break;\r\n case \"N\":\r\n batt = \"Normal\";\r\n break;\r\n }\r\n }\r\n else batt = \"-NA-\";\r\n return batt;\r\n },\r\n\r\n DryBatteryStatusFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) { \r\n switch (param.toString()) {\r\n case \"1\":\r\n return '' + \" \" + \"Critical\"; \r\n case \"2\":\r\n return '' + \" \" + \"Low\";\r\n case \"3\":\r\n return '' + \" \" + \"Normal\";\r\n case \"-1\":\r\n return '*No BATT';\r\n }\r\n }\r\n },\r\n DryPwrStateFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return '' + \" \" + \"Powered\";\r\n case \"2\":\r\n return '' + \" \" + \"On Battery\";\r\n case \"3\":\r\n return '*No PWR';\r\n }\r\n }\r\n },\r\n DryPwrStateFormatterGroupingExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return 'Critical';\r\n case \"2\":\r\n return 'Low';\r\n case \"3\":\r\n return 'Normal';\r\n case \"-1\":\r\n return '*No PWR';\r\n }\r\n }\r\n },\r\n dryPwrStateFormatterForExcel: (params) => {\r\n var Power = '';\r\n if (params != null && params != undefined) {\r\n switch (params.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n Power = \"Critical\";\r\n break;\r\n case \"L\":\r\n Power = \"Low\";\r\n break;\r\n case \"N\":\r\n Power = \"Normal\";\r\n break;\r\n }\r\n }\r\n else Power = \"-NA-\";\r\n return Power;\r\n },\r\n pwrStateFormatterforExcel: (params) => {\r\n var valueString = \"\";\r\n if (params.DeviceTypeCd != null && params.DeviceTypeCd != undefined && params.DeviceTypeCd.toString().toUpperCase().trim() == \"GT1200\") {\r\n if (params.DevicePowerSourceCd == \"C\")\r\n valueString = \"Critical\";\r\n else if (params.DevicePowerSourceCd == \"L\")\r\n valueString = \"Low\";\r\n else\r\n valueString = \"Normal\";\r\n }\r\n else if (params.DevicePowerSourceCd != null) {\r\n if (params.DevicePowerSourceCd == \"B\")\r\n valueString = \"On Battery\";\r\n else if (params.DeviceType.toString().toUpperCase().trim() == \"TRUE\" && params.DevicePowerSourceCd.toString().toUpperCase().trim() == \"A\")\r\n valueString = \"Charging\";\r\n else\r\n valueString = \"Powered\";\r\n }\r\n else\r\n valueString = \"-NA-\";\r\n return valueString;\r\n },\r\n \r\n pwrStateFormatterChassisforExcel: (params) => { \r\n var Power = '-NA-';\r\n if (params != null && params != undefined) {\r\n switch (params.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n case \"1\":\r\n Power = \"Powered\";\r\n break;\r\n case \"B\":\r\n case \"2\":\r\n Power = \"On Battery\";\r\n break;\r\n }\r\n }\r\n else Power = \"-NA-\";\r\n return Power;\r\n },\r\n\r\n FuelSensorGrouping: (param) => {\r\n if (param != null && param != undefined && param != '') {\r\n switch (param.toString()) {\r\n case \"0\": return \"No Sensor\";\r\n case \"1\": return \"Config Error\";\r\n case \"2\": return \"Not Configured\";\r\n case \"3\": return \"Present\";\r\n case \"4\": return \"Sensor Error\";\r\n case \"5\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Sensor\";\r\n } \r\n }\r\n return \"*No Fuel Sensor\";\r\n },\r\n\r\n FuelLevelGalGrouping: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params < 0) {\r\n switch (params.toString()) {\r\n case \"-6\": return \"No Sensor\";\r\n case \"-5\": return \"Config Error\";\r\n case \"-4\": return \"Not Configured\";\r\n case \"-3\": return \"Sensor Error\";\r\n case \"-2\": return \"Sensor Error\";\r\n case \"-1\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Level (gal.)\";\r\n }\r\n }\r\n else\r\n return params;\r\n }\r\n },\r\n\r\n EngineSortingFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == \"0\")\r\n return '' + \" \" + \"NO\";\r\n else if (param == \"1\")\r\n return '' + \" \" + \"YES\";\r\n //else\r\n // return \"-NA-\";\r\n }\r\n return \"*No ENG\";\r\n },\r\n EngineSortingFormatterGroupingExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == \"0\")\r\n return 'NO';\r\n else if (param == \"1\")\r\n return 'YES';\r\n //else\r\n // return \"-NA-\";\r\n }\r\n return \"*No ENG\";\r\n },\r\n\r\n //Added for WI - 24141 Reefer Run State Change\r\n CommentExistsforExcel: (params) => {\r\n var valueString = \"\";\r\n if (params != null)\r\n valueString = (params == 0) ? \"Yes\" : \"No\";\r\n else\r\n valueString = \"\";\r\n return valueString;\r\n },\r\n CommandValidator: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n if (params.value != null && params.value != undefined) {\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.value.toString().trim()) {\r\n case 'E':\r\n imageElement.src = ImgPending1;\r\n break;\r\n case 'W':\r\n imageElement.src = ImgWarning1;\r\n break;\r\n default:\r\n imageElement.src = ImgSuccess1;\r\n break;\r\n\r\n }\r\n element.appendChild(imageElement);\r\n }\r\n\r\n return element;\r\n },\r\n \r\n \r\n OEMTypeValueFormatter: (param) => {\r\n var oemType = \"-NA-\";\r\n\r\n if (param != null && param != undefined && param !=\"\") {\r\n switch (param.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"D\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"S\":\r\n oemType = \"SC\";\r\n break;\r\n case \"T\":\r\n oemType = \"TK\";\r\n break;\r\n case \"G\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TA\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"U\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"CARRIER\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"DAIKIN\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"STARCOOL\":\r\n oemType = \"SC\";\r\n break;\r\n case \"THERMOKING\":\r\n oemType = \"TK\";\r\n break;\r\n case \"GENMARK\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TAYLOR\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"UNKNOWN\":\r\n oemType = \"UNK\";\r\n break;\r\n default:\r\n oemType = '-NA-';\r\n }\r\n }\r\n return oemType;\r\n },\r\n\r\n \r\n oemTypesorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != undefined && params.data != null) {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != undefined) {\r\n return params.data.ReeferOEMTypeCd;\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n oemTypeFormatter: (params) => {\r\n var oemType = '';\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != undefined && params.data.ReeferOEMTypeCd != '-NA-') {\r\n switch (params.data.ReeferOEMTypeCd.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"D\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"S\":\r\n oemType = \"SC\";\r\n break;\r\n case \"T\":\r\n oemType = \"TK\";\r\n break;\r\n case \"G\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TA\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"U\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"CARRIER\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"DAIKIN\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"STARCOOL\":\r\n oemType = \"SC\";\r\n break;\r\n case \"THERMOKING\":\r\n oemType = \"TK\";\r\n break;\r\n case \"GENMARK\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TAYLOR\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"UNKNOWN\":\r\n oemType = \"UNK\";\r\n break;\r\n }\r\n }\r\n else oemType = \"-NA-\";\r\n return oemType;\r\n },\r\n\r\n OEMTypeFormatterGrouping: (param) => {\r\n\r\n if (param != null && param != undefined) { \r\n switch (param.toString().toUpperCase().trim()) {\r\n case \"CARRIER\":\r\n case \"CAR\":\r\n return \"CARRIER\";\r\n case \"DAIKIN\":\r\n case \"DKN\":\r\n return \"DAIKIN\";\r\n case \"STARCOOL\":\r\n case \"SC\":\r\n return \"STAR COOL\";\r\n case \"TK\":\r\n case\"THERMOKING\":\r\n return \"THERMOKING\";\r\n case \"GENMARK\":\r\n case \"GMK\":\r\n return \"GENMARK\";\r\n case \"TAYLOR\":\r\n case \"TLR\":\r\n return \"TAYLOR\";\r\n case \"UNKNOWN\":\r\n case \"UNK\":\r\n return \"UNKNOWN\";\r\n case \"OEM_KLINGE\":\r\n case \"KLINGE\":\r\n return \"KLINGE\";\r\n default:\r\n return \"*No OEM\";\r\n }\r\n }\r\n return \"*No OEM\";\r\n },\r\n AssetTypeFormatter: (params) => {\r\n //var AssetType = '';\r\n if (params.value != null && params.value != undefined) {\r\n switch (params.value.toString().toUpperCase().trim()) {\r\n case \"G\":\r\n return \"Genset\";\r\n case \"D\":\r\n return \"Dry\";\r\n case \"R\":\r\n return \"Reefer\";\r\n case \"C\":\r\n return \"Chassis\";\r\n case \"O\":\r\n return \"Orphan\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n\r\n AssetTypeGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n switch (param.toString().toUpperCase().trim()) {\r\n case \"G\":\r\n return \"Genset\";\r\n case \"D\":\r\n return \"Dry\";\r\n case \"R\":\r\n return \"Reefer\";\r\n case \"C\":\r\n return \"Chassis\";\r\n case \"O\":\r\n return \"Orphan\";\r\n }\r\n }\r\n\r\n return \"*No Asset Type\";\r\n },\r\n\r\n AssetTypeFormatterForFilter: (params) => {\r\n if (params != null && params != undefined && params.data != null && params.data != undefined && params.data.AssetType != null && params.data.AssetType != undefined) {\r\n switch (params.data.AssetType.toString().toUpperCase().trim()) {\r\n case \"G\":\r\n return \"Genset\";\r\n case \"D\":\r\n return \"Dry\";\r\n case \"R\":\r\n return \"Reefer\";\r\n case \"C\":\r\n return \"Chassis\";\r\n case \"O\":\r\n return \"Orphan\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n AssetTypeFormatterForExcel: (params) => {\r\n var AssetType = '';\r\n if (params != null && params != undefined && params != \"-NA-\") {\r\n switch (params.toString().toUpperCase().trim()) {\r\n case \"G\":\r\n case \"GENSET\":\r\n AssetType = \"Genset\";\r\n break;\r\n case \"D\":\r\n case \"DRY\":\r\n AssetType = \"Dry\";\r\n break;\r\n case \"R\":\r\n case \"REEFER\":\r\n AssetType = \"Reefer\";\r\n break;\r\n case \"C\":\r\n case \"CHASSIS\":\r\n AssetType = \"Chassis\";\r\n break;\r\n case \"O\":\r\n case \"ORPHAN\":\r\n AssetType = \"Orphan\";\r\n break;\r\n }\r\n }\r\n else AssetType = \"-NA-\";\r\n return AssetType;\r\n },\r\n RSSITypeFormatter: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n if (params.data != null && params.data != undefined) {//WI-21812:For Unknown RSSI Id image is not showing\r\n if (params.data.RSSI != null && params.data.RSSI != undefined) {\r\n if (params.data.RSSI == 0)\r\n imageElement.src = RSSIUNK;\r\n else if (params.data.RSSI <= -111)\r\n imageElement.src = RSSI1;\r\n else if (params.data.RSSI >= -110 && params.data.RSSI <= -100)\r\n imageElement.src = RSSI2;\r\n else if (params.data.RSSI >= -99 && params.data.RSSI <= -88)\r\n imageElement.src = RSSI3;\r\n else if (params.data.RSSI >= -87 && params.data.RSSI <= -76)\r\n imageElement.src = RSSI4;\r\n else if (params.data.RSSI >= -75)\r\n imageElement.src = RSSI5;\r\n else\r\n imageElement.src = RSSIUNK;\r\n }\r\n else\r\n imageElement.src = RSSIUNK;//WI-21812:For Unknown RSSI Id image is not showing\r\n } \r\n\r\n element.appendChild(imageElement);\r\n\r\n return element;\r\n },\r\n RSSITypeFormatterFilter: (params) => {\r\n var returnValue = \"\";\r\n if (params.data != null && params.data != undefined) {//WI-21812:For Unknown RSSI Id image is not showing\r\n if (params.data.RSSI != null && params.data.RSSI != undefined) {\r\n if (params.data.RSSI == 0)\r\n returnValue = \"Unknown\";\r\n else if (params.data.RSSI <= -111)\r\n returnValue = \"1 Bar\";\r\n else if (params.data.RSSI >= -110 && params.data.RSSI <= -100)\r\n returnValue = \"2 Bars\";\r\n else if (params.data.RSSI >= -99 && params.data.RSSI <= -88)\r\n returnValue = \"3 Bars\";\r\n else if (params.data.RSSI >= -87 && params.data.RSSI <= -76)\r\n returnValue = \"4 Bars\";\r\n else if (params.data.RSSI >= -75)\r\n returnValue = \"5 Bars\";\r\n else\r\n returnValue = \"Unknown\";\r\n }\r\n else\r\n returnValue = \"Unknown\";//WI-21812:For Unknown RSSI Id image is not showing\r\n } \r\n\r\n return returnValue;\r\n },\r\n RSSISorting: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.RSSI != null && params.data.RSSI != undefined) {\r\n if (params.data.RSSI == 0)\r\n return \"6\";\r\n else if (params.data.RSSI <= -111)\r\n return \"5\";\r\n else if (params.data.RSSI >= -110 && params.data.RSSI <= -100)\r\n return \"4\";\r\n else if (params.data.RSSI >= -99 && params.data.RSSI <= -88)\r\n return \"3\";\r\n else if (params.data.RSSI >= -87 && params.data.RSSI <= -76)\r\n return \"2\";\r\n else if (params.data.RSSI >= -75)\r\n return \"1\";\r\n else\r\n return \"6\";\r\n }\r\n else\r\n return \"6\";\r\n } \r\n },\r\n RSSIFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return '' + \" \" + \"5 Bars\";\r\n else if (param == 2)\r\n return '' + \" \" + \"4 Bars\";\r\n else if (param == 3)\r\n return '' + \" \" + \"3 Bars\";\r\n else if (param == 4)\r\n return '' + \" \" + \"2 Bars\";\r\n else if (param == 5)\r\n return '' + \" \" + \"1 Bar\";\r\n else\r\n return '' + \" \" + \"Unknown\";\r\n }\r\n },\r\n RSSIFormatterGroupingForExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return '5 Bars';\r\n else if (param == 2)\r\n return '4 Bars';\r\n else if (param == 3)\r\n return '3 Bars';\r\n else if (param == 4)\r\n return '2 Bars';\r\n else if (param == 5)\r\n return '1 Bar';\r\n else\r\n return 'Unknown';\r\n }\r\n },\r\n ChassisPWRFormatterGroupingForExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return 'Powered';\r\n else if (param == 2)\r\n return 'On Battery';\r\n else if (param == 3)\r\n return '*No PWR';\r\n }\r\n },\r\n\r\n CommentExistsFormatter: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"Trip-edit\";\r\n\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n var imageElement = document.createElement(\"img\");\r\n if (params.value == 0) {\r\n imageElement.src = GroupChat;\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n },\r\n CommentExistsSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.CommentExists != null && params.data.CommentExists != undefined) {\r\n if (params.data.CommentExists == 0) {\r\n return 0;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n\r\n },\r\n \r\n statusIndicator: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n var imageElement = document.createElement(\"img\");\r\n switch (params.value.trim()) {\r\n case '1':\r\n imageElement.src = High;\r\n break;\r\n case '2':\r\n imageElement.src = Medium;\r\n break;\r\n case '3':\r\n imageElement.src = Low;\r\n break;\r\n\r\n }\r\n\r\n element.appendChild(imageElement);\r\n }\r\n\r\n return element;\r\n },\r\n \r\n \r\n TripStatusFormatterGrouping: (param) => {\r\n var deviationFlg = '';\r\n if (param != null && param != undefined) {\r\n var valueString = param.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n return '' + \" \" + \"In Progress\";\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n return '' + \" \" + \"Completed Deviation\";\r\n else\r\n return '' + \" \" + \"Completed\";\r\n \r\n case 'D':\r\n return '' + \" \" + \"Problemetic\";\r\n case 'P':\r\n return '' + \" \" + \"Pending\";\r\n case 'R':\r\n return '' + \" \" + \"Deleted\";\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n return '' + \" \" + \"Cancel Deviation\";\r\n else\r\n return '' + \" \" + \"Cancel\";\r\n default:\r\n return \"*No Trip\";\r\n\r\n }\r\n }\r\n return \"*No Trip\";\r\n }\r\n return \"*No Trip\";\r\n },\r\n\r\n TripStatusFormatterGroupingForExcel: (param) => {\r\n var deviationFlg = '';\r\n if (param != null && param != undefined) {\r\n var valueString = param.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n return 'In Progress';\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n return 'Completed Deviation';\r\n else\r\n return 'Completed';\r\n\r\n case 'D':\r\n return 'Problemetic';\r\n case 'P':\r\n return 'Pending';\r\n case 'R':\r\n return 'Deleted';\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n return 'Cancel Deviation';\r\n else\r\n return 'Cancel';\r\n default:\r\n return \"\";\r\n }\r\n }\r\n return \"\";\r\n }\r\n return \"\";\r\n },\r\n statusIndicatorforALM: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.value.trim()) {\r\n case '1':\r\n imageElement.src = HighALM;\r\n break;\r\n case '2':\r\n imageElement.src = MediumALM;\r\n break;\r\n }\r\n element.appendChild(imageElement);\r\n }\r\n return element;\r\n },\r\n\r\n statusIndicatorforALR: (params) => {\r\n if (params.value != null && params.value != undefined) {\r\n switch (params.value.toString().trim()) {\r\n case \"1\":\r\n params.value = '';\r\n break;\r\n case \"2\":\r\n params.value = '';\r\n break;\r\n case \"3\":\r\n params.value = '';\r\n break;\r\n case \"4\":\r\n params.value = '';\r\n break;\r\n case \"5\":\r\n params.value = '';\r\n break;\r\n }\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n statusIndicatorWithDescriptionForALR: (params, alarmsList) => {\r\n if (params.value != null && params.value != undefined) {\r\n var title = \"\";\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n var lstAlerts = params.data.Alerts.split(',');\r\n var _alarmsList = \"\";\r\n $.each(lstAlerts, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlertCD === item.toString().trim());\r\n var _alarmDesc = alarmDescription.length > 0 ? alarmDescription[0].AlertDsc.toString() : \"\";\r\n _alarmsList = _alarmsList != \"\" ? _alarmsList + \"\\n\" + item.trim() + \" - \" + _alarmDesc : item.trim() + \" - \" + _alarmDesc;\r\n title = _alarmsList;\r\n }\r\n });\r\n }\r\n switch (params.value.toString().trim()) {\r\n case \"1\":\r\n params.value = '';\r\n break;\r\n case \"2\":\r\n params.value = '';\r\n break;\r\n case \"3\":\r\n params.value = '';\r\n break;\r\n case \"4\":\r\n params.value = '';\r\n break;\r\n case \"5\":\r\n params.value = '';\r\n break;\r\n }\r\n return params.value;\r\n }\r\n else {\r\n return '-NA-';\r\n }\r\n },\r\n StatusIndicatorALMFormatterGrouping: (param) => {\r\n if (param != null && param != undefined && param != '') {\r\n if (param == 1) {\r\n return '' + \" \" + \"Severe\"; \r\n }\r\n else if (param == 2) {\r\n return '' + \" \" + \"Minor\"; \r\n }\r\n //else if (param == 3) {\r\n // return \"Informational\";\r\n //}\r\n }\r\n return \"*No ALM\";\r\n },\r\n HumidityGrouping: (params) => {\r\n if (params.node.childrenAfterFilter[0].data != null && params.node.childrenAfterFilter[0].data != undefined && params.node.childrenAfterFilter[0].data != '') {\r\n if (params.node.childrenAfterFilter[0].data.Humidity != null && params.node.childrenAfterFilter[0].data.Humidity != '' && params.node.childrenAfterFilter[0].data.Humidity != '-NA-') {\r\n if (params.node.childrenAfterFilter[0].data.Humidity.toString().trim() == \"0\" || params.node.childrenAfterFilter[0].data.HumiditySetpointStatus == \"O\")\r\n return \"Off\";\r\n else if (params.node.childrenAfterFilter[0].data.Humidity.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.node.childrenAfterFilter[0].data.Humidity.toString();\r\n }\r\n return '*No RH read';\r\n }\r\n return '*No RH read';\r\n },\r\n sensorDataPCondGrouping: (params) => {\r\n if (params.node.childrenAfterFilter[0].data != null && params.node.childrenAfterFilter[0].data != undefined && params.node.childrenAfterFilter[0].data != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != null && params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd.trim() == 'C')\r\n return '*No P cond';\r\n else {\r\n if (params.node.childrenAfterFilter[0].data.CondenserPressure != null && params.node.childrenAfterFilter[0].data.CondenserPressure != '-NA-') {\r\n if (params.node.childrenAfterFilter[0].data.CondenserPressure.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.node.childrenAfterFilter[0].data.CondenserPressure.toString();\r\n }\r\n else\r\n return '*No P cond';\r\n }\r\n }\r\n return '*No P cond';\r\n }\r\n return '*No P cond';\r\n },\r\n sensorDataOpenExpGrouping: (params) => {\r\n if (params.node.childrenAfterFilter[0].data != null && params.node.childrenAfterFilter[0].data != undefined && params.node.childrenAfterFilter[0].data != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != null && params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd.trim() == 'C')\r\n return '*No Open exp';\r\n else {\r\n if (params.node.childrenAfterFilter[0].data.EvaporatorExpansionValveOpening != null && params.node.childrenAfterFilter[0].data.EvaporatorExpansionValveOpening != '-NA-') {\r\n if (params.node.childrenAfterFilter[0].data.EvaporatorExpansionValveOpening.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.node.childrenAfterFilter[0].data.EvaporatorExpansionValveOpening.toString();\r\n }\r\n else\r\n return '*No Open exp';\r\n }\r\n }\r\n return '*No Open exp';\r\n }\r\n return '*No Open exp';\r\n },\r\n sensorDataOpenSucGrouping: (params) => {\r\n if (params.node.childrenAfterFilter[0].data != null && params.node.childrenAfterFilter[0].data != undefined && params.node.childrenAfterFilter[0].data != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != null && params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd.trim() == 'C') {\r\n return '*No Open suc.';\r\n }\r\n else {\r\n if (params.node.childrenAfterFilter[0].data.SuctionModulationValveOpening != null && params.node.childrenAfterFilter[0].data.SuctionModulationValveOpening != '' && params.node.childrenAfterFilter[0].data.SuctionModulationValveOpening != '-NA-') {\r\n if (params.node.childrenAfterFilter[0].data.SuctionModulationValveOpening.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.node.childrenAfterFilter[0].data.SuctionModulationValveOpening.toString();\r\n }\r\n else\r\n return '*No Open suc.';\r\n }\r\n }\r\n return '*No Open suc.';\r\n }\r\n return '*No Open suc.';\r\n },\r\n ControlledAtmosphereModeGrouping: (params) => {\r\n if (params.node.childrenAfterFilter[0].data != null && params.node.childrenAfterFilter[0].data != '-NA-' && params.node.childrenAfterFilter[0].data != undefined && params.node.childrenAfterFilter[0].data != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != null && params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd != '') {\r\n if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd.trim() == 'S') {\r\n\r\n if (params.node.childrenAfterFilter[0].data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"ON\")\r\n return \"CA On\";\r\n else if (params.node.childrenAfterFilter[0].data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"OFF\")\r\n return \"Off\";\r\n else if (params.node.childrenAfterFilter[0].data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"AV\")\r\n return \"AV On\";\r\n else if (params.node.childrenAfterFilter[0].data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"AVPLUS\")\r\n return \"AV+ On\";\r\n else\r\n return params.node.childrenAfterFilter[0].data.ControlledAtmosphereMode.toString();\r\n }\r\n else if (params.node.childrenAfterFilter[0].data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"UNITOFF\")\r\n return \"Unit Off\";\r\n else\r\n return params.node.childrenAfterFilter[0].data.ControlledAtmosphereMode.toString();\r\n }\r\n else\r\n return '*No Atm. Mode';\r\n }\r\n else\r\n return '*No Atm. Mode';\r\n },\r\n TripWiseExpirationGrouping: (params) => {\r\n if (params != null && params != 0) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '*No TW Exp (d)';\r\n },\r\n //GPSCoordsGrouping: (params) => {\r\n // if (params.node.childrenAfterFilter[0].data != null && params.node.childrenAfterFilter[0].data != undefined && params.node.childrenAfterFilter[0].data != '') {\r\n // if (params.node.childrenAfterFilter[0].data.DeviceType != null && params.node.childrenAfterFilter[0].data.DeviceType != undefined && (params.node.childrenAfterFilter[0].data.DeviceType.toString().toUpperCase().trim() == \"GT1200\" || params.node.childrenAfterFilter[0].data.DeviceType.toString().toUpperCase().trim() == \"GT1020\")) {\r\n // if (params.node.childrenAfterFilter[0].data.GPSCoords != null && params.node.childrenAfterFilter[0].data.GPSCoords != '-NA-')\r\n // return params.node.childrenAfterFilter[0].data.GPSCoords;\r\n // else\r\n // return '-NA-';\r\n // }\r\n // else if (params.data.GPSLatitude != 0 && params.data.GPSLongitude != 0 && (params.data.GPSLockState == null || params.data.GPSLockState == '' || params.data.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n // if (params.value != null && params.value != '-NA-') {\r\n // params.value = '' + params.value + '';\r\n // params.value = '

' + params.value + '

';\r\n // return params.value;\r\n // }\r\n // else\r\n // return '-NA-';\r\n // }\r\n // else\r\n // return params.value;\r\n // }\r\n //},\r\n RunningModeGrouping: (params) => {\r\n var valueString = \"\";\r\n if (params != null && params != undefined && params != '' && params !='-NA-') {\r\n valueString = params.replace('/^\\s+/g', '');\r\n\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n return valueString;\r\n \r\n }\r\n return '*No Opr. Mode';\r\n\r\n },\r\n PTResultGrouping: (param) => {\r\n if (param != null && param != undefined && param != \"null\") {\r\n\r\n if (param == 'Passed') {\r\n return '' + \" \" + \"Passed\";\r\n }\r\n else if (param == 'Failed') {\r\n return ' ' + \" \" + \"Failed\";\r\n }\r\n else if (param == 'Aborted') {\r\n return '' + \" \" + \"Aborted\";\r\n }\r\n else if (param == 'Running') {\r\n return '' + \" \" + \"Running\";\r\n }\r\n else if (param == 'Skipped') {\r\n return '' + \" \" + \"Skipped\";\r\n }\r\n else if (param == 'Unknown') {\r\n return ' ' + \" \" + \"Unknown\";\r\n }\r\n\r\n }\r\n return \"No PTResult\";\r\n },\r\n statusIndicatorforALMforExcel: (params) => { \r\n var valueString = \"-NA-\";\r\n if (params != null && params != undefined && params != '') {\r\n if (params == 1) {\r\n valueString = \"Severe\";\r\n }\r\n else if (params == 2) {\r\n valueString = \"Minor\";\r\n }\r\n else if (params == 3) {\r\n valueString = \"Informational\";\r\n }\r\n }\r\n\r\n return valueString;\r\n },\r\n statusIndicatorforALMforGrouping: (params) => { \r\n var valueString = \"-NA-\";\r\n if (params != null && params != undefined && params != '') {\r\n if (params == 1) {\r\n valueString = \"Severe\";\r\n }\r\n else if (params == 2) {\r\n valueString = \"Minor\";\r\n }\r\n }\r\n\r\n return valueString;\r\n },\r\n statusIndicatorforALRforExcel: (params) => {\r\n var valueString = \"-NA-\";\r\n if (params != null && params != undefined && params != '') {\r\n if (params == 1) {\r\n valueString = \"Unknown\";\r\n }\r\n else if (params == 2) {\r\n valueString = \"Fatal\";\r\n }\r\n else if (params == 3) {\r\n valueString = \"Critical\";\r\n }\r\n else if (params == 4) {\r\n valueString = \"Warning\";\r\n }\r\n else if (params == 5) {\r\n valueString = \"Information\";\r\n }\r\n }\r\n return valueString;\r\n },\r\n rcdPowerSourceFormatter: (params) => {\r\n var rcdPwrSource = '';\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n switch (params.value.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n rcdPwrSource = \"AC\";\r\n break;\r\n case \"B\":\r\n rcdPwrSource = \"Battery\";\r\n break;\r\n }\r\n }\r\n else\r\n rcdPwrSource = \"-NA-\";\r\n\r\n return rcdPwrSource;\r\n },\r\n //rcdPowerSourceFormatterforExcel: (params) => {\r\n // var rcdPwrSource = '';\r\n // if (params != null && params != undefined && params != '') {\r\n // switch (params.toString().toUpperCase().trim()) {\r\n // case \"A\":\r\n // rcdPwrSource = \"AC\";\r\n // break;\r\n // case \"B\":\r\n // rcdPwrSource = \"Battery\";\r\n // break;\r\n // case \"1\":\r\n // case \"2\":\r\n // rcdPwrSource = \"True\";\r\n // break;\r\n // default:\r\n // rcdPwrSource = \"False\";\r\n // break;\r\n // }\r\n // }\r\n // else\r\n // rcdPwrSource = \"-NA-\";\r\n\r\n // return rcdPwrSource;\r\n //},\r\n rcdPowerSourceFormatterforExcel: (params) => {\r\n\r\n var valueString = \"\";\r\n if (params.DeviceType != null && params.DeviceType != undefined && params.DeviceType.toString().toUpperCase().trim() == \"GT1200\") {\r\n if (params.RcdPowerSourceCd == \"C\")\r\n valueString = \"Critical\";\r\n else if (params.RcdPowerSourceCd == \"L\")\r\n valueString = \"Low\";\r\n else\r\n valueString = \"Normal\";\r\n }\r\n else if (params.RcdPowerSourceCd != null) {\r\n if (params.RcdPowerSourceCd == \"B\")\r\n valueString = \"On Battery\";\r\n else if (params.DeviceType.toString().toUpperCase().trim() == \"TRUE\" && params.RcdPowerSourceCd.toString().toUpperCase().trim() == \"A\")\r\n valueString = \"Charging\";\r\n else\r\n valueString = \"Powered\";\r\n }\r\n else\r\n valueString = \"-NA-\";\r\n return valueString;\r\n\r\n },\r\n commandLogStatusFormatter: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n if (params != null && params != undefined) {\r\n if (params.data.Status != null && params.data.Status != undefined && params.data.Status != '') {\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.Status.toString().toUpperCase().trim()) {\r\n\r\n case \"UNKNOWN\":\r\n imageElement.src = UnknownStatus;\r\n break;\r\n case \"ERROR\":\r\n imageElement.src = ErrorStatus;\r\n break;\r\n case \"PENDING\":\r\n imageElement.src = PendingStatus;\r\n break;\r\n case \"ISSUED\":\r\n imageElement.src = IssuedStatus;\r\n break;\r\n case \"EXPIRED\":\r\n imageElement.src = ExpiredStatus;\r\n break;\r\n case \"CANCELLED\":\r\n imageElement.src = CancelStatus;\r\n break;\r\n case \"SUCCESS\":\r\n imageElement.src = SucessStatus;\r\n break;\r\n case \"COMMANDACCEPTEDBYRCD\":\r\n imageElement.src = AcceptedStatus;\r\n break;\r\n case \"REJECTED\":\r\n imageElement.src = RejectedStatus;\r\n break;\r\n case \"DISCARDED\":\r\n imageElement.src = DiscardedStatus;\r\n break;\r\n case \"RETRY\":\r\n imageElement.src = RetryStatus;\r\n break;\r\n case \"COMMANDACCEPTEDBYBUSYRCD\":\r\n imageElement.src = AcceptedByBusyRCDStatus;\r\n break;\r\n case \"AWAITINGPREREQUISITES\":\r\n imageElement.src = AwaitingPrerequisites;\r\n break;\r\n case \"CANCELLATIONREQUEST\":\r\n imageElement.src = CancellationRequest;\r\n break;\r\n case \"AWAITINGSYNC\":\r\n imageElement.src = PendingStatus;\r\n break;\r\n case \"SENTTOVC\":\r\n imageElement.src = SendToVC;\r\n break;\r\n case \"SYNCERROR\":\r\n imageElement.src = ErrorStatus;\r\n break;\r\n case \"SYNCCANCELLED\":\r\n imageElement.src = CancelStatus;\r\n break;\r\n case \"VALIDATIONPENDING\":\r\n imageElement.src = ValidationPendingStatus;\r\n break;\r\n case \"UNDELIVERABLE\":\r\n imageElement.src = UndeliverableStatus;\r\n default:\r\n break;\r\n }\r\n\r\n element.appendChild(imageElement);\r\n }\r\n }\r\n\r\n return element;\r\n },\r\n\r\n sensorDataFormatter: (params) => {\r\n if (params.value != null) {\r\n\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.value.toString();\r\n }\r\n\r\n return \"-NA-\";\r\n },\r\n \r\n sensorDataSorting: (param) => {\r\n if (param != null && param != undefined && param != \"null\") {\r\n return param;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n sensorDataFormatterforExcel: (params) => {\r\n if (params != null && params != \"-NA-\") {\r\n if (!isNaN(params)) { // WI 26545\r\n if (params == -999) //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return parseFloat(params).toFixed(1).toString();//26447\r\n }\r\n else\r\n return params;\r\n }\r\n\r\n return \"-NA-\";\r\n },\r\n DimiRemainTermFormatterforExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n lineFrequencyFormatterforExcel: (qualifier, params) => {\r\n if(qualifier != null && (qualifier == 0 || qualifier == 1)) {\r\n //if (params.toString().trim() == \"-999\") \r\n return params;\r\n //return parseFloat(params).toFixed(1).toString();\r\n }\r\n else if (qualifier != null && qualifier == 8)\r\n {\r\n //var value = params;\r\n //if(value == 19)\r\n return \"High\";\r\n }\r\n else if (qualifier != null && qualifier == 9)\r\n {\r\n //var value = params;\r\n //if(value == 35)\r\n return \"Low\";\r\n } \r\n else \r\n return \"Unknown\";\r\n },\r\n \r\n sensorDataFormatterforExcelTwoDecimal: (params) => {\r\n if (params != null && params != \"-NA-\") {\r\n\r\n if (params == -999) //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else \r\n return parseFloat(params).toFixed(2).toString();//26447\r\n }\r\n\r\n return \"-NA-\";\r\n },\r\n sensorDataPCondSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != '') {\r\n if (params.data.ReeferOEMTypeCd.trim() == 'C')\r\n return '-NA-';\r\n else {\r\n if (params.data.CondenserPressure != null && params.data.CondenserPressure != '-NA-') {\r\n if (params.data.CondenserPressure.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.data.CondenserPressure.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n sensorDataPCondvalueFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n return params.value;\r\n }\r\n return '-NA-';\r\n },\r\n \r\n sensorDataPCondFormatterExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.ReeferOEMTypeCd != null && params.ReeferOEMTypeCd != '') {\r\n if (params.ReeferOEMTypeCd.trim() == 'C')\r\n return \"-NA-\";\r\n else {\r\n if (params.CondenserPressure != null && params.CondenserPressure != '-NA-') {\r\n if (params.CondenserPressure.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return parseFloat(params.CondenserPressure).toFixed(2).toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n \r\n sensorDataOpenExpFormatterExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.ReeferOEMTypeCd != null && params.ReeferOEMTypeCd != '') {\r\n if (params.ReeferOEMTypeCd.trim() == 'C')\r\n return '-NA-';\r\n else {\r\n if (params.EvaporatorExpansionValveOpening != null && params.EvaporatorExpansionValveOpening != '-NA-') {\r\n if (params.EvaporatorExpansionValveOpening.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.EvaporatorExpansionValveOpening.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n \r\n sensorDataOpenSucFormatterForExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.ReeferOEMTypeCd != null && params.ReeferOEMTypeCd != '') {\r\n if (params.ReeferOEMTypeCd.trim() == 'C') {\r\n //if (params.SuctionModulationValveOpeningQualifier != null) { \r\n // if (params.SuctionModulationValveOpeningQualifier.toString().trim() == \"6\") //6 - NotUsed\r\n // return '-NA-';\r\n // else {\r\n // if (params.SuctionModulationValveOpening != null && params.SuctionModulationValveOpening != '') {\r\n // if (params.SuctionModulationValveOpening.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n // return \"OOR\";\r\n // else\r\n // return params.SuctionModulationValveOpening.toString();\r\n // }\r\n // else\r\n // return '-NA-';\r\n // }\r\n //}\r\n return '-NA-';\r\n }\r\n else {\r\n if (params.SuctionModulationValveOpening != null && params.SuctionModulationValveOpening != ''&& params.SuctionModulationValveOpening != '-NA-') {\r\n if (params.SuctionModulationValveOpening.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.SuctionModulationValveOpening.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n reeferPowerSourceConverter: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n\r\n if (params.value != null) {\r\n var imageElement = document.createElement(\"img\");\r\n if (params.value.toString().toUpperCase().trim() == \"TRUE\") {\r\n imageElement.src = Yes;\r\n }\r\n else\r\n imageElement.src = No;\r\n\r\n element.appendChild(imageElement);\r\n }\r\n\r\n return element;\r\n },\r\n switchPowerSourceConverter: (params) => {\r\n if (params.value != null) {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n if (params.value.toString().toUpperCase().trim() == \"TRUE\")\r\n imageElement.src = Yes;\r\n else\r\n imageElement.src = No;\r\n\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n return \"-NA-\";\r\n },\r\n enginePowerSourceConverter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.HasOilPressureSwitch != null && params.data.GensetRunning != null) {\r\n if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n if (params.data.OEMTypeCD != null && params.data.OEMTypeCD != '') {\r\n if (params.data.OEMTypeCD.toUpperCase().trim() == 'C') {\r\n return '-NA-';\r\n }\r\n else {\r\n if (params.data.GensetRunning.toString().toUpperCase().trim() == \"TRUE\")\r\n imageElement.src = Yes;\r\n else if (params.data.GensetRunning.toString().toUpperCase().trim() == \"FALSE\")\r\n imageElement.src = No;\r\n else\r\n return '-NA-';\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n }\r\n\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n rcdPowerSourceConverter: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n\r\n if (params.value != null) {\r\n var imageElement = document.createElement(\"img\");\r\n if (params.value.toString().trim() == \"1\" || params.value.toString().trim() == \"2\") {\r\n imageElement.src = Yes;\r\n }\r\n else\r\n imageElement.src = No;\r\n\r\n element.appendChild(imageElement);\r\n }\r\n\r\n return element;\r\n },\r\n YesNoFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.toString().toUpperCase().trim() == \"0\" || param.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (param.toString().toUpperCase().trim() == \"1\" || param.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n } \r\n }\r\n return \"*No Uses LOP\";\r\n },\r\n YesNoConverter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value.toString() != '') {\r\n if (params.value.toString().toUpperCase().trim() == \"0\" || params.value.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.value.toString().toUpperCase().trim() == \"1\" || params.value.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n ReeferYesNoConverter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.HasReefer != null && params.data.HasReefer != undefined) {\r\n if (params.data.HasReefer) {\r\n if (params.value != null && params.value != undefined) {\r\n if (params.value.toString().toUpperCase().trim() == \"YES\") {\r\n return \"Yes\";\r\n }\r\n else \r\n return \"No\";\r\n }\r\n else\r\n return \"No\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n },\r\n Auth0MigratedYesNoConverter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.Auth0_OrgId != null && params.data.Auth0_OrgId != undefined) {\r\n if (params.data.Auth0_OrgId) {\r\n if (params.value != null && params.value != '' && params.value != undefined) {\r\n return \"Yes\";\r\n }\r\n else\r\n return \"No\";\r\n }\r\n else\r\n return \"No\";\r\n }\r\n else\r\n return \"No\";\r\n }\r\n return \"-NA-\";\r\n },\r\n Auth0MigratedYesNoConverterForExcel: (params) => { \r\n if (params != null && params != '' && params != undefined) {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"No\";\r\n }\r\n \r\n\r\n },\r\n ReeferDCXDownloadsSortingConverter: (colvalue, hasReefer) => {\r\n if (hasReefer != null && hasReefer != undefined) {\r\n if (hasReefer) {\r\n if (colvalue != null && colvalue!= undefined) {\r\n if (colvalue.toString().toUpperCase().trim() == \"1\" || colvalue.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"No\";\r\n }\r\n }\r\n else {\r\n return \"No\";\r\n }\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n ReeferTripWISEReportSortingConverter: (colvalue, hasReefer) => {\r\n if (hasReefer != null && hasReefer != undefined) {\r\n if (hasReefer) {\r\n if (colvalue != null && colvalue != undefined) {\r\n if (colvalue.toString().toUpperCase().trim() == \"1\" || colvalue.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"No\";\r\n }\r\n }\r\n else {\r\n return \"No\";\r\n }\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n YesNoValueSorting: (param) => {\r\n if (param != null && param != undefined && param.toString() != '') {\r\n if (param.toString().toUpperCase().trim() == \"0\" || param.toString().toUpperCase().trim() == \"FALSE\" || param.toString().toUpperCase().trim() == \"I\") {\r\n return \"No\";\r\n }\r\n else if (param.toString().toUpperCase().trim() == \"1\" || param.toString().toUpperCase().trim() == \"TRUE\" || param.toString().toUpperCase().trim() == \"A\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n }, \r\n\r\n \r\n\r\n IsActiveFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.IsActive != null && params.data.IsActive != undefined) {\r\n if (params.data.IsActive.toString().toUpperCase().trim() == \"0\" || params.data.IsActive.toString().toUpperCase().trim() == \"FALSE\" || params.data.IsActive.toString().toUpperCase().trim() == \"I\") {\r\n return \"No\";\r\n }\r\n else if (params.data.IsActive.toString().toUpperCase().trim() == \"1\" || params.data.IsActive.toString().toUpperCase().trim() == \"TRUE\" || params.data.IsActive.toString().toUpperCase().trim() == \"A\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n\r\n StatusCdFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.StateCd != null && params.data.StateCd != undefined) {\r\n if (params.data.StateCd.toString().toUpperCase().trim() == \"I\") {\r\n return \"No\";\r\n }\r\n else if (params.data.StateCd.toString().toUpperCase().trim() == \"A\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n\r\n IsDeployedFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.IsDeployed != null && params.data.IsDeployed != undefined) {\r\n if (params.data.IsDeployed.toString().toUpperCase().trim() == \"0\" || params.data.IsDeployed.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.data.IsDeployed.toString().toUpperCase().trim() == \"1\" || params.data.IsDeployed.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n\r\n FileStatusFormattingForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.FilerepositoryActionCD != null && params.data.FilerepositoryActionCD != undefined && params.data.FilerepositoryActionCD != '') {\r\n var action = params.data.FilerepositoryActionCD.toUpperCase().trim();\r\n if (action == \"P\")\r\n return \"Pending\";\r\n else if (action == \"C\")\r\n return \"Completed\";\r\n else if (action == \"E\")\r\n return \"Error\";\r\n else if (action == \"I\")\r\n return \"Processing\";\r\n }\r\n\r\n return \"-NA-\";\r\n },\r\n FileStatusGrouping: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n var action = params.toUpperCase().trim();\r\n if (action == \"P\")\r\n return \"Pending\";\r\n else if (action == \"C\")\r\n return \"Completed\";\r\n else if (action == \"E\")\r\n return \"Error\";\r\n else if (action == \"I\")\r\n return \"Processing\";\r\n }\r\n },\r\n YesNoConverterforExcel: (params) => {\r\n\r\n if (params != null && params != undefined && params.toString() != '') {\r\n if (params.toString().toUpperCase().trim() == \"0\" || params.toString().toUpperCase().trim() == \"FALSE\" || params.toString().toUpperCase().trim() == \"NO\" || params.toString().toUpperCase().trim() == \"I\") {\r\n return \"No\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"1\" || params.toString().toUpperCase().trim() == \"TRUE\" || params.toString().toUpperCase().trim() == \"YES\" || params.toString().toUpperCase().trim() == \"A\") {\r\n return \"Yes\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"ACTIVE\") {\r\n return \"Active\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"INACTIVE\") {\r\n return \"InActive\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n TimeZoneColumnFormatterForExcel: (params) => {\r\n var timeZoneCd = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneCd.trim();\r\n if (params != null && params != \"\") {\r\n if (timeZoneCd != null && timeZoneCd != \"\")\r\n return params + \" (\" + timeZoneCd + \")\";\r\n else\r\n return params;\r\n }\r\n },\r\n GuestReeferModeFormatterForExcel: (params) => {\r\n if (params != null) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Guest\";\r\n else\r\n return \"Standard\";\r\n }\r\n else\r\n return 'Standard';\r\n },\r\n //secondsToTimeConverterForExcel: (params) => {\r\n // if (params != null && params != undefined && params != '-NA-') {\r\n // var val = parseInt(params);\r\n // if (val != 0) {\r\n // var hours = val / 60;\r\n // var minutes = val % 60;\r\n // return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n\r\n // }\r\n // else\r\n // return val;\r\n // }\r\n // else\r\n // return \"-NA-\";\r\n //},\r\n\r\n secondsToTimeConverterForExcel: (params) => {\r\n if (params != null && params != undefined && params != '-NA-') {\r\n var val = parseInt(params);\r\n if (val != 0) {\r\n var hours = val / 60;\r\n var minutes = val % 60;\r\n return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n\r\n }\r\n else\r\n return val;\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n\r\n DoorFormatterForExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.HasDoorSensor != null && params.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.Door1Open != null) {\r\n if (params.Door1Open.toString().toUpperCase().trim() == \"TRUE\" || params.Door1Open.toString().toUpperCase().trim()=== \"1\")\r\n return \"Open\";\r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n AlarmListFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n if (params.value.toString().endsWith(\",\")) {\r\n params.value = params.value.slice(0, -1);\r\n }\r\n return '' + params.value + '';\r\n }\r\n\r\n else return \"-NA-\";\r\n },\r\n AlarmListFormatterforExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.toString().endsWith(\",\")) {\r\n params = params.slice(0, -1);\r\n }\r\n return params;\r\n }\r\n\r\n else return \"-NA-\";\r\n },\r\n \r\n AlertDescriptionFormatter: (params, alertsList) => {\r\n var element = document.createElement(\"span\");\r\n if (params.data.Alerts != null && params.data.Alerts != undefined && params.data.Alerts != '') {\r\n var lstAlerts = params.data.Alerts.split(',');\r\n $.each(lstAlerts, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alertsList != null && alertsList != undefined && alertsList.length > 0) {\r\n var alertDescription = alertsList.filter(e =>\r\n e.AlertCD === item.toString().trim());\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alertDescription.length > 0 ? alertDescription[0].AlertDsc.toString() : \"\";\r\n anchorElement.text = item.toString().trim();\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n });\r\n\r\n return element;\r\n }\r\n\r\n else return \"-NA-\";\r\n },\r\n CommandValidatorFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n\r\n if (params.toString().endsWith(\",\")) {\r\n params = params.remove(params.lastIndexOf(\",\"));\r\n }\r\n\r\n return params;\r\n }\r\n\r\n else return \"\";\r\n },\r\n RefCommandStatus: (params) => {\r\n var status = \"\";\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n switch (params.value.toString()) {\r\n case \"P\":\r\n case \"4\":\r\n status = \"Pending\";\r\n break;\r\n case \"C\":\r\n status = \"Success\";\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return status;\r\n },\r\n TimeZoneHeaderFormatter: (params) => {\r\n var timeZoneCd = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneCd.trim();\r\n if (params.colDef.headerName != null && params.colDef.headerName != \"\") {\r\n if (timeZoneCd != null && timeZoneCd != \"\")\r\n return params.colDef.headerName + \" (\" + timeZoneCd + \")\";\r\n else\r\n return params.colDef.headerName;\r\n }\r\n },\r\n SpeedHeaderFormatter: (params) => {\r\n var speedUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).SpeedUnitCd.trim();\r\n if (params.colDef.headerName != null && params.colDef.headerName != \"\") {\r\n if (speedUnitCd != null && speedUnitCd != \"\")\r\n return params.colDef.headerName + \" (\" + speedUnitCd.toLowerCase() + \")\";\r\n else\r\n return params.colDef.headerName;\r\n }\r\n },\r\n TimeZoneFormatter: (headerName) => {\r\n var timeZoneCd = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneCd.trim();\r\n if (headerName != null && headerName != \"\") {\r\n if (timeZoneCd != null && timeZoneCd != \"\")\r\n return headerName + \" (\" + timeZoneCd + \")\";\r\n else\r\n return headerName;\r\n }\r\n },\r\n TempHeaderFormatter: (params) => {\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (params.colDef.headerName != null && params.colDef.headerName != \"\") {\r\n if (tempUnitCd.toUpperCase() == \"F\")\r\n return params.colDef.headerName + \" (°F)\";\r\n else\r\n return params.colDef.headerName + \" (°C)\";\r\n }\r\n },\r\n TemperatureHeaderFormatter: (headerName) => {\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (headerName != null && headerName != \"\") {\r\n if (tempUnitCd.toUpperCase() == \"F\")\r\n return headerName + \"(°F)\";\r\n else\r\n return headerName + \"(°C)\";\r\n }\r\n },\r\n \r\n TempHeaderFormatterChildForms: (params) => {\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n //var tmp = [\"Booking Temp \"]\r\n if (params != null && params != \"\") {\r\n if (tempUnitCd.toUpperCase() == \"F\")\r\n return params + \"(°F)\";\r\n else\r\n return params + \"(°C)\";\r\n }\r\n },\r\n TemperatureFormatter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params.value != null) {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n if ((params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"ST9100\") && params.colDef.field == \"DeviceTemp\") {\r\n // if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(parseInt(tempRoundingValue)) : param.toFixed(1);\r\n //WI 26666 return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n //WI 26666 return parseFloat(params.value.toFixed(parseInt(tempRoundingValue)));\r\n return tempRoundingValue > 0 ? params.value.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n params.value.toFixed(parseInt(tempRoundingValue)) : params.value.toFixed(1);\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n TemperatureSorting: (param) => {\r\n if (param != null && param != undefined && param != \"null\") {\r\n return param;\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n \r\n DeviceTempFormatterForFilter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params.value != null) {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n if ((params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"ST9100\") && params.colDef.field == \"DeviceTemp\") {\r\n // if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(params.value.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n FloatFormatterForGraph: (params) => {\r\n if (params != null) {\r\n if (params.toString().trim() == \"\")\r\n return \"OOR\";\r\n else\r\n return parseFloat(params);\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n TemperatureFormatterForGraph: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null) {\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params);\r\n\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(params.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n TripWiseExpirationSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.TripWiseExpiration != null && params.data.TripWiseExpiration != 0) {\r\n if (params.data.TripWiseExpiration.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.TripWiseExpiration;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n \r\n },\r\n DimiRemainTermSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DimiRemainTerm != null && params.data.DimiRemainTerm != undefined) {\r\n if (params.data.DimiRemainTerm.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.DimiRemainTerm;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n \r\n },\r\n //Start RCNG-1818\r\n CTDurationSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd.toUpperCase().trim() == \"D\") {\r\n if (params.data.ACTMode != null && params.data.ACTMode.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.CTDuration != null && params.data.CTDuration != 0) {\r\n if (params.data.CTDuration.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.CTDuration;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else {\r\n if (params.data.CTDuration != null && params.data.CTDuration != 0) {\r\n if (params.data.CTDuration.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.CTDuration;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n CTRemainingTimeSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd.toUpperCase().trim() == \"D\") {\r\n if (params.data.ACTMode != null && params.data.ACTMode.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.CTRemainingTime != null && params.data.CTRemainingTime != 0) {\r\n if (params.data.CTRemainingTime.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.CTRemainingTime;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else {\r\n if (params.data.CTRemainingTime != null && params.data.CTRemainingTime != 0) {\r\n if (params.data.CTRemainingTime.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.CTRemainingTime;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n \r\n AirPumpRunHoursSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.AirPumpRunHours != null) {\r\n if (params.data.AirPumpRunHours.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.AirPumpRunHours;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n CARunHoursSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CARunHours != null) {\r\n if (params.data.CARunHours.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.CARunHours;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n PowerMeterSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.PowerMeter != null) {\r\n if (params.data.PowerMeter.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.PowerMeter;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n CASWVerSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CASoftwareRevision != null && params.data.CASoftwareRevision != 0) {\r\n if (params.data.CASoftwareRevision.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.CASoftwareRevision;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n CompressorRunHoursSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CompressorRunHours != null) {\r\n if (params.data.CompressorRunHours.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.data.CompressorRunHours;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n CTRemainingTimeGrouping: (params) => { //Modified for the FIX of RCNG-5006\r\n if (params != null && params != undefined) {\r\n if (params.node != null && params.node != undefined) {\r\n if (params.node.key != null) {\r\n if (params.node.key.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.node.key;\r\n }\r\n else\r\n return '* No CT rem(hr)';\r\n }\r\n else\r\n return '* No CT rem(hr)';\r\n }\r\n else\r\n return '* No CT rem(hr)';\r\n\r\n },\r\n\r\n CTDurationGrouping: (params) => { //Modified for the FIX of RCNG-5006\r\n if (params != null && params != undefined) {\r\n if (params.node != null && params.node != undefined) {\r\n if (params.node.key != null) {\r\n if (params.node.key.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.node.key;\r\n }\r\n else\r\n return '*No CT dur (d)';\r\n }\r\n else\r\n return '*No CT dur (d)';\r\n }\r\n else\r\n return '*No CT dur (d)';\r\n },\r\n CTDurationorRemainingTimeFormatterforExcel: (params) => {\r\n if (params != null && params != 0 && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n AirPumpRunHoursFormatterforExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CompressorRunHoursFormatterforExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CARunHoursFormatterforExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n PowerMeterFormatterforExcel: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CASWVerFormatterforExcel: (params) => {\r\n if (params != null && params != 0 && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n //end RCNG-1818\r\n TripWiseExpirationFormatterforExcel: (params) => {\r\n if (params != null && params != 0 && params != undefined) {\r\n if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n SpeedConverterforExcel: (params) => {\r\n \r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var speedUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).SpeedUnitCd.trim();\r\n if (params != null && params != undefined && params != '-NA-') {\r\n if (speedUnitCd.toLowerCase() == \"kmh\") {\r\n var param = parseFloat(params);\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempVal = parseFloat(params);\r\n var param1 = (tempVal / 1.609344);\r\n return parseFloat(param1.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n\r\n }\r\n else\r\n return '-NA-';\r\n \r\n },\r\n \r\n TemperatureFormatterForSorting: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n var BookedTemperature = null;\r\n var TempUnit = null;\r\n if (params.data.TemperatureUnit != null && params.data.TemperatureUnit != undefined) {\r\n var strlstValues = params.value.split('@');\r\n BookedTemperature = strlstValues[0];\r\n TempUnit = strlstValues[1];\r\n if (TempUnit.toUpperCase() == \"N\")\r\n return \"Non-Running\";\r\n else if (TempUnit.toUpperCase() != tempUnitCd.toUpperCase()) {\r\n if (\"F\" == tempUnitCd.toUpperCase()) {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = ((tempValue * 9) / 5) + 32;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = (tempValue - 32) * 5 / 9;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return parseFloat(parseFloat(BookedTemperature.toString()).toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n TemperatureFormatterForBookingforExcel: function (params) {\r\n var tempRoundingValue = \"1\";\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n var BookedTemperature = null;\r\n var TempUnit = null;\r\n if (params != null && params != \"\" && params != \"-NA-\") {\r\n var strlstValues = params.split('@');\r\n BookedTemperature = strlstValues[0];\r\n TempUnit = strlstValues[1];\r\n if (TempUnit.toUpperCase() == \"N\")\r\n return \"Non-Running\";\r\n else if (TempUnit.toUpperCase() != tempUnitCd.toUpperCase()) {\r\n if (\"F\" == tempUnitCd.toUpperCase()) {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = ((tempValue * 9) / 5) + 32;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = (tempValue - 32) * 5 / 9;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return BookedTemperature.toString();\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n TemperatureFormatterForDeviceTemp(params: any) {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;//\"1\";\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.node.data.DeviceTemp != null && params.node.data.DeviceTemp != undefined && params.node.data.DeviceTemp != '-NA-') {\r\n if (params.node.data.DeviceTemp.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params.node.data.DeviceTemp);\r\n if ((params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().toUpperCase().trim() == \"ST9100\")) {\r\n //if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n TemperatureFormatterforExcel: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != \"-NA-\") {\r\n if (params == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params);\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n \r\n var param = parseFloat(tempVal.toString());\r\n //return param.toFixed(parseInt(tempRoundingValue));\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() :\r\n param.toFixed(1).toString();\r\n }\r\n else {\r\n //26447-start\r\n var tempVal = parseFloat(params);\r\n var param = parseFloat(tempVal.toString());\r\n //26447 -end\r\n //return tempVal.toFixed(parseInt(tempRoundingValue));\r\n return tempRoundingValue > 0 ? tempVal.toFixed(parseInt(tempRoundingValue)).toString() :\r\n param.toFixed(1).toString();\r\n }\r\n \r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n GravityVectorValueFormatter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).GravityVectorPrecision;\r\n\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n var tempVal = parseFloat(params.value);\r\n if (tempVal == 0)\r\n return 0;\r\n else\r\n return tempRoundingValue > 0 ? tempVal.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.00\" ? parseFloat(\"0.00\").toFixed(2) :\r\n tempVal.toFixed(parseInt(tempRoundingValue)) : tempVal.toFixed(2);\r\n\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n GravityVectorValueFormatterforGroup: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).GravityVectorPrecision;\r\n\r\n if (params != null && params != undefined) {\r\n if (params != null && params != undefined && params != '-NA-') {\r\n var tempVal = parseFloat(params);\r\n if (tempVal == 0)\r\n return 0;\r\n else\r\n return tempRoundingValue > 0 ? tempVal.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.00\" ? parseFloat(\"0.00\").toFixed(2) :\r\n tempVal.toFixed(parseInt(tempRoundingValue)) : tempVal.toFixed(2);\r\n\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n \r\n LuxValueFormatter: (params) => {\r\n var tempRoundingValue = \"2\";\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n var tempVal = parseFloat(params.value);\r\n if (tempVal == 0)\r\n return 0;\r\n else\r\n return tempRoundingValue > 0 ? tempVal.toFixed(parseFloat(tempRoundingValue)).toString() === \"-0.00\" ? parseFloat(\"0.00\").toFixed(2) :\r\n tempVal.toFixed(parseFloat(tempRoundingValue)) : tempVal.toFixed(2);\r\n\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n LuxValueFormatterforGroup: (params) => {\r\n var tempRoundingValue = \"2\";\r\n if (params != null && params != undefined) {\r\n if (params != null && params != undefined && params != '-NA-') {\r\n var tempVal = parseFloat(params);\r\n if (tempVal == 0)\r\n return 0;\r\n else\r\n return tempRoundingValue > 0 ? tempVal.toFixed(parseFloat(tempRoundingValue)).toString() === \"-0.00\" ? parseFloat(\"0.00\").toFixed(2) :\r\n tempVal.toFixed(parseFloat(tempRoundingValue)) : tempVal.toFixed(2);\r\n\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n TemperatureFormatterExcelForDeviceTemp: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n if ((params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().toUpperCase().trim() == \"ST9100\") && params.column.colDef.field == \"DeviceTemp\") {\r\n // if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DevcieTempGrouping: (params, DeviceType) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params);\r\n if ((DeviceType != null && DeviceType != undefined && DeviceType.toString().toUpperCase().trim() == \"ST9100\")) {\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n \r\n }\r\n else\r\n return '-NA-';\r\n },\r\n InsideTempGrouping: (params, DeviceType) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params);\r\n if ((DeviceType != null && DeviceType != undefined && DeviceType.toString().toUpperCase().trim() == \"ST9100\")) {\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n \r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GetOEMTypeDescription: (params) => {\r\n if (params != null && params != '-NA-') {\r\n switch (params.toUpperCase().trim()) {\r\n case \"C\":\r\n return \"CAR\";\r\n case \"D\":\r\n return \"DKN\";\r\n case \"S\":\r\n return \"SC\";\r\n case \"T\":\r\n return \"TK\";\r\n case \"G\":\r\n return \"GMK\";\r\n case \"TA\":\r\n return \"TLR\";\r\n case \"U\":\r\n return \"UNK\";\r\n case \"CARRIER\":\r\n return \"CAR\";\r\n case \"DAIKIN\":\r\n return \"DKN\";\r\n case \"STARCOOL\":\r\n return \"SC\";\r\n case \"THERMOKING\":\r\n return \"TK\";\r\n case \"GENMARK\":\r\n return \"GMK\";\r\n case \"TAYLOR\":\r\n return \"TLR\";\r\n case \"UNKNOWN\":\r\n return \"UNK\";\r\n case \"OEM_KLINGE\":\r\n case \"KLINGE\":\r\n return \"KLINGE\";\r\n default:\r\n return params.toUpperCase().trim(); \r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n\r\n //CargoCareFormatter: (params) => {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-alert\";\r\n // if (params != null && params != undefined && params != '') {\r\n\r\n // var cellColor = \"\";\r\n // var isCargoCare = false;\r\n\r\n // if (params.data != null && params.data != undefined && params.data != '') {\r\n // isCargoCare = params.data.IsCargoCare;\r\n\r\n // if (params.data.CCAlarms != \"\" && params.data.CCAlarms != null && params.data.CCSeverityLevel != \"\" && params.data.CCSeverityLevel != null) {\r\n // if (params.data.CCSeverityLevel.toString() == \"1\") {\r\n // cellColor = \"Tomato\";\r\n // }\r\n // else if (params.data.CCSeverityLevel.toString() == \"2\") {\r\n // cellColor = \"Orange\";\r\n // }\r\n // else if (params.data.CCSeverityLevel.toString() == \"3\") {\r\n // cellColor = \"Yellow\";\r\n // }\r\n // }\r\n // else {\r\n // cellColor = \"\";\r\n // }\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n\r\n // if (cellColor == \"\" && !isCargoCare) {\r\n // return \"\";\r\n // }\r\n // else if (isCargoCare && cellColor == \"\") {\r\n // imageElement.src = \"../Images/cc.png\";\r\n // }\r\n // else if (!isCargoCare && cellColor == \"Tomato\") {\r\n // imageElement.src = \"../Images/t.png\";\r\n // }\r\n // else if (isCargoCare && cellColor == \"Tomato\") {\r\n // imageElement.src = \"../Images/tcc.png\";\r\n // }\r\n // else if (!isCargoCare && cellColor == \"Orange\") {\r\n // imageElement.src = \"../Images/o.png\";\r\n // }\r\n // else if (isCargoCare && cellColor == \"Orange\") {\r\n // imageElement.src = \"../Images/occ.png\";\r\n // }\r\n // else if (!isCargoCare && cellColor == \"Yellow\") {\r\n // imageElement.src = \"../Images/y.png\";\r\n // }\r\n // else if (isCargoCare && cellColor == \"Yellow\") {\r\n // imageElement.src = \"../Images/ycc.png\";\r\n // }\r\n // element.appendChild(imageElement);\r\n // }\r\n // }\r\n // return element;\r\n //},\r\n \r\n \r\n \r\n CargoCareFormatterGrouping: (param) => {\r\n \r\n if (param != null && param != undefined) {\r\n if (param == 1) {\r\n return '' + \" \" + \"Severe\";\r\n }\r\n else if (param == 2) { \r\n return '' + \" \" + \"Minor\";\r\n }\r\n else if (param == 3) { \r\n return '' + \" \" + \"Informational\";\r\n }\r\n else if (param == 4) {\r\n return '' + \" \" + \"Assigned\"; //RCNG-241 Renamed Normal to Assigned\r\n }\r\n else if (param == 5) {\r\n return \"*No CC\";\r\n } \r\n }\r\n return \"*No CC\";\r\n },\r\n CargoCareFormatterGroupingForExcel: (param) => {\r\n\r\n if (param != null && param != undefined) {\r\n if (param == 1) {\r\n return 'Severe';\r\n }\r\n else if (param == 2) {\r\n return 'Minor';\r\n }\r\n else if (param == 3) {\r\n return 'Informational';\r\n }\r\n else if (param == 4) {\r\n return 'Assigned'; //RCNG-241 Renamed Normal to Assigned\r\n }\r\n else if (param == 5) {\r\n return \"*No CC\";\r\n }\r\n }\r\n return \"*No CC\";\r\n },\r\n CargoCareFormatterforExcel: (params) => {\r\n var valueString = \"\";\r\n if (params != null && params != undefined && params != '') {\r\n if (params.isCargocare && params.CCSeverityLevel.toString() == \"1\") {\r\n valueString = \"CC:Yes, Level:Severe\";\r\n }\r\n else if (params.CCSeverityLevel.toString() == \"1\") {\r\n\r\n valueString = \"CC:No, Level:Severe\";\r\n }\r\n else if (params.isCargocare && params.CCSeverityLevel.toString() == \"2\") {\r\n valueString = \"CC:Yes, Level:Minor\";\r\n }\r\n else if (params.CCSeverityLevel.toString() == \"2\") {\r\n valueString = \"CC:No, Level:Minor\";\r\n }\r\n else if (params.isCargocare && params.CCSeverityLevel.toString() == \"3\") {\r\n valueString = \"CC:Yes, Level:Informational\";\r\n }\r\n else if (params.CCSeverityLevel.toString() == \"3\") {\r\n valueString = \"CC:No, Level:Informational\";\r\n }\r\n else if (params.isCargocare) {\r\n valueString = \"CC:Yes, -NA-\"; //RCNG-241 Renamed Normal to Assigned\r\n }\r\n else {\r\n //valueString = \"CC:No, Level:No\";\r\n valueString = \"CC:No, -NA-\";\r\n }\r\n }\r\n\r\n return valueString;\r\n },\r\n textTooltipFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n return '' + params.value + '';\r\n }\r\n else\r\n return '';\r\n },\r\n secondsToTimeConverter: (params) => {\r\n if (params.value != null && params.value!='-NA-') {\r\n var val = parseInt(params.value);\r\n if (val != 0) {\r\n var hours = val / 60;\r\n var minutes = val % 60;\r\n return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n\r\n }\r\n else\r\n return val;\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n reeferSecondsToTimeConverterFilter: (params) => {\r\n var returnValue = \"-NA-\";\r\n if (params != undefined && params != null) {\r\n\r\n if (params.data != undefined && params.data != null) {\r\n\r\n if (params.data.GPSLastLock != null) {\r\n var val = parseInt(params.data.GPSLastLock);\r\n if (val != 0) {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"ST9100\") {\r\n var minutesVal = val / 60;\r\n var hours = minutesVal / 60;\r\n var minutes = minutesVal % 60;\r\n var seconds = val % 60;\r\n returnValue = parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":\" + parseInt(seconds.toString());\r\n }\r\n else {\r\n var hours = val / 60;\r\n var minutes = val % 60;\r\n returnValue = parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n }\r\n }\r\n else\r\n returnValue = val.toString();\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n\r\n }\r\n }\r\n return returnValue;\r\n },\r\n\r\n secondsToTimeConverterFilter: (params) => {\r\n\r\n var returnValue = \"-NA-\";\r\n if (params != undefined && params != null) {\r\n\r\n if (params.data != undefined && params.data != null) {\r\n\r\n if (params.data.GPSLastLock != null) {\r\n var val = parseInt(params.data.GPSLastLock);\r\n if (val != 0) {\r\n var hours = val / 60;\r\n var minutes = val % 60;\r\n returnValue = parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n\r\n }\r\n else\r\n returnValue = val.toString();\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n\r\n }\r\n }\r\n return returnValue;\r\n },\r\n\r\n GPSCoordsFormatter: (params) => {\r\n if (params.value != null && params.value != '-1000') {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && (params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1020\")) {\r\n if (params.value != null && params.value != '-1000')\r\n return params.value;\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSLatitude != 0 && params.data.GPSLongitude != 0 && (params.data.GPSLockState == null || params.data.GPSLockState == '' || params.data.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n if (params.value != null && params.value != '-1000') {\r\n params.value = '' + params.value + '';\r\n params.value = '

' + params.value + '

';\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSCoords != null && params.data.GPSCoords != undefined && params.data.GPSCoords.toString().trim() == \"\") {\r\n return '-NA-';\r\n }\r\n else\r\n return params.value;\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DeploymentCommandValidatorFormatter: (params) => {\r\n var element = document.createElement(\"span\");\r\n\r\n if (params != null) {\r\n var imageElement = document.createElement(\"img\");\r\n\r\n if (params.value == \"E\") {\r\n imageElement.src = ImgPending1;\r\n }\r\n else if (params.value == \"W\") {\r\n imageElement.src = ImgWarning1;\r\n }\r\n else {\r\n imageElement.src = ImgSuccess1;\r\n }\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n else\r\n return element;\r\n },\r\n\r\n GetFileRepositoryActionDesc: (params) => {\r\n\r\n var valueString = \"\";\r\n if (params != null && params != undefined && params != '') {\r\n var action = params.toUpperCase().trim();\r\n if (action == \"P\")\r\n valueString = \"Pending\";\r\n else if (action == \"C\")\r\n valueString = \"Completed\";\r\n else if (action == \"E\")\r\n valueString = \"Error\";\r\n else if (action == \"I\")\r\n valueString = \"Processing\";\r\n }\r\n return valueString;\r\n },\r\n\r\n \r\n \r\n Current3PhaseFormatterforExcel: (params) => {\r\n var currentValue1 = \"\";\r\n var currentValue2 = \"\";\r\n var currentValue3 = \"\";\r\n if (params != null && params != \"-NA-\") {\r\n var phases = params.split(\",\");\r\n if (phases[0].toString().trim() == \"-999\")\r\n currentValue1 = \"OOR\";\r\n else {\r\n var param = parseFloat(phases[0].toString());\r\n currentValue1 = param.toFixed(0).toString().trim() == \"NaN\" ? \"\" : param.toFixed(1).toString().trim();//WI-26512-in else toFixed number was wrong\r\n //currentValue1 = phases[0].toString().trim();\r\n }\r\n \r\n if (phases[1].toString().trim() == \"-999\")\r\n currentValue2 = \"OOR\";\r\n else {\r\n var param = parseFloat(phases[1].toString());\r\n currentValue2 = param.toFixed(1).toString().trim() == \"NaN\" ? \"\" : param.toFixed(1).toString().trim();\r\n //currentValue2 = phases[1].toString().trim();\r\n }\r\n \r\n if (phases[2].toString().trim() == \"-999\")\r\n currentValue3 = \"OOR\";\r\n else {\r\n var param = parseFloat(phases[2].toString());\r\n currentValue3 = param.toFixed(2).toString().trim() == \"NaN\" ? \"\" : param.toFixed(1).toString().trim();//WI-26512-in else toFixed number was wrong\r\n //currentValue3 = phases[2].toString().trim();\r\n }\r\n \r\n\r\n return currentValue1 + \", \" + currentValue2 + \", \" + currentValue3;\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n DateTimeFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n UTCtoPreferenceTimeFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n //RCNG-1398\r\n UTCtoPreferenceTimeFormatterHM(params: any) {\r\n if (params != null && params != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n PreferenceTimeToUTCFormatterHM(params: any) {\r\n if (params != null && params != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() - (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n toolTipFormatter: (params) => {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n return params.value.trim();\r\n }\r\n else\r\n return '';\r\n },\r\n \r\n \r\n tripWiseFormatter: (params) => {\r\n if (params.value != undefined) {\r\n switch (params.value) {\r\n case 0:\r\n return params.value = '';\r\n case 1:\r\n return params.value = '';\r\n case 2:\r\n return params.value = '';\r\n case 3:\r\n return params.value = '';\r\n case 4:\r\n return params.value = '';\r\n case 5:\r\n return params.value = '';\r\n case null:\r\n return params.value = '';\r\n }\r\n }\r\n return params.value = '';\r\n },\r\n TripWiseSorting: (params) => {\r\n var TripWiseStatusDescription = '-NA-';\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined && params.data.ReeferOemTypeCd != null && params.data.ReeferOemTypeCd.toUpperCase().trim() != \"D\") {\r\n if (params.data.TWState != undefined) {\r\n return params.data.TWState;\r\n }\r\n else\r\n return TripWiseStatusDescription;//-999;\r\n }\r\n\t\t\telse{\r\n\t\t\t\r\n\t\t\tif (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined){\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n TripWiseStatusDescription = 'Off';\r\n }\r\n else if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"ON\") {\r\n\r\n if (params.data.DimiResultActuator == \"Passed\" && params.data.DimiResultAlarm == \"Passed\" &&\r\n params.data.DimiResultOOR == \"Passed\" && params.data.DimiResultTerm == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((params.data.DimiResultTerm == \"Failed\") &&\r\n (params.data.DimiResultActuator == \"Passed\" || params.data.DimiResultActuator == \"Unknown\") &&\r\n (params.data.DimiResultAlarm == \"Passed\" || params.data.DimiResultAlarm == \"Unknown\") &&\r\n (params.data.DimiResultOOR == \"Passed\" || params.data.DimiResultOOR == \"Unknown\")) {\r\n TripWiseStatusDescription = \"Expired\";\r\n }\r\n else if ((params.data.DimiResultActuator == \"Unknown\" || params.data.DimiResultAlarm == \"Unknown\"\r\n || params.data.DimiResultOOR == \"Unknown\" || params.data.DimiResultTerm == \"Unknown\") &&\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\" || params.data.DimiResultOOR == \"Failed\") {\r\n TripWiseStatusDescription = \"Check\";\r\n }\r\n }\r\n\t\t}\r\n\t\treturn TripWiseStatusDescription;\r\n }\r\n }\r\n }, \r\n TripWiseGrouping: (param) => {\r\n if (param != null && param != undefined && param != \"null\") {\r\n switch (param) {\r\n case '0':\r\n return '' + \" \" + \"Off\";\r\n case '1':\r\n return '' + \" \" + \"Expired\";\r\n case '2':\r\n return '' + \" \" + \"Check\";\r\n case '3':\r\n return '' + \" \" + \"Passed\";\r\n case '4':\r\n return '' + \" \" + \"Running\";\r\n case '5':\r\n return '' + \" \" + \"Unknown\";\r\n }\r\n }\r\n },\r\n TwStateForFilter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ReeferOemTypeCd != null && params.data.ReeferOemTypeCd != undefined && params.data.ReeferOemTypeCd.toString().toUpperCase().trim() != 'D') {\r\n if (params.data.TWState != undefined) {\r\n switch (params.data.TWState) {\r\n case 0:\r\n return 'Off';\r\n case 1:\r\n return 'Expired';\r\n case 2:\r\n return 'Check';\r\n case 3:\r\n return 'Passed';\r\n case 4:\r\n return 'Running';\r\n case 5:\r\n return 'Unknown';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n else {\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n return 'Off';\r\n }\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"ON\") {\r\n if (params.data.DimiResultActuator == \"Passed\" && params.data.DimiResultAlarm == \"Passed\" &&\r\n params.data.DimiResultOOR == \"Passed\" && params.data.DimiResultTerm == \"Passed\") {\r\n return \"Passed\";\r\n }\r\n else if ((params.data.DimiResultTerm == \"Failed\") &&\r\n (params.data.DimiResultActuator == \"Passed\" || params.data.DimiResultActuator == \"Unknown\") &&\r\n (params.data.DimiResultAlarm == \"Passed\" || params.data.DimiResultAlarm == \"Unknown\") &&\r\n (params.data.DimiResultOOR == \"Passed\" || params.data.DimiResultOOR == \"Unknown\")) {\r\n return \"Expired\";\r\n }\r\n else if ((params.data.DimiResultActuator == \"Unknown\" || params.data.DimiResultAlarm == \"Unknown\"\r\n || params.data.DimiResultOOR == \"Unknown\" || params.data.DimiResultTerm == \"Unknown\") &&\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\")) {\r\n return \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\" || params.data.DimiResultOOR == \"Failed\") {\r\n return \"Check\";\r\n }\r\n }\r\n }\r\n \r\n }\r\n },\r\n TripWiseGroupingForExcel: (fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm, DimiMode) => {\r\n var TripWiseStatusDescription = '*No OEM PTI';\r\n if (ReeferOemTypeCd != null && ReeferOemTypeCd.toUpperCase().trim() != \"D\") {\r\n switch (fieldValue.toString()) {\r\n case '0':\r\n return 'Off';\r\n case '1': \r\n return 'Expired';\r\n case '2': \r\n return 'Check';\r\n case '3': \r\n return 'Passed';\r\n case '4':\r\n return 'Running';\r\n case '5': \r\n return 'Unknown';\r\n case null:\r\n return TripWiseStatusDescription;\r\n }\r\n //return TripWiseStatusDescription;\r\n }\r\n else {\r\n \r\n if (DimiMode != null && DimiMode.toUpperCase().trim() == \"OFF\") {\r\n return TripWiseStatusDescription = 'Off';\r\n }\r\n else if (DimiMode != null && DimiMode.toUpperCase().trim() == \"ON\") {\r\n\r\n if (DimiResultActuator == \"Passed\" && DimiResultAlarm == \"Passed\" &&\r\n DimiResultOOR == \"Passed\" && DimiResultTerm == \"Passed\") {\r\n return TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((DimiResultTerm == \"Failed\") &&\r\n (DimiResultActuator == \"Passed\" || DimiResultActuator == \"Unknown\") &&\r\n (DimiResultAlarm == \"Passed\" || DimiResultAlarm == \"Unknown\") &&\r\n (DimiResultOOR == \"Passed\" || DimiResultOOR == \"Unknown\")) {\r\n return TripWiseStatusDescription = \"Expired\";\r\n }\r\n else if ((DimiResultActuator == \"Unknown\" || DimiResultAlarm == \"Unknown\"\r\n || DimiResultOOR == \"Unknown\" || DimiResultTerm == \"Unknown\") &&\r\n (DimiResultActuator != \"Failed\" && DimiResultAlarm != \"Failed\" &&\r\n DimiResultOOR != \"Failed\" && DimiResultTerm != \"Failed\")) {\r\n return TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (DimiResultActuator == \"Failed\" || DimiResultAlarm == \"Failed\" || DimiResultOOR == \"Failed\") {\r\n return TripWiseStatusDescription = \"Check\";\r\n }\r\n }\r\n else\r\n return TripWiseStatusDescription;\r\n }\r\n //return TripWiseStatusDescription;\r\n },\r\n tripWiseFormatterForExcel: (params) => {\r\n var TripWiseStatusDescription = '-NA-';\r\n if (params.node.data.ReeferOemTypeCd != null && params.node.data.ReeferOemTypeCd.toUpperCase().trim() != \"D\") {\r\n switch (params.value.toString()) {\r\n case '0':\r\n return 'Off';\r\n case '1':\r\n return 'Expired';\r\n case '2':\r\n return 'Check';\r\n case '3':\r\n return 'Passed';\r\n case '4':\r\n return 'Running';\r\n case '5':\r\n return 'Unknown';\r\n }\r\n return TripWiseStatusDescription;\r\n }\r\n else {\r\n\r\n if (params.node.data.DimiMode != null && params.node.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n TripWiseStatusDescription = 'Off';\r\n }\r\n else if (params.node.data.DimiMode != null && params.node.data.DimiMode.toUpperCase().trim() == \"ON\") {\r\n\r\n if (params.node.data.DimiResultActuator == \"Passed\" && params.node.data.DimiResultAlarm == \"Passed\" &&\r\n params.node.data.DimiResultOOR == \"Passed\" && params.node.data.DimiResultTerm == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((params.node.data.DimiResultTerm == \"Failed\") &&\r\n (params.node.data.DimiResultActuator == \"Passed\" || params.node.data.DimiResultActuator == \"Unknown\") &&\r\n (params.node.data.DimiResultAlarm == \"Passed\" || params.node.data.DimiResultAlarm == \"Unknown\") &&\r\n (params.node.data.DimiResultOOR == \"Passed\" || params.node.data.DimiResultOOR == \"Unknown\")) {\r\n TripWiseStatusDescription = \"Expired\";\r\n }\r\n else if ((params.node.data.DimiResultActuator == \"Unknown\" || params.node.data.DimiResultAlarm == \"Unknown\"\r\n || params.node.data.DimiResultOOR == \"Unknown\" || params.node.data.DimiResultTerm == \"Unknown\") &&\r\n (params.node.data.DimiResultActuator != \"Failed\" && params.node.data.DimiResultAlarm != \"Failed\" &&\r\n params.node.data.DimiResultOOR != \"Failed\" && params.node.data.DimiResultTerm != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (params.node.data.DimiResultActuator == \"Failed\" || params.node.data.DimiResultAlarm == \"Failed\" || params.node.data.DimiResultOOR == \"Failed\") {\r\n TripWiseStatusDescription = \"Check\";\r\n }\r\n }\r\n }\r\n return TripWiseStatusDescription;\r\n },\r\n \r\n HumiditySettingFormatterforExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.Humidity != null && params.Humidity != '' && params.Humidity != '-NA-') {\r\n if (params.Humidity.toString().trim() == \"0\" || params.HumiditySetpointStatus == \"O\")\r\n return \"Off\";\r\n else if (params.Humidity.toString().trim() == \"-999\" || params.Humidity.toString() == \"OOR\") // WI 26545\r\n return \"OOR\";\r\n else\r\n return parseFloat(params.Humidity).toFixed(1).toString();\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n FillLevelGalTraceFormatterforExcel: (params) => {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor != undefined\r\n && params.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params != null && params != undefined && params != '') {\r\n var tempRoundingValue = \"2\";\r\n if (params.FuelLevelQualifier != null && ((params.FuelLevelQualifier == 'A') || (params.FuelLevelQualifier == 'P'))) {\r\n return (params.FuelLevel != null) ? parseFloat(params.FuelLevel.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n }\r\n else {\r\n return params.FuelLevelQualifierDesc;\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n },\r\n BattVoltageFormatterforExcel: (params) => {\r\n /*if (params != null && params != undefined) {\r\n var tempRoundingValue = \"1\";\r\n return (params != null) ? parseFloat(params.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n */\r\n if (params != null && params != undefined && params!=-999) {\r\n //var tempRoundingValue = \"1\";\r\n //return (params != null) ? parseFloat(params.toFixed(parseInt(tempRoundingValue))) :'-NA-';\r\n return parseFloat(params).toFixed(1).toString();\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n FillLevelTraceFormatterforExcel: (params) => {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor != undefined\r\n && params.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.FuelLevelQualifier != null && ((params.FuelLevelQualifier == 'A') || (params.FuelLevelQualifier == 'P'))) {\r\n if (params.FractionDisplay != null) {\r\n return '\\t' + params.FractionDisplay;\r\n }\r\n else {\r\n if (params.FuelLevelPct != null) {\r\n var tempRoundingValue = \"2\";\r\n return parseFloat(params.FuelLevelPct.toFixed(parseInt(tempRoundingValue))) + \" %\";\r\n }\r\n else {\r\n return \"Fuel Reading Unavailable\";\r\n }\r\n }\r\n }\r\n else {\r\n if (params.FuelLevelQualifier == \"S\")\r\n return \"Sensor Error\";\r\n else\r\n return params.FuelLevelQualifierDesc;\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n },\r\n FuelSensorTraceFormatterforExcel: (params) => {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor != undefined\r\n && params.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.FuelLevelQualifier == \"\" || params.FuelLevelQualifier == null) {\r\n return \"-NA-\";\r\n }\r\n else {\r\n\r\n if (params.FuelLevelQualifier == \"C\" || params.FuelLevelQualifier == \"N\" || params.FuelLevelQualifier == \"S\" || params.FuelLevelQualifier == \"U\") {\r\n return params.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n return \"Present\";\r\n }\r\n\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n },\r\n GeofenceCoordinatesFormatter: (params) => {\r\n var coordinates = '';\r\n var lstCoordinates = params.value;\r\n $.each(lstCoordinates, function (index, value) {\r\n coordinates += value.Latitude + ', ' + value.Longitude + '; ';\r\n });\r\n\r\n return coordinates;\r\n }, \r\n GeofenceCoordinatesFormatterforExcel: (params) => {\r\n var coordinates = '';\r\n var lstCoordinates = params;\r\n $.each(lstCoordinates, function (index, value) {\r\n coordinates += value.Latitude + ', ' + value.Longitude + '; ';\r\n });\r\n\r\n return coordinates;\r\n },\r\n \r\n ControlledAtmosphereModeforExcel: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.ControlledAtmosphereMode != null && params.ControlledAtmosphereMode != '-NA-' && params.ControlledAtmosphereMode != undefined && params.ControlledAtmosphereMode != '') {\r\n if (params.ReeferOEMTypeCd != null && params.ReeferOEMTypeCd != '') {\r\n if (params.ReeferOEMTypeCd.trim() == 'S') {\r\n\r\n if (params.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"ON\")\r\n return \"CA On\";\r\n else if (params.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"OFF\")\r\n return \"Off\";\r\n else if (params.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"AV\")\r\n return \"AV On\";\r\n else if (params.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"AVPLUS\")\r\n return \"AV+ On\";\r\n else\r\n return params.ControlledAtmosphereMode.toString();\r\n }\r\n else if (params.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"UNITOFF\")\r\n return \"Unit Off\";\r\n else\r\n return params.ControlledAtmosphereMode.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n YearFromdateTypeFormatterForExcel: (params) => {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n var eventdttm = new Date(params.toString().trim());\r\n return eventdttm.getFullYear();\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n YearFromdateTypeFormatterForExcelNew: (params) => {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n YearFromdateTypeFormatter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ManufacturedDate != null && params.data.ManufacturedDate != undefined) {\r\n var eventdttm = new Date(params.data.ManufacturedDate.toString());\r\n return eventdttm.getFullYear();\r\n }\r\n }\r\n\r\n return '-NA-';\r\n },\r\n YearFromdateTypeFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ManufacturedDate != null && params.data.ManufacturedDate != undefined) {\r\n var eventdttm = new Date(params.data.ManufacturedDate.toString());\r\n return eventdttm.getFullYear();\r\n }\r\n }\r\n\r\n return '-NA-';\r\n },\r\n ManufactureYearSorting: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ManufacturedDate != null && params.data.ManufacturedDate != undefined) {\r\n var eventdttm = new Date(params.data.ManufacturedDate.toString());\r\n return eventdttm.getFullYear();\r\n }\r\n }\r\n\r\n return 0;\r\n },\r\n \r\n CopyCommandFormatters(params) {\r\n if (params != null && params != undefined && !params.node.group && params.column != null && params.column != undefined && params.column.colId != null && params.column.colId != undefined) {\r\n var returnValue = \" \";\r\n switch (params.column.colId) {\r\n\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID': case 'Value1':\r\n case 'Value3': case 'Value4':\r\n {\r\n if (params.value == undefined || params.value == \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'LineFrequency': \r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'TemperatureUnit': case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorTemp': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.TemperatureFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = this.TemperatureFormatterForDeviceTemp(params);//RCNG-1099\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case \"DLEventDTTM\":\r\n {\r\n returnValue = this.dateTypeFormatterforCopy(params.value);\r\n }\r\n break\r\n case 'Name': case 'Description': case 'RCDBootloaderVersion': case 'PTResult': case 'VesselCd': case 'DeviceType':\r\n case 'GeofenceTag': case 'VesselName': case 'Origin': case 'Handler': case 'TripStatusCdAndDFlag':\r\n case 'UserName': case 'TagName': case 'Created': case 'DeploymentName': case 'CreatedBy': case 'ModifiedBy': case 'SubmittedBy':\r\n case 'FullName': case 'Zip': case 'CCSeverityLevelGenset': case 'OEMModel':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.stringTypeFormatterChildFormsForCopy(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n\r\n case 'CommentExists': case 'CommentExistsGenset': case 'CommentExistsDC': case 'CommentExistsChassis':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.CommentExistsforExcel(params.value);\r\n }\r\n break;\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasOilPressureSwitch': case 'DCXDownloads':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n returnValue = this.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n case 'DryGPSHDOP': case 'DryGPSSatelliteCount': case 'ChassisGPSHDOP': case 'ChassisGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.GPSfloatTypeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'ExtBattVoltage': case 'BattVoltage': case 'DeviceBattery':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'DrySpeed': case 'ChassisSpeed': case 'Speed':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.SpeedConverterforExcel(params.value);\r\n }\r\n break;\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) returnValue = this.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n case 'RunState': if (params.value != undefined && params.value != null) returnValue = this.RunStateFormatterGroupingForExcel(params.value);\r\n break;\r\n case 'R_HighestSeverityLevel': {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.statusIndicatorforALMforExcel(params.value);\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = this.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlertSeverityID': if (params.value != undefined && params.value != null) returnValue = this.statusIndicatorforALRforExcel(params.value); break;\r\n case 'IsOnVessel': if (params.value != undefined && params.value != null) returnValue = this.isOnVesselFormatterChildForms(params.value); break;\r\n case 'GPSLastLock': if (params.value != undefined && params.value != null) returnValue = this.secondsToTimeConverterForExcel(params.node.data.GPSLastLock); break;\r\n case 'AlarmsList': if (params.value != undefined && params.value != null) returnValue = this.AlarmListFormatterforExcel(params.value); break;\r\n case 'TemperatureUnit': if (params.value != undefined && params.value != null) returnValue = this.TemperatureFormatterForBookingforExcel(params.value); break;\r\n case 'ThreePhaseCurrent': if (params.value != undefined && params.value != null) returnValue = this.Current3PhaseFormatterforExcel(params.value); break;\r\n case 'FilerepositoryActionCD': if (params.value != undefined && params.value != null) returnValue = this.GetFileRepositoryActionDesc(params.value); break;\r\n case 'GeofenceCategoryCd': if (params.value != undefined && params.value != null) returnValue = this.fenceTypeFormatterForExcel(params.value); break;\r\n case 'IgnitionOn': if (params.value != undefined && params.value != null) returnValue = this.gensetSwitchFormatterForExcel(params.value); break;\r\n case 'BatteryStatus': if (params.value != undefined && params.value != null) returnValue = this.dryPwrStateFormatterForExcel(params.node.data.BatteryStatus); break;\r\n case 'ChassisBatteryStatus': if (params.value != undefined && params.value != null) returnValue = this.ChassisBatteryStatusFormatterForExcel(params.node.data.ChassisBatteryStatus); break;\r\n case 'BreakSignal': if (params.value != undefined && params.value != null) returnValue = this.BrakeSignalFormatterForExcel(params.value); break;\r\n case 'TripWiseExpiration': if (params.value != undefined && params.value != null) returnValue = this.TripWiseExpirationFormatterforExcel(params.value); break; //RCNG-169\r\n case 'CustomerName': if (params.value != undefined && params.value != null) returnValue = this.stringTypeFormatterFor3PExcel(params.value); break;\r\n case 'TWState': if (params.value != undefined && params.value != null) returnValue = this.tripWiseFormatterForExcel(params); break;\r\n case 'PWR': if (params.value != undefined && params.value != null) returnValue = this.pwrStateFormatterChassisforExcel(params.value); break;\r\n case 'Loaded': if (params.value != undefined && params.value != null) returnValue = this.LoadedFormatterForExcel(params.value); break;\r\n case \"RSSI\": if (params.value != undefined && params.value != null) returnValue = this.RSSIFormatterGroupingForExcel(params.value); break;\r\n case \"GPSCoords\": if (params.value != undefined && params.value != null) returnValue = this.GPSCoordsFormatterForGrid(params.value); break; \r\n case 'FractionDisplay': {\r\n\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var FuelLevelQualifier;\r\n if (params.node.data != undefined\r\n && params.node.data != null) {\r\n FuelLevelQualifier = params.node.data.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var HasFuelSensor;\r\n if (params.node.data != undefined\r\n && params.node.data != null) {\r\n HasFuelSensor = params.node.data.HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = \"\";\r\n }\r\n\r\n }\r\n\r\n\r\n var isFuelinfo = {\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FractionDisplay: params.value,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null && HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = this.FillLevelTraceFormatterforExcel(isFuelinfo);\r\n }\r\n case 'HasFuelSensor': {\r\n if (params.node.data != undefined\r\n && params.node.data != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.data != undefined\r\n && params.node.data != null) {\r\n FuelLevelQualifier = params.node.data.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var FuelLevelQualifierDesc;\r\n if (params.node.data != undefined\r\n && params.node.data != null) {\r\n FuelLevelQualifierDesc = params.node.data.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n\r\n var isFuelinfo2 = {\r\n HasFuelSensor: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc\r\n };\r\n\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null)\r\n returnValue = this.FuelSensorTraceFormatterforExcel(isFuelinfo2);\r\n }\r\n break;\r\n }\r\n case 'ManufacturedDate':\r\n {\r\n if (params.value != undefined && params.value != null) returnValue = this.YearFromdateTypeFormatterForExcelNew(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = this.AssetTypeFormatterForExcel(params.value); break;\r\n case 'PreTrip': {\r\n if (params.value != undefined && params.value != null) {\r\n if (this.state.formName == \"PreTrip\")\r\n returnValue = this.PTIStateforExcel(params.value);\r\n else\r\n returnValue = this.stringTypeFormatterChildFormsForCopy(params.value);\r\n }\r\n }\r\n break;\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var IsCargoCare;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null) {\r\n // if (params.node.data != undefined\r\n // && params.node.data != null)\r\n // IsCargoCare = params.node.data.IsCargoCare;\r\n //}\r\n if (params.node != undefined && params.node != null && params.node.data != undefined && params.node.data != null)\r\n IsCargoCare = params.node.data.IsCargoCare;\r\n else {\r\n IsCargoCare = false;\r\n }\r\n if (IsCargoCare != undefined && IsCargoCare != null)\r\n returnValue = this.CargoCareFormatterforExcel({ isCargocare: IsCargoCare, CCSeverityLevel: params.value });\r\n }\r\n }\r\n break;\r\n case 'Door1Open':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = this.DoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Humidity':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n HumiditySetpointStatus = params.node.data.HumiditySetpointStatus;\r\n }\r\n else {\r\n HumiditySetpointStatus = \"\";\r\n }\r\n\r\n if (HumiditySetpointStatus != undefined && HumiditySetpointStatus != null)\r\n returnValue = this.HumiditySettingFormatterforExcel({ Humidity: params.value, HumiditySetpointStatus: HumiditySetpointStatus });\r\n }\r\n }\r\n break;\r\n case 'ControlledAtmosphereMode': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n ReeferOEMTypeCd = params.node.data.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = this.ControlledAtmosphereModeforExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, ControlledAtmosphereMode: params.value });\r\n }\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n ReeferOEMTypeCd = params.node.data.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n SuctionModulationValveOpeningQualifier = params.node.data.SuctionModulationValveOpeningQualifier;\r\n }\r\n else {\r\n SuctionModulationValveOpeningQualifier = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.value\r\n };\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null && SuctionModulationValveOpeningQualifier != undefined && SuctionModulationValveOpeningQualifier != null)\r\n returnValue = this.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n }\r\n break;\r\n case 'CondenserPressure': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n ReeferOEMTypeCd = params.node.data.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = this.sensorDataPCondFormatterExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, CondenserPressure: params.value });\r\n }\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n ReeferOEMTypeCd = params.node.data.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n var EEVData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.value\r\n };\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = this.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n }\r\n break;\r\n case 'GensetRunning': {\r\n if (params.value != undefined && params.value != null) {\r\n var HasOilPressureSwitch;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n HasOilPressureSwitch = params.node.data.HasOilPressureSwitch;\r\n }\r\n else {\r\n HasOilPressureSwitch = false;\r\n }\r\n\r\n if (HasOilPressureSwitch != undefined && HasOilPressureSwitch != null)\r\n returnValue = this.gensetRunningFormatterforExcel({ GensetRunning: params.value, HasOilPressureSwitch: HasOilPressureSwitch });\r\n }\r\n }\r\n break;\r\n case 'FuelLevel':{\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n FuelLevelQualifier = params.node.data.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n FuelLevelQualifierDesc = params.node.data.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n \r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n HasFuelSensor = params.node.data.HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo3 = {\r\n FuelLevel: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n FuelLevelQualifierDesc != undefined && FuelLevelQualifierDesc != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = this.FillLevelGalTraceFormatterforExcel(isFuelinfo3);\r\n }\r\n }\r\n break;\r\n case 'FractionDisplay': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n FuelLevelQualifier = params.node.data.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n FuelLevelQualifierDesc = params.node.data.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n var FractionDisplay;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n FractionDisplay = params.node.data.FractionDisplay;\r\n }\r\n else {\r\n FractionDisplay = false;\r\n }\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n HasFuelSensor = params.node.data.HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo4 = {\r\n FuelLevel: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc,\r\n FractionDisplay: FractionDisplay,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n FuelLevelQualifierDesc != undefined && FuelLevelQualifierDesc != null &&\r\n FractionDisplay != undefined && FractionDisplay != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = this.FillLevelGalTraceFormatterforExcel(isFuelinfo4);\r\n }\r\n }\r\n break;\r\n case 'DevicePowerSourceCd': {\r\n if (params.value != undefined && params.value != null) {\r\n var DeviceConfig;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n DeviceConfig = params.node.data.DeviceConfig;\r\n }\r\n else {\r\n DeviceConfig = false;\r\n }\r\n\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n DeviceType = params.node.data.DeviceType;\r\n }\r\n else {\r\n DeviceType = \"\";\r\n }\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: DeviceType\r\n };\r\n returnValue = this.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'Door1OpenChassis': {\r\n if (params.value != undefined && params.value != null) {\r\n var HasDoorSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node.data != undefined\r\n && params.node.data != null) {\r\n HasDoorSensor = params.node.data.HasDoorSensor;\r\n }\r\n else {\r\n HasDoorSensor = false;\r\n }\r\n\r\n var door1ChassisStateFormatter = {\r\n HasDoorSensor: HasDoorSensor,\r\n Door1OpenChassis: params.value\r\n };\r\n\r\n if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n returnValue = this.DoorFormatterChassisforExcel(door1ChassisStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'HumiditySetpoint':\r\n {\r\n returnValue = this.HumiditySetpointForExcel(params.value);\r\n }\r\n break;\r\n default: {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n returnValue = params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n },\r\n\r\n pwrStateFormatter: (params) => {\r\n var element = document.createElement(\"span\");\r\n var imageElement = document.createElement(\"img\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\") {\r\n if (params.data.AssetType != null && params.data.AssetType != undefined && params.data.AssetType.toString().toUpperCase().trim() == \"C\") {\r\n if (params.data.ChassisPWR != null && params.data.ChassisPWR != undefined && params.data.ChassisPWR.toString().toUpperCase().trim() == \"A\") {\r\n element.className = \"PlugSolid\";\r\n element.title = \"Powered\"\r\n imageElement.src = PlugSolid;\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\") {\r\n element.className = \"pwr_grid_icon\";\r\n element.title = \"Critical\"\r\n imageElement.src = batterycritical;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"L\") {\r\n element.className = \"pwr_grid_icon\";\r\n element.title = \"Low\"\r\n imageElement.src = batterylow;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"N\") {\r\n element.className = \"pwr_grid_icon\";\r\n element.title = \"Normal\"\r\n imageElement.src = batterynormal;\r\n }\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\") {\r\n element.className = \"pwr_grid_icon\";\r\n element.title = \"Critical\"\r\n imageElement.src = batterycritical;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"L\") {\r\n element.className = \"pwr_grid_icon\";\r\n element.title = \"Low\"\r\n imageElement.src = batterylow;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"N\") {\r\n element.className = \"pwr_grid_icon\";\r\n element.title = \"Normal\"\r\n imageElement.src = batterynormal;\r\n }\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n }\r\n else if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"B\") {\r\n element.className = \"BatteryIndicator\";\r\n element.title = \"On Battery\"\r\n imageElement.src = BatteryIndicator;\r\n }\r\n else if (params.data.DeviceConfig.toString().toUpperCase().trim() == \"TRUE\" && params.data.DevicePowerSourceCd == \"A\") {\r\n element.className = \"DualColorBattery\";\r\n element.title = \"Charging\"\r\n imageElement.src = DualColorBattery;\r\n }\r\n else {\r\n element.className = \"PlugSolid\";\r\n element.title = \"Powered\"\r\n imageElement.src = PlugSolid;\r\n }\r\n\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n\r\n }\r\n\r\n return '-NA-';\r\n },\r\n\r\n PwrSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\") {\r\n if (params.data.AssetType != null && params.data.AssetType != undefined && params.data.AssetType.toString().toUpperCase().trim() == \"C\") {\r\n if (params.data.ChassisPWR != null && params.data.ChassisPWR != undefined && params.data.ChassisPWR.toString().toUpperCase().trim() == \"A\") {\r\n return \"1\";\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\")\r\n return \"4\";\r\n else if (params.data.DevicePowerSourceCd == \"L\")\r\n return \"5\";\r\n else if (params.data.DevicePowerSourceCd == \"N\")\r\n return \"6\";\r\n }\r\n }\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\")\r\n return \"4\";\r\n else if (params.data.DevicePowerSourceCd == \"L\")\r\n return \"5\";\r\n else if (params.data.DevicePowerSourceCd == \"N\")\r\n return \"6\";\r\n }\r\n }\r\n }\r\n else if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"B\")\r\n return \"2\";\r\n else if (params.data.DeviceConfig.toString().toUpperCase().trim() == \"TRUE\" && params.data.DevicePowerSourceCd == \"A\")\r\n return \"3\";\r\n else\r\n return \"1\";\r\n }\r\n return \"7\";\r\n }\r\n },\r\n\r\n pwrStateFormatterForFilter: (params) => {\r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\") {\r\n if (params.data.AssetType != null && params.data.AssetType != undefined && params.data.AssetType.toString().toUpperCase().trim() == \"C\") {\r\n if (params.data.ChassisPWR != null && params.data.ChassisPWR != undefined && params.data.ChassisPWR.toString().toUpperCase().trim() == \"A\") {\r\n title = \"Powered\";\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\")\r\n title = \"Critical\";\r\n else if (params.data.DevicePowerSourceCd == \"L\")\r\n title = \"Low\";\r\n else if (params.data.DevicePowerSourceCd == \"N\")\r\n title = \"Normal\";\r\n }\r\n }\r\n\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\")\r\n title = \"Critical\";\r\n else if (params.data.DevicePowerSourceCd == \"L\")\r\n title = \"Low\";\r\n else if (params.data.DevicePowerSourceCd == \"N\")\r\n title = \"Normal\";\r\n }\r\n }\r\n }\r\n else if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"B\") {\r\n title = \"On Battery\";\r\n }\r\n else if (params.data.DeviceConfig.toString().toUpperCase().trim() == \"TRUE\" && params.data.DevicePowerSourceCd == \"A\") {\r\n title = \"Charging\";\r\n }\r\n else {\r\n title = \"Powered\";\r\n }\r\n }\r\n return title;\r\n }\r\n },\r\n\r\n runStateFormatter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.RunState != null && params.data.RunState != undefined) {\r\n if ((params.data.RunState.toString().toUpperCase().trim()) == 'I')\r\n return params.value = '';\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'S')\r\n return params.value = '';\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'X')\r\n return params.value = '';\r\n\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'O')\r\n return params.value = '';\r\n\r\n else\r\n return '-NA-';\r\n\r\n }\r\n\r\n return '-NA-';\r\n }\r\n },\r\n\r\n commandStatusSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.Status != null && params.data.Status != \"\" && params.data.Status != undefined) {\r\n var commandStatus = params.data.Status.toUpperCase().trim(); \r\n if (commandStatus == 'COMMANDACCEPTEDBYBUSYRCD')\r\n return \"1\";\r\n else if (commandStatus == 'COMMANDACCEPTEDBYRCD')\r\n return \"10\";\r\n else if (commandStatus == 'AWAITINGPREREQUISITES')\r\n return \"11\";\r\n else if (commandStatus == 'CANCELLED')\r\n return \"12\";\r\n else if (commandStatus == 'SYNCCANCELLED')\r\n return \"13\";\r\n else if (commandStatus == 'CANCELLATIONREQUEST')\r\n return \"14\";\r\n else if (commandStatus == 'DISCARDED')\r\n return \"15\"; \r\n else if (commandStatus == 'ERROR')\r\n return \"16\";\r\n else if (commandStatus == 'SYNCERROR')\r\n return \"17\"; \r\n else if (commandStatus == 'ISSUED')\r\n return \"18\";\r\n else if (commandStatus == 'PENDING')\r\n return \"19\";\r\n else if (commandStatus == 'AWAITINGSYNC')\r\n return \"2\";\r\n else if (commandStatus == 'RETRY')\r\n return \"20\";\r\n else if (commandStatus == 'REJECTED')\r\n return \"21\";\r\n else if (commandStatus == 'SUCCESS')\r\n return \"3\";\r\n else if (commandStatus == 'UNDELIVERABLE')\r\n return \"4\";\r\n else if (commandStatus == 'UNKNOWN')\r\n return \"5\"; \r\n else if (commandStatus == 'VALIDATIONPENDING')\r\n return \"6\"; \r\n else if (commandStatus == 'SENTTOVC')\r\n return \"7\"; \r\n else if (commandStatus == 'EXPIRED')\r\n return \"8\";\r\n else\r\n return \"9\";\r\n }\r\n }\r\n },\r\n\r\n TripstatusIndicator: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var deviationFlg = '';\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n var imageElement = document.createElement(\"img\");\r\n var valueString = params.value.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n imageElement.src = TripInprogress;\r\n break;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n imageElement.src = TripCompletedDeviation; /* WI19591 checking Trip is deviated */\r\n else\r\n imageElement.src = TripCompleted;\r\n break;\r\n case 'D':\r\n imageElement.src = TripProblemetic;\r\n break;\r\n case 'P':\r\n imageElement.src = TripPending;\r\n break;\r\n case 'R':\r\n imageElement.src = TripDeleted;\r\n break;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n imageElement.src = TripCancelDeviation; /* WI19591 checking Trip is deviated */\r\n else\r\n imageElement.src = TripCancel;\r\n break;\r\n default:\r\n break;\r\n\r\n }\r\n }\r\n\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n return '-NA-';\r\n },\r\n\r\n TripSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != undefined && params.data != null) {\r\n if (params.data.TripStatusCdAndDFlag != null && params.data.TripStatusCdAndDFlag != undefined) {\r\n return params.data.TripStatusCdAndDFlag;\r\n }\r\n }\r\n }\r\n\r\n return '-NA-';\r\n },\r\n\r\n gensetSwitchFormatterImg: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.IgnitionOn != null && params.data.IgnitionOn != undefined) {\r\n if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"TRUE\")\r\n return '
';\r\n else if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"FALSE\")\r\n return '
';\r\n else\r\n return '';\r\n }\r\n //return params.value;\r\n }\r\n\r\n return '';\r\n },\r\n\r\n gensetRunningFormatter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.HasOilPressureSwitch != null && params.data.GensetRunning != null) {\r\n if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n if (params.data.OEMTypeCD != null && params.data.OEMTypeCD.toString().toUpperCase().trim() == \"C\") {\r\n return '';\r\n }\r\n else {\r\n if (params.data.GensetRunning.toString().toUpperCase().trim() == \"0\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"FALSE\")\r\n imageElement.src = NotRunning; //No\r\n else if (params.data.GensetRunning.toString().toUpperCase().trim() == \"1\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"TRUE\")\r\n imageElement.src = Running; //Yes\r\n else\r\n return '';\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n else\r\n return '';\r\n }\r\n else\r\n return '';\r\n }\r\n else\r\n return '';\r\n },\r\n TempSensorHeaderFormatter: (params) => {\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (params.colDef.headerName != null && params.colDef.headerName != \"\") {\r\n if (tempUnitCd.toUpperCase() == \"F\")\r\n return params.colDef.headerName + \" (°F)\";\r\n else\r\n return params.colDef.headerName + \" (°C)\";\r\n }\r\n },\r\n TemperatureValueFormatter: (params) => {\r\n \r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n //var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n \r\n var tempVal = parseFloat(params.value);\r\n\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n\r\n TemperatureSensorValueFormatter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n //var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n {\r\n if (params.colDef.headerClass != null && params.colDef.headerClass != undefined)\r\n return params.colDef.headerClass;\r\n else\r\n return \"OOR\";\r\n }\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n\r\n TemperatureSensorFormatterForExcel: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n //var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n {\r\n if (params.column.colDef.headerClass != null && params.column.colDef.headerClass != undefined)\r\n return params.column.colDef.headerClass;\r\n else\r\n return \"OOR\";\r\n }\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n\r\n TemperatureSensorGroupingForExcel: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n //var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n {\r\n if (params.column.colDef.headerClass != null && params.column.colDef.headerClass != undefined)\r\n return params.column.colDef.headerClass;\r\n else\r\n return \"OOR\";\r\n }\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n }, \r\n //WI26638 GT 1030 for Chassis, Dry and Genset asset types\r\n SensorGrouping: (fieldName, value, sensorData, params) => {\r\n if (sensorData != undefined && sensorData != null && sensorData.length > 0 && fieldName != null && fieldName != undefined && value != null && value != undefined && params != null && params != undefined) {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n var name = fieldName.split(\"_\");\r\n var field = name[0];\r\n var deviceType = name[1];\r\n\r\n var sensorcolumn = sensorData.filter(x => x.FieldName == field && x.DeviceTypeCd.trim() == deviceType.trim());\r\n if (sensorcolumn[0] != undefined && sensorcolumn[0] != null) {\r\n if (sensorcolumn[0].SensorTypeCd.trim() == \"T\") {\r\n if (value.toString().trim() == \"-999\") {\r\n if (params.headerClass != undefined && params.headerClass != null)\r\n return params.headerClass;\r\n else\r\n return \"OOR\";\r\n }\r\n else {\r\n var tempVal = parseFloat(value);\r\n\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue))).toFixed(1).toString();//26528\r\n }\r\n }\r\n else {\r\n if (value.toString().trim() == \"-999\") {\r\n if (params.headerClass != undefined && params.headerClass != null)//RCNG-232\r\n return params.headerClass;//RCNG-232\r\n else\r\n return \"OOR\";\r\n }\r\n else { \r\n if (!isNaN(value)) {//RCNG-230\r\n var tempRoundingValueDigital = \"1\";\r\n return (value != null) ? parseFloat(parseInt(value).toFixed(parseInt(tempRoundingValueDigital))).toFixed(1).toString() : \"-NA-\";\r\n }\r\n else\r\n return (value != null) ? value : \"-NA-\";//RCNG-230\r\n }\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n\r\n HumiditySetpointGrouping: (params, humiditySetpointStatus) => {\r\n if(humiditySetpointStatus != null && humiditySetpointStatus != '') {\r\n if(humiditySetpointStatus.toUpperCase().trim() == \"OFF\" || humiditySetpointStatus == \"O\")//RCNG-4689\r\n return \"Off\";\r\n } \r\n if (params != null && params != undefined && params != '-NA-') {\r\n if (params.toString().trim() == \"0\")\r\n return \"Off\";\r\n //else if (params.toString().trim() == \"-999\")\r\n // return \"OOR\";\r\n else if (params > 0 && params <= 100)\r\n return parseFloat(params).toFixed(1).toString();\r\n else\r\n return \"OOR\";\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n HumiditySetpointForExcel: (params, humiditySetpointStatus) => {\r\n if(humiditySetpointStatus != null && humiditySetpointStatus != '') {\r\n if(humiditySetpointStatus.toUpperCase().trim() == \"OFF\" || humiditySetpointStatus == \"O\")//RCNG-4689\r\n return \"Off\";\r\n }\r\n if (params != null && params != undefined && params !='-NA-') {\r\n if (params.toString().trim() == \"0\")\r\n return \"Off\";\r\n //else if (params.toString().trim() == \"-999\")\r\n // return \"OOR\";\r\n else if (params > 0 && params <= 100)\r\n return parseFloat(params).toFixed(1).toString();\r\n else\r\n return \"OOR\";\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n TripWiseStatusGrouping: (param) => {\r\n if (param != null && param != undefined && param != \"null\") {\r\n switch (param) {\r\n case 'Off':\r\n return '' + \" \" + \"Off\";\r\n case 'Expired':\r\n return '' + \" \" + \"Expired\";\r\n case 'Check':\r\n return '' + \" \" + \"Check\";\r\n case 'Passed':\r\n return '' + \" \" + \"Passed\";\r\n case 'Running':\r\n return '' + \" \" + \"Running\";\r\n case 'Unknown':\r\n return '' + \" \" + \"Unknown\";\r\n }\r\n }\r\n },\r\n debounce: (func, wait) => {\r\n let timeout;\r\n return function () {\r\n const context = this;\r\n const args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n func.apply(context, args);\r\n };\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n\r\n if (!timeout) {\r\n func.apply(context, args);\r\n }\r\n };\r\n },\r\n EverFreshFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"On\";\r\n else if (param == 2)\r\n return \"Off\";\r\n else if (param == 3)\r\n return \"*No EverFRESH\"\r\n }\r\n },\r\n EverFreshFormatterExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"On\";\r\n else if (param == 2)\r\n return \"Off\";\r\n else \r\n return \"-NA-\"\r\n }\r\n },\r\n //RCNG-2227,2228\r\n DoorBattPctFormatterforExcel: (params) => { \r\n if (params != null && params != undefined && params >= 0 && params != \"-NA-\") {\r\n var battPct = parseFloat(params).toFixed(1).toString();\r\n return battPct;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n ReeferBattPctFormatterforExcel: (params, deviceType) => {\r\n if (deviceType != null && deviceType != undefined) {\r\n if (deviceType.trim() == 'CT3600' && params != null && params != undefined && params >= 0 && params != \"-NA-\") {\r\n var battPct = parseFloat(params).toFixed(1).toString();\r\n return battPct;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n DoorBattPctHeaderFormatter: (params) =>\r\n {\r\n //var a = params;\r\n \r\n if (params != null && params != \"\") \r\n return params + \" (%)\";\r\n else\r\n return params;\r\n },\r\n GPSAcctypeSorting: (params) =>\r\n {\r\n //debugger;\r\n if (params != null && params != undefined && params != '-NA-') {\r\n if (params.toString().trim() == \"-999\") {\r\n return \"OOR\";\r\n }\r\n else {\r\n return (params != null) ? params.toString() : \"-NA-\";\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n //RCNG-4478\r\n doorBattPctSorting: (params) => { \r\n if (params.data != null && params.data != undefined) {\r\n if(params.data.AssetType !=null && params.data.AssetType !=undefined && params.data.AssetType !=\"\") {\r\n if(params.data.AssetType.toUpperCase().trim() == \"D\") {\r\n if (params.data.DoorSensorBatteryVoltage != null && params.data.DoorSensorBatteryVoltage != undefined) {\r\n var battPct = (Math.round(params.data.DoorSensorBatteryVoltage / 10.0)) * 10;\r\n return battPct.toString();\r\n }\r\n return \"-1\";\r\n }\r\n else { \r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.DoorSensorBatteryVoltage != null) ? parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue))) : -999;\r\n if (params.data.DoorSensorBatteryVoltage != null) {\r\n var val = parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return - 999;\r\n }\r\n else\r\n return -999;\r\n }\r\n else\r\n return -999;\r\n }\r\n }\r\n else\r\n {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n var tempRoundingValue = \"1\";\r\n //return (params.data.DoorSensorBatteryVoltage != null) ? parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue))) : -999;\r\n if (params.data.DoorSensorBatteryVoltage != null) {\r\n var val = parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return - 999;\r\n }\r\n else\r\n return -999;\r\n }\r\n else\r\n return -999;\r\n }\r\n }\r\n else\r\n return \"-1\";\r\n },\r\n doorBattPctFormatterFilter: (params) => { \r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if(params.data.AssetType !=null && params.data.AssetType !=undefined && params.data.AssetType !=\"\") {\r\n if(params.data.AssetType.toUpperCase().trim() == \"D\") {\r\n if (params.data.DoorSensorBatteryVoltage != null && params.data.DoorSensorBatteryVoltage != undefined) {\r\n var battPct = (Math.round(params.data.DoorSensorBatteryVoltage / 10.0)) * 10;\r\n title = battPct.toString();\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.DoorSensorBatteryVoltage != null && params.data.DoorSensorBatteryVoltage != undefined) {\r\n var tempRoundingValue = \"1\";\r\n if (params.data.DoorSensorBatteryVoltage != null) {\r\n var val = parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n else {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.DoorSensorBatteryVoltage != null && params.data.DoorSensorBatteryVoltage != undefined) {\r\n var tempRoundingValue = \"1\";\r\n if (params.data.DoorSensorBatteryVoltage != null) {\r\n var val = parseFloat(params.data.DoorSensorBatteryVoltage.toFixed(parseInt(tempRoundingValue)));\r\n return val.toFixed(parseInt(tempRoundingValue));\r\n }\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n } \r\n }\r\n else\r\n title = \"-NA-\";\r\n\r\n return title;\r\n },\r\n reeferBatteryPctSorting: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DeviceType != null && params.data.DeviceType != \"\" && params.data.DeviceType != undefined) {\r\n if (params.data.DeviceType.trim() == \"CT3600\" && params.data.ReeferBatteryPct != null && params.data.ReeferBatteryPct != undefined && params.data.ReeferBatteryPct >= 0) {\r\n var battPct = (Math.round(params.data.ReeferBatteryPct / 10.0)) * 10;\r\n return battPct.toString();\r\n }\r\n }\r\n return \"-1\";\r\n }\r\n return \"-1\";\r\n },\r\n reeferBatteryPctFormatterFilter: (params) => {\r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DeviceType != null && params.data.DeviceType != \"\" && params.data.DeviceType != undefined) {\r\n if (params.data.DeviceType.trim() == \"CT3600\" && params.data.ReeferBatteryPct != null && params.data.ReeferBatteryPct != undefined) {\r\n var battPct = (Math.round(params.data.ReeferBatteryPct / 10.0)) * 10;\r\n title = battPct.toString();\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n\r\n return title;\r\n }\r\n}\r\n\r\n\r\nexport default formatters;\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/100.0a496313.svg\";","import * as React from 'react';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from './../../RCUtils';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport moment from 'moment';\r\nimport Formatters from '../../actions/Formatters';\r\nimport $ from 'jquery';\r\nimport DateFormat from 'dateformat';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport Item from 'antd/lib/list/Item';\r\nimport { NewBookingCreate } from '../routecomponents/NewBookingCreate'\r\nimport { NewBookingEdit } from '../routecomponents/NewBookingEdit'\r\nimport { title } from 'process';\r\nimport lodashfilter from 'lodash/filter';\r\nimport uniq from 'lodash/uniq';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport forEach from 'lodash/forEach';\r\nimport { ViewBooking } from '../routecomponents/ViewBooking';\r\nvar Config: any = require('../../Config.json');\r\ninterface BookingState {\r\n BookingDetails: server.BookingDetails;\r\n BookingReefers: server.BookingSearchDetails;\r\n //CommonBookingData: server.CommonBookingData;\r\n rowData: server.bookingReefer[];\r\n suggestionsBookingNumber: any[];\r\n BookingList: any[];\r\n isBookingEdit: boolean;\r\n isAllBooking: number;\r\n BookingDesc: any\r\n RefVessels: server.vesselsList[];\r\n suggestionsVesselId: any[],\r\n suggestionsVoyage: any[],\r\n suggestionsCalls: any[],\r\n ArrsuggestionsVesselId: any[],\r\n ArrsuggestionsVoyage: any[],\r\n ArrsuggestionsCalls: any[],\r\n CopyBookingNumber: any;\r\n ReeferforCreate: any;\r\n UnitmasterId: any;\r\n formname: any;\r\n //PreferenceDTTM: any;\r\n isViewOnly: boolean;\r\n}\r\nvar emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '',\r\n VesselETD: null, //DateFormat(new Date(), 'mm/dd/yyyy HH:MM')\r\n VesselETA: null,//DateFormat(new Date(), 'mm/dd/yyyy HH:MM')\r\n BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '',\r\n BKCustomer:''\r\n\r\n};\r\nvar emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n}\r\nvar methodResult = true;\r\nvar TempBooking: any;\r\nvar self;\r\nexport class SpecificBookingDetails extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n emptyBookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '',\r\n VesselETD: null,//DateFormat(new Date(), 'mm/dd/yyyy HH:MM'),\r\n VesselETA: null,//DateFormat(new Date(), 'mm/dd/yyyy HH:MM'),\r\n BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '',\r\n BKCustomer:''\r\n };\r\n emptyBookingReefers = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n }\r\n var bookingDesc: any;\r\n if (!this.props.formState.isEdit && this.props.formState.BookingType == \"New Booking\")\r\n bookingDesc = 'Enter the booking data. This data applies to all of the booking’s reefers.';\r\n else if(this.props.formState.isEdit)\r\n bookingDesc = 'Update the booking data. This data applies to all of the booking’s reefers.';\r\n else\r\n bookingDesc = 'View the booking data. This data applies to all of the booking’s reefers.';\r\n this.state = {\r\n BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, rowData: [], suggestionsBookingNumber: [], BookingList: [], isBookingEdit: this.props.formState.isEdit, isAllBooking: this.props.formState.BookingCount,\r\n BookingDesc: bookingDesc //this.props.formState.isEdit ? 'Update the booking data. This data applies to all of the booking’s reefers.' : 'Enter the booking data. This data applies to all of the booking’s reefers.'\r\n , RefVessels: [], suggestionsVesselId: [], suggestionsVoyage: [], suggestionsCalls: [], ArrsuggestionsVesselId: [], ArrsuggestionsVoyage: [], ArrsuggestionsCalls: [], CopyBookingNumber: '', formname: this.props.formState.formname, ReeferforCreate: this.props.formState.ReeferforCreate, UnitmasterId: this.props.formState.UnitmasterId, isViewOnly: this.props.formState.isViewOnly\r\n };\r\n //if (this.props.formState.BookingCount == 0) {\r\n // $('#globalLoader').show();\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetAllBookings')\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // $('#globalLoader').hide();\r\n // if (data.length > 0) {\r\n // var BookingNumber = data.map(fence => fence.BookingNumber);\r\n // this.setState({\r\n // BookingList: data,\r\n // suggestionsBookingNumber: BookingNumber,\r\n // isAllBooking:1\r\n // });\r\n // }\r\n // });\r\n //}\r\n //else {\r\n // var BookingNumber = this.props.formState.AllBooking.map(fence => fence.BookingNumber);\r\n // this.setState({\r\n // BookingList: this.props.formState.AllBooking,\r\n // suggestionsBookingNumber: BookingNumber\r\n // });\r\n //}\r\n //getVVCInfo() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/Getvessels')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n this.setState({ RefVessels: data });\r\n }\r\n });\r\n // }\r\n self = this;\r\n }\r\n componentDidMount() {\r\n $(document).ready(function () {\r\n //var preloader = document.getElementById(\"preloader\");\r\n //preloader.classList.add(\"hidden\");\r\n $('#BookingSearch').bind('keypress', function (e) {\r\n if (e.keyCode === 13) {\r\n $('#button_login').trigger('click');\r\n }\r\n });\r\n });\r\n if (this.props.formState != null) {\r\n var BookingInfoDetails = emptyBookingDetails;\r\n\r\n BookingInfoDetails.Shipper = this.props.formState.BookingDetails.Shipper;\r\n BookingInfoDetails.Consignee = this.props.formState.BookingDetails.Consignee;\r\n BookingInfoDetails.ShipperCode = this.props.formState.BookingDetails.ShipperCode;\r\n BookingInfoDetails.POR = this.props.formState.BookingDetails.POR;\r\n BookingInfoDetails.POL = this.props.formState.BookingDetails.POL;\r\n BookingInfoDetails.POD = this.props.formState.BookingDetails.POD;\r\n BookingInfoDetails.VesselETD = this.props.formState.BookingDetails.VesselETD != null ? DateFormat(new Date(this.props.formState.BookingDetails.VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = this.props.formState.BookingDetails.VesselETA != null ? DateFormat(new Date(this.props.formState.BookingDetails.VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = this.props.formState.BookingDetails.BLNumber;\r\n BookingInfoDetails.ContractParty = this.props.formState.BookingDetails.ContractParty;\r\n BookingInfoDetails.Consolidation = this.props.formState.BookingDetails.Consolidation;\r\n BookingInfoDetails.Agent = this.props.formState.BookingDetails.Agent;\r\n BookingInfoDetails.VesselCode = this.props.formState.BookingDetails.VesselCode;\r\n BookingInfoDetails.VoyageNumber = this.props.formState.BookingDetails.VoyageNumber;\r\n BookingInfoDetails.Call = this.props.formState.BookingDetails.Call;\r\n BookingInfoDetails.Forwarder = this.props.formState.BookingDetails.Forwarder;\r\n BookingInfoDetails.Notify = this.props.formState.BookingDetails.Notify;\r\n BookingInfoDetails.BookingNumber = this.props.formState.BookingDetails.BookingNumber;\r\n BookingInfoDetails.DEL = this.props.formState.BookingDetails.DEL;\r\n BookingInfoDetails.SelectedVesselCD = this.props.formState.BookingDetails.SelectedVesselCD;\r\n BookingInfoDetails.SelectedCall = this.props.formState.BookingDetails.SelectedCall;\r\n BookingInfoDetails.SelectedVoyage = this.props.formState.BookingDetails.SelectedVoyage;\r\n BookingInfoDetails.ArrSelectedVesselCD = this.props.formState.BookingDetails.ArrSelectedVesselCD;\r\n BookingInfoDetails.ArrSelectedCall = this.props.formState.BookingDetails.ArrSelectedCall;\r\n BookingInfoDetails.ArrSelectedVoyage = this.props.formState.BookingDetails.ArrSelectedVoyage;\r\n BookingInfoDetails.userInput = this.props.formState.BookingDetails.userInput;\r\n BookingInfoDetails.IsVVCModified = this.props.formState.BookingDetails.IsVVCModified;\r\n BookingInfoDetails.BKCustomer = this.props.formState.BookingDetails.BKCustomer;\r\n var BookingReefersDetails = emptyBookingReefers;\r\n BookingReefersDetails.BookingReefers = this.props.formState.BookingReefers.BookingReefers;\r\n BookingReefersDetails.SelectedBookingReefers = this.props.formState.BookingReefers.SelectedBookingReefers;\r\n BookingReefersDetails.ReeferwithUnitID = this.props.formState.BookingReefers.ReeferwithUnitID;\r\n BookingReefersDetails.BookingNumber = this.props.formState.BookingReefers.BookingNumber;\r\n this.setState({ BookingDetails: BookingInfoDetails, BookingReefers: BookingReefersDetails, CopyBookingNumber: this.props.formState.CopyBookingNumber, rowData: self.props.formState.rowData });\r\n TempBooking = this.props.formState.BookingDetails.BookingNumber;\r\n }\r\n }\r\n componentWillReceiveProps(nextProps: any) {\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = nextProps.formState.BookingDetails.Shipper;\r\n BookingInfoDetails.Consignee = nextProps.formState.BookingDetails.Consignee;\r\n BookingInfoDetails.ShipperCode = nextProps.formState.BookingDetails.ShipperCode;\r\n BookingInfoDetails.POR = nextProps.formState.BookingDetails.POR;\r\n BookingInfoDetails.POL = nextProps.formState.BookingDetails.POL;\r\n BookingInfoDetails.POD = nextProps.formState.BookingDetails.POD;\r\n BookingInfoDetails.VesselETD = DateFormat(new Date(nextProps.formState.BookingDetails.VesselETD), 'mm/dd/yyyy HH:MM:ss');\r\n BookingInfoDetails.VesselETA = DateFormat(new Date(nextProps.formState.BookingDetails.VesselETA), 'mm/dd/yyyy HH:MM:ss');\r\n BookingInfoDetails.BLNumber = nextProps.formState.BookingDetails.BLNumber;\r\n BookingInfoDetails.ContractParty = nextProps.formState.BookingDetails.ContractParty;\r\n BookingInfoDetails.Consolidation = nextProps.formState.BookingDetails.Consolidation;\r\n BookingInfoDetails.Agent = nextProps.formState.BookingDetails.Agent;\r\n BookingInfoDetails.VesselCode = nextProps.formState.BookingDetails.VesselCode;\r\n BookingInfoDetails.VoyageNumber = nextProps.formState.BookingDetails.VoyageNumber;\r\n BookingInfoDetails.Call = nextProps.formState.BookingDetails.Call;\r\n BookingInfoDetails.Forwarder = nextProps.formState.BookingDetails.Forwarder;\r\n BookingInfoDetails.Notify = nextProps.formState.BookingDetails.Notify;\r\n BookingInfoDetails.DEL = nextProps.formState.BookingDetails.DEL;\r\n BookingInfoDetails.SelectedVesselCD = nextProps.formState.BookingDetails.SelectedVesselCD;\r\n BookingInfoDetails.SelectedCall = nextProps.formState.BookingDetails.SelectedCall;\r\n BookingInfoDetails.SelectedVoyage = nextProps.formState.BookingDetails.SelectedVoyage;\r\n BookingInfoDetails.ArrSelectedVesselCD = nextProps.formState.BookingDetails.ArrSelectedVesselCD;\r\n BookingInfoDetails.ArrSelectedCall = nextProps.formState.BookingDetails.ArrSelectedCall;\r\n BookingInfoDetails.ArrSelectedVoyage = nextProps.formState.BookingDetails.ArrSelectedVoyage;\r\n BookingInfoDetails.userInput = nextProps.formState.BookingDetails.userInput;\r\n BookingInfoDetails.IsVVCModified = nextProps.formState.BookingDetails.IsVVCModified;\r\n BookingInfoDetails.BKCustomer = nextProps.formState.BookingDetails.BKCustomer;\r\n BookingInfoDetails.BookingNumber = nextProps.formState.BookingDetails.BookingNumber\r\n this.setState({ BookingDetails: BookingInfoDetails });\r\n }\r\n static NextScreen() {\r\n if (self.state.BookingDetails.BookingNumber == '' || self.state.BookingDetails.BookingNumber == undefined)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Booking Number.\");\r\n else if (self.HasNonPrintableASCII(self.state.BookingDetails.BookingNumber))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Booking Number.\");\r\n else if (self.state.BookingDetails.Shipper != '' && self.state.BookingDetails.Shipper != null && self.HasNonPrintableASCII(self.state.BookingDetails.Shipper))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Shipper.\");\r\n else if (self.state.BookingDetails.ShipperCode != '' && self.state.BookingDetails.ShipperCode != null && self.HasNonPrintableASCII(self.state.BookingDetails.ShipperCode))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Shipper Code.\");\r\n else if (self.state.BookingDetails.POR != '' && self.state.BookingDetails.POR != null && self.HasNonPrintableASCII(self.state.BookingDetails.POR))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid POR.\");\r\n else if (self.state.BookingDetails.POL != '' && self.state.BookingDetails.POL != null && self.HasNonPrintableASCII(self.state.BookingDetails.POL))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid POL.\");\r\n else if (self.state.BookingDetails.POD != '' && self.state.BookingDetails.POD != null && self.HasNonPrintableASCII(self.state.BookingDetails.POD))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid PLD.\");\r\n else if (self.state.BookingDetails.BLNumber != '' && self.state.BookingDetails.BLNumber != null && self.HasNonPrintableASCII(self.state.BookingDetails.BLNumber))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid BOL No.\");\r\n else if (self.state.BookingDetails.ContractParty != '' && self.state.BookingDetails.ContractParty != null && self.HasNonPrintableASCII(self.state.BookingDetails.ContractParty))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Contractor.\");\r\n else if (self.state.BookingDetails.Consolidation != '' && self.state.BookingDetails.Consolidation != null && self.HasNonPrintableASCII(self.state.BookingDetails.Consolidation))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Consolidator.\");\r\n else if (self.state.BookingDetails.Agent != '' && self.state.BookingDetails.Agent != null && self.HasNonPrintableASCII(self.state.BookingDetails.Agent))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Carrier Agent.\");\r\n else if (self.state.BookingDetails.VesselCode != '' && self.state.BookingDetails.VesselCode != null && self.HasNonPrintableASCII(self.state.BookingDetails.VesselCode))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Vessel Code.\");\r\n else if (self.state.BookingDetails.VoyageNumber != '' && self.state.BookingDetails.VoyageNumber != null && self.HasNonPrintableASCII(self.state.BookingDetails.VoyageNumber))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Voyage Number.\");\r\n else if (self.state.BookingDetails.Call != '' && self.state.BookingDetails.Call != null && self.HasNonPrintableASCII(self.state.BookingDetails.Call))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Call.\");\r\n else if (self.state.BookingDetails.Forwarder != '' && self.state.BookingDetails.Forwarder != null && self.HasNonPrintableASCII(self.state.BookingDetails.Forwarder))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Forwarder.\");\r\n else if (self.state.BookingDetails.Notify != '' && self.state.BookingDetails.Notify != null && self.HasNonPrintableASCII(self.state.BookingDetails.Notify))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Notify.\");\r\n else if (self.state.BookingDetails.DEL != '' && self.state.BookingDetails.DEL != null && self.HasNonPrintableASCII(self.state.BookingDetails.DEL))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid DEL.\");\r\n else if (self.state.BookingDetails.BKCustomer != '' && self.state.BookingDetails.BKCustomer != null && self.HasNonPrintableASCII(self.state.BookingDetails.BKCustomer))\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Valid Customer.\");\r\n //var isfound = self.state.BookingList.filter(x => x.BookingNumber.toLowerCase() == self.state.BookingDetails.BookingNumber.toLowerCase());\r\n //const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = self.state.BookingDetails;\r\n //const { DepartingVVC, ArrivingVVC, VesselCd, LifecycleCd } = isfound[0];\r\n //var PrevDepartingVoyage = DepartingVVC.split('-')[0].trim();\r\n //var PrevDepartingCall = DepartingVVC.split('-')[1].trim();\r\n //var PrevArrivalVoyage = ArrivingVVC.split('-')[0].trim();\r\n //var PrevArrivalCall = ArrivingVVC.split('-')[1].trim();\r\n\r\n //var currentdepartingVVC = VesselCd + ',' + PrevDepartingVoyage + ',' + PrevDepartingCall;\r\n //var currentarrivalVVC = (PrevArrivalVoyage != '' ? VesselCd : '') + ',' + PrevArrivalVoyage + ',' + PrevArrivalCall;\r\n //var chosenDepartingVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n //var chosenArrivalVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n //\r\n ////if ((LifecycleCd == 'C' || LifecycleCd == null) && chosenDepartingVVC == ',,')\r\n //if (LifecycleCd == 'C' || LifecycleCd == null)\r\n // currentdepartingVVC = ',,';\r\n ////if ((LifecycleCd == 'C' || LifecycleCd == null) && chosenArrivalVVC == ',,')\r\n //if (LifecycleCd == 'C' || LifecycleCd == null)\r\n // currentarrivalVVC = ',,';\r\n\r\n //if (currentdepartingVVC != chosenDepartingVVC || currentarrivalVVC != chosenArrivalVVC)\r\n // self.state.BookingDetails.IsVVCModified = true;\r\n //else\r\n // self.state.BookingSystem.IsVVCModified = false;//RCNG-139\r\n\r\n else if (self.state.isBookingEdit && self.state.isViewOnly == false) {\r\n //if (self.state.BookingReefers.SelectedBookingReefers == \"\" || self.state.BookingReefers.SelectedBookingReefers == null) {\r\n // $('#globalLoader').show();\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingReefersUI?BookingNumber=' + self.state.BookingDetails.BookingNumber)\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // $('#globalLoader').hide();\r\n // if (data != null && data != undefined && data != '') {\r\n // var BookingReefersData = emptyBookingReefers;\r\n // BookingReefersData.BookingReefers = data.toString();\r\n // BookingReefersData.SelectedBookingReefers = data.toString();\r\n // self.setState({ BookingReefers: BookingReefersData }, () => {\r\n // self.props.renderWizardPage(2, self.state, 1);\r\n // });\r\n // }\r\n // });\r\n //}\r\n //else {\r\n // self.props.renderWizardPage(2, self.state, 1);\r\n //}\r\n //self.ValidateVVCandSubmitBooking();\r\n if ((self.state.BookingReefers.SelectedBookingReefers == \"\" || self.state.BookingReefers.SelectedBookingReefers == null) && self.state.isViewOnly == false) {\r\n NewBookingEdit.UpdateButtonStyle(false);//RCNG-925\r\n }\r\n self.props.renderWizardPage(2, self.state, 1);\r\n }\r\n //else if (self.state.CopyBookingNumber != \"\" && self.state.BookingList.length > 0) {\r\n //self.props.renderWizardPage(2, self.state, 1);\r\n //}\r\n else if (self.state.isViewOnly) {\r\n self.props.renderWizardPage(4, self.state, 1);\r\n }\r\n else {\r\n self.ValidateBooking()\r\n //if (self.state.BookingReefers.SelectedBookingReefers == \"\" || self.state.BookingReefers.SelectedBookingReefers == null) {\r\n // NewBookingCreate.UpdateButtonStyle(true);\r\n //}\r\n //self.props.renderWizardPage(2, self.state, 1);\r\n }\r\n\r\n }\r\n CopyData() {\r\n var isfound = this.state.BookingList.filter(x => x.BookingNumber.toLowerCase() == self.state.CopyBookingNumber.toLowerCase());\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = isfound[0].Shipper;\r\n BookingInfoDetails.Consignee = isfound[0].Consignee;\r\n BookingInfoDetails.ShipperCode = isfound[0].ShipperCode;\r\n BookingInfoDetails.POR = isfound[0].POR;\r\n BookingInfoDetails.POL = isfound[0].POL;\r\n BookingInfoDetails.POD = isfound[0].POD;\r\n BookingInfoDetails.VesselETD = isfound[0].VesselETD != null ? DateFormat(new Date(isfound[0].VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = isfound[0].VesselETA != null ? DateFormat(new Date(isfound[0].VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = isfound[0].BLNumber;\r\n BookingInfoDetails.ContractParty = isfound[0].ContractParty;\r\n BookingInfoDetails.Consolidation = isfound[0].Consolidation;\r\n BookingInfoDetails.Agent = isfound[0].Agent;\r\n BookingInfoDetails.VesselCode = isfound[0].VesselCode;\r\n BookingInfoDetails.VoyageNumber = isfound[0].VoyageNumber;\r\n BookingInfoDetails.Call = isfound[0].Call;\r\n BookingInfoDetails.Forwarder = isfound[0].Forwarder;\r\n BookingInfoDetails.Notify = isfound[0].Notify;\r\n BookingInfoDetails.DEL = isfound[0].DEL;\r\n BookingInfoDetails.BKCustomer = isfound[0].BKCustomer;\r\n if (isfound[0].LifecycleCd == 'L' || isfound[0].LifecycleCd == 'R' || isfound[0].LifecycleCd == 'D' || isfound[0].LifecycleCd == 'P') {\r\n var departingVVC = isfound[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = isfound[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n BookingInfoDetails.SelectedVoyage = depVoyage;\r\n BookingInfoDetails.SelectedCall = depCall;\r\n BookingInfoDetails.SelectedVesselCD = depVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVesselCD = arrVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVoyage = arrVoyage;\r\n BookingInfoDetails.ArrSelectedCall = arrCall;\r\n }\r\n var BookingReefersData = emptyBookingReefers;\r\n BookingReefersData.BookingReefers = this.state.BookingList.map(x => x.ReeferID).toString();\r\n BookingReefersData.SelectedBookingReefers = this.state.BookingList.map(x => x.ReeferID).toString();\r\n BookingReefersData.ReeferwithUnitID = this.state.BookingList.map(x => x.ReeferwithUnitID);\r\n var gridData = [];\r\n forEach(this.state.BookingList, function (bookingItem) {\r\n \r\n if (bookingItem != \"\" && bookingItem != null) {\r\n\r\n var item = {\r\n action: '', reeferId: bookingItem.ReeferID, cargoCare: bookingItem.CCProfileName, accessCodes: bookingItem.CustomerAccessGroupID, bookedTemperature: bookingItem.BookedTemperature,\r\n bookedTemperatureQualifier: bookingItem.BookedTemperatureQualifier, bookedTemperatureMin: bookingItem.BookedTemperatureMin, bookedTemperatureMax: bookingItem.BookedTemperatureMax,\r\n humidity: bookingItem.HumiditySetpoint, commodity: bookingItem.Commodity, STCC: bookingItem.STCC, HS: bookingItem.HSCode, gensetId: bookingItem.GensetId, ventSetting: bookingItem.VentSetting,\r\n HVFlag: bookingItem.HighValueFlag, serviceLevel: bookingItem.ServiceLevel, CAFlag: bookingItem.CAFlag, O2Setpoint: bookingItem.O2Setpoint, O2SetpointMin: bookingItem.O2SetpointMin, O2SetpointMax: bookingItem.O2SetpointMax,\r\n CO2Setpoint: bookingItem.CO2Setpoint, CO2SetpointMin: bookingItem.CO2SetpointMin, CO2SetpointMax: bookingItem.CO2SetpointMax, CTFlag: bookingItem.CTFlag,\r\n CTDays: bookingItem.CTDays, USDAMaxTemperature: bookingItem.USDAMaxTemperature, postCTTemperature: bookingItem.PostCTTemperature, postCTTemperatureDeviation: bookingItem.PostCTTemperatureDeviation, postCTVentSetting: bookingItem.PostCTVentSetting,\r\n UnitMasterId: bookingItem.UnitMasterID, CustomerAccessGroupIdsStr: ''\r\n };\r\n gridData.push(item);\r\n }\r\n });\r\n this.setState({ BookingDetails: BookingInfoDetails, BookingReefers: BookingReefersData, rowData: gridData }, () => { this.EditPopupMessage() });\r\n\r\n }\r\n CopyBookingData() {\r\n\r\n if (self.state.CopyBookingNumber == '' || self.state.CopyBookingNumber == undefined)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Booking Number to Copy.\");\r\n else if (self.state.CopyBookingNumber != null && self.state.CopyBookingNumber != '') {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + self.state.CopyBookingNumber.toString())\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n\r\n if (data != null && data != undefined && data.length > 0) {\r\n\r\n this.setState({ BookingList: data }, () => { this.CopyData(); });\r\n }\r\n //latest Change\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Booking \" + self.state.CopyBookingNumber + \" not found.\");\r\n return;\r\n }\r\n\r\n });\r\n }\r\n }\r\n ValidateVVCandSubmitBooking() {\r\n \r\n const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.BookingDetails;\r\n var vesselHasVoyageCalls;\r\n\r\n if (SelectedVesselCD != '' && SelectedVesselCD != null) {\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n }\r\n\r\n if (SelectedVesselCD != null && SelectedVesselCD != '' && ArrSelectedVesselCD != null && ArrSelectedVesselCD != '') {\r\n if (SelectedVesselCD != ArrSelectedVesselCD) {\r\n PopupWindow.showErrorMessage('Alert', 'Departing and Arriving VVC should be same');\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (((SelectedVesselCD == '' && SelectedVoyage == '' && SelectedCall == '') || (SelectedVesselCD != '' && SelectedVoyage != '' && (!vesselHasVoyageCalls || (vesselHasVoyageCalls && SelectedCall != '')))) &&\r\n ((ArrSelectedVesselCD == '' && ArrSelectedVoyage == '' && ArrSelectedCall == '') || (ArrSelectedVesselCD != '' && ArrSelectedVoyage != '' && (!vesselHasVoyageCalls || (vesselHasVoyageCalls && ArrSelectedCall != ''))))) {\r\n \r\n var DepVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n var ArrVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ValidateVVCEntered?DepVVC=' + DepVVC + '&ArrVVC=' + ArrVVC;\r\n \r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n \r\n if (data != '') {\r\n if (data == 'DNE')\r\n PopupWindow.showErrorMessage(\"Error\", 'The Departing VVC, ' + SelectedVesselCD + ' ' + SelectedVoyage + ' ' + SelectedCall + ', does not exist. A VVC cannot be created here.');\r\n else if (data == 'ANE')\r\n PopupWindow.showErrorMessage(\"Error\", 'The Arriving VVC, ' + ArrSelectedVesselCD + ' ' + ArrSelectedVoyage + ' ' + ArrSelectedCall + ', does not exist. A VVC cannot be created here.');\r\n return false;\r\n }\r\n else {\r\n \r\n this.OnSubmitVVCValidations();\r\n }\r\n });\r\n }\r\n else {\r\n \r\n if (SelectedVesselCD != null && SelectedVesselCD != '' && ArrSelectedVesselCD != null && ArrSelectedVesselCD != '') {\r\n if (SelectedVesselCD != ArrSelectedVesselCD) {\r\n PopupWindow.showErrorMessage('Alert', 'Departing and Arriving VVC should be same');\r\n return false;\r\n }\r\n }\r\n\r\n var voyagesHaveCalls;\r\n if (SelectedVesselCD != '' && SelectedVesselCD != null) {\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n voyagesHaveCalls = selectedVessel[0].VoyagesHaveCalls;\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Alert', 'Departing VVC not exists');\r\n return false;\r\n }\r\n }\r\n\r\n\r\n if (SelectedVesselCD != '' && SelectedVoyage == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A voyage number must be specified for the Departing VVC.');\r\n return false;\r\n }\r\n else if (SelectedVesselCD != '' && voyagesHaveCalls && SelectedCall == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A call must be specified for the Departing VVC.');\r\n return false;\r\n }\r\n else if (ArrSelectedVesselCD != '' && ArrSelectedVoyage == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A voyage number must be specified for the Arriving VVC.');\r\n return false;\r\n }\r\n else if (ArrSelectedVesselCD != '' && voyagesHaveCalls && ArrSelectedCall == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A call must be specified for the Arriving VVC.');\r\n return false;\r\n }\r\n }\r\n\r\n }\r\n OnSubmitVVCValidations() {\r\n \r\n methodResult = false;\r\n var isfound = this.state.BookingList.filter(x => x.BookingNumber.toLowerCase() == this.state.BookingDetails.BookingNumber.toLowerCase());\r\n const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.BookingDetails;\r\n const { DepartingVVC, ArrivingVVC, VoyageVesselCd, LifecycleCd } = isfound[0];//.SelectedReefers[0];\r\n var PrevDepartingVoyage = DepartingVVC.split('-')[0].trim();\r\n var PrevDepartingCall = DepartingVVC.split('-')[1].trim();\r\n var PrevArrivalVoyage = ArrivingVVC.split('-')[0].trim();\r\n var PrevArrivalCall = ArrivingVVC.split('-')[1].trim();\r\n\r\n var currentdepartingVVC = (VoyageVesselCd == null ? '' : VoyageVesselCd) + ',' + PrevDepartingVoyage + ',' + PrevDepartingCall;\r\n var currentarrivalVVC = (PrevArrivalVoyage != '' ? VoyageVesselCd : '') + ',' + PrevArrivalVoyage + ',' + PrevArrivalCall;\r\n var chosenDepartingVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n var chosenArrivalVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n\r\n var submitVVCInputData: server.SubmitVVCInputData = {\r\n CurrentDepVVC: (LifecycleCd == 'C' || LifecycleCd == null) ? ',,' : currentdepartingVVC,// && chosenDepartingVVC == ',,'\r\n CurrentArrVVC: (LifecycleCd == 'C' || LifecycleCd == null) ? ',,' : currentarrivalVVC, // && chosenArrivalVVC == ',,'\r\n ChosenDepVVC: chosenDepartingVVC,\r\n ChosenArrVVC: chosenArrivalVVC,\r\n LifecycleCd: LifecycleCd\r\n }\r\n var inputBody = JSON.stringify(submitVVCInputData);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/SubmitVVC';\r\n \r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: inputBody, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n \r\n if (data.IsPromptMessage) {\r\n $('#globalLoader').hide();\r\n RCNGWindow.ConfirmWindow.showConfirmBox(data.ResultMessage, this.SaveUserInputToState.bind(this, data.PromptId), this.closeUserConfirmation.bind(this));\r\n }\r\n else if (!data.IsPromptMessage && data.ResultMessage != null && data.ResultMessage != '') {\r\n PopupWindow.showErrorMessage('Error', data.ResultMessage);\r\n methodResult = false;\r\n return methodResult;\r\n }\r\n else {\r\n this.SaveUserInputToState(data.PromptId);\r\n return methodResult;\r\n }\r\n });\r\n }\r\n closeUserConfirmation() {\r\n methodResult = false;\r\n RCNGWindow.ConfirmWindow.close();\r\n return false;\r\n }\r\n SaveUserInputToState(userInput: number) {\r\n \r\n $('#globalLoader').show();\r\n var bookingSystem: server.BookingDetails = JSON.parse(JSON.stringify(this.state.BookingDetails));\r\n bookingSystem.userInput = userInput;\r\n\r\n methodResult = true;\r\n this.setState({ BookingDetails: bookingSystem }, () => {\r\n RCNGWindow.ConfirmWindow.close();//RCNG-109\r\n self.props.renderWizardPage(2, self.state, 1);\r\n //this.submitAssignBookingAfterPromptMessage();\r\n }); //WI-27079:RCWeb - RC UI Edit Booking Changes\r\n }\r\n ValidateBooking() {\r\n if (this.props.formState.IsOpen == 'New') {\r\n NewBookingCreate.UpdateButtonStyle(false);\r\n }\r\n if (TempBooking != self.state.BookingDetails.BookingNumber) {\r\n if (self.state.BookingDetails.BookingNumber != null && self.state.BookingDetails.BookingNumber != '' && self.state.isAllBooking == 0) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingInfoUI?BookingNumber=' + self.state.BookingDetails.BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n //latest Change\r\n if (this.props.formState.IsOpen == 'New') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Booking \" + this.state.BookingDetails.BookingNumber + \" already exists.\");\r\n NewBookingCreate.UpdateButtonStyle(true);\r\n return;\r\n }\r\n else {\r\n this.setState({ BookingList: data }, () => { this.ValidateEditBooking() });\r\n }\r\n //this.setState({ BookingList: data }, () => { this.ValidateEditBooking() }); remove comment\r\n //\r\n }\r\n //latest Change\r\n else if (this.props.formState.IsOpen == 'Edit') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Booking \" + this.state.BookingDetails.BookingNumber + \" not found.\");\r\n return;\r\n }\r\n else {\r\n if (this.state.ReeferforCreate != \"\") {\r\n var BookingReefersDetails = emptyBookingReefers;\r\n\r\n BookingReefersDetails.BookingReefers = this.state.ReeferforCreate;\r\n BookingReefersDetails.SelectedBookingReefers = this.state.ReeferforCreate;\r\n var validationsummary = [];\r\n var ReeferwithUnitID = this.state.ReeferforCreate + '-' + this.state.UnitmasterId;\r\n validationsummary.push(ReeferwithUnitID);\r\n BookingReefersDetails.ReeferwithUnitID = validationsummary;\r\n this.setState({ BookingReefers: BookingReefersDetails }, () => { self.props.renderWizardPage(2, self.state, 1); });\r\n }\r\n else {\r\n if (self.state.BookingReefers.SelectedBookingReefers == \"\" || self.state.BookingReefers.SelectedBookingReefers == null) {\r\n NewBookingCreate.UpdateButtonStyle(false);//RCNG-925\r\n }\r\n //NewBookingCreate.UpdateButtonStyle(true);\r\n self.props.renderWizardPage(2, self.state, 1);\r\n }\r\n }\r\n\r\n });\r\n }\r\n }\r\n else {\r\n if (self.state.BookingReefers.SelectedBookingReefers == \"\" || self.state.BookingReefers.SelectedBookingReefers == null) {\r\n NewBookingCreate.UpdateButtonStyle(false);//RCNG-925\r\n }\r\n self.props.renderWizardPage(2, self.state, 1);\r\n }\r\n }\r\n\r\n GetBookingData() {\r\n if (this.props.formState.IsOpen == 'New') {\r\n NewBookingCreate.UpdateButtonStyle(false);\r\n }\r\n if (this.props.formState.IsOpen == 'View') {\r\n ViewBooking.UpdateButtonStyle(true);\r\n }\r\n if (self.state.BookingDetails.BookingNumber == '' || self.state.BookingDetails.BookingNumber == undefined)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Booking Number.\");\r\n else if (self.state.BookingDetails.BookingNumber != null && self.state.BookingDetails.BookingNumber != '' && self.state.isAllBooking == 0) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + self.state.BookingDetails.BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n //latest Change\r\n if (this.props.formState.IsOpen == 'New') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Booking \" + this.state.BookingDetails.BookingNumber + \" already exists.\");\r\n NewBookingCreate.UpdateButtonStyle(true);\r\n return;\r\n }\r\n else {\r\n this.setState({ BookingList: data }, () => { this.EditBooking(); });\r\n if (this.props.formState.IsOpen == 'View') {\r\n ViewBooking.UpdateButtonStyle(false);\r\n }\r\n }\r\n //this.setState({ BookingList: data }, () => { this.ValidateEditBooking() }); remove comment\r\n //\r\n }\r\n //latest Change\r\n else if (this.props.formState.IsOpen == 'Edit' || this.props.formState.IsOpen == 'View') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Booking \" + this.state.BookingDetails.BookingNumber + \" not found.\");\r\n return;\r\n }\r\n //else if (this.props.formState.IsOpen == 'New') {\r\n //NewBookingCreate.UpdateButtonStyle(true);\r\n //return;\r\n //}\r\n //\r\n\r\n });\r\n }\r\n }\r\n\r\n onSuggestionsFetchRequestedforvessel = ({ value }) => {\r\n this.setState({\r\n suggestionsVesselId: this.getvesselNameSuggestions(value)\r\n });\r\n };\r\n getvesselNameSuggestions(value) {\r\n //var vessels = this.state.RefVessels;\r\n var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var vessels = uniq(VesselData);\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : vessels.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequestedforvessel = () => {\r\n this.setState({\r\n suggestionsVesselId: []\r\n });\r\n };\r\n onChangeVesselId = (event, { newValue }) => {\r\n var filters = this.state.BookingDetails;\r\n filters.SelectedVesselCD = newValue;\r\n filters.SelectedVoyage = '';\r\n filters.SelectedCall = '';\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n this.setState({\r\n suggestionsVoyage: this.getvoyageNameSuggestions(newValue)\r\n });\r\n };\r\n onChangcall = (event, { newValue }) => {\r\n var filters = this.state.BookingDetails;\r\n filters.SelectedCall = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n };\r\n renderSuggestionVesselvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionVesselValue(suggestion) {\r\n return suggestion;\r\n }\r\n onSuggestionsFetchRequestedforvoyage = ({ value }) => {\r\n this.setState({\r\n suggestionsVoyage: this.voyageNameSuggestions(value)\r\n });\r\n };\r\n onSuggestionsFetchRequestedforcall = ({ value }) => {\r\n this.setState({\r\n suggestionsCalls: this.callSuggestions(value)\r\n });\r\n };\r\n callSuggestions(value) {\r\n if (this.state.BookingDetails.SelectedVesselCD != \"\" && this.state.BookingDetails.SelectedVesselCD != null && this.state.BookingDetails.SelectedVoyage != \"\" && this.state.BookingDetails.SelectedVoyage != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingDetails.SelectedVesselCD\r\n && tag.VoyageNum === this.state.BookingDetails.SelectedVoyage && tag.CallNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n //return test;\r\n return uniq(test.map(fence => fence.CallNum));\r\n }\r\n else\r\n return [];\r\n };\r\n voyageNameSuggestions(value) {\r\n if (this.state.BookingDetails.SelectedVesselCD != \"\" && this.state.BookingDetails.SelectedVesselCD != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingDetails.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n }\r\n else\r\n return [];\r\n };\r\n getvoyageNameSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag =>\r\n tag.VesselCd.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n };\r\n getcallSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingDetails.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.CallNum));\r\n };\r\n onSuggestionsClearRequestedforvoyage = () => {\r\n this.setState({\r\n suggestionsVoyage: []\r\n });\r\n };\r\n onSuggestionsClearRequestedforcall = () => {\r\n this.setState({\r\n suggestionsCalls: []\r\n });\r\n };\r\n onChangevoyage = (event, { newValue }) => {\r\n var filters = this.state.BookingDetails;\r\n filters.SelectedVoyage = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n filters.SelectedCall = '';\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n this.setState({\r\n suggestionsCalls: this.getcallSuggestions(newValue)\r\n });\r\n };\r\n renderSuggestionvoyagevalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionvoyageValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestioncallvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestioncallValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n onSuggestionsFetchRequestedforArrvessel = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsVesselId: this.getArrvesselNameSuggestions(value)\r\n });\r\n };\r\n getArrvesselNameSuggestions(value) {\r\n //var vessels = this.state.RefVessels;\r\n var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var vessels = uniq(VesselData);\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : vessels.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequestedforArrvessel = () => {\r\n this.setState({\r\n ArrsuggestionsVesselId: []\r\n });\r\n };\r\n onChangeArrVesselId = (event, { newValue }) => {\r\n var filters = this.state.BookingDetails;\r\n filters.ArrSelectedVesselCD = newValue;\r\n filters.ArrSelectedVoyage = '';\r\n filters.ArrSelectedCall = '';\r\n\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n this.setState({\r\n ArrsuggestionsVoyage: this.getArrvoyageNameSuggestions(newValue)\r\n });\r\n };\r\n onChangArrcall = (event, { newValue }) => {\r\n var filters = this.state.BookingDetails;\r\n filters.ArrSelectedCall = newValue;\r\n\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n };\r\n renderSuggestionArrVesselvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrVesselValue(suggestion) {\r\n return suggestion;\r\n }\r\n onSuggestionsFetchRequestedforArrvoyage = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsVoyage: this.ArrvoyageNameSuggestions(value)\r\n });\r\n };\r\n onSuggestionsFetchRequestedforArrcall = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsCalls: this.ArrcallSuggestions(value)\r\n });\r\n };\r\n ArrcallSuggestions(value) {\r\n if (this.state.BookingDetails.ArrSelectedVesselCD != \"\" && this.state.BookingDetails.ArrSelectedVesselCD != null && this.state.BookingDetails.ArrSelectedVoyage != \"\" && this.state.BookingDetails.ArrSelectedVoyage != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingDetails.ArrSelectedVesselCD\r\n && tag.VoyageNum === this.state.BookingDetails.ArrSelectedVoyage && tag.CallNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n //return test;\r\n return uniq(test.map(fence => fence.CallNum));\r\n }\r\n else\r\n return [];\r\n };\r\n ArrvoyageNameSuggestions(value) {\r\n if (this.state.BookingDetails.ArrSelectedVesselCD != \"\" && this.state.BookingDetails.ArrSelectedVesselCD != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingDetails.ArrSelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n }\r\n else\r\n return [];\r\n };\r\n getArrvoyageNameSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag =>\r\n tag.VesselCd.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n };\r\n getArrcallSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingDetails.ArrSelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.CallNum));\r\n };\r\n onSuggestionsClearRequestedforArrvoyage = () => {\r\n this.setState({\r\n ArrsuggestionsVoyage: []\r\n });\r\n };\r\n onSuggestionsClearRequestedforArrcall = () => {\r\n this.setState({\r\n ArrsuggestionsCalls: []\r\n });\r\n };\r\n onChangeArrvoyage = (event, { newValue }) => {\r\n var filters = this.state.BookingDetails;\r\n filters.ArrSelectedVoyage = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n filters.ArrSelectedCall = '';\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n this.setState({\r\n ArrsuggestionsCalls: this.getArrcallSuggestions(newValue)\r\n });\r\n };\r\n renderSuggestionArrvoyagevalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrvoyageValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestionArrcallvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrcallValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderBookingData() {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingInfoUI?BookingNumber=' + self.state.BookingDetails.BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined) {\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = data.Shipper;\r\n BookingInfoDetails.Consignee = data.Consignee;\r\n BookingInfoDetails.ShipperCode = data.ShipperCode;\r\n BookingInfoDetails.POR = data.POR;\r\n BookingInfoDetails.POL = data.POL;\r\n BookingInfoDetails.POD = data.POD;\r\n BookingInfoDetails.VesselETD = data.VesselETD != null ? DateFormat(new Date(data.VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = data.VesselETA != null ? DateFormat(new Date(data.VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = data.BLNumber;\r\n BookingInfoDetails.ContractParty = data.ContractParty;\r\n BookingInfoDetails.Consolidation = data.Consolidation;\r\n BookingInfoDetails.Agent = data.Agent;\r\n BookingInfoDetails.VesselCode = data.VesselCode;\r\n BookingInfoDetails.VoyageNumber = data.VoyageNumber;\r\n BookingInfoDetails.Call = data.Shipper;\r\n BookingInfoDetails.Forwarder = data.Forwarder;\r\n BookingInfoDetails.Notify = data.Notify;\r\n BookingInfoDetails.BookingNumber = data.BookingNumber;\r\n BookingInfoDetails.DEL = data.DEL;\r\n BookingInfoDetails.BKCustomer = data.BKCustomer;\r\n this.setState({ BookingDetails: BookingInfoDetails });\r\n }\r\n\r\n });\r\n }\r\n CopyBookingNumberChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({\r\n CopyBookingNumber: Value\r\n });\r\n }\r\n\r\n BookingNumberChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.BookingNumber = Value;\r\n this.setState({\r\n BookingDetails: filters, isAllBooking: 0\r\n });\r\n if (this.props.formState.IsOpen == 'Edit') {\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = '';\r\n BookingInfoDetails.Consignee = '';\r\n BookingInfoDetails.ShipperCode = '';\r\n BookingInfoDetails.POR = '';\r\n BookingInfoDetails.POL = '';\r\n BookingInfoDetails.POD = '';\r\n BookingInfoDetails.VesselETD = null;//DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n BookingInfoDetails.VesselETA = null;//DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n BookingInfoDetails.BLNumber = '';\r\n BookingInfoDetails.ContractParty = '';\r\n BookingInfoDetails.Consolidation = '';\r\n BookingInfoDetails.Agent = '';\r\n BookingInfoDetails.VesselCode = '';\r\n BookingInfoDetails.VoyageNumber = '';\r\n BookingInfoDetails.Call = '';\r\n BookingInfoDetails.Forwarder = '';\r\n BookingInfoDetails.Notify = '';\r\n BookingInfoDetails.DEL = '';\r\n BookingInfoDetails.IsVVCModified = false;\r\n BookingInfoDetails.SelectedVesselCD = '';\r\n BookingInfoDetails.SelectedCall = '';\r\n BookingInfoDetails.SelectedVoyage = '';\r\n BookingInfoDetails.ArrSelectedVesselCD = '';\r\n BookingInfoDetails.ArrSelectedCall = '';\r\n BookingInfoDetails.ArrSelectedVoyage = '';\r\n BookingInfoDetails.userInput = 0;\r\n BookingInfoDetails.BKCustomer = '';\r\n var BookingReefers = emptyBookingReefers;\r\n BookingReefers.BookingReefers = '';\r\n BookingReefers.SelectedBookingReefers = '';\r\n BookingReefers.ReeferwithUnitID = [];\r\n this.setState({ BookingDetails: BookingInfoDetails, BookingReefers: BookingReefers });\r\n NewBookingEdit.UpdateButtonStyle(true);\r\n }\r\n //else if (this.props.formState.isViewOnly)\r\n // ViewBooking.UpdateButtonStyle(false);\r\n //else if (self.state.CopyBookingNumber != \"\") {\r\n //else if (self.state.CopyBookingNumber != \"\" ||(self.state.ReeferwithUnitID!=undefined && self.state.ReeferwithUnitID.length==0)){\r\n // NewBookingCreate.UpdateButtonStyle(false);\r\n //}\r\n //else {\r\n // var BookingReefers = emptyBookingReefers;\r\n // BookingReefers.BookingReefers = '';\r\n // BookingReefers.SelectedBookingReefers = '';\r\n // BookingReefers.ReeferwithUnitID = [];\r\n // this.setState({ BookingReefers: BookingReefers });\r\n // NewBookingCreate.UpdateButtonStyle(false);\r\n //}\r\n else\r\n NewBookingCreate.UpdateButtonStyle(false);\r\n }\r\n onChangeBookingNumber = (event, { newValue }) => {\r\n var filters = this.state.BookingDetails;\r\n filters.BookingNumber = newValue;\r\n\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n var isfound = this.state.BookingList.filter(x => x.BookingNumber.toLowerCase() == newValue.toLowerCase());\r\n if (this.state.isBookingEdit) {\r\n if (isfound.length > 0) {\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = isfound[0].Shipper;\r\n BookingInfoDetails.Consignee = isfound[0].Consignee;\r\n BookingInfoDetails.ShipperCode = isfound[0].ShipperCode;\r\n BookingInfoDetails.POR = isfound[0].POR;\r\n BookingInfoDetails.POL = isfound[0].POL;\r\n BookingInfoDetails.POD = isfound[0].POD;\r\n BookingInfoDetails.VesselETD = isfound[0].VesselETD != null ? DateFormat(new Date(isfound[0].VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = isfound[0].VesselETA != null ? DateFormat(new Date(isfound[0].VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = isfound[0].BLNumber;\r\n BookingInfoDetails.ContractParty = isfound[0].ContractParty;\r\n BookingInfoDetails.Consolidation = isfound[0].Consolidation;\r\n BookingInfoDetails.Agent = isfound[0].Agent;\r\n BookingInfoDetails.VesselCode = isfound[0].VesselCode;\r\n BookingInfoDetails.VoyageNumber = isfound[0].VoyageNumber;\r\n BookingInfoDetails.Call = isfound[0].Call;\r\n BookingInfoDetails.Forwarder = isfound[0].Forwarder;\r\n BookingInfoDetails.Notify = isfound[0].Notify;\r\n BookingInfoDetails.BookingNumber = isfound[0].BookingNumber;\r\n BookingInfoDetails.DEL = isfound[0].DEL;\r\n BookingInfoDetails.BKCustomer = isfound[0].BKCustomer;\r\n this.setState({ BookingDetails: BookingInfoDetails });\r\n }\r\n else {\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = '';\r\n BookingInfoDetails.Consignee = '';\r\n BookingInfoDetails.ShipperCode = '';\r\n BookingInfoDetails.POR = '';\r\n BookingInfoDetails.POL = '';\r\n BookingInfoDetails.POD = '';\r\n BookingInfoDetails.VesselETD = null;// DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n BookingInfoDetails.VesselETA = null;// DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n BookingInfoDetails.BLNumber = '';\r\n BookingInfoDetails.ContractParty = '';\r\n BookingInfoDetails.Consolidation = '';\r\n BookingInfoDetails.Agent = '';\r\n BookingInfoDetails.VesselCode = '';\r\n BookingInfoDetails.VoyageNumber = '';\r\n BookingInfoDetails.Call = '';\r\n BookingInfoDetails.Forwarder = '';\r\n BookingInfoDetails.Notify = '';\r\n BookingInfoDetails.DEL = '';\r\n BookingInfoDetails.BKCustomer = '';\r\n this.setState({ BookingDetails: BookingInfoDetails });\r\n }\r\n }\r\n else {\r\n if (isfound.length > 0) {\r\n this.ValidateEditBooking();\r\n }\r\n }\r\n\r\n };\r\n ValidateEditBooking() {\r\n //Latest Code\r\n //if (!this.state.isBookingEdit) {\r\n // var confirmationMessage = \"Booking \" + this.state.BookingDetails.BookingNumber + \" already exists. Edit this booking?\";\r\n // RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.EditBookingAction.bind(this), this.closeConfirmation.bind(this));\r\n //}\r\n //else {\r\n // this.EditBooking();\r\n //}\r\n //\r\n if (this.state.isBookingEdit) {\r\n this.EditBooking();\r\n }\r\n }\r\n EditBooking() {\r\n \r\n var isfound = this.state.BookingList.filter(x => x.BookingNumber.toLowerCase() == this.state.BookingDetails.BookingNumber.toLowerCase());\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = isfound[0].Shipper;\r\n BookingInfoDetails.Consignee = isfound[0].Consignee;\r\n BookingInfoDetails.ShipperCode = isfound[0].ShipperCode;\r\n BookingInfoDetails.POR = isfound[0].POR;\r\n BookingInfoDetails.POL = isfound[0].POL;\r\n BookingInfoDetails.POD = isfound[0].POD;\r\n BookingInfoDetails.VesselETD = isfound[0].VesselETD != null ? DateFormat(new Date(isfound[0].VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = isfound[0].VesselETA != null ? DateFormat(new Date(isfound[0].VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = isfound[0].BLNumber;\r\n BookingInfoDetails.ContractParty = isfound[0].ContractParty;\r\n BookingInfoDetails.Consolidation = isfound[0].Consolidation;\r\n BookingInfoDetails.Agent = isfound[0].Agent;\r\n BookingInfoDetails.VesselCode = isfound[0].VesselCode;\r\n BookingInfoDetails.VoyageNumber = isfound[0].VoyageNumber;\r\n BookingInfoDetails.Call = isfound[0].Call;\r\n BookingInfoDetails.Forwarder = isfound[0].Forwarder;\r\n BookingInfoDetails.Notify = isfound[0].Notify;\r\n BookingInfoDetails.BookingNumber = isfound[0].BookingNumber;\r\n BookingInfoDetails.DEL = isfound[0].DEL;\r\n BookingInfoDetails.BKCustomer = isfound[0].BKCustomer;\r\n if (isfound[0].LifecycleCd == 'L' || isfound[0].LifecycleCd == 'R' || isfound[0].LifecycleCd == 'D' || isfound[0].LifecycleCd == 'P') {\r\n var departingVVC = isfound[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = isfound[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n BookingInfoDetails.SelectedVoyage = depVoyage;\r\n BookingInfoDetails.SelectedCall = depCall;\r\n BookingInfoDetails.SelectedVesselCD = depVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVesselCD = arrVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVoyage = arrVoyage;\r\n BookingInfoDetails.ArrSelectedCall = arrCall;\r\n }\r\n var BookingReefersData = emptyBookingReefers;\r\n BookingReefersData.BookingReefers = this.state.BookingList.map(x => x.ReeferID).toString();\r\n BookingReefersData.SelectedBookingReefers = this.state.BookingList.map(x => x.ReeferID).toString();\r\n BookingReefersData.ReeferwithUnitID = this.state.BookingList.map(x => x.ReeferwithUnitID);\r\n var gridData = [];\r\n forEach(this.state.BookingList, function (bookingItem) {\r\n \r\n if (bookingItem != \"\" && bookingItem != null) {\r\n\r\n var item = {\r\n action: '', reeferId: bookingItem.ReeferID, cargoCare: bookingItem.CCProfileName, accessCodes: bookingItem.CustomerAccessGroupID, bookedTemperature: bookingItem.BookedTemperature,\r\n bookedTemperatureQualifier: bookingItem.BookedTemperatureQualifier, bookedTemperatureMin: bookingItem.BookedTemperatureMin, bookedTemperatureMax: bookingItem.BookedTemperatureMax,\r\n humidity: bookingItem.HumiditySetpoint, commodity: bookingItem.Commodity, STCC: bookingItem.STCC, HS: bookingItem.HSCode, gensetId: bookingItem.GensetId, ventSetting: bookingItem.VentSetting,\r\n HVFlag: bookingItem.HighValueFlag, serviceLevel: bookingItem.ServiceLevel, CAFlag: bookingItem.CAFlag, O2Setpoint: bookingItem.O2Setpoint, O2SetpointMin: bookingItem.O2SetpointMin, O2SetpointMax: bookingItem.O2SetpointMax,\r\n CO2Setpoint: bookingItem.CO2Setpoint, CO2SetpointMin: bookingItem.CO2SetpointMin, CO2SetpointMax: bookingItem.CO2SetpointMax, CTFlag: bookingItem.CTFlag,\r\n CTDays: bookingItem.CTDays, USDAMaxTemperature: bookingItem.USDAMaxTemperature, postCTTemperature: bookingItem.PostCTTemperature, postCTTemperatureDeviation: bookingItem.PostCTTemperatureDeviation, postCTVentSetting: bookingItem.PostCTVentSetting,\r\n UnitMasterId: bookingItem.UnitMasterID, CustomerAccessGroupIdsStr: '', CAGName: bookingItem.CAGName\r\n };\r\n gridData.push(item);\r\n }\r\n });\r\n this.setState({ BookingDetails: BookingInfoDetails, BookingReefers: BookingReefersData, rowData: gridData, isBookingEdit: true, isAllBooking: 1 }, () => { this.EditPopupMessage() });\r\n\r\n }\r\n EditBookingAction() {\r\n var isfound = this.state.BookingList.filter(x => x.BookingNumber.toLowerCase() == this.state.BookingDetails.BookingNumber.toLowerCase());\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = isfound[0].Shipper;\r\n BookingInfoDetails.Consignee = isfound[0].Consignee;\r\n BookingInfoDetails.ShipperCode = isfound[0].ShipperCode;\r\n BookingInfoDetails.POR = isfound[0].POR;\r\n BookingInfoDetails.POL = isfound[0].POL;\r\n BookingInfoDetails.POD = isfound[0].POD;\r\n BookingInfoDetails.VesselETD = isfound[0].VesselETD != null ? DateFormat(new Date(isfound[0].VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = isfound[0].VesselETA != null ? DateFormat(new Date(isfound[0].VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = isfound[0].BLNumber;\r\n BookingInfoDetails.ContractParty = isfound[0].ContractParty;\r\n BookingInfoDetails.Consolidation = isfound[0].Consolidation;\r\n BookingInfoDetails.Agent = isfound[0].Agent;\r\n BookingInfoDetails.VesselCode = isfound[0].VesselCode;\r\n BookingInfoDetails.VoyageNumber = isfound[0].VoyageNumber;\r\n BookingInfoDetails.Call = isfound[0].Call;\r\n BookingInfoDetails.Forwarder = isfound[0].Forwarder;\r\n BookingInfoDetails.Notify = isfound[0].Notify;\r\n BookingInfoDetails.BookingNumber = isfound[0].BookingNumber;\r\n BookingInfoDetails.DEL = isfound[0].DEL;\r\n BookingInfoDetails.BKCustomer = isfound[0].BKCustomer;\r\n\r\n var ReeferInfoDetails = emptyBookingReefers;\r\n ReeferInfoDetails.BookingReefers = \"\";\r\n ReeferInfoDetails.SelectedBookingReefers = \"\";\r\n ReeferInfoDetails.ReeferwithUnitID = [];\r\n\r\n this.setState({ BookingDetails: BookingInfoDetails, isBookingEdit: true, isAllBooking: 1, BookingReefers: ReeferInfoDetails }, () => { this.EditPopupMessage() });\r\n\r\n }\r\n EditPopupMessage() {\r\n if (this.state.isBookingEdit) {\r\n\r\n if (this.props.formState.IsOpen == 'New') {\r\n NewBookingCreate.UpdateBookingType('Edit Booking');\r\n this.setState({\r\n BookingDesc: 'Update the booking data. This data applies to all of the booking’s reefers.'\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n if (this.props.formState.IsOpen == 'Edit') {\r\n NewBookingEdit.UpdateButtonStyle(false);\r\n }\r\n //NewBookingEdit.UpdateBookingType('Edit Booking');\r\n }\r\n else {\r\n this.setState({\r\n BookingDesc: 'Enter the booking data. This data applies to all of the booking’s reefers.'\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n\r\n }\r\n closeConfirmation() {\r\n this.setState({ isBookingEdit: false });\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n ShipperChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.Shipper = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n ShipperCodeChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.ShipperCode = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n ConsigneeChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.Consignee = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n PORChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.POR = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n POLChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.POL = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n PODChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.POD = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n DELChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.DEL = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n BLNumberChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.BLNumber = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n BLCustomerChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.BKCustomer = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n ContractPartyChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.ContractParty = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n AgentChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.Agent = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n ConsolidationChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.Consolidation = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n VesselCodeChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.VesselCode = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n VoyageNumberChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.VoyageNumber = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n CallChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.Call = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n ForwarderChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.Forwarder = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n NotifyChange(event: React.FormEvent) {\r\n var filters = this.state.BookingDetails;\r\n var Value: string = event.currentTarget.value;\r\n filters.Notify = Value;\r\n this.setState({\r\n BookingDetails: filters\r\n });\r\n }\r\n\r\n ETDDateChange(date) {\r\n var filters = this.state.BookingDetails;\r\n filters.VesselETD = DateFormat(new Date(date.toString()), 'mm/dd/yyyy HH:MM:ss');\r\n self.setState({\r\n BookingDetails: filters\r\n //VesselETD: DateFormat(new Date(date.toString()), 'mm/dd/yyyy HH:MM:ss')\r\n });\r\n //self.setState({ VesselETD: date });\r\n }\r\n ETADateChange(date) {\r\n var filters = this.state.BookingDetails;\r\n filters.VesselETA = DateFormat(new Date(date.toString()), 'mm/dd/yyyy HH:MM:ss');\r\n self.setState({\r\n BookingDetails: filters\r\n //VesselETA: DateFormat(new Date(date.toString()), 'mm/dd/yyyy HH:MM:ss')\r\n });\r\n //self.setState({ VesselETA: date });\r\n }\r\n HasNonPrintableASCII(Value) {\r\n const IsMatch = /[^ -~]+/;\r\n if (IsMatch.test(Value))\r\n return true;\r\n else\r\n return false;\r\n }\r\n OnSearch() {\r\n if (self.state.BookingDetails.BookingNumber == '' || self.state.BookingDetails.BookingNumber == undefined)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Booking Number.\");\r\n else {\r\n this.renderBookingData();\r\n }\r\n }\r\n //onSuggestionsFetchRequested = ({ value }) => {\r\n // this.setState({\r\n // suggestionsBookingNumber: this.getFenceNameSuggestions(value)\r\n // });\r\n //};\r\n //getFenceNameSuggestions(value) {\r\n // //var bookings = this.state.suggestionsBookingNumber;\r\n // var inputValue = value.trim().toLowerCase();\r\n // var inputLength = inputValue.length;\r\n // return inputLength === 0 ? [] : this.state.BookingList.filter(tag =>\r\n // tag.BookingNumber.toLowerCase().slice(0, inputLength) === inputValue\r\n // ).map(Item => Item.BookingNumber);\r\n //};\r\n //onSuggestionsClearRequested = () => {\r\n // this.setState({\r\n // suggestionsBookingNumber: []\r\n // });\r\n //};\r\n //renderSuggestion(suggestion) {\r\n // return {suggestion};\r\n //}\r\n\r\n //getSuggestionValue(suggestion) {\r\n // return suggestion;\r\n //}\r\n public render() {\r\n //const { suggestionsBookingNumber } = this.state;\r\n //const FenceIdListinputProps = {\r\n // id: 'Booking Number',\r\n // placeholder: 'Booking Number',\r\n // value: this.state.BookingDetails.BookingNumber,\r\n // onChange: this.onChangeBookingNumber.bind(this)\r\n //};\r\n var CSSdisabled: any;\r\n if (!this.state.isBookingEdit && this.state.isViewOnly == false) {\r\n CSSdisabled = false;\r\n }\r\n else if (this.state.isBookingEdit && this.state.isAllBooking == 1 && this.state.isViewOnly == false) {\r\n CSSdisabled = false;\r\n }\r\n else if ((this.state.formname == \"ReeferStatus\" || this.state.formname == \"ReeferStatusGrid\" || this.state.formname == \"SSRMReeferStatusGrid\") && this.state.isViewOnly == false) {\r\n CSSdisabled = false;\r\n }\r\n else if ((this.state.formname == \"ReeferStatus\" || this.state.formname == \"ReeferStatusGrid\" || this.state.formname == \"SSRMReeferStatusGrid\") && this.state.isViewOnly == true) {\r\n CSSdisabled = true;\r\n }\r\n else {\r\n CSSdisabled = true;\r\n }\r\n var Voyagedisabled: any;\r\n var Calldisabled: any;\r\n \r\n if (this.state.BookingDetails.SelectedVesselCD != \"\" && this.state.BookingDetails.SelectedVesselCD != null) {\r\n Voyagedisabled = false;\r\n Calldisabled = true;\r\n }\r\n else {\r\n Voyagedisabled = true;\r\n Calldisabled = true;\r\n }\r\n if (this.state.BookingDetails.SelectedVoyage != \"\" && this.state.BookingDetails.SelectedVoyage != null) {\r\n //RCNG-140\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == this.state.BookingDetails.SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n var vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n if (vesselHasVoyageCalls)\r\n Calldisabled = false;\r\n else\r\n Calldisabled = true;\r\n }\r\n }\r\n else {\r\n Calldisabled = true;\r\n }\r\n var ArrVoyagedisabled: any;\r\n var ArrCalldisabled: any;\r\n if (this.state.BookingDetails.ArrSelectedVesselCD != \"\" && this.state.BookingDetails.ArrSelectedVesselCD != null) {\r\n ArrVoyagedisabled = false;\r\n ArrCalldisabled = true;\r\n }\r\n else {\r\n ArrVoyagedisabled = true;\r\n ArrCalldisabled = true;\r\n }\r\n if (this.state.BookingDetails.ArrSelectedVoyage != \"\" && this.state.BookingDetails.ArrSelectedVoyage != null) {\r\n //RCNG-140\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == this.state.BookingDetails.ArrSelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n var vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n if (vesselHasVoyageCalls)\r\n ArrCalldisabled = false;\r\n else\r\n ArrCalldisabled = true;\r\n }\r\n }\r\n else {\r\n ArrCalldisabled = true;\r\n }\r\n const { suggestionsVesselId, suggestionsVoyage, suggestionsCalls, ArrsuggestionsVesselId, ArrsuggestionsVoyage, ArrsuggestionsCalls } = this.state;\r\n\r\n const FenceIdListinputPropsforvessel = {\r\n id: 'vesselID',\r\n placeholder: 'Vessel',\r\n value: this.state.BookingDetails.SelectedVesselCD,\r\n onChange: this.onChangeVesselId.bind(this),\r\n //readOnly: true //RCNG 94 //RCNG-109\r\n };\r\n const FenceIdListinputPropsforvoyage = {\r\n id: 'voyageNum',\r\n placeholder: 'Voyage',\r\n value: this.state.BookingDetails.SelectedVoyage,\r\n onChange: this.onChangevoyage.bind(this),\r\n disabled: Voyagedisabled,\r\n };\r\n const FenceIdListinputPropsforcall = {\r\n id: 'CallNum',\r\n placeholder: 'Call',\r\n value: this.state.BookingDetails.SelectedCall,\r\n onChange: this.onChangcall.bind(this),\r\n disabled: Calldisabled,\r\n };\r\n const FenceIdListinputPropsforArrvessel = {\r\n id: 'vesselID',\r\n placeholder: 'Vessel',\r\n value: this.state.BookingDetails.ArrSelectedVesselCD,\r\n onChange: this.onChangeArrVesselId.bind(this),\r\n };\r\n const FenceIdListinputPropsforArrvoyage = {\r\n id: 'voyageNum',\r\n placeholder: 'Voyage',\r\n value: this.state.BookingDetails.ArrSelectedVoyage,\r\n onChange: this.onChangeArrvoyage.bind(this),\r\n disabled: ArrVoyagedisabled,\r\n };\r\n const FenceIdListinputPropsforArrcall = {\r\n id: 'CallNum',\r\n placeholder: 'Call',\r\n value: this.state.BookingDetails.ArrSelectedCall,\r\n onChange: this.onChangArrcall.bind(this),\r\n disabled: ArrCalldisabled,\r\n };\r\n return
\r\n\r\n\r\n
\r\n
\r\n {this.state.BookingDesc}\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n {/*
*/}\r\n {/* this.ValidateBooking() } onChange={e => this.BookingNumberChange(e)} className='form-control' />*/}\r\n {/*
*/}\r\n {/*
*/}\r\n {/*
*/}\r\n {/* */}\r\n {/*
*/}\r\n {/*
*/}\r\n\r\n {\r\n (this.state.isBookingEdit == false && this.state.isViewOnly == false) ?\r\n
\r\n this.BookingNumberChange(e)} className='form-control' />\r\n
\r\n\r\n :\r\n this.state.formname == \"ReeferStatus\" || this.state.formname == \"ReeferStatusGrid\" || this.state.formname == \"SSRMReeferStatusGrid\" ?\r\n
\r\n \r\n
\r\n\r\n :\r\n
\r\n\r\n
\r\n \r\n this.BookingNumberChange(e)} className='form-control' />\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n }\r\n {\r\n (this.state.isBookingEdit == false && this.state.isViewOnly == false) ?\r\n
\r\n\r\n
\r\n
\r\n Copy From Existing Booking :\r\n
\r\n\r\n
\r\n
\r\n this.CopyBookingNumberChange(e)} className='form-control' />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n :\r\n \"\"\r\n\r\n }\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n this.ShipperChange(e)} className='form-control' title={this.state.BookingDetails.Shipper} />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n this.VesselCodeChange(e)} className='form-control' />\r\n this.VoyageNumberChange(e)} className='form-control' />\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.ShipperCodeChange(e)} className='form-control' />\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.ConsigneeChange(e)} className='form-control' title={this.state.BookingDetails.Consignee} />\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.ContractPartyChange(e)} className='form-control' title={this.state.BookingDetails.ContractParty} />\r\n
\r\n
\r\n \r\n
\r\n
\r\n this.PORChange(e)} className='form-control' />\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.AgentChange(e)} className='form-control' />\r\n\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n this.POLChange(e)} className='form-control' />\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.ForwarderChange(e)} className='form-control' title={this.state.BookingDetails.Forwarder} />\r\n
\r\n
\r\n \r\n
\r\n
\r\n this.PODChange(e)} className='form-control' />\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.ConsolidationChange(e)} className='form-control' title={this.state.BookingDetails.Consolidation} />\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.DELChange(e)} className='form-control' />\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n this.NotifyChange(e)} className='form-control' title={this.state.BookingDetails.Notify} />\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n this.BLNumberChange(e)} className='form-control' />\r\n
\r\n\r\n
\r\n
\r\n
\r\n Customer :\r\n
\r\n
\r\n this.BLCustomerChange(e)} className='form-control' />\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n }\r\n}","/// \r\n/// \r\n/* eslint-disable */\r\nimport * as React from 'react';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow'; \r\nimport lodashfilter from 'lodash/filter';\r\nimport uniq from 'lodash/uniq';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar methodResult = true;\r\nvar selReefers;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar selectedReefers = \"\";\r\nvar selectedUnits = \"\";\r\nvar IsTriggered = false;\r\nvar self;\r\n\r\nexport interface BookingSystemState {\r\n SelectedReefers: any[];\r\n BookingSystem: server.BookingSystem_UIModel;\r\n RefTemperatureUnit: server.RefTemperatureUnit[];\r\n isLoading: boolean;\r\n collapsed: boolean;\r\n checked: any;\r\n expanded: any;\r\n CustomerGroups: Customers[]; \r\n CustomerGroupsList: Customers[]; \r\n IsCustomerAccessHide: boolean;\r\n UnassignOption: string;\r\n lbl3rdPartyDisabled: boolean;\r\n lblBookingDisabled: boolean;\r\n lblBothDisabled: boolean;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n //RCNG-33-Start\r\n RefVessels: server.vesselsList[];\r\n suggestionsVesselId: any[],\r\n suggestionsVoyage: any[],\r\n suggestionsCalls: any[],\r\n ArrsuggestionsVesselId: any[],\r\n ArrsuggestionsVoyage: any[],\r\n ArrsuggestionsCalls: any[],\r\n //RCNG-33-End\r\n}\r\n\r\nvar newBookingSystem: server.BookingSystem_UIModel = {\r\n BookedTemperature: '', BookedTemperatureUnit: '', BookingNumber: '', CustomerId: 0, eventmasteridForAssign: 0,\r\n eventmasteridforupdate: 0, RcdmasterId: 0, reeferID: '', Unitmasterid: 0, UserId: 0,\r\n RCDReportingInterval: '', SetPoint: '', EventDtm: '', SelectedUnits: [], Groups: [], IsEdit: false, UnassignMode: '', IsBookingModified: false, IsCustomerAccessModified: false,\r\n IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0,\r\n OperationalLevel: 'SelectedReefer', BookingInfo: [] //WI-27079:RCWeb - RC UI Edit Booking Changes\r\n};\r\n\r\nexport class AssignBookingSystem extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n SelectedReefers: [], BookingSystem: newBookingSystem, RefTemperatureUnit: [], isLoading: true, collapsed: false, CustomerGroups: [], checked: [], expanded: [], CustomerGroupsList: [], IsCustomerAccessHide: true, UnassignOption: '', lbl3rdPartyDisabled: false, lblBookingDisabled: false, lblBothDisabled: false, IsCommandIssued: false, PrevSelectedItems: []\r\n , RefVessels: [], suggestionsVesselId: [], suggestionsVoyage: [], suggestionsCalls: [], ArrsuggestionsVesselId: [], ArrsuggestionsVoyage: [], ArrsuggestionsCalls: [] };\r\n this.onCheck = this.onCheck.bind(this);\r\n this.onExpand = this.onExpand.bind(this);\r\n lastCheckedNodes = [];\r\n selReefers = this.props.reeferData;\r\n //this.getRefTemperatureUnit(); //Commented for RCNG-945\r\n IsTriggered = false;\r\n \r\n self = this;\r\n }\r\n //RCNG-33\r\n /* //Commented for RCNG-945\r\n getVVCInfo() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/Getvessels')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n this.setState({ RefVessels: data });\r\n }\r\n });\r\n }\r\n\r\n getRefTemperatureUnit() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetRefTemperatureUnit')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefTemperatureUnit: data });\r\n });\r\n }\r\n\r\n */\r\n\r\n UNSAFE_componentWillReceiveProps() {\r\n if (this.props.formname == \"ReeferStatusGrid\" && this.props.IsTriggered == \"false\") {\r\n IsTriggered = false;\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n //var EventMasterList = this.props.reeferFormatter.EventMasterList;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n /* //Commented for RCNG-945\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === reeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n var EventCd = eventDescription[0].EventCd;\r\n }*/\r\n this.setState({ SelectedReefers: reeferData }, () => {\r\n this.bindCustomerData(this.props.CustomerAccessData);\r\n //this.getVVCInfo();//RCNG-130 //Commented for RCNG-945\r\n });\r\n /* //Commented for RCNG-945\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(newBookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].BookingNumber != null && reeferData[0].BookingNumber != \"\" && !this.ValidateBookingID(reeferData) && EventCd != \"BDR\")\r\n bookingSystem.IsEdit = true;\r\n else\r\n bookingSystem.IsEdit = false;\r\n if (bookingSystem.IsEdit) { \r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n bookingSystem.BookedTemperatureUnit = temperatureCd != undefined ? temperatureCd : \"C\";\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = reeferData[0].BookedTemperature != null ? reeferData[0].BookedTemperature : '';\r\n }\r\n\r\n if (reeferData[0].LifecycleCd == 'L' || reeferData[0].LifecycleCd == 'R' || reeferData[0].LifecycleCd == 'D' || reeferData[0].LifecycleCd == 'P') {\r\n var departingVVC = reeferData[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = reeferData[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n bookingSystem.SelectedVoyage = depVoyage;\r\n bookingSystem.SelectedCall = depCall;\r\n bookingSystem.SelectedVesselCD = depVoyage != '' ? reeferData[0].VesselCd : '';\r\n bookingSystem.ArrSelectedVesselCD = arrVoyage != '' ? reeferData[0].VesselCd : '';\r\n bookingSystem.ArrSelectedVoyage = arrVoyage;\r\n bookingSystem.ArrSelectedCall = arrCall;\r\n } \r\n\r\n this.setState({ BookingSystem: bookingSystem });*/\r\n }\r\n }\r\n\r\n bindCustomerData(customerAccessData: any) {\r\n if (customerAccessData != undefined) {\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customerAccessData)), CustomerGroupsList: customerAccessData });\r\n if (customerAccessData.length > 0) {\r\n var defaultChecked = [];\r\n var defaultExpand = [];\r\n $.each(customerAccessData, function (index, value) {\r\n if (value.isSelected == true) {\r\n defaultExpand.push(value.value);\r\n }\r\n $.each(value.children, function (ind, val) {\r\n if (val.isSelected == true) {\r\n defaultChecked.push(val.value);\r\n }\r\n });\r\n });\r\n this.setState({ isLoading: false, IsCustomerAccessHide: false, checked: defaultChecked, expanded: defaultExpand }, () => { this.onCheck(this.state.checked); });\r\n }\r\n else {\r\n lastCheckedNodes = [];\r\n this.setState({ isLoading: false, checked: [], expanded: [], CustomerGroups: [], CustomerGroupsList: [], IsCustomerAccessHide: true });\r\n }\r\n }\r\n }\r\n\r\n onCheck(checked) { \r\n if (checked.length > 0) {\r\n var customersList = this.state.CustomerGroupsList;\r\n if (lastCheckedNodes.length == 0) {\r\n lastCheckedParentNode = checked[0].toString().split('_')[0];\r\n lastCheckedNodes = checked;\r\n for (var i = 0; i < customersList.length; i++) {\r\n for (var j = 0; j < customersList[i].children.length; j++) {\r\n if (lastCheckedParentNode != customersList[i].children[j].value.split('_')[0]) {\r\n customersList[i].children[j].disabled = true;\r\n }\r\n }\r\n }\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customersList)), checked: checked });\r\n }\r\n else {\r\n $.each(checked, function (index, value) {\r\n if (lastCheckedParentNode != value.split('_')[0]) {\r\n lastCheckedParentNode = value.split('_')[0];\r\n return false;\r\n }\r\n });\r\n for (var i = 0; i < customersList.length; i++) {\r\n for (var j = 0; j < customersList[i].children.length; j++) {\r\n if (lastCheckedParentNode != customersList[i].children[j].value.split('_')[0]) {\r\n customersList[i].children[j].disabled = true;\r\n var chk = checked.indexOf(customersList[i].children[j].value);\r\n if (chk >= 0)\r\n checked.splice(chk, 1);\r\n if (checked.length == 0)\r\n customersList[i].children[j].disabled = false;\r\n }\r\n else {\r\n customersList[i].children[j].disabled = false;\r\n }\r\n }\r\n }\r\n lastCheckedNodes = checked;\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customersList)), checked: checked });\r\n }\r\n }\r\n }\r\n\r\n onExpand(expanded) {\r\n this.setState({ expanded: expanded });\r\n }\r\n\r\n submitAssignBookingConfirm() {\r\n \r\n // if (this.state.BookingSystem.BookingNumber == null || this.state.BookingSystem.BookingNumber == '') { //Commented for RCNG-945\r\n if (this.state.checked.length == 0)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please provide Customer Access details.\");\r\n else {\r\n //var confirmationMessage = \"Booking data will not be saved because a booking number has not been provided. Continue?\"; //Commented for RCNG-945\r\n //RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.submitBookingAction.bind(this), this.closeConfirmation.bind(this));\r\n this.submitBookingAction();\r\n }\r\n //}\r\n //else { \r\n // this.submitAssignBooking();\r\n //}\r\n }\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n submitBookingAction() {\r\n //if (IsTriggered == false) {\r\n // IsTriggered = true; \r\n this.submitAssignBooking();\r\n //}\r\n RCNGWindow.ConfirmWindow.close();\r\n } \r\n\r\n submitAssignBooking() {\r\n /* RCNG 94 start */\r\n //RCNG-33 Start\r\n \r\n ////Commented from here for RCNG-945\r\n //const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.BookingSystem;\r\n //const { DepartingVVC, ArrivingVVC, VesselCd, LifecycleCd } = this.state.SelectedReefers[0];\r\n //var PrevDepartingVoyage = DepartingVVC.split('-')[0].trim();\r\n //var PrevDepartingCall = DepartingVVC.split('-')[1].trim();\r\n //var PrevArrivalVoyage = ArrivingVVC.split('-')[0].trim();\r\n //var PrevArrivalCall = ArrivingVVC.split('-')[1].trim();\r\n\r\n //var currentdepartingVVC = VesselCd + ',' + PrevDepartingVoyage + ',' + PrevDepartingCall;\r\n //var currentarrivalVVC = (PrevArrivalVoyage != '' ? VesselCd : '') + ',' + PrevArrivalVoyage + ',' + PrevArrivalCall;\r\n //var chosenDepartingVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n //var chosenArrivalVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n //\r\n ////if ((LifecycleCd == 'C' || LifecycleCd == null) && chosenDepartingVVC == ',,')\r\n //if (LifecycleCd == 'C' || LifecycleCd == null)\r\n // currentdepartingVVC = ',,';\r\n ////if ((LifecycleCd == 'C' || LifecycleCd == null) && chosenArrivalVVC == ',,')\r\n //if (LifecycleCd == 'C' || LifecycleCd == null)\r\n // currentarrivalVVC = ',,';\r\n\r\n //if (currentdepartingVVC != chosenDepartingVVC || currentarrivalVVC != chosenArrivalVVC)\r\n // this.state.BookingSystem.IsVVCModified = true;\r\n //else\r\n // this.state.BookingSystem.IsVVCModified = false;//RCNG-139\r\n ////RCNG-33 End\r\n // /* RCNG 94 end */\r\n ////if (this.state.BookingSystem.IsEdit) {\r\n // if (this.state.SelectedReefers[0].TemperatureUnit != null) {\r\n // var _lststrValue = this.state.SelectedReefers[0].TemperatureUnit.toString().trim().split('@');\r\n // var temperatureCd = _lststrValue[1];\r\n // if (this.state.BookingSystem.BookedTemperatureUnit != temperatureCd) {\r\n // if (this.state.BookingSystem.BookedTemperatureUnit == \"\" && temperatureCd == \"C\") { }\r\n // else\r\n // this.state.BookingSystem.IsBookingModified = true;\r\n // }\r\n // }\r\n // else if(this.state.BookingSystem.BookedTemperatureUnit!= null)\r\n // this.state.BookingSystem.IsBookingModified = true;\r\n\r\n // if (this.state.SelectedReefers[0].BookedTemperature != null) {\r\n // if (this.state.BookingSystem.BookedTemperature != this.state.SelectedReefers[0].BookedTemperature) {\r\n // this.state.BookingSystem.IsBookingModified = true;\r\n // }\r\n // }\r\n // else if (this.state.BookingSystem.BookedTemperature != null && this.state.BookingSystem.BookedTemperature != '')\r\n // this.state.BookingSystem.IsBookingModified = true;\r\n //Commented till here RCNG-945\r\n var checkedGroups = [];\r\n var existingGroups = [];\r\n if (this.state.checked.length > 0) {\r\n $.each(this.state.checked, function (index, value) {\r\n checkedGroups.push(value);\r\n });\r\n }\r\n if (this.state.CustomerGroupsList.length > 0) {\r\n $.each(this.state.CustomerGroupsList, function (index, value) {\r\n $.each(value.children, function (ind, val) {\r\n if (val.isSelected == true) {\r\n existingGroups.push(val.value);\r\n }\r\n });\r\n });\r\n }\r\n var IsAccessModified = false;\r\n if (checkedGroups.length == existingGroups.length) {\r\n if (checkedGroups.length > 0 && existingGroups.length > 0) {\r\n $.each(checkedGroups, function (key, value) {\r\n var index = $.inArray(value, existingGroups);\r\n if (index == -1) {\r\n IsAccessModified = true\r\n }\r\n });\r\n }\r\n }\r\n else\r\n IsAccessModified = true;\r\n\r\n this.state.BookingSystem.IsCustomerAccessModified = IsAccessModified;\r\n /* RCNG 94 start */\r\n //RCNG-33\r\n //if (!this.state.BookingSystem.IsBookingModified && !this.state.BookingSystem.IsCustomerAccessModified && !this.state.BookingSystem.IsVVCModified) { //Commented for RCNG-945\r\n if (!this.state.BookingSystem.IsCustomerAccessModified) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please modify Customer Access details.\");\r\n return;\r\n }\r\n //}\r\n //RCNG 94 //RCNG-33 \r\n this.submitAssignBookingAfterPrompt();//Added for RCNG-945\r\n //this.ValidateVVCandSubmitBooking(); //Commented for RCNG-945\r\n \r\n //Moved below code to new method - submitbookingafterprompt()\r\n //this.state.BookingSystem.RcdmasterId = this.state.SelectedReefers[0].RCDMasterID;\r\n //this.state.BookingSystem.Unitmasterid = this.state.SelectedReefers[0].UnitMasterID;\r\n //this.state.BookingSystem.CustomerId = this.state.SelectedReefers[0].CustomerID;\r\n //this.state.BookingSystem.UserId = this.props.UserID;\r\n //this.state.BookingSystem.eventmasteridForAssign = 0;\r\n //this.state.BookingSystem.eventmasteridforupdate = 0;\r\n //this.state.BookingSystem.EventDtm = this.state.SelectedReefers[0].EventDTTM;\r\n //this.state.BookingSystem.RCDReportingInterval = this.state.SelectedReefers[0].RCDReportingInterval;\r\n //this.state.BookingSystem.SetPoint = this.state.SelectedReefers[0].SetPoint;\r\n\r\n //var checkedGroupIds = [];\r\n //var selUnits = [];\r\n //var checkedList = this.state.checked;\r\n\r\n //if (this.state.SelectedReefers.length > 1) {\r\n // $.each(this.state.SelectedReefers, function (index, value) {\r\n // selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n // });\r\n //}\r\n //else {\r\n // selectedUnits = this.state.SelectedReefers[0].UnitMasterID.toString();\r\n //}\r\n\r\n //$.each(selectedUnits.split(','), function (index, value) {\r\n // selUnits.push(parseInt(value));\r\n //});\r\n\r\n //$.each(checkedList, function (index, value) { \r\n // checkedGroupIds.push(parseInt(value.split(':')[1].split('_')[0]));\r\n //});\r\n\r\n //this.state.BookingSystem.SelectedUnits = selUnits;\r\n //this.state.BookingSystem.Groups = checkedGroupIds;\r\n //$('#globalLoader').show();\r\n //var bookingSystem = JSON.stringify(this.state.BookingSystem);\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/AssignBookingdetails';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: bookingSystem, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json())\r\n // .then(data => {\r\n // $('#globalLoader').hide();\r\n // if (data == 'Booking assigned successfully.' || data == 'Booking updated successfully.') {\r\n // $(\"#contextMenuModel .close\").click();\r\n // if (data == 'Booking assigned successfully.' && this.state.BookingSystem.Groups.length > 0 && this.state.BookingSystem.BookingNumber != null && this.state.BookingSystem.BookingNumber != '')\r\n // data = \"Booking and Customer Access assigned successfully.\";\r\n // if (data == 'Booking assigned successfully.' && this.state.BookingSystem.Groups.length > 0 && (this.state.BookingSystem.BookingNumber == null || this.state.BookingSystem.BookingNumber == ''))\r\n // data = \"Customer Access assigned successfully.\";\r\n // if (data == 'Booking updated successfully.' && this.state.BookingSystem.Groups.length > 0 && this.state.BookingSystem.IsCustomerAccessModified && this.state.BookingSystem.IsBookingModified)\r\n // data = \"Booking and Customer Access updated successfully.\";\r\n // if (data == 'Booking updated successfully.' && this.state.BookingSystem.Groups.length > 0 && this.state.BookingSystem.IsCustomerAccessModified && !this.state.BookingSystem.IsBookingModified)\r\n // data = \"Customer Access updated successfully.\"; \r\n // this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n // this.props.refreshStatusGrid();\r\n // PopupWindow.showErrorMessage(\"Booking and Access\", data);\r\n \r\n // }\r\n // else {\r\n // PopupWindow.showErrorMessage(\"Booking and Access\", data);\r\n // }\r\n // });\r\n }\r\n\r\n submitAssignBookingAfterPrompt() {\r\n \r\n $('#globalLoader').show(); //Added for RCNG-945\r\n this.state.BookingSystem.RcdmasterId = this.state.SelectedReefers[0].RCDMasterID;\r\n this.state.BookingSystem.Unitmasterid = this.state.SelectedReefers[0].UnitMasterID;\r\n this.state.BookingSystem.CustomerId = this.state.SelectedReefers[0].CustomerID;\r\n this.state.BookingSystem.UserId = this.props.UserID;\r\n this.state.BookingSystem.eventmasteridForAssign = 0;\r\n this.state.BookingSystem.eventmasteridforupdate = 0;\r\n this.state.BookingSystem.EventDtm = this.state.SelectedReefers[0].EventDTTM;\r\n this.state.BookingSystem.RCDReportingInterval = this.state.SelectedReefers[0].RCDReportingInterval;\r\n this.state.BookingSystem.SetPoint = this.state.SelectedReefers[0].SetPoint;\r\n\r\n var checkedGroupIds = [];\r\n var selUnits = [];\r\n var checkedList = this.state.checked;\r\n\r\n if (this.state.SelectedReefers.length > 1) {\r\n $.each(this.state.SelectedReefers, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = this.state.SelectedReefers[0].UnitMasterID.toString();\r\n }\r\n\r\n $.each(selectedUnits.split(','), function (index, value) {\r\n selUnits.push(parseInt(value));\r\n });\r\n\r\n $.each(checkedList, function (index, value) {\r\n checkedGroupIds.push(parseInt(value.split(':')[1].split('_')[0]));\r\n });\r\n\r\n this.state.BookingSystem.SelectedUnits = selUnits;\r\n this.state.BookingSystem.Groups = checkedGroupIds;\r\n //$('#globalLoader').show();\r\n var bookingSystem = JSON.stringify(this.state.BookingSystem);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/AssignBookingdetails';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: bookingSystem, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data == 'Booking assigned successfully.' || data == 'Booking updated successfully.') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n //RCNG-135 Start\r\n /*\r\n if (data == 'Booking assigned successfully.' && this.state.BookingSystem.Groups.length > 0 && this.state.BookingSystem.BookingNumber != null && this.state.BookingSystem.BookingNumber != '')\r\n data = \"Booking and Customer Access assigned successfully.\";\r\n if (data == 'Booking assigned successfully.' && this.state.BookingSystem.Groups.length > 0 && (this.state.BookingSystem.BookingNumber == null || this.state.BookingSystem.BookingNumber == ''))\r\n data = \"Customer Access assigned successfully.\";\r\n if (data == 'Booking updated successfully.' && this.state.BookingSystem.Groups.length > 0 && this.state.BookingSystem.IsCustomerAccessModified && this.state.BookingSystem.IsBookingModified)\r\n data = \"Booking and Customer Access updated successfully.\";\r\n if (data == 'Booking updated successfully.' && this.state.BookingSystem.Groups.length > 0 && this.state.BookingSystem.IsCustomerAccessModified && !this.state.BookingSystem.IsBookingModified)\r\n data = \"Customer Access updated successfully.\";\r\n */\r\n var infoMessage = \"\";\r\n if (self.props.reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) //Added for RCNG-945\r\n infoMessage = \"Customer Access assigned successfully.\";\r\n else\r\n infoMessage = \"Customer Access updated successfully.\";\r\n /* //Commented for RCNG-945\r\n if (data == 'Booking assigned successfully.') {\r\n if (this.state.BookingSystem.Groups.length > 0 && this.state.BookingSystem.BookingNumber != null && this.state.BookingSystem.BookingNumber != '') {\r\n if (this.state.BookingSystem.IsVVCModified)\r\n infoMessage = \"Booking, Customer Access and VVC Changes assigned successfully.\";\r\n else\r\n infoMessage = \"Booking and Customer Access assigned successfully.\";\r\n }\r\n\r\n if (this.state.BookingSystem.Groups.length > 0 && (this.state.BookingSystem.BookingNumber == null || this.state.BookingSystem.BookingNumber == '')) {\r\n if (this.state.BookingSystem.IsVVCModified)\r\n infoMessage = \"Customer Access and VVC Changes assigned successfully.\";\r\n else\r\n infoMessage = \"Customer Access assigned successfully.\";\r\n }\r\n if (this.state.BookingSystem.Groups.length <= 0 && this.state.BookingSystem.BookingNumber != null && this.state.BookingSystem.BookingNumber != '') {\r\n if (this.state.BookingSystem.IsVVCModified)\r\n infoMessage = \"Booking and VVC Changes assigned successfully.\";\r\n else\r\n infoMessage = \"Booking assigned successfully.\";\r\n }\r\n\r\n }\r\n if (data == 'Booking updated successfully.') {\r\n if (this.state.BookingSystem.IsCustomerAccessModified && this.state.BookingSystem.IsBookingModified) {\r\n if (this.state.BookingSystem.IsVVCModified)\r\n infoMessage = \"Booking, Customer Access and VVC Changes updated successfully.\";\r\n else\r\n infoMessage = \"Booking and Customer Access updated successfully.\";\r\n }\r\n\r\n if (this.state.BookingSystem.IsCustomerAccessModified && !this.state.BookingSystem.IsBookingModified) {\r\n if (this.state.BookingSystem.IsVVCModified)\r\n infoMessage = \"Customer Access and VVC Changes updated successfully.\";\r\n else\r\n infoMessage = \"Customer Access updated successfully.\";\r\n }\r\n if (!this.state.BookingSystem.IsCustomerAccessModified && this.state.BookingSystem.IsBookingModified) {\r\n if (this.state.BookingSystem.IsVVCModified)\r\n infoMessage = \"Booking and VVC Changes updated successfully.\";\r\n else\r\n infoMessage = \"Booking updated successfully.\";\r\n }\r\n }\r\n */\r\n //RCNG-135 End\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n this.props.refreshStatusGrid();\r\n\r\n //RCNG-135\r\n if (infoMessage != '')\r\n PopupWindow.showErrorMessage(\"Third-Party Access\", infoMessage);\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Third-Party Access\", data);\r\n }\r\n });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n var reeferData = nextprops.reeferData;\r\n \r\n //var EventMasterList = nextprops.reeferFormatter.EventMasterList; //Commented for RCNG-945\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) { \r\n /* //Commented for RCNG-945\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === reeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n var EventCd = eventDescription[0].EventCd;\r\n }\r\n this.getRefTemperatureUnit();*/\r\n this.setState({ SelectedReefers: reeferData }, () => {\r\n this.bindCustomerData(nextprops.CustomerAccessData);\r\n //this.getVVCInfo();//RCNG-130 //Commented for RCNG-945\r\n });\r\n /* //Commented for RCNG-945\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(newBookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].BookingNumber != null && reeferData[0].BookingNumber != \"\" && !this.ValidateBookingID(reeferData) && EventCd != \"BDR\")\r\n bookingSystem.IsEdit = true;\r\n else\r\n bookingSystem.IsEdit = false;\r\n if (bookingSystem.IsEdit) {\r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n bookingSystem.BookedTemperatureUnit = temperatureCd != undefined ? temperatureCd : \"C\";\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = reeferData[0].BookedTemperature != null ? reeferData[0].BookedTemperature : '';\r\n }\r\n //RCNG-33\r\n if (reeferData[0].LifecycleCd == 'L' || reeferData[0].LifecycleCd == 'R' || reeferData[0].LifecycleCd == 'D' || reeferData[0].LifecycleCd == 'P') {\r\n var departingVVC = reeferData[0].DepartingVVC.split('-');\r\n \r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = reeferData[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n bookingSystem.SelectedVoyage = depVoyage;\r\n bookingSystem.SelectedCall = depCall;\r\n bookingSystem.SelectedVesselCD = depVoyage != '' ? reeferData[0].VesselCd : '';\r\n bookingSystem.ArrSelectedVesselCD = arrVoyage != '' ? reeferData[0].VesselCd : '';\r\n bookingSystem.ArrSelectedVoyage = arrVoyage;\r\n bookingSystem.ArrSelectedCall = arrCall;\r\n }\r\n \r\n this.setState({ BookingSystem: bookingSystem });*/\r\n } \r\n }\r\n\r\n Temperaturechange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.BookedTemperatureUnit = Value;\r\n this.setState({ BookingSystem: bookingSystem });\r\n }\r\n\r\n BookingNumberChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.BookingNumber = Value;\r\n this.setState({ BookingSystem: bookingSystem }); \r\n }\r\n\r\n BookingTemperatureChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value)) {\r\n bookingSystem.BookedTemperature = Value;\r\n this.setState({ BookingSystem: bookingSystem });\r\n }\r\n\r\n else\r\n return;\r\n }\r\n //WI-27079:RCWeb - RC UI Edit Booking Changes start\r\n setBookinglevel() {\r\n RCNGWindow.ConfirmWindow.close();\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.OperationalLevel = 'AllReefers';\r\n //this.setState({ BookingSystem: bookingSystem });\r\n //this.submitBooking();\r\n this.setState({ BookingSystem: bookingSystem }, () => {\r\n $('#globalLoader').show();\r\n this.submitAssignBookingAfterPrompt();\r\n });\r\n }\r\n setReeferlevel() {\r\n RCNGWindow.ConfirmWindow.close();\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.OperationalLevel = 'SelectedReefer';\r\n //this.setState({ BookingSystem: bookingSystem });\r\n //this.submitBooking();\r\n this.setState({ BookingSystem: bookingSystem }, () => {\r\n $('#globalLoader').show();\r\n this.submitAssignBookingAfterPrompt();\r\n });\r\n }\r\n\r\n submitAssignBookingAfterPromptMessage() {\r\n if (this.state.BookingSystem.BookingNumber != null && this.state.BookingSystem.BookingNumber != \"\") {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingReefers?BookingNumber=' + this.state.BookingSystem.BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.BookingInfo = data;\r\n this.setState({ BookingSystem: bookingSystem });\r\n if (!(this.state.BookingSystem.IsEdit) && data.length >= 1) {\r\n $('#globalLoader').hide();\r\n var confirmationMessage = \"\";\r\n if (this.state.BookingSystem.IsVVCModified)\r\n confirmationMessage = \"More than one reefer is associated with this booking. Do you wish to apply the updated “Booking and VVC Changes” to all associated reefers or selected reefer?\";\r\n else\r\n confirmationMessage = \"More than one reefer is associated with this booking. Do you wish to apply the updated “Booked Temperature” to all associated reefers or selected reefer?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBoxwith3options(confirmationMessage, this.setBookinglevel.bind(this), this.setReeferlevel.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else if (this.state.BookingSystem.IsEdit && this.state.BookingSystem.IsBookingModified && data.length > 1) {\r\n $('#globalLoader').hide();\r\n var confirmationMessage = \"\";\r\n if (this.state.BookingSystem.IsVVCModified)\r\n confirmationMessage = \"More than one reefer is associated with this booking. Do you wish to apply the updated “Booking and VVC Changes” to all associated reefers or selected reefer?\";\r\n else\r\n confirmationMessage = \"More than one reefer is associated with this booking. Do you wish to apply the updated “Booked Temperature” to all associated reefers or selected reefer?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBoxwith3options(confirmationMessage, this.setBookinglevel.bind(this), this.setReeferlevel.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n this.submitAssignBookingAfterPrompt();\r\n }\r\n\r\n });\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n this.submitAssignBookingAfterPrompt();\r\n }\r\n }\r\n\r\n CloseModal() {\r\n lastCheckedNodes = [];\r\n this.setState({ checked: lastCheckedNodes });\r\n } \r\n\r\n ValidateBookingID(reeferData: any) {\r\n if (reeferData.length > 0 && reeferData[0].LastBookingEventMasterId != null && reeferData[0].LastBookingEventMasterId.length > 0) {\r\n for (var lastBookingID in reeferData[0].LastBookingEventMasterId) {\r\n if (reeferData[0].EventMasterID == parseInt(reeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n //RCNG-33 Start\r\n ValidateVVCandSubmitBooking() {\r\n \r\n const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.BookingSystem;\r\n var vesselHasVoyageCalls;\r\n \r\n if (SelectedVesselCD != '' && SelectedVesselCD != null) {\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n }\r\n\r\n if (SelectedVesselCD != null && SelectedVesselCD != '' && ArrSelectedVesselCD != null && ArrSelectedVesselCD != '') {\r\n if (SelectedVesselCD != ArrSelectedVesselCD) {\r\n PopupWindow.showErrorMessage('Alert', 'Departing and Arriving VVC should be same');\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (((SelectedVesselCD == '' && SelectedVoyage == '' && SelectedCall == '') || (SelectedVesselCD != '' && SelectedVoyage != '' && (!vesselHasVoyageCalls || (vesselHasVoyageCalls && SelectedCall != '')))) &&\r\n ((ArrSelectedVesselCD == '' && ArrSelectedVoyage == '' && ArrSelectedCall == '') || (ArrSelectedVesselCD != '' && ArrSelectedVoyage != '' && (!vesselHasVoyageCalls || (vesselHasVoyageCalls && ArrSelectedCall != ''))))) {\r\n \r\n var DepVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n var ArrVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ValidateVVCEntered?DepVVC=' + DepVVC + '&ArrVVC=' + ArrVVC;\r\n \r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n \r\n if (data != '') {\r\n if (data == 'DNE')\r\n PopupWindow.showErrorMessage(\"Error\", 'The Departing VVC, ' + SelectedVesselCD + ' ' + SelectedVoyage + ' ' + SelectedCall + ', does not exist. A VVC cannot be created here.');\r\n else if (data == 'ANE')\r\n PopupWindow.showErrorMessage(\"Error\", 'The Arriving VVC, ' + ArrSelectedVesselCD + ' ' + ArrSelectedVoyage + ' ' + ArrSelectedCall + ', does not exist. A VVC cannot be created here.');\r\n return false;\r\n }\r\n else {\r\n \r\n this.OnSubmitVVCValidations();\r\n }\r\n });\r\n }\r\n else {\r\n \r\n if (SelectedVesselCD != null && SelectedVesselCD != '' && ArrSelectedVesselCD != null && ArrSelectedVesselCD != '') {\r\n if (SelectedVesselCD != ArrSelectedVesselCD) {\r\n PopupWindow.showErrorMessage('Alert', 'Departing and Arriving VVC should be same');\r\n return false;\r\n }\r\n }\r\n\r\n var voyagesHaveCalls;\r\n if (SelectedVesselCD != '' && SelectedVesselCD != null) {\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n voyagesHaveCalls = selectedVessel[0].VoyagesHaveCalls;\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Alert', 'Departing VVC not exists');\r\n return false;\r\n }\r\n }\r\n\r\n\r\n if (SelectedVesselCD != '' && SelectedVoyage == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A voyage number must be specified for the Departing VVC.');\r\n return false;\r\n }\r\n else if (SelectedVesselCD != '' && voyagesHaveCalls && SelectedCall == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A call must be specified for the Departing VVC.');\r\n return false;\r\n }\r\n else if (ArrSelectedVesselCD != '' && ArrSelectedVoyage == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A voyage number must be specified for the Arriving VVC.');\r\n return false;\r\n }\r\n else if (ArrSelectedVesselCD != '' && voyagesHaveCalls && ArrSelectedCall == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A call must be specified for the Arriving VVC.');\r\n return false;\r\n }\r\n }\r\n \r\n }\r\n OnSubmitVVCValidations() {\r\n \r\n methodResult = false;\r\n const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.BookingSystem;\r\n const { DepartingVVC, ArrivingVVC, VesselCd, LifecycleCd } = this.state.SelectedReefers[0];\r\n var PrevDepartingVoyage = DepartingVVC.split('-')[0].trim();\r\n var PrevDepartingCall = DepartingVVC.split('-')[1].trim();\r\n var PrevArrivalVoyage = ArrivingVVC.split('-')[0].trim();\r\n var PrevArrivalCall = ArrivingVVC.split('-')[1].trim();\r\n\r\n var currentdepartingVVC = (VesselCd == null ? '' : VesselCd) + ',' + PrevDepartingVoyage + ',' + PrevDepartingCall;\r\n var currentarrivalVVC = (PrevArrivalVoyage != ''? VesselCd:'') + ',' + PrevArrivalVoyage + ',' + PrevArrivalCall;\r\n var chosenDepartingVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n var chosenArrivalVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n\r\n var submitVVCInputData: server.SubmitVVCInputData = {\r\n CurrentDepVVC: (LifecycleCd == 'C' || LifecycleCd == null) ? ',,' : currentdepartingVVC,// && chosenDepartingVVC == ',,'\r\n CurrentArrVVC: (LifecycleCd == 'C' || LifecycleCd == null) ? ',,' : currentarrivalVVC, // && chosenArrivalVVC == ',,'\r\n ChosenDepVVC: chosenDepartingVVC,\r\n ChosenArrVVC: chosenArrivalVVC,\r\n LifecycleCd: LifecycleCd\r\n }\r\n var inputBody = JSON.stringify(submitVVCInputData);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/SubmitVVC';\r\n \r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: inputBody, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n \r\n if (data.IsPromptMessage) {\r\n $('#globalLoader').hide();\r\n RCNGWindow.ConfirmWindow.showConfirmBox(data.ResultMessage, this.SaveUserInputToState.bind(this, data.PromptId), this.closeUserConfirmation.bind(this));\r\n }\r\n else if (!data.IsPromptMessage && data.ResultMessage != null && data.ResultMessage != '') {\r\n PopupWindow.showErrorMessage('Error', data.ResultMessage);\r\n methodResult = false;\r\n return methodResult;\r\n }\r\n else {\r\n this.SaveUserInputToState(data.PromptId);\r\n return methodResult;\r\n }\r\n });\r\n }\r\n\r\n closeUserConfirmation() {\r\n methodResult = false;\r\n RCNGWindow.ConfirmWindow.close();\r\n return false;\r\n }\r\n //RCNG-33 Start\r\n SaveUserInputToState(userInput: number) {\r\n \r\n $('#globalLoader').show();\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.userInput = userInput;\r\n \r\n methodResult = true;\r\n this.setState({ BookingSystem: bookingSystem }, () => {\r\n RCNGWindow.ConfirmWindow.close();//RCNG-109\r\n this.submitAssignBookingAfterPromptMessage();\r\n }); //WI-27079:RCWeb - RC UI Edit Booking Changes\r\n }\r\n\r\n onSuggestionsFetchRequestedforvessel = ({ value }) => {\r\n this.setState({\r\n suggestionsVesselId: this.getvesselNameSuggestions(value)\r\n });\r\n };\r\n getvesselNameSuggestions(value) {\r\n //var vessels = this.state.RefVessels;\r\n var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var vessels = uniq(VesselData);\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : vessels.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequestedforvessel = () => {\r\n this.setState({\r\n suggestionsVesselId: []\r\n });\r\n };\r\n onChangeVesselId = (event, { newValue }) => {\r\n var filters = this.state.BookingSystem;\r\n filters.SelectedVesselCD = newValue;\r\n filters.SelectedVoyage = '';\r\n filters.SelectedCall = '';\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n BookingSystem: filters\r\n });\r\n this.setState({\r\n suggestionsVoyage: this.getvoyageNameSuggestions(newValue)\r\n });\r\n };\r\n onChangcall = (event, { newValue }) => {\r\n var filters = this.state.BookingSystem;\r\n filters.SelectedCall = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n BookingSystem: filters\r\n });\r\n };\r\n renderSuggestionVesselvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionVesselValue(suggestion) {\r\n return suggestion;\r\n }\r\n onSuggestionsFetchRequestedforvoyage = ({ value }) => {\r\n this.setState({\r\n suggestionsVoyage: this.voyageNameSuggestions(value)\r\n });\r\n };\r\n onSuggestionsFetchRequestedforcall = ({ value }) => {\r\n this.setState({\r\n suggestionsCalls: this.callSuggestions(value)\r\n });\r\n };\r\n callSuggestions(value) {\r\n if (this.state.BookingSystem.SelectedVesselCD != \"\" && this.state.BookingSystem.SelectedVesselCD != null && this.state.BookingSystem.SelectedVoyage != \"\" && this.state.BookingSystem.SelectedVoyage != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingSystem.SelectedVesselCD\r\n && tag.VoyageNum === this.state.BookingSystem.SelectedVoyage && tag.CallNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n //return test;\r\n return uniq(test.map(fence => fence.CallNum));\r\n }\r\n else\r\n return [];\r\n };\r\n voyageNameSuggestions(value) {\r\n if (this.state.BookingSystem.SelectedVesselCD != \"\" && this.state.BookingSystem.SelectedVesselCD != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingSystem.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n }\r\n else\r\n return [];\r\n };\r\n getvoyageNameSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag =>\r\n tag.VesselCd.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n };\r\n getcallSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingSystem.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.CallNum));\r\n };\r\n onSuggestionsClearRequestedforvoyage = () => {\r\n this.setState({\r\n suggestionsVoyage: []\r\n });\r\n };\r\n onSuggestionsClearRequestedforcall = () => {\r\n this.setState({\r\n suggestionsCalls: []\r\n });\r\n };\r\n onChangevoyage = (event, { newValue }) => {\r\n var filters = this.state.BookingSystem;\r\n filters.SelectedVoyage = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n filters.SelectedCall = '';\r\n this.setState({\r\n BookingSystem: filters\r\n });\r\n this.setState({\r\n suggestionsCalls: this.getcallSuggestions(newValue)\r\n });\r\n };\r\n renderSuggestionvoyagevalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionvoyageValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestioncallvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestioncallValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n onSuggestionsFetchRequestedforArrvessel = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsVesselId: this.getArrvesselNameSuggestions(value)\r\n });\r\n };\r\n getArrvesselNameSuggestions(value) {\r\n //var vessels = this.state.RefVessels;\r\n var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var vessels = uniq(VesselData);\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : vessels.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequestedforArrvessel = () => {\r\n this.setState({\r\n ArrsuggestionsVesselId: []\r\n });\r\n };\r\n onChangeArrVesselId = (event, { newValue }) => {\r\n var filters = this.state.BookingSystem;\r\n filters.ArrSelectedVesselCD = newValue;\r\n filters.ArrSelectedVoyage = '';\r\n filters.ArrSelectedCall = '';\r\n\r\n this.setState({\r\n BookingSystem: filters\r\n });\r\n this.setState({\r\n ArrsuggestionsVoyage: this.getArrvoyageNameSuggestions(newValue)\r\n });\r\n };\r\n onChangArrcall = (event, { newValue }) => {\r\n var filters = this.state.BookingSystem;\r\n filters.ArrSelectedCall = newValue;\r\n\r\n this.setState({\r\n BookingSystem: filters\r\n });\r\n };\r\n renderSuggestionArrVesselvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrVesselValue(suggestion) {\r\n return suggestion;\r\n }\r\n onSuggestionsFetchRequestedforArrvoyage = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsVoyage: this.ArrvoyageNameSuggestions(value)\r\n });\r\n };\r\n onSuggestionsFetchRequestedforArrcall = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsCalls: this.ArrcallSuggestions(value)\r\n });\r\n };\r\n ArrcallSuggestions(value) {\r\n if (this.state.BookingSystem.ArrSelectedVesselCD != \"\" && this.state.BookingSystem.ArrSelectedVesselCD != null && this.state.BookingSystem.ArrSelectedVoyage != \"\" && this.state.BookingSystem.ArrSelectedVoyage != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingSystem.ArrSelectedVesselCD\r\n && tag.VoyageNum === this.state.BookingSystem.ArrSelectedVoyage && tag.CallNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n //return test;\r\n return uniq(test.map(fence => fence.CallNum));\r\n }\r\n else\r\n return [];\r\n };\r\n ArrvoyageNameSuggestions(value) {\r\n if (this.state.BookingSystem.ArrSelectedVesselCD != \"\" && this.state.BookingSystem.ArrSelectedVesselCD != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingSystem.ArrSelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n }\r\n else\r\n return [];\r\n };\r\n getArrvoyageNameSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag =>\r\n tag.VesselCd.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n };\r\n getArrcallSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.BookingSystem.ArrSelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.CallNum));\r\n };\r\n onSuggestionsClearRequestedforArrvoyage = () => {\r\n this.setState({\r\n ArrsuggestionsVoyage: []\r\n });\r\n };\r\n onSuggestionsClearRequestedforArrcall = () => {\r\n this.setState({\r\n ArrsuggestionsCalls: []\r\n });\r\n };\r\n onChangeArrvoyage = (event, { newValue }) => {\r\n var filters = this.state.BookingSystem;\r\n filters.ArrSelectedVoyage = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n filters.ArrSelectedCall = '';\r\n this.setState({\r\n BookingSystem: filters\r\n });\r\n this.setState({\r\n ArrsuggestionsCalls: this.getArrcallSuggestions(newValue)\r\n });\r\n };\r\n renderSuggestionArrvoyagevalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrvoyageValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestionArrcallvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrcallValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n //RCNG-33 End\r\n\r\n public render() {\r\n //const { checked, expanded } = this.state;\r\n\r\n var Voyagedisabled: any;\r\n var Calldisabled: any;\r\n \r\n if (this.state.BookingSystem.SelectedVesselCD != \"\" && this.state.BookingSystem.SelectedVesselCD != null) {\r\n Voyagedisabled = false;\r\n Calldisabled = true;\r\n }\r\n else {\r\n Voyagedisabled = true;\r\n Calldisabled = true;\r\n }\r\n if (this.state.BookingSystem.SelectedVoyage != \"\" && this.state.BookingSystem.SelectedVoyage != null) {\r\n //RCNG-140\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == this.state.BookingSystem.SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n var vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n if (vesselHasVoyageCalls)\r\n Calldisabled = false;\r\n else\r\n Calldisabled = true;\r\n }\r\n }\r\n else {\r\n Calldisabled = true;\r\n }\r\n var ArrVoyagedisabled: any;\r\n var ArrCalldisabled: any;\r\n if (this.state.BookingSystem.ArrSelectedVesselCD != \"\" && this.state.BookingSystem.ArrSelectedVesselCD != null) {\r\n ArrVoyagedisabled = false;\r\n ArrCalldisabled = true;\r\n }\r\n else {\r\n ArrVoyagedisabled = true;\r\n ArrCalldisabled = true;\r\n }\r\n if (this.state.BookingSystem.ArrSelectedVoyage != \"\" && this.state.BookingSystem.ArrSelectedVoyage != null) {\r\n //RCNG-140\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == this.state.BookingSystem.ArrSelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n var vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n if (vesselHasVoyageCalls)\r\n ArrCalldisabled = false;\r\n else\r\n ArrCalldisabled = true;\r\n }\r\n }\r\n else {\r\n ArrCalldisabled = true;\r\n }\r\n const { checked, expanded, suggestionsVesselId, suggestionsVoyage, suggestionsCalls, ArrsuggestionsVesselId, ArrsuggestionsVoyage, ArrsuggestionsCalls } = this.state;\r\n\r\n const FenceIdListinputPropsforvessel = {\r\n id: 'vesselID',\r\n placeholder: 'Vessel',\r\n value: this.state.BookingSystem.SelectedVesselCD,\r\n onChange: this.onChangeVesselId.bind(this),\r\n //readOnly: true //RCNG 94 //RCNG-109\r\n };\r\n const FenceIdListinputPropsforvoyage = {\r\n id: 'voyageNum',\r\n placeholder: 'Voyage',\r\n value: this.state.BookingSystem.SelectedVoyage,\r\n onChange: this.onChangevoyage.bind(this),\r\n disabled: Voyagedisabled,\r\n //readOnly: true //RCNG 94 //RCNG-109\r\n };\r\n const FenceIdListinputPropsforcall = {\r\n id: 'CallNum',\r\n placeholder: 'Call',\r\n value: this.state.BookingSystem.SelectedCall,\r\n onChange: this.onChangcall.bind(this),\r\n disabled: Calldisabled,\r\n // readOnly: true //RCNG 94\r\n };\r\n const FenceIdListinputPropsforArrvessel = {\r\n id: 'vesselID',\r\n placeholder: 'Vessel',\r\n value: this.state.BookingSystem.ArrSelectedVesselCD,\r\n onChange: this.onChangeArrVesselId.bind(this),\r\n // readOnly: true //RCNG 94\r\n };\r\n const FenceIdListinputPropsforArrvoyage = {\r\n id: 'voyageNum',\r\n placeholder: 'Voyage',\r\n value: this.state.BookingSystem.ArrSelectedVoyage,\r\n onChange: this.onChangeArrvoyage.bind(this),\r\n disabled: ArrVoyagedisabled,\r\n //readOnly: true //RCNG 94\r\n };\r\n const FenceIdListinputPropsforArrcall = {\r\n id: 'CallNum',\r\n placeholder: 'Call',\r\n value: this.state.BookingSystem.ArrSelectedCall,\r\n onChange: this.onChangArrcall.bind(this),\r\n disabled: ArrCalldisabled,\r\n //readOnly: true //RCNG 94\r\n };\r\n return \r\n }\r\n}\r\n\r\nexport class UnAssignBookingSystem extends React.Component { \r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n SelectedReefers: [], BookingSystem: newBookingSystem, RefTemperatureUnit: [], isLoading: true, collapsed: false, CustomerGroups: [], checked: [], expanded: [], CustomerGroupsList: [], IsCustomerAccessHide: true, UnassignOption: '', lbl3rdPartyDisabled: false, lblBookingDisabled: false, lblBothDisabled: false, IsCommandIssued: false, PrevSelectedItems: []\r\n , RefVessels: [], suggestionsVesselId: [], suggestionsVoyage: [], suggestionsCalls: [], ArrsuggestionsVesselId: [], ArrsuggestionsVoyage: [], ArrsuggestionsCalls: [] };\r\n lastCheckedNodes = [];\r\n selReefers = this.props.reeferData;\r\n }\r\n\r\n getRefTemperatureUnit() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetRefTemperatureUnit')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefTemperatureUnit: data });\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n var EventMasterList = this.props.reeferFormatter.EventMasterList;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === reeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n var EventCd = eventDescription[0].EventCd;\r\n }\r\n var IsAssignTo3P;\r\n if (reeferData != null && reeferData != undefined) {\r\n \r\n if (reeferData[0].CustomerName != \"\" && reeferData[0].BookingNumber == null && reeferData[0].BookingNumber == '') {\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n else if (reeferData[0].BookingNumber == null){\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n }\r\n this.setState({ SelectedReefers: reeferData }, () => { this.bindUnassignData(this.props.CustomerAccessData,EventCd,IsAssignTo3P); });\r\n this.getRefTemperatureUnit();\r\n var TemperatureUnitCd = \"\";\r\n var unassignMode = \"\"; \r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].BookingNumber != null && reeferData[0].BookingNumber != \"\" && !this.ValidateBookingID(reeferData)) {\r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var BookedTemperature = parseFloat(_lststrValue[0]);\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n if (temperatureCd == \"F\")\r\n TemperatureUnitCd = \"Fahrenheit\";\r\n else if (temperatureCd == \"C\")\r\n TemperatureUnitCd = \"Celsius\";\r\n\r\n bookingSystem.BookedTemperatureUnit = TemperatureUnitCd;\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = BookedTemperature != undefined ? BookedTemperature.toString() : ''; \r\n } \r\n this.setState({ BookingSystem: bookingSystem });\r\n }\r\n } \r\n\r\n onExpand(expanded) {\r\n this.setState({ expanded: expanded });\r\n }\r\n\r\n submitUnAssignCommand() {\r\n $('#globalLoader').show();\r\n this.state.BookingSystem.RcdmasterId = this.state.SelectedReefers[0].RCDMasterID;\r\n this.state.BookingSystem.Unitmasterid = this.state.SelectedReefers[0].UnitMasterID;\r\n this.state.BookingSystem.CustomerId = this.state.SelectedReefers[0].CustomerID;\r\n this.state.BookingSystem.UserId = this.props.UserID;\r\n this.state.BookingSystem.eventmasteridForAssign = 0;\r\n this.state.BookingSystem.eventmasteridforupdate = 0;\r\n this.state.BookingSystem.EventDtm = this.state.SelectedReefers[0].EventDTTM;\r\n this.state.BookingSystem.RCDReportingInterval = this.state.SelectedReefers[0].RCDReportingInterval;\r\n this.state.BookingSystem.SetPoint = this.state.SelectedReefers[0].SetPoint;\r\n\r\n var checkedGroupIds = [];\r\n var selUnits = [];\r\n var checkedList = this.state.checked;\r\n\r\n if (this.state.SelectedReefers.length > 1) {\r\n $.each(this.state.SelectedReefers, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = this.state.SelectedReefers[0].UnitMasterID.toString();\r\n }\r\n\r\n $.each(selectedUnits.split(','), function (index, value) {\r\n selUnits.push(parseInt(value));\r\n });\r\n\r\n $.each(checkedList, function (index, value) { \r\n checkedGroupIds.push(parseInt(value.split(':')[1].split('_')[0]));\r\n });\r\n\r\n this.state.BookingSystem.SelectedUnits = selUnits;\r\n this.state.BookingSystem.Groups = checkedGroupIds;\r\n this.state.BookingSystem.UnassignMode = this.state.UnassignOption;\r\n\r\n var bookingSystem = JSON.stringify(this.state.BookingSystem);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/UnAssignBookingdetails';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: bookingSystem, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data == 'Reefer unassigned successfully.') { \r\n $(\"#contextMenuModel .btn-close\").click(); \r\n if (this.state.BookingSystem.UnassignMode == \"UnassignBooking\")\r\n data = \"Reefer unassigned from Booking successfully.\";\r\n if (this.state.BookingSystem.UnassignMode == \"Unassign3rdParty\")\r\n data = \"Reefer unassigned from Customer Access successfully.\";\r\n if (this.state.BookingSystem.UnassignMode == \"UnassignBoth\")\r\n data = \"Reefer unassigned from both Booking and Customer Access successfully.\";\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n this.props.refreshStatusGrid();\r\n PopupWindow.showErrorMessage(\"Booking and Access\", data);\r\n \r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Booking and Access\", data);\r\n }\r\n });\r\n\r\n }\r\n\r\n bindUnassignData(customerAccessData: any, EventCd: string, IsAssignTo3P:boolean) {\r\n if (customerAccessData != undefined) {\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customerAccessData)), CustomerGroupsList: customerAccessData });\r\n if (customerAccessData.length > 0) {\r\n var defaultChecked = [];\r\n var defaultExpand = [];\r\n $.each(customerAccessData, function (index, value) {\r\n if (value.isSelected == true) {\r\n defaultExpand.push(value.value);\r\n }\r\n $.each(value.children, function (ind, val) {\r\n if (val.isSelected == true) {\r\n defaultChecked.push(val.value);\r\n }\r\n });\r\n });\r\n this.setState({ isLoading: false, IsCustomerAccessHide: false, checked: defaultChecked, expanded: defaultExpand }, () => { return lastCheckedNodes = this.state.checked, this.updateUnassginModel(EventCd, IsAssignTo3P) });\r\n\r\n }\r\n else {\r\n lastCheckedNodes = [];\r\n this.setState({ isLoading: false, checked: [], expanded: [], CustomerGroups: [], CustomerGroupsList: [], IsCustomerAccessHide: true }, () => this.updateUnassginModel(EventCd, IsAssignTo3P));\r\n }\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n var reeferData = nextprops.reeferData; \r\n var EventMasterList = nextprops.reeferFormatter.EventMasterList;\r\n\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === reeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n var EventCd = eventDescription[0].EventCd;\r\n }\r\n var IsAssignTo3P;\r\n if (reeferData != null && reeferData != undefined) {\r\n \r\n if (reeferData[0].CustomerName != \"\" && reeferData[0].BookingNumber == null && reeferData[0].BookingNumber == '') {\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n else if (reeferData[0].BookingNumber == null) {\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n }\r\n\r\n this.setState({ SelectedReefers: reeferData }, () => { this.bindUnassignData(nextprops.CustomerAccessData, EventCd, IsAssignTo3P); });\r\n this.getRefTemperatureUnit();\r\n var TemperatureUnitCd = \"\";\r\n var unassignMode = \"\"; \r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].BookingNumber != null && reeferData[0].BookingNumber != \"\" && !this.ValidateBookingID(reeferData)) {\r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var BookedTemperature = parseFloat(_lststrValue[0]);\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n if (temperatureCd == \"F\")\r\n TemperatureUnitCd = \"Fahrenheit\";\r\n else if (temperatureCd == \"C\")\r\n TemperatureUnitCd = \"Celsius\";\r\n bookingSystem.BookedTemperatureUnit = TemperatureUnitCd;\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = BookedTemperature != undefined ? BookedTemperature.toString() : ''; \r\n } \r\n this.setState({ BookingSystem: bookingSystem }); \r\n } \r\n }\r\n\r\n\r\n CloseModal() {\r\n lastCheckedNodes = [];\r\n this.setState({ checked: lastCheckedNodes });\r\n } \r\n\r\n updateUnassginModel(EventCd: string, IsAssignTo3P: boolean) {\r\n \r\n if (EventCd === \"BDR\" || IsAssignTo3P) {\r\n this.setState({ lbl3rdPartyDisabled: false, lblBookingDisabled: true, lblBothDisabled: true, UnassignOption: \"Unassign3rdParty\" },\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n }\r\n else if (this.state.SelectedReefers[0].BookingNumber != null && this.state.SelectedReefers[0].BookingNumber != '' && !this.ValidateBookingID(this.state.SelectedReefers) && this.state.checked.length > 0)\r\n this.setState({ lbl3rdPartyDisabled: false, lblBookingDisabled: false, lblBothDisabled: false, UnassignOption: \"UnassignBoth\" },\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n else if (this.state.BookingSystem.BookingNumber != null && this.state.BookingSystem.BookingNumber != '' && !this.ValidateBookingID(this.state.SelectedReefers))\r\n this.setState({ lbl3rdPartyDisabled: true, lblBookingDisabled: false, lblBothDisabled: true, UnassignOption: \"UnassignBooking\" },\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n else\r\n this.setState({ lbl3rdPartyDisabled: false, lblBookingDisabled: true, lblBothDisabled: true, UnassignOption: \"Unassign3rdParty\" },\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n }\r\n\r\n UnassignModeChange(value) { \r\n if (!this.state.lbl3rdPartyDisabled && this.state.lblBookingDisabled && this.state.lblBothDisabled) {\r\n if ($(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').removeClass('active');\r\n if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active');\r\n if (!$(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').addClass('active');\r\n }\r\n if (!this.state.lblBookingDisabled && this.state.lbl3rdPartyDisabled && this.state.lblBothDisabled) {\r\n if (!$(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').addClass('active');\r\n if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active');\r\n if ($(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').removeClass('active');\r\n }\r\n\r\n if (value == \"UnassignBooking\" && !this.state.lblBookingDisabled) {\r\n if (!$(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').addClass('active'); \r\n if ($(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').removeClass('active');\r\n if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active'); \r\n this.setState({ UnassignOption: value });\r\n }\r\n if (value == \"Unassign3rdParty\" && !this.state.lbl3rdPartyDisabled) {\r\n if (!$(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').addClass('active');\r\n if ($(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').removeClass('active');\r\n if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active'); \r\n this.setState({ UnassignOption: value });\r\n }\r\n if (value == \"UnassignBoth\" && !this.state.lblBothDisabled) {\r\n if (!$(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').addClass('active');\r\n if ($(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').removeClass('active');\r\n if ($(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').removeClass('active');\r\n this.setState({ UnassignOption: value });\r\n } \r\n } \r\n\r\n ValidateBookingID(reeferData: any) {\r\n if (reeferData.length > 0 && reeferData[0].LastBookingEventMasterId != null && reeferData[0].LastBookingEventMasterId.length > 0) {\r\n for (var lastBookingID in reeferData[0].LastBookingEventMasterId) {\r\n if (reeferData[0].EventMasterID == parseInt(reeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public render() {\r\n const { checked, expanded } = this.state;\r\n return
\r\n \r\n
\r\n }\r\n}\r\n\r\nexport class EditBookingSystem extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n SelectedReefers: [], BookingSystem: newBookingSystem, RefTemperatureUnit: [], isLoading: true, collapsed: false, CustomerGroups: [], checked: [], expanded: [], CustomerGroupsList: [], IsCustomerAccessHide: true, UnassignOption: '', lbl3rdPartyDisabled: false, lblBookingDisabled: false, lblBothDisabled: false, IsCommandIssued: false, PrevSelectedItems: []\r\n , RefVessels: [], suggestionsVesselId: [], suggestionsVoyage: [], suggestionsCalls: [], ArrsuggestionsVesselId: [], ArrsuggestionsVoyage: [], ArrsuggestionsCalls: [] };\r\n }\r\n\r\n getRefTemperatureUnit() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetRefTemperatureUnit')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefTemperatureUnit: data });\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n if (reeferData != undefined && reeferData != null) {\r\n this.bindEditData();\r\n this.setState({ SelectedReefers: reeferData });\r\n }\r\n }\r\n\r\n submitBookingDetails() {\r\n $('#globalLoader').show();\r\n //var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n this.state.BookingSystem.RcdmasterId = this.state.SelectedReefers[0].RCDMasterID;\r\n this.state.BookingSystem.Unitmasterid = this.state.SelectedReefers[0].UnitMasterID;\r\n this.state.BookingSystem.CustomerId = this.state.SelectedReefers[0].CustomerID;\r\n this.state.BookingSystem.UserId = this.props.UserID;\r\n this.state.BookingSystem.eventmasteridForAssign = 0;\r\n this.state.BookingSystem.eventmasteridforupdate = 0;\r\n this.state.BookingSystem.EventDtm = this.state.SelectedReefers[0].EventDTTM;\r\n this.state.BookingSystem.RCDReportingInterval = this.state.SelectedReefers[0].RCDReportingInterval;\r\n this.state.BookingSystem.SetPoint = this.state.SelectedReefers[0].SetPoint;\r\n var bookingSystem = JSON.stringify(this.state.BookingSystem);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/UpdateBookingdetails';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: bookingSystem, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data == 'Booking updated successfully.') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n this.props.refreshStatusGrid();\r\n PopupWindow.showErrorMessage(\"Booking\", data);\r\n \r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Booking\", data);\r\n }\r\n });\r\n }\r\n\r\n Temperaturechange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.BookedTemperatureUnit = Value;\r\n this.setState({ BookingSystem: bookingSystem });\r\n }\r\n\r\n bindEditData() {\r\n var reeferData = this.props.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n this.getRefTemperatureUnit();\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n bookingSystem.BookedTemperatureUnit = temperatureCd != undefined ? temperatureCd : \"C\";\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = reeferData[0].BookedTemperature != null ? reeferData[0].BookedTemperature : '';\r\n this.setState({ SelectedReefers: reeferData, BookingSystem: bookingSystem });\r\n }\r\n }\r\n componentWillReceiveProps(nextprops: any) { \r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n this.getRefTemperatureUnit();\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n bookingSystem.BookedTemperatureUnit = temperatureCd != undefined ? temperatureCd : \"C\";\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = reeferData[0].BookedTemperature != null ? reeferData[0].BookedTemperature : '';\r\n this.setState({ SelectedReefers: reeferData, BookingSystem: bookingSystem });\r\n }\r\n }\r\n\r\n BookedTemperatureChange(event: React.FormEvent) {\r\n //var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n //var Value: number = parseInt(event.currentTarget.value);\r\n //bookingSystem.BookedTemperature = Value.toString();\r\n //this.setState({ BookingSystem: bookingSystem });\r\n\r\n var Value: string = event.currentTarget.value.trim();\r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value)) {\r\n bookingSystem.BookedTemperature = Value;\r\n this.setState({ BookingSystem: bookingSystem });\r\n }\r\n\r\n else\r\n return;\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n
\r\n
\r\n Reefer ID:\r\n
\r\n
\r\n
\r\n {(this.state.BookingSystem != undefined) ? this.state.BookingSystem.reeferID : ''}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Booking #:\r\n
\r\n
\r\n
\r\n {(this.state.BookingSystem != undefined) ? this.state.BookingSystem.BookingNumber : ''}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Temperature Unit:\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Booked Temperature:\r\n
\r\n
\r\n
\r\n this.BookedTemperatureChange(e)} value={this.state.BookingSystem.BookedTemperature} />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n}\r\n\r\nclass Customers {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n children: CustomerAccessGroups[]\r\n}\r\nclass CustomerAccessGroups {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n}\r\n\r\n","/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport DateFormat from 'dateformat';\r\nimport moment from 'moment';\r\n//import { DateTime } from 'react-datetime-bootstrap'; \r\nimport DatePicker from 'react-datepicker';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBar } from '../sharedcomponents/GridToolBar';\r\nimport { GridToolBarExcel } from '../sharedcomponents/GridToolBarExcel';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport $ from 'jquery';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControl } from './../sharedcomponents/EmailControl';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport 'ag-grid-enterprise';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\n\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n \r\nexport interface ReeferHistoryState {\r\n rowData: server.UnitHistoryUI[],\r\n rowDataForRCD: server.RcdHistoryUI[],\r\n HistoryFiltersForRCD: RcdHistorySearchFilters,\r\n columnDefs: any[],\r\n HistoryFilters: ReeferHistoryFilter,\r\n reeferFormatter: server.ReeferFormatter\r\n pageSize: any;\r\n gridApiParams: any;\r\n RCDMasterId: string;\r\n emailHtml: any;\r\n selectedItems: any[];\r\n exportFields: ExportFields;\r\n PreferenceDTTM: any;\r\n GridToolBarHtml: any;\r\n ReeferID: any;\r\n RCDID: any;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\nvar colDefs;\r\nvar self;\r\nvar functionId;\r\nvar columnDefs2: any[];\r\nexport class ReeferDetailsHistory extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n functionId = 42; // functionId for ReeferHistory Grid\r\n var filterSet = this.initHistoryFilters();//new ReeferHistoryFilter();\r\n var filterSetForRCD = this.initHistoryFilters();//new RcdHistorySearchFilters();\r\n //var columnDefs = this.createColumnDefs();\r\n var exportData = new ExportFields();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n this.state = {\r\n rowData: [],\r\n rowDataForRCD: [],\r\n columnDefs: [],\r\n HistoryFilters: filterSet,\r\n HistoryFiltersForRCD: filterSetForRCD,\r\n reeferFormatter: props.stateData.reeferFormatter,\r\n RCDMasterId: null,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n emailHtml: '',\r\n selectedItems: [],\r\n exportFields: exportData,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n GridToolBarHtml: '',\r\n ReeferID: this.props.stateData.ReeferId,\r\n RCDID: this.props.stateData.RcdId,\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 }\r\n };\r\n\r\n self = this;\r\n }\r\n initHistoryFilters() {\r\n var reeferHistoryFilter = new ReeferHistoryFilter();\r\n reeferHistoryFilter.Units = '';\r\n reeferHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n reeferHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n\r\n return reeferHistoryFilter;\r\n }\r\n\r\n bindReeferHistoryData(stateData: any) {\r\n var statusData = stateData.reeferDetailsData;\r\n if (statusData.UnitMasterID != 0) {\r\n this.state.HistoryFilters.Units = statusData.UnitMasterID;\r\n }\r\n /*var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n */\r\n var toDTTM = this.props.ToDate;\r\n var fromDTTM = this.props.FromDate;\r\n\r\n\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n\r\n this.state.HistoryFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n\r\n //this.setState({ rowData: historyData }, () => this.bindGridToolBar()); \r\n //if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n // self.state.gridApiParams.paginationGoToFirstPage();\r\n //}\r\n\r\n //if (historyData.length == 0) {\r\n if (this.props.stateData.reeferHistoryData != undefined && this.props.stateData.reeferHistoryData != null) {\r\n if (this.props.stateData.reeferHistoryData.length == 0) {\r\n this.ApplyReeferHistorySearch();\r\n }\r\n else if (this.props.stateData.reeferHistoryData.length > 0\r\n && this.state.ReeferID != this.props.stateData.reeferHistoryData[0].ReeferID)\r\n {\r\n this.ApplyReeferHistorySearch();\r\n }\r\n else {\r\n this.setState({\r\n reeferFormatter: this.props.stateData.reeferFormatter,\r\n rowData: this.props.stateData.reeferHistoryData\r\n }, () => this.bindGridToolBar());\r\n }\r\n }\r\n else\r\n this.ApplyReeferHistorySearch();\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n bindGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBar(self.state.gridApiParams) }); \r\n }\r\n\r\n\r\n bindRcdHistoryData(stateData: any) {\r\n var statusData = stateData.reeferDetailsData;\r\n if (statusData.RCDMasterID != 0) {\r\n this.state.HistoryFiltersForRCD.Units = statusData.RCDMasterID;\r\n }\r\n /*\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n */\r\n var toDTTM = this.props.ToDateRCD;\r\n var fromDTTM = this.props.FromDateRCD;\r\n\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n\r\n this.state.HistoryFiltersForRCD.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFiltersForRCD.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n\r\n /*\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n this.state.HistoryFiltersForRCD.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFiltersForRCD.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n */\r\n\r\n self.setState({\r\n RCDMasterId: statusData.RCDMasterID\r\n })\r\n //this.setState({ rowDataForRCD: historyData }, () => this.bindGridToolBar());\r\n \r\n if (this.props.stateData.rcdHistoryData != undefined && this.props.stateData.rcdHistoryData != null) {\r\n if (this.props.stateData.rcdHistoryData.length == 0) {\r\n this.ApplyReeferHistorySearch();\r\n }\r\n else if (this.props.stateData.rcdHistoryData.length > 0 &&\r\n this.state.RCDID != this.props.stateData.rcdHistoryData[0].RcdId)\r\n {\r\n this.ApplyReeferHistorySearch();\r\n }\r\n else {\r\n this.setState({\r\n reeferFormatter: this.props.stateData.reeferFormatter,\r\n rowDataForRCD: this.props.stateData.rcdHistoryData\r\n }, () => this.bindGridToolBar());\r\n }\r\n }\r\n else\r\n this.ApplyReeferHistorySearch();\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (nextprops.stateData != undefined && nextprops.stateData != null) {\r\n if (nextprops.IsReefer)\r\n this.bindReeferHistoryData(nextprops.stateData);\r\n else\r\n this.bindRcdHistoryData(nextprops.stateData);\r\n }\r\n }\r\n\r\n ValidateHistoryDates() {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = this.state.HistoryFilters.FromDate;\r\n var toDttm = this.state.HistoryFilters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n ValidateRcdHistoryDates() {\r\n var fromDttm = this.state.HistoryFiltersForRCD.FromDate;\r\n var toDttm = this.state.HistoryFiltersForRCD.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n updateReeferCommandsDimensions() {\r\n if (this.props.IsReefer) {\r\n $(\"#HistoryStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 289);\r\n $(\"#HistoryStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 289);\r\n $(\"#HistoryStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 289);\r\n }\r\n else {\r\n $(\"#RCDHistoryStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 289);\r\n $(\"#RCDHistoryStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 289);\r\n $(\"#RCDHistoryStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 289);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n this.updateReeferCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n Excel.preventDefault();\r\n \r\n \r\n \r\n \r\n var IsReefer = this.props.IsReefer;\r\n if (this.props.stateData != undefined && this.props.stateData != null) {\r\n var stateData = this.props.stateData;\r\n }\r\n if (IsReefer == true) {\r\n colDefs = this.createColumnDefs();\r\n columnDefs2 = this.createColumnDefs();\r\n this.bindReeferHistoryData(stateData);\r\n }\r\n\r\n else {\r\n colDefs = this.createColumnDefsForDevice();\r\n columnDefs2 = this.createColumnDefsForDevice();\r\n this.bindRcdHistoryData(stateData);\r\n }\r\n \r\n }\r\n\r\n onReeferGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api, \"ReeferDetailsHistory\");//26724 - added missing parameter\r\n self.setState({ GridToolBarHtml: self.renderGridToolBar(params.api) });\r\n }\r\n\r\n onRcdGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n self.setState({ GridToolBarHtml: self.renderGridToolBar(params.api) });\r\n }\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.HistoryFilters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n HistoryFilters: filters\r\n });\r\n\r\n this.props.HoldHistoryDates(date, null);\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.HistoryFilters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n HistoryFilters: filters\r\n });\r\n\r\n this.props.HoldHistoryDates(null, date);\r\n }\r\n RcdFromDateChange(date) {\r\n var filters = self.state.HistoryFiltersForRCD;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n HistoryFiltersForRCD: filters\r\n });\r\n\r\n this.props.HoldRCDHistoryDates(date,null);\r\n }\r\n\r\n RcdToDateChange(date) {\r\n var filters = self.state.HistoryFiltersForRCD;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n HistoryFiltersForRCD: filters\r\n });\r\n\r\n this.props.HoldRCDHistoryDates(null, date);\r\n }\r\n\r\n ApplyReeferHistorySearch() {\r\n var message;\r\n if (!this.props.IsReefer)//this.state.RCDMasterId != null)\r\n {\r\n message = this.ValidateRcdHistoryDates();\r\n }\r\n else {\r\n message = this.ValidateHistoryDates();\r\n }\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n $('#globalLoader').show();\r\n if (this.state.reeferFormatter === null && this.props.IsReefer)//this.state.RCDMasterId == null\r\n {\r\n var fromDate = moment(new Date(this.state.HistoryFilters.FromDate)).toString();\r\n var toDate = moment(new Date(this.state.HistoryFilters.ToDate)).toString();\r\n this.state.HistoryFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.HistoryFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n }, () => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data1 => {\r\n this.setState({\r\n rowData: data1\r\n }, () => {\r\n this.props.HoldHistoryData(data, data1, null);\r\n this.bindGridToolBar();\r\n });\r\n $('#globalLoader').hide();\r\n });\r\n\r\n \r\n });\r\n });\r\n }\r\n else if (!this.props.IsReefer)//this.state.RCDMasterId != null)\r\n {\r\n var fromDate = moment(new Date(this.state.HistoryFiltersForRCD.FromDate)).toString();\r\n var toDate = moment(new Date(this.state.HistoryFiltersForRCD.ToDate)).toString();\r\n this.state.HistoryFiltersForRCD.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFiltersForRCD.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.HistoryFiltersForRCD);\r\n var rcdColDefs = this.createColumnDefsForDevice();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n }, () => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdHistoryDataByDeviceSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data1 => {\r\n this.setState({\r\n rowDataForRCD: data1\r\n }, () => {\r\n this.props.HoldHistoryData(data, null, data1);\r\n this.bindGridToolBar();\r\n });\r\n\r\n $('#globalLoader').hide();\r\n });\r\n });\r\n });\r\n\r\n }\r\n else {\r\n var fromDate = moment(new Date(this.state.HistoryFilters.FromDate)).toString();\r\n var toDate = moment(new Date(this.state.HistoryFilters.ToDate)).toString();\r\n this.state.HistoryFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.HistoryFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data1 => {\r\n this.setState({\r\n rowData: data1,\r\n }, () => {\r\n this.props.HoldHistoryData(this.state.reeferFormatter, data1, null);\r\n this.bindGridToolBar();\r\n });\r\n\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n }\r\n\r\n createColumnDefsForDevice() {\r\n return [\r\n { headerName: \"ALM\", field: \"R_HighestSeverityLevel\", width: 65, cellRenderer: ReeferFormatters.runStateFormatter },\r\n //{ headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: Formatters.runStateFormatter },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", width: 65, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: Formatters.pwrStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", width: 70, cellRenderer: Formatters.oemTypeFormatter },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Last Asset ID\", field: \"AssetNumber\", cellRenderer: Formatters.stringTypeFormatter, width: 110 },\r\n { headerName: \"Last Event\", field: \"LastEvent\", cellRenderer: Formatters.stringTypeFormatter, width: 150 }, \r\n { headerName: \"Alert\", field: \"Alerts\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Event Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", width: 150, cellRenderer: Formatters.dateTypeFormatter },\r\n { headerName: \"Reported Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_ModifiedDTTM\", width: 150, cellRenderer: Formatters.dateTypeFormatter },\r\n { headerName: \"City\", field: \"City\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"State\", field: \"State\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Country\", field: \"Country\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Zip\", field: \"Zip\", cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Device Fence\", field: \"GeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Server Fence\", field: \"ServerGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device Fence ID\", field: \"Geofence\", cellRenderer: Formatters.stringTypeFormatter, width: 110 }, \r\n { headerName: \"Server Fence ID\", field: \"ServerGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Loc Coords\", field: \"GPSCoords\", cellRenderer: Formatters.GPSCoordsFormatter, width: 150 },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", cellRenderer: Formatters.secondsToTimeConverter, width: 150 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"MNC\", field: \"MNC\", cellRenderer: Formatters.MNCTypeFormatter, width: 70 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", cellRenderer: Formatters.stringTypeFormatter, width: 70 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", cellClass: 'bigInt',cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"In Geofence\", field: \"IsInsideGeofence\", width: 90, cellRenderer: Formatters.YesNoConverter },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", cellRenderer: Formatters.sensorDataFormatter, width: 120 },\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceFormatter, width: 150 },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Device Mesh FW ver\", field: \"RCDMeshFirmwareVersion\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device temp. \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"DeviceTemp\", width: 130 },\r\n { headerName: \"Device Bat. (V)\", field: \"BatteryVoltage\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Geofence Revision\", field: \"RevisionNum\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 140 },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"ICCID\", field: \"ICCID\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"EUI\", field: \"EUI\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Cell Signal\", field: \"RSSI\", cellRenderer: Formatters.RSSITypeFormatter, width: 80 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n //{ headerName: \"RFR COMMS.\", field: \"RCDRfrComErr\", cellRenderer: Formatters.reeferCommsFormatter, width: 130 }\r\n ];\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", enableRowGroup: true, sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return ReeferFormatters.CargoCareFormatterForFilter(params); } }, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferFormatters.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", enableRowGroup: true, sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return ReeferFormatters.statusIndicatorWithDescriptionForALMForFilter(params); } }, valueGetter: (params) => { return ReeferFormatters.statusALMSorting(params); }, cellRenderer: (params) => { return ReeferFormatters.statusIndicatorWithDescriptionForALM(params, self.state.reeferFormatter.AlarmMasterList); } },\r\n { headerName: \"RUN\", field: \"RunState\", enableRowGroup: true, sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return ReeferFormatters.runStateFormatterForFilter(params); } }, valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferFormatters.runStateFormatter },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", enableRowGroup: true, sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return Formatters.pwrStateFormatterForFilter(params); } }, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: Formatters.pwrStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: Formatters.stringTypeValueFormatter },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: true, sortable: true, filter: true, resizable: true, tooltipField: \"TripNameAndStatus\", valueGetter: (params) => { return ReeferFormatters.TripSorting(params); }, cellRenderer: ReeferFormatters.TripstatusIndicator, width: 70 },\r\n ]\r\n },\r\n {\r\n headerName: 'Latest Event',\r\n children: [\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ReeferID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", enableRowGroup: true, sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return ReeferFormatters.oemTypeFormatterForFilter(params); } }, valueGetter: params => { return ReeferFormatters.OEMTypeValueFormatterFieldName(params); }, width: 70 },\r\n { headerName: \"Model\", field: \"OEMModel\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"OEMModel\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, sortable: true, filter: true, resizable: true, width: 150, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventDescription\"); }, cellRenderer: Formatters.stringTypeValueFormatter },\r\n { headerName: \"Event Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", enableRowGroup: true, sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170 } \r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Datalog Events',\r\n children: [ \r\n { headerName: \"DL event\", field: \"DLEventMasterID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, width: 150, valueGetter: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, cellRenderer: Formatters.stringTypeValueFormatter },\r\n { headerName: \"DL event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DLEventDTTM\", enableRowGroup: true, sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDLEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DLEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170 },\r\n { headerName: \"Data 1\", field: \"DLParam1\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam1\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 2\", field: \"DLParam2\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam2\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 3\", field: \"DLParam3\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam3\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 4\", field: \"DLParam4\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam4\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 5\", field: \"DLParam5\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam5\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 110 }\r\n ]\r\n },\r\n {\r\n headerName: 'Last Reported Reefer and Device Data',\r\n children: [\r\n { headerName: \"Device Fence\", field: \"GeofenceName\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"GeofenceName\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Server Fence\", field: \"ServerGeofenceName\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofenceName\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device Fence ID\", field: \"Geofence\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Geofence\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"Server Fence ID\", field: \"ServerGeofence\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofence\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"City\", field: \"City\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Zip\", field: \"Zip\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Zip\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 100 },\r\n { headerName: \"Reefer Data\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", enableRowGroup: true, sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"UnitEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.AlarmDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferFormatters.AlarmDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList); }, width: 150 },\r\n { headerName: \"Opr. Mode\", field: \"RunningMode\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.OperatingModeFormatter(params); }, width: 150 },\r\n { headerName: \"T Set \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SetPoint\", width: 90 },\r\n { headerName: \"T Sup. 1 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp1\", width: 90 },\r\n { headerName: \"T Sup. 2 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp2\", width: 90 },\r\n { headerName: \"T Rtn. 1 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp1\", width: 90 },\r\n { headerName: \"T Rtn. 2 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp2\", width: 90 },\r\n { headerName: \"T Amb. \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"AmbientTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"AmbientTemp\", width: 90 }, \r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HumiditySetpoint\"); }, cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n { headerName: \"RH read\", field: \"Humidity\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.HumiditySettingFormatter(params); }, width: 90 },\r\n { headerName: \"CO2 Set\", field: \"CO2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"CO2 Read\", field: \"CO2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"O2 Set\", field: \"O2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"O2 Read\", field: \"O2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"T Evap Wall \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorTemp\", width: 110 },\r\n { headerName: \"P Suc.\", field: \"CompositeSuctionPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompositeSuctionPressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"T Suc. \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorSuctionTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorSuctionTemp\", width: 90 },\r\n { headerName: \"P Dis.\", field: \"DischargePressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"DischargePressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"T Dis. \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal',sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp\", width: 90 },\r\n { headerName: \"P Cond\", field: \"CondenserPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataPCondFormatter(params); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"T Cond wall \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CondenserTemperature\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CondenserTemperature\", width: 110 },\r\n { headerName: \"M Cond\", field: \"CondenserFanOutPut\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CondenserFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"LS Evap\", field: \"LowSpeedEvaporatorFanOutPut\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LowSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"HS Evap\", field: \"HighSpeedEvaporatorFanOutPut\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HighSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Heat On\", field: \"HeaterOnTime\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HeaterOnTime\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Open Exp\", field: \"EvaporatorExpansionValveOpening\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenExpFormatter(params); }, width: 90 },\r\n { headerName: \"Open Suc.\", field: \"SuctionModulationValveOpening\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenSucFormatter(params); }, width: 90 },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HotGasValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Open Econ\", field: \"EconomizerValveOpening\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"EconomizerValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Comp Freq\", field: \"CompressorFrequency\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"USDA 1 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA1Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA1Temp\", width: 90 },\r\n { headerName: \"USDA 2 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA2Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA2Temp\", width: 90 },\r\n { headerName: \"USDA 3 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA3Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA3Temp\", width: 90 },\r\n { headerName: \"USDA 4 Cargo \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"Cargo4Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"Cargo4Temp\", width: 130 },\r\n { headerName: \"Vent Pos.\", field: \"VentPositionSensorCMH\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VentPositionSensorCMH\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Atm. Mode\", field: \"ControlledAtmosphereMode\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ControlledAtmosphereMode(params); }, width: 150 },\r\n { headerName: \"OEM PTI State\", field: \"TripWiseStatusDescription\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TripWiseStatusSorting(params, self.state.reeferFormatter.TripWiseStatusList); }, cellRenderer: (params) => { return ReeferFormatters.TripWiseStatusFormatter(params, self.state.reeferFormatter.TripWiseStatusList); }, width: 90 },\r\n { headerName: \"OEM PTI Exp (d)\", field: \"TripWiseExpiration\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"TripWiseExpiration\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"PTI State\", field: \"PTIState\", enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PTIState\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"PTI Result\", field: \"PTResult\", enableRowGroup: true, sortable: true, resizable: true, tooltip: Formatters.toolTipFormatter, valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); }, cellRenderer: ReeferFormatters.preTripFormatter, width: 130 },\r\n { headerName: \"PTI Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, enableRowGroup: true, sortable: true, resizable: true, field: \"PTRDateTime\", filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"PTRDateTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Freq\", field: \"LineFrequency\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 130 },\r\n { headerName: \"3 Ph. Curr.\", field: \"ThreePhaseCurrent\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ThreePhaseCurrentSortingFieldName(params, \"ThreePhaseCurrent\"); }, cellRenderer: ReeferFormatters.Current3PhaseFormatter, width: 135 },\r\n { headerName: \"Tot. Curr.\", field: \"TotalCurrentDraw\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"TotalCurrentDraw\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 100 },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"ReeferACPowerLevel\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 120 },\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceFormatter, width: 120 },\r\n { headerName: \"Loc Coords\", field: \"GPSCoords\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: Formatters.GPSCoordsFormatter, width: 150 },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.secondsToTimeConverterFilter(params); }, width: 150 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.MNCSorting(params); }, cellRenderer: Formatters.MNCTypeFormatter, width: 70 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 70 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, cellClass: 'bigInt', resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"Cont. S/n\", field: \"ControllerSerialNumber\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerSerialNumber\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Cont. SW version\", field: \"SoftwareRevision\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SoftwareRevision\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 120 },\r\n { headerName: \"Cont. Set\", field: \"ControllerTypeSetting\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerTypeSetting\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 90 },\r\n { headerName: \"Cont. Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", enableRowGroup: true, sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DataLoggerDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 120 },\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device FW Ver\", field: \"RCDFirmwareVersion\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDFirmwareVersion\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"Device BL Ver\", field: \"RCDBootloaderVersion\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDBootloaderVersion\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"Device Mesh FW Ver\", field: \"RCDMeshFirmwareVersion\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDMeshFirmwareVersion\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Geofence Revision\", field: \"RevisionNum\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RevisionNum\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device Temp. \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"DeviceTemp\", width: 130 },\r\n {\r\n headerName: \"Device Bat. (V)\", field: \"BatteryVoltage\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'OneDecimal',\r\n valueGetter: (params) => { return Formatters.BattVoltageSortingFieldName(params, \"BatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.BatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130\r\n },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 80 },\r\n { headerName: \"Cell Signal\", field: \"RSSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, valueGetter: (params) => { return Formatters.RSSISorting(params); }, cellRenderer: Formatters.RSSITypeFormatter, width: 80 },\r\n { headerName: \"Server Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, enableRowGroup: true, sortable: true, filter: true, resizable: true, field: \"ModifiedDTTM\", filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"ModifiedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage1\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage2\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage3\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"VFD\", field: \"VFD\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VFD\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n //{ headerName: \"RFR COMMS.\", field: \"RCDRfrComErr\", cellRenderer: Formatters.reeferCommsFormatter, width: 130 },\r\n { headerName: \"FreshAirType\", field: \"FreshAirType\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FreshAirType\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 120 },\r\n { headerName: \"Booking #\", field: \"BookingNumber\", enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BookingNumber\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"BK temp \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"TemperatureUnit\"); }, cellRenderer: ReeferFormatters.TemperatureFormatterForBooking, field: \"TemperatureUnit\", width: 130 }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n } \r\n }\r\n\r\n onSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n self.setState({\r\n selectedItems: selectedReeferData\r\n });\r\n }\r\n\r\n onRCDSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n self.setState({\r\n selectedItems: selectedReeferData\r\n });\r\n }\r\n\r\n getRCDContextMenuItems(params: any) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var parentEventId = selectedrowNode.data.ParentEventID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n $(\".context-menu\").show(); $(\"#contextmenu\").show();\r\n Excel.preventDefault();\r\n\r\n $(\".ag-cell\").unbind(\"contextmenu\");\r\n $(\".ag-cell\").bind('contextmenu', function (e) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n $(\"#contextmenu\").show();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var parentEventId = selectedrowNode.data.ParentEventID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n var top = e.pageY + 5;\r\n if (height < top) {\r\n top = (top - halfheight) + 310;\r\n }\r\n\r\n var left = e.pageX;\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n left: left + \"px\"\r\n });\r\n\r\n $(\".context-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('contextmenu click', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n\r\n $('.context-menu').bind('contextmenu', function () {\r\n return false;\r\n });\r\n $('.context-menu').on('click', 'li', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n }\r\n\r\n getContextMenuItems(params: any) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var parentEventId = selectedrowNode.data.ParentEventID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n\r\n $(\".context-menu\").show(); $(\"#contextmenu\").show();\r\n Excel.preventDefault();\r\n\r\n $(\".ag-cell\").unbind(\"contextmenu\");\r\n $(\".ag-cell\").bind('contextmenu', function (e) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n $(\"#contextmenu\").show();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var parentEventId = selectedrowNode.data.ParentEventID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n var top = e.pageY + 5;\r\n if (height < top) {\r\n top = (top - halfheight) + 310;\r\n }\r\n\r\n var left = e.pageX;\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n left: left + \"px\"\r\n });\r\n\r\n $(\".context-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('contextmenu click', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n\r\n $('.context-menu').bind('contextmenu', function () {\r\n return false;\r\n });\r\n $('.context-menu').on('click', 'li', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n }\r\n\r\n exportToExcel() {\r\n var arrData;\r\n var gridName = '';\r\n var r = colDefs;\r\n $(\"#globalLoader\").show();\r\n if (this.props.IsReefer) {\r\n gridName = 'HistoryStatusGrid';\r\n arrData = self.state.selectedItems;\r\n\r\n try {\r\n //Excel.InitializeExcelExport(arrData, r, gridName);\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\"); \r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, gridName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridToolBarExcel.applySheetData(sheetData, gridName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n else {\r\n gridName = 'RCDHistoryStatusGrid';\r\n arrData = self.state.selectedItems;\r\n\r\n try {\r\n //Excel.InitializeExportParent(arrData, r, gridName);\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\"); \r\n var uri = Excel.InitializeExportParentToXLSX(arrData, r, gridName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridToolBar.applySheetData(sheetData, gridName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n }\r\n\r\n sendEmail() {\r\n this.setState({\r\n emailHtml: self.renderEmailControl()\r\n })\r\n }\r\n\r\n renderGridToolBar(gridApiParams: any) {\r\n if (this.props.IsReefer) {\r\n return ;\r\n }\r\n else {\r\n return ;\r\n }\r\n }\r\n\r\n renderEmailControl() {\r\n if (this.props.IsReefer) {\r\n return ;\r\n }\r\n else {\r\n return ;\r\n }\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n }\r\n });\r\n }\r\n\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n // self.clearGridRowSelection(params); \r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"BatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n //if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"TripWiseExpiration\" && fieldName.toString().trim() != \"HumiditySetpoint\")\r\n // return \"OOR\";\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"HumiditySetpoint\")\r\n return \"OOR\";\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"UnitEventDTTM\" || fieldName.toString() == \"PTRDateTime\" || fieldName.toString() == \"DataLoggerDtm\" || fieldName.toString() == \"ModifiedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"RunState\":\r\n return Formatters.RunStateFormatterGrouping(fieldValue);\r\n case \"MASeverityLevel\":\r\n return Formatters.StatusIndicatorALMFormatterGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return Formatters.PowerStateFormatterGrouping(fieldValue);\r\n case \"CCSeverityLevel\":\r\n return Formatters.CargoCareFormatterGrouping(fieldValue);\r\n case \"VesselCd\":\r\n return fieldValue == \"-NA-\" ? \"No VSL\" : fieldValue;\r\n case \"TripStatusCdAndDFlag\":\r\n return Formatters.TripStatusFormatterGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return Formatters.RSSIFormatterGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExists\":\r\n return Formatters.CommentExistsGrouping(fieldValue);\r\n case \"PTResult\":\r\n return Formatters.PTResultGrouping(fieldValue);\r\n //case \"Humidity\":\r\n // return Formatters.HumidityGrouping(params);\r\n //case \"CondenserPressure\":\r\n // return Formatters.sensorDataPCondGrouping(params);\r\n //case \"EvaporatorExpansionValveOpening\":\r\n // return Formatters.sensorDataOpenExpGrouping(params);\r\n //case \"SuctionModulationValveOpening\":\r\n // return Formatters.sensorDataOpenSucGrouping(params);\r\n //case \"ControlledAtmosphereMode\":\r\n // return Formatters.ControlledAtmosphereModeGrouping(params);\r\n //case \"TripWiseExpiration\":\r\n // return Formatters.TripWiseExpirationGrouping(params);\r\n //case \"RunningMode\":\r\n // return Formatters.RunningModeGrouping(fieldValue);\r\n case \"Cargo4Temp\":\r\n case \"USDA3Temp\":\r\n case \"USDA2Temp\":\r\n case \"USDA1Temp\":\r\n case \"SetPoint\":\r\n case \"SupplyTemp1\":\r\n case \"SupplyTemp2\":\r\n case \"ReturnTemp1\":\r\n case \"AmbientTemp\":\r\n case \"ReturnTemp2\":\r\n case \"EvaporatorTemp\":\r\n case \"CompressorSuctionTemp\":\r\n case \"CompressorDischargeTemp\":\r\n case \"CondenserTemperature\":\r\n case \"DeviceTemp\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.TemperatureFormatterGrouping(fieldValue, fieldName, params, DeviceType);\r\n }\r\n\r\n case \"TemperatureUnit\":\r\n return Formatters.BookingTemperatureFormatterGrouping(fieldValue, fieldName, params);\r\n case \"EventDTTM\":\r\n case \"UnitEventDTTM\":\r\n case \"PTRDateTime\":\r\n case \"DataLoggerDtm\":\r\n case \"ModifiedDTTM\":\r\n case \"DLEventDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"HumiditySetpoint\":\r\n {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n return Formatters.HumiditySetpointGrouping(fieldValue, HumiditySetpointStatus);\r\n }\r\n case \"TripWiseStatusDescription\":\r\n {\r\n var ReeferOEMTypeCd; var DimiResultActuator; var DimiResultAlarm; var DimiResultOOR;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR);\r\n }\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n },\r\n {\r\n id: 'OneDecimal',\r\n numberFormat: {\r\n format: '0.0',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'TwoDecimal',\r\n numberFormat: {\r\n format: '0.00',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n ];\r\n return
\r\n
\r\n
\r\n
\r\n {\r\n this.props.IsReefer ?\r\n
\r\n
From:
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
To:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n :
\r\n
From:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
To:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n }\r\n
\r\n \r\n
\r\n
\r\n
\r\n
{this.state.GridToolBarHtml}
\r\n
\r\n
\r\n {\r\n this.props.IsReefer ?\r\n
\r\n \r\n \r\n
\r\n :\r\n
\r\n \r\n \r\n
\r\n }\r\n
\r\n Page Size:\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • Export to Excel
  • \r\n
  • Send Email
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Send Email
\r\n \r\n \r\n
\r\n
\r\n {this.state.emailHtml}\r\n
\r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass RcdHistorySearchFilters {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\n\r\n","/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport DateFormat from 'dateformat';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport moment from 'moment';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBarControl } from '../sharedcomponents/GridToolBarControl';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport UserRights from '../../actions/UserRights';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\n\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\n\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface ReeferCommandStatusGridState {\r\n rowData: server.CommandStatusUI[],\r\n columnDefs: any[],\r\n CommandStatusFilters: ReeferCommandStatusFilters,\r\n UserList: server.UserListModel[],\r\n CommandStatus: server.RefCommandStatusModel[],\r\n CommandTypes: server.RefCommandTypesModel[],\r\n pageSize: any,\r\n gridApiParams: any,\r\n modelTitle: string;\r\n popUpHtml: any;\r\n selectedItems: any[];\r\n Filters: ForwardCommandParams;\r\n PreferenceDTTM: any;\r\n}\r\n\r\nvar self;\r\nvar coppiedData;\r\nexport class ReeferDetailsCommandStatus extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var columnDefs = this.createColumnDefs();\r\n var filterSet = this.initDetailsCommandStatusFilters();//new ReeferCommandStatusFilters();\r\n var ForwardCommandfilterSet = new ForwardCommandParams();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n this.state = {\r\n rowData: [], columnDefs: columnDefs, CommandStatusFilters: filterSet, UserList: [], CommandStatus: [], CommandTypes: []\r\n , pageSize: 25\r\n , gridApiParams: []\r\n , modelTitle: ''\r\n , popUpHtml: ''\r\n , selectedItems: []\r\n , Filters: ForwardCommandfilterSet\r\n , PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm)\r\n };\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetUsersList')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ UserList: data });\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/GetCommandStatus')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CommandStatus: data });\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/GetCommandTypes')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CommandTypes: data });\r\n });\r\n\r\n self = this; \r\n }\r\n \r\n initDetailsCommandStatusFilters() {\r\n var objCommandStatusFilters = new ReeferCommandStatusFilters();\r\n objCommandStatusFilters.ReeferIds = \"\";\r\n objCommandStatusFilters.RcdIds = \"\";\r\n objCommandStatusFilters.CommandTypeCd = \"\";\r\n objCommandStatusFilters.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objCommandStatusFilters.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objCommandStatusFilters.CommandStatusId = 0;\r\n objCommandStatusFilters.UserId = 0;\r\n \r\n return objCommandStatusFilters;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (nextprops.stateData != undefined && nextprops.stateData != null) {\r\n nextprops.stateData.reeferCommandsData = this.state.rowData;\r\n this.bindReeferCommandsData(nextprops.stateData);\r\n }\r\n }\r\n\r\n bindReeferCommandsData(stateData: any) { \r\n var commandStatusData = stateData.reeferCommandsData;\r\n var statusData = stateData.reeferDetailsData;\r\n if (statusData.UnitMasterID != 0) {\r\n this.state.CommandStatusFilters.ReeferIds = statusData.ReeferID;\r\n this.state.CommandStatusFilters.RcdIds = statusData.RCDID;\r\n }\r\n\r\n /*\r\n var modifiedDttm = this.state.PreferenceDTTM; \r\n var fromDate = moment(new Date(modifiedDttm)).startOf('day').toString();\r\n var toDate = moment(new Date(modifiedDttm)).endOf('day').toString();\r\n */\r\n\r\n var toDate = this.props.ToDate;\r\n var fromDate = this.props.FromDate;\r\n\r\n this.state.CommandStatusFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.CommandStatusFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM'); \r\n this.state.CommandStatusFilters.CommandTypeCd = \"-1\";\r\n this.state.CommandStatusFilters.CommandStatusId = -1;\r\n\r\n //setTimeout(() => {\r\n // this.setState({ rowData: commandStatusData });\r\n //}, 50);\r\n if (this.props.stateData.reeferCommandsData != undefined && this.props.stateData.reeferCommandsData != null) {\r\n if (this.props.stateData.reeferCommandsData.length == 0) {\r\n this.ApplyCommandStatusFilter();\r\n }\r\n else {\r\n this.setState({\r\n //reeferFormatter: this.props.stateData.reeferFormatter,\r\n rowData: this.props.stateData.reeferCommandsData\r\n });\r\n }\r\n }\r\n else\r\n this.ApplyCommandStatusFilter();\r\n\r\n //if (commandStatusData.length == 0) {\r\n // this.ApplyCommandStatusFilter();\r\n //}\r\n\r\n\r\n //if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != []) {\r\n // self.state.gridApiParams.paginationGoToFirstPage();\r\n //} \r\n }\r\n\r\n updateReeferCommandsDimensions() {\r\n $(\"#CommandStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 359);\r\n $(\"#CommandStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 359);\r\n $(\"#CommandStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 359);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n //this.updateReeferCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n Excel.preventDefault();\r\n \r\n // To make the Modal popups draggable.\r\n setTimeout(() => { this.updateReeferCommandsDimensions() }, 200);\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n RCNGWindow.ConfirmWindow.close();\r\n if (this.props.stateData != undefined && this.props.stateData != null) {\r\n var stateData = this.props.stateData;\r\n this.bindReeferCommandsData(stateData);\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api }); \r\n }\r\n\r\n ReeferIdchange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.ReeferIds = Value;\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n RcdIdchange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.RcdIds = Value;\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n CommandFromDateChange(date) {\r\n var filters = self.state.CommandStatusFilters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n CommandStatusFilters: filters\r\n });\r\n\r\n this.props.HoldCommandHistoryDates(date, null);\r\n }\r\n\r\n CommandToDateChange(date) {\r\n var filters = self.state.CommandStatusFilters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n CommandStatusFilters: filters\r\n });\r\n\r\n this.props.HoldCommandHistoryDates(null, date);\r\n }\r\n\r\n Statuschange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"-Select-\")\r\n filters.CommandStatusId = -1;\r\n else\r\n filters.CommandStatusId = parseInt(Value);\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n CommandTypechange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"-Select-\")\r\n filters.CommandTypeCd = \"-1\";\r\n else\r\n filters.CommandTypeCd = Value;\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n Userchange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"-Select-\")\r\n filters.UserId = -1;\r\n else\r\n filters.UserId = parseInt(Value);\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n reeferContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Copy\": this.reeferdetailsCopyAction();\r\n break;\r\n case \"Cancel\": this.reeferdetailsCancelAction();\r\n break;\r\n }\r\n }\r\n reeferdetailsCopyAction() {\r\n //var result = this.copyToClipboard(coppiedData);\r\n self.state.gridApiParams.clipboardService.copyDataToClipboard(coppiedData);\r\n }\r\n\r\n //copyToClipboard(text) {\r\n // if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n // return (window as any).clipboardData.setData(\"Text\", text);\r\n\r\n // } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n // var textarea = document.createElement(\"textarea\");\r\n // textarea.textContent = text;\r\n // textarea.style.position = \"fixed\";\r\n // document.body.appendChild(textarea);\r\n // textarea.select();\r\n // try {\r\n // return document.execCommand(\"copy\");\r\n // } catch (ex) {\r\n // return false;\r\n // } finally {\r\n // document.body.removeChild(textarea);\r\n // }\r\n // }\r\n //}\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n cancelCommandAction() {\r\n if (self.state.selectedItems.length > 0) {\r\n $('#globalLoader').show();\r\n var commandName = \"Cancel\";\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.selectedItems;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/SubmitCancelForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n $(\"#contextMenuModel .close\").click();\r\n this.ApplyCommandStatusFilter();\r\n });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n reeferdetailsCancelAction() {\r\n if (self.state.selectedItems.length > 0) {\r\n var reeferData = self.state.selectedItems;\r\n var confirmationMessage = \"Are you sure you want to cancel the command(s)?\"\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.cancelCommandAction.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n }\r\n onSortChanged(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.api.refreshInMemoryRowModel('filter');\r\n params.api.gridOptionsWrapper.gridOptions.api.redrawRows();\r\n }\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n getContextMenuItems = params => {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var submitted = selectedrowNode.data.SubmittedOn;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.SubmittedOn === submitted)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.SubmittedOn == selectedrowNode.data.SubmittedOn) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n\r\n var result = [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n }\r\n },\r\n //'copy',\r\n {\r\n name: 'Cancel Command',\r\n action: () => {\r\n this.reeferContextMenuClick(\"Cancel\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('124'),\r\n disabled: UserRights.checkMenuItemDisableForCommandStatus(params),\r\n },\r\n ];\r\n return result;\r\n\r\n };\r\n\r\n //getContextMenuItems(params: any) {\r\n // var isEnableContextMenu = UserRights.checkVisibility('124');\r\n // if (isEnableContextMenu == 'show') { \r\n // var flag = false;\r\n // var selected = params.api.getFocusedCell();\r\n // var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n // var resortitem = tempArray[selected.rowIndex];\r\n // var sortflage = false;\r\n // var reeferid = resortitem.data.ReeferID;\r\n // var submitted = resortitem.data.SubmittedOn;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.SubmittedOn === submitted)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.SubmittedOn == selectedrowNode.data.SubmittedOn) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n // $(\".context-menu\").show();\r\n // $(\"#contextmenu\").show();\r\n // Excel.preventDefault();\r\n\r\n // $(\".ag-cell\").unbind(\"contextmenu\");\r\n // $(\".ag-cell\").bind('contextmenu', function (e) {\r\n // $(\"#contextmenu\").show();\r\n // var flag = false;\r\n // var selected = params.api.getFocusedCell();\r\n // var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n // var resortitem = tempArray[selected.rowIndex];\r\n // var sortflage = false;\r\n // var reeferid = resortitem.data.ReeferID;\r\n // var submitted = resortitem.data.SubmittedOn;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.SubmittedOn === submitted)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.SubmittedOn == selectedrowNode.data.SubmittedOn) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n // var height = $(window).height() - 200;\r\n // var halfheight = ($(window).height()) / 2;\r\n // var top = e.pageY + 5;\r\n // $('#liCommandsRequiresRight>.dropdown-menu').css(\"top\", \"55px\");\r\n // var left = e.pageX;\r\n\r\n // if (left >= ($(window).width() - 200)) {\r\n // $(\".context-menu\").css({\r\n // top: top + \"px\",\r\n // right: 20 + \"px\",\r\n // width: 160 + 'px',\r\n // left: $(window).width() - 200 + 'px'\r\n // });\r\n\r\n // $('.context-menu').find(\"ul.dropdown-menu\").css(\"left\", \"-155px\");\r\n // }\r\n // else {\r\n // $(\".context-menu\").css({\r\n // top: top + \"px\",\r\n // left: left + \"px\"\r\n // });\r\n\r\n // $('.context-menu').find(\"ul.dropdown-menu\").css(\"left\", \"155px\");\r\n // }\r\n // $(\".context-menu\").show();\r\n // e.preventDefault();\r\n // return false;\r\n // });\r\n\r\n // $(document).contextmenu(function () {\r\n // return false;\r\n // });\r\n\r\n // $(document).bind('contextmenu click', function () {\r\n // $(\".context-menu\").hide();\r\n // });\r\n\r\n // $('.context-menu').bind('contextmenu', function () {\r\n // return false;\r\n // });\r\n // $('.context-menu').on('click', 'li', function () {\r\n // $(\".context-menu\").hide();\r\n // });\r\n // }\r\n\r\n //}\r\n\r\n onSelectionChanged(params: any) {\r\n //$(\"#contextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n //var selectedItems = self.state.selectedItems;\r\n var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData\r\n });\r\n //if (selectedReeferData.length > 1) { \r\n // if (selectedReeferData.length == selectedReeferData.filter(row => row.Status.trim().toUpperCase() == 'AWAITINGPREREQUISITES' || row.Status.trim().toUpperCase() == 'PENDING' || row.Status.trim().toUpperCase() == 'RETRY' || row.Status.trim().toUpperCase() == 'AWAITINGSYNC').length) {\r\n // $('#liCancelRequiresRight').removeClass('disabled');\r\n // $('#liCancelRequiresRight').addClass('enabled');\r\n // }\r\n // else {\r\n // $('#liCancelRequiresRight').removeClass('enabled');\r\n // $('#liCancelRequiresRight').addClass('disabled');\r\n // }\r\n //}\r\n //else {\r\n // var dflag = selectedReeferData[0].Status;\r\n // if (dflag.trim().toUpperCase() == 'AWAITINGPREREQUISITES' || dflag.trim().toUpperCase() == 'PENDING' || dflag.trim().toUpperCase() == 'RETRY' || dflag.trim().toUpperCase() == 'AWAITINGSYNC') {\r\n // $('#liCancelRequiresRight').removeClass('disabled');\r\n // $('#liCancelRequiresRight').addClass('enabled');\r\n // } else {\r\n // $('#liCancelRequiresRight').removeClass('enabled');\r\n // $('#liCancelRequiresRight').addClass('disabled');\r\n // } \r\n //}\r\n }\r\n\r\n ValidateHistoryDates() {\r\n var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = this.state.CommandStatusFilters.FromDate;\r\n var toDttm = this.state.CommandStatusFilters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n ApplyCommandStatusFilter() {\r\n var message = this.ValidateHistoryDates();\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n \r\n $('#globalLoader').show();\r\n this.state.CommandStatusFilters.FromDate = DateFormat(new Date(this.state.CommandStatusFilters.FromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.CommandStatusFilters.ToDate = DateFormat(new Date(this.state.CommandStatusFilters.ToDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.CommandStatusFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferCommandStatusDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n }, () => { this.props.HoldCommandHistoryData(data) });\r\n\r\n //self.state.gridApiParams.paginationGoToFirstPage();\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n ClearCommandStatusFilter() {\r\n var filters = this.state.CommandStatusFilters;\r\n filters.ReeferIds = \"\";\r\n filters.RcdIds = \"\";\r\n filters.UserId = -1;\r\n filters.CommandTypeCd = \"-1\";\r\n filters.CommandStatusId = -1;\r\n var modifiedDttm = this.state.PreferenceDTTM; \r\n var fromDate = moment(new Date(modifiedDttm)).startOf('day').toString();\r\n var toDate = moment(new Date(modifiedDttm)).endOf('day').toString();\r\n filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 140, sortable: true, resizable: true },\r\n { headerName: \"Device ID\", field: \"RcdID\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 150, sortable: true, resizable: true },\r\n { headerName: \"Command\", field: \"Command\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 150, sortable: true, resizable: true },\r\n { headerName: \"Status time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, onCellClicked: this.onCellClickedCopy.bind(this), field: \"StatusDate\", cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, width: 150, sortable: true, resizable: true },\r\n { headerName: \"RUN\", field: \"RunState\", cellClass: 'bigInt', valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferCellRenderer.RunStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 80, sortable: true, resizable: true },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", cellClass: 'bigInt', valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: ReeferCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 80, sortable: true, resizable: true },\r\n { headerName: \"Status\", field: \"Status\", cellClass: 'bigInt', valueGetter: (params) => { return Formatters.commandStatusSorting(params); }, cellRenderer: ReeferCellRenderer.commandLogStatusFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 100, sortable: true, resizable: true },\r\n { headerName: \"Info\", field: \"Info\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 150, sortable: true, resizable: true },\r\n { headerName: \"Deployment name\", field: \"DeploymentName\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 150, sortable: true, resizable: true },\r\n { headerName: \"Submitted time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"SubmittedOn\", cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 150, sortable: true, resizable: true },\r\n { headerName: \"Submitted by\", field: \"SubmittedBy\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 130, sortable: true, resizable: true },\r\n { headerName: \"Expiration time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TTL\", cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 150, sortable: true, resizable: true },\r\n { headerName: \"Origin\", field: \"Origin\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 100, sortable: true, resizable: true },\r\n { headerName: \"Handler\", field: \"Handler\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 100, sortable: true, resizable: true },\r\n { headerName: \"Value 1\", field: \"Value1\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 100, sortable: true, resizable: true },\r\n { headerName: \"Value 2\", field: \"Value2\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 100, sortable: true, resizable: true },\r\n { headerName: \"Value 3\", field: \"Value3\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 100, sortable: true, resizable: true },\r\n { headerName: \"Value 4\", field: \"Value4\", cellClass: 'bigInt', cellRenderer: ReeferCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this), width: 100, sortable: true, resizable: true }\r\n ];\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n //self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n coppiedData = event.value;\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n public render() {\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n this.ReeferIdchange(e)} value={this.state.CommandStatusFilters.ReeferIds} />\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n this.RcdIdchange(e)} value={this.state.CommandStatusFilters.RcdIds} />\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n 0 ? true : false}\r\n gridApiParams={this.state.gridApiParams} parentchild={\"P\"} formName={\"ReeferDetailsCommandStatus\"} />\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.modelTitle}
\r\n \r\n \r\n
\r\n
\r\n {this.state.popUpHtml}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\nclass ReeferCommandStatusFilters {\r\n ReeferIds: string;\r\n RcdIds: string;\r\n CommandTypeCd: string;\r\n FromDate: string;\r\n ToDate: string;\r\n CommandStatusId?: number;\r\n UserId: number;\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}\r\nclass ForwardCommandParams {\r\n SelectedReefers: server.CommandStatusUI[];\r\n CommandName: string;\r\n}\r\n","/// \r\n/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as ReeferStatusState from '../../store/ReeferStatus';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\nimport { ReeferDetailsHistory } from '../childcomponents/ReeferDetailsHistory';\r\nimport { ReeferDetailsCommandStatus } from '../childcomponents/ReeferDetailsCommandStatus';\r\nimport DetailsMap from '../../actions/DetailsMap';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport $ from 'jquery';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { PingControl } from './../sharedcomponents/ForwardCommands/PingControl';\r\nimport { TempSetPoint } from './../sharedcomponents/ForwardCommands/TempSetPoint';\r\nimport { HumiditySetPoint } from './../sharedcomponents/ForwardCommands/HumiditySetPoint';\r\nimport { O2SetPoint } from './../sharedcomponents/ForwardCommands/O2SetPoint';\r\nimport { CO2SetPoint } from './../sharedcomponents/ForwardCommands/CO2SetPoint';\r\nimport { ChangeReeferId } from './../sharedcomponents/ForwardCommands/ChangeReeferId';\r\nimport { ChangeReportingInterval } from './../sharedcomponents/ForwardCommands/ChangeReportingInterval';\r\nimport { ChangeDataLogInterval } from './../sharedcomponents/ForwardCommands/ChangeDataLogInterval';\r\nimport { AssignPANID } from './../sharedcomponents/ForwardCommands/AssignPANID';\r\nimport { RebootReeferController } from './../sharedcomponents/ForwardCommands/RebootReeferController';\r\nimport { VerifyModelValidity } from './../sharedcomponents/ForwardCommands/VerifyModelValidity';\r\nimport { SyncReeferClock } from './../sharedcomponents/ForwardCommands/SyncReeferClock';\r\nimport { StartDeforst } from './../sharedcomponents/ForwardCommands/StartDeforst';\r\nimport { ChangeDeforstInterval } from './../sharedcomponents/ForwardCommands/ChangeDeforstInterval';\r\nimport { TraditionalDataDownload } from './../sharedcomponents/ForwardCommands/TraditionalDataDownload';\r\nimport { StopPTI } from './../sharedcomponents/ForwardCommands/StopPTI';\r\nimport { ScheduledPreTrip } from './../sharedcomponents/ForwardCommands/ScheduledPreTrip';\r\nimport { PreTrip } from './../sharedcomponents/ForwardCommands/PreTrip';\r\nimport { LastPretripResult } from './../sharedcomponents/ForwardCommands/LastPretripResult';\r\nimport { QueryReeferInventory } from './../sharedcomponents/ForwardCommands/QueryReeferInventory';\r\nimport { UpdateModelConfiguration } from './../sharedcomponents/ForwardCommands/UpdateModelConfiguration';\r\nimport { ChangeReeferClockSyncSetting } from './../sharedcomponents/ForwardCommands/ChangeReeferClockSyncSettings';\r\nimport { GuestReeferConfiguration } from './../sharedcomponents/ForwardCommands/GuestReeferConfiguration';\r\nimport { Comments } from './../sharedcomponents/Comments';\r\nimport DetailFormatters from '../../actions/ReeferDetailFilters';\r\nimport moment from 'moment';\r\nimport Formatters from '../../actions/Formatters';\r\nimport DateFormat from 'dateformat';\r\n\r\nvar Excel = Exceljs.default;\r\nvar self;\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface ReeferDetailsState {\r\n reeferDetailsData: UnitDetailsUI;\r\n reeferHistoryData: server.UnitHistoryUI[];\r\n rcdHistoryData: server.RcdHistoryUI[],\r\n reeferCommandsData: server.CommandStatusUI[];\r\n reeferDetailsSearch: ReeferDetailsFilter;\r\n CommandTypes: server.RefCommandTypesModel[];\r\n ReeferId: string;\r\n RcdId: string;\r\n preTripCmd: string;\r\n selectedReeferData: any[];\r\n modelTitle: string;\r\n popUpHtml: any;\r\n isChangeDeforstInterval: boolean;\r\n isLoading: boolean;\r\n enableTab: boolean;\r\n DataSource: string;\r\n reeferFormatter: server.ReeferFormatter;\r\n preTripData: string;\r\n tabContentHtml: any;\r\n searchInputValue: string;\r\n assetMasterID: number;//WI-23781\r\n isOpenVia: any;\r\n isDevice: boolean;\r\n fromDateHistory: string;\r\n toDateHistory: string;\r\n fromRCDDateHistory: string;\r\n toRCDDateHistory: string;\r\n fromDateCommandHistory: string;\r\n toDateCommandHistory: string;\r\n}\r\n\r\nvar tempFormat;\r\nvar timeZoneCd;\r\nvar self;\r\nvar restricted = false;\r\nvar tripWISEReport;\r\n\r\ntype ReeferStatusProps =\r\n UserDetailState.UserState\r\n & ReeferStatusState.ReeferSearchState // ... state we've requested from the Redux store \r\n & typeof ReeferStatusState.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\n\r\ninterface AssetState {\r\n unitDetails: server.UnitDetailsUI;\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n PTReport: string;\r\n assetMasterID: number;//WI-23781\r\n isOpenVia: any;\r\n isDevice: boolean;\r\n TWReport: string;\r\n}\r\n\r\nexport class CurrentStatus extends React.Component{\r\n constructor(props: any) {\r\n super(props);\r\n tripWISEReport = JSON.parse(sessionStorage.getItem('customerDetails')).TripWISEreport;\r\n this.state = {\r\n unitDetails: this.props.assetData, modelTitleReport: '', popUpHtmlReport: '', PTReport: this.props.preTripReport,\r\n isOpenVia: this.props.isOpenVia, assetMasterID: this.props.AssetMasterID, isDevice: this.props.isDevice,\r\n TWReport: ''\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsForReefers('154');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n DetailsMap.InitDetailsMap(\"reeferStatusMap\");\r\n setTimeout(() => {\r\n DetailsMap.LoadDetailsMap(this.state.unitDetails.GPSLatitude, this.state.unitDetails.GPSLongitude);\r\n }, 1000); \r\n this.formatGPSLatLong(this.state.unitDetails);\r\n this.updateReeferCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n \r\n if (this.state.isOpenVia === \"CurrentDetails\") { \r\n document.getElementById(\"collapseOne\").classList.remove(\"show\");\r\n document.getElementById(\"collapseTwo\").classList.add(\"show\");\r\n document.getElementById(\"collapseThree\").classList.remove(\"show\");\r\n }\r\n else if (this.state.isOpenVia === \"Comments\") {\r\n \r\n document.getElementById(\"collapseOne\").classList.remove(\"show\");\r\n document.getElementById(\"collapseTwo\").classList.remove(\"show\");\r\n document.getElementById(\"collapseThree\").classList.add(\"show\");\r\n\r\n } else if (this.state.isOpenVia === \"RcdStatus\") {\r\n \r\n document.getElementById(\"collapseOne\").classList.add(\"show\");\r\n document.getElementById(\"collapseTwo\").classList.remove(\"show\");\r\n document.getElementById(\"collapseThree\").classList.remove(\"show\");\r\n }\r\n else if (this.state.isOpenVia === null || this.state.isOpenVia === undefined) {\r\n \r\n\r\n document.getElementById(\"collapseOne\").classList.add(\"show\");\r\n document.getElementById(\"collapseTwo\").classList.remove(\"show\");\r\n document.getElementById(\"collapseThree\").classList.remove(\"show\");\r\n }\r\n\r\n //this.showTabPane(this.props.isReeferOrRCD);\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReport\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReportTW\"));\r\n }\r\n }\r\n\r\n showTabPane(isReeferOrRCD: string) {\r\n if (isReeferOrRCD != null && isReeferOrRCD != undefined && isReeferOrRCD != '') {\r\n if (isReeferOrRCD == \"Reefer\") {\r\n if ($('#detailsPane').attr('aria-expanded') == \"false\")\r\n $('#detailsPane').click();\r\n }\r\n }\r\n }\r\n\r\n formatGPSLatLong(params: any) {\r\n $(\"#gpsLongitude\").removeClass('gpslatlong');\r\n $(\"#gpsLatitude\").removeClass('gpslatlong');\r\n if (params.GPSLatitude != 0 && params.GPSLongitude != 0 && (params.GPSLockState == null || params.GPSLockState == '' || params.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n if (params.GPSLongitude != null)\r\n $(\"#gpsLongitude\").addClass('gpslatlong');\r\n\r\n if (params.GPSLatitude != null)\r\n $(\"#gpsLatitude\").addClass('gpslatlong');\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.assetData != null && nextProps.assetData != \"\") {\r\n this.setState({\r\n unitDetails: nextProps.assetData,\r\n assetMasterID: nextProps.AssetMasterID,//WI-23781\r\n isDevice: nextProps.isDevice\r\n }); \r\n if (nextProps.isDevice && nextProps.isOpenVia != \"Comments\") {\r\n document.getElementById(\"collapseOne\").classList.add(\"show\");\r\n document.getElementById(\"collapseTwo\").classList.remove(\"show\");\r\n document.getElementById(\"collapseThree\").classList.remove(\"show\"); \r\n }\r\n else if (!nextProps.isDevice && nextProps.isOpenVia != \"Comments\") { \r\n document.getElementById(\"collapseOne\").classList.remove(\"show\");\r\n document.getElementById(\"collapseTwo\").classList.add(\"show\");\r\n document.getElementById(\"collapseThree\").classList.remove(\"show\");\r\n\r\n }\r\n else if (this.state.isOpenVia === null || this.state.isOpenVia === undefined) {\r\n document.getElementById(\"collapseOne\").classList.remove(\"show\");\r\n document.getElementById(\"collapseTwo\").classList.remove(\"show\");\r\n document.getElementById(\"collapseThree\").classList.add(\"show\");\r\n }\r\n\r\n //this.showTabPane(nextProps.isReeferOrRCD);\r\n DetailsMap.LoadDetailsMap(nextProps.assetData.GPSLatitude, nextProps.assetData.GPSLongitude);\r\n this.formatGPSLatLong(nextProps.assetData);\r\n }\r\n\r\n if (nextProps.preTripReport != null && nextProps.preTripReport != \"\") {\r\n this.setState({\r\n PTReport: nextProps.preTripReport\r\n });\r\n }\r\n else {\r\n this.setState({ PTReport: null });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n }\r\n\r\n updateReeferCommandsDimensions() {\r\n $(\".dynamicHeight\").css('min-height', $(window).height() - 190);\r\n $(\".dynamicHeight\").css('max-height', $(window).height() - 190);\r\n $(\"#reeferStatusMap\").css('min-height', $(window).height() - 210);\r\n $(\"#reeferStatusMap\").css('max-height', $(window).height() - 210);\r\n\r\n }\r\n\r\n popUpReport() {\r\n if (this.state.PTReport == null || this.state.PTReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n this.setState({\r\n modelTitleReport: 'Pre-Trip Report', popUpHtmlReport:
\r\n });\r\n $('#btnTrigger').click();\r\n }\r\n } \r\n\r\n downloadPTReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([this.state.PTReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'PT_' + this.state.unitDetails.ReeferID + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.state.PTReport));\r\n element.setAttribute('download', 'PT_' + this.state.unitDetails.ReeferID + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n\r\n printPTReport() {\r\n var divToPrint = document.getElementById(\"printData\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n\r\n popUpGetTWReport() {\r\n if (this.state.unitDetails.ReeferID != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetTripWISEReport?containerID=' + this.state.unitDetails.ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ TWReport: result }, () => { this.bindTWReport(); });\r\n });\r\n }\r\n }\r\n handleButtonClick() {\r\n if ((self.state.ReeferId !== null && self.state.ReeferId !== undefined )|| (self.state.RcdId !== null && self.state.RcdId !== undefined)) {\r\n const filterParams = {\r\n ReeferId: self.state.ReeferId,\r\n RcdId: self.state.RcdId,\r\n };\r\n self.GetCurrentDetails(filterParams);\r\n }\r\n }\r\n \r\n bindTWReport() {\r\n $('#globalLoader').hide();\r\n if (this.state.TWReport == null || this.state.TWReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No TripWISE reports have been collected for this reefer. Execute the ‘Get TripWise Report’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitleReport: 'TripWISE Report', popUpHtmlReport:
});\r\n $('#btnTriggerTW').click();\r\n }\r\n } \r\n downloadTWReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([this.state.TWReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'TripWISEReport_' + this.state.unitDetails.ReeferID + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.state.TWReport));\r\n element.setAttribute('download', 'TripWISEReport_' + this.state.unitDetails.ReeferID + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n\r\n printTWReport() {\r\n var divToPrint = document.getElementById(\"printDataTW\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.modelTitleReport}
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.popUpHtmlReport}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.popUpHtmlReport}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n }\r\n}\r\n\r\nclass ReeferDetails extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n var filterSet = new ReeferDetailsFilter();\r\n var reeferId = null;\r\n var rcdId = null;\r\n var isOpenVia = null;\r\n var isDevice = false; \r\n if (this.props.location.state != null && this.props.location.state != undefined) {\r\n var params = this.props.location.state.reeferData;\r\n var dataSource = this.props.location.state.source;\r\n var formattersData = this.props.location.state.reeferFormatter;\r\n isOpenVia = this.props.location.state.isOpenVia;\r\n if (this.props.location.state.isDevice != null && this.props.location.state.isDevice != undefined)\r\n isDevice = this.props.location.state.isDevice;\r\n else\r\n isDevice = false;\r\n\r\n if (params != null && params != undefined) {\r\n if (dataSource == \"Device\")\r\n rcdId = params.RCDID;\r\n else {\r\n reeferId = params.ReeferID;\r\n rcdId = params.RCDID;\r\n }\r\n }\r\n }\r\n\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm)\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n\r\n var fromCommandDate = moment(new Date(toDate)).startOf('day').toString();\r\n var toCommandDate = moment(new Date(toDate)).endOf('day').toString();\r\n\r\n this.state = {\r\n reeferDetailsData: new UnitDetailsUI(), reeferHistoryData: [], rcdHistoryData: [], reeferCommandsData: [], reeferDetailsSearch: filterSet, CommandTypes: [], ReeferId: reeferId,\r\n RcdId: rcdId, preTripCmd: null, selectedReeferData: [], modelTitle: '', popUpHtml: '', isChangeDeforstInterval: false, isLoading: true, enableTab: false, DataSource: dataSource,\r\n reeferFormatter: formattersData, preTripData: null, tabContentHtml: '', searchInputValue: '', assetMasterID: 0, isOpenVia: isOpenVia, isDevice: isDevice\r\n , fromDateHistory: DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM')\r\n , toDateHistory: DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM')\r\n , fromDateCommandHistory: DateFormat(new Date(fromCommandDate), 'mm/dd/yyyy HH:MM')\r\n , toDateCommandHistory: DateFormat(new Date(toCommandDate), 'mm/dd/yyyy HH:MM')\r\n , fromRCDDateHistory: DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM')\r\n , toRCDDateHistory: DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM')\r\n };\r\n //$('#globalLoader').show();\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/GetCommandTypes')\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // //$('#globalLoader').hide();\r\n // this.setState({ CommandTypes: data }, () => {\r\n // $('#globalLoader').show();\r\n\r\n if (params != null) {\r\n if (params.ReeferID != null) {\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + params.ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').show();\r\n this.setState({\r\n preTripData: data,\r\n }, () => this.GetReeferDetailsSearchData(params));\r\n //$('#globalLoader').hide();\r\n });\r\n }\r\n else\r\n this.GetReeferDetailsSearchData(params);\r\n }\r\n else\r\n this.GetReeferDetailsSearchData(params)\r\n\r\n // });\r\n //});\r\n\r\n tempFormat = DetailFormatters.GetTempColumnFormatter();\r\n timeZoneCd = DetailFormatters.GetTimeZoneFormatter();\r\n restricted = false;\r\n }\r\n\r\n updateReeferCommandsDimensions() {\r\n $(\".dynamicHeight\").css('min-height', $(window).height() - 160);\r\n $(\".dynamicHeight\").css('max-height', $(window).height() - 160);\r\n }\r\n\r\n GetSelectedReeferData() {\r\n $('#globalLoader').show();\r\n var reeferSearchFilters: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedReefer: this.state.ReeferId, SelectedGeofence: '', SelectedInterval: '', SelectedGeofenceInside: '', SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '' //WI-26881\r\n }; \r\n var childRequest = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(childRequest)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(childData => {\r\n $('#globalLoader').hide();\r\n if (childData != null && childData != undefined && childData.length > 0) {\r\n var reeferData = [];\r\n reeferData.push(childData[0]);\r\n this.setState({\r\n selectedReeferData: reeferData,\r\n isLoading: false\r\n }, () => this.ShowFirstTab());\r\n }\r\n else {\r\n this.ShowFirstTab();\r\n }\r\n });\r\n }\r\n\r\n ShowFirstTab() {\r\n $('.nav-underline button:first').click();\r\n this.setState({ tabContentHtml: this.renderTabContentHtml(1) });\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n this.ShowFirstTab();\r\n if (this.state.ReeferId == null && this.state.RcdId == null)\r\n this.setState({ isLoading: false });\r\n else {\r\n if (this.state.ReeferId != null && this.state.ReeferId != undefined && this.state.ReeferId != '' && this.state.DataSource == \"Reefer\") {\r\n this.setState({ searchInputValue: this.state.ReeferId });\r\n }\r\n else if (this.state.RcdId != null && this.state.RcdId != undefined && this.state.RcdId != '' && this.state.DataSource == \"Device\") {\r\n this.setState({ searchInputValue: this.state.RcdId });\r\n }\r\n else {\r\n if (this.state.ReeferId != null && this.state.ReeferId != undefined && this.state.ReeferId != '') {\r\n this.setState({ searchInputValue: this.state.ReeferId });\r\n }\r\n else if (this.state.RcdId != null && this.state.RcdId != undefined && this.state.RcdId != '') {\r\n this.setState({ searchInputValue: this.state.RcdId });\r\n }\r\n }\r\n }\r\n\r\n this.updateReeferCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateReeferCommandsDimensions.bind(this));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n $('#Command').hide();\r\n\r\n //$('.nav-tabs a').on('shown.bs.tab', function (event) {\r\n $(\".nav-underline button\").click(function (event) {\r\n var targetId = event.target.id;\r\n if (targetId == 'lnkCurrentStatus') {\r\n self.renderTabContent(1);\r\n }\r\n else if (targetId == 'lnkHistory') {\r\n self.renderTabContent(2);\r\n }\r\n else {\r\n self.renderTabContent(3);\r\n }\r\n });\r\n }\r\n\r\n renderTabContent(tabNumber: number) {\r\n this.setState({ tabContentHtml: this.renderTabContentHtml(tabNumber) });\r\n }\r\n\r\n renderTabContentHtml(tabNumber: number) {\r\n if (tabNumber == 1) {\r\n return
\r\n \r\n
;\r\n }\r\n else if (tabNumber == 2) {\r\n if (this.state.ReeferId != null && this.state.ReeferId != \"\") {\r\n return
\r\n
\r\n
;\r\n }\r\n else {\r\n return
\r\n
\r\n
;\r\n }\r\n }\r\n else {\r\n return
\r\n
\r\n
\r\n }\r\n }\r\n\r\n HoldHistoryDates(fromDate: Date, toDate: Date) {\r\n if (fromDate === null && toDate != null) {\r\n this.setState({ toDateHistory: toDate.toString() });\r\n }\r\n if (fromDate != null && toDate === null) {\r\n this.setState({ fromDateHistory: fromDate.toString() });\r\n }\r\n }\r\n HoldRCDHistoryDates(fromDate: Date, toDate: Date) {\r\n if (fromDate === null && toDate != null) {\r\n this.setState({ toRCDDateHistory: toDate.toString() });\r\n }\r\n if (fromDate != null && toDate === null) {\r\n this.setState({ fromRCDDateHistory: fromDate.toString() });\r\n }\r\n }\r\n\r\n HoldCommandHistoryDates(fromDate: Date, toDate: Date) {\r\n if (fromDate === null && toDate != null) {\r\n this.setState({ toDateCommandHistory: toDate.toString() });\r\n }\r\n if (fromDate != null && toDate === null) {\r\n this.setState({ fromDateCommandHistory: fromDate.toString() });\r\n }\r\n }\r\n\r\n HoldHistoryData(reeferFormatter: server.ReeferFormatter, reeferHistoryData: server.UnitHistoryUI[],\r\n rcdHistoryData: server.RcdHistoryUI[]) {\r\n\r\n this.setState({\r\n reeferHistoryData: reeferHistoryData,\r\n reeferFormatter: reeferFormatter,\r\n rcdHistoryData: rcdHistoryData\r\n });\r\n }\r\n\r\n HoldCommandHistoryData(reeferCommandsData: server.CommandStatusUI[]) {\r\n\r\n this.setState({\r\n reeferCommandsData: reeferCommandsData\r\n });\r\n }\r\n\r\n Reeferchange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var inputValue = Value;\r\n\r\n self.setState({\r\n searchInputValue: inputValue\r\n });\r\n }\r\n\r\n GetReeferDetailsSearchData(params: any) {\r\n var filterSet = new ReeferDetailsFilter();\r\n\r\n if (this.state.DataSource == null || this.state.DataSource == undefined) {\r\n if (this.state.ReeferId == null) {\r\n filterSet.ReeferId = this.state.ReeferId;\r\n filterSet.RcdId = this.state.RcdId;\r\n }\r\n else if (this.state.ReeferId.length <= 11) {\r\n filterSet.ReeferId = this.state.ReeferId;\r\n }\r\n else if (this.state.ReeferId.length > 11) {\r\n filterSet.RcdId = this.state.ReeferId;\r\n }\r\n }\r\n else {\r\n filterSet.ReeferId = this.state.ReeferId;\r\n filterSet.RcdId = this.state.RcdId;\r\n }\r\n\r\n if (this.state.ReeferId != null || this.state.RcdId != null) {\r\n $('#globalLoader').show();\r\n this.setState({ reeferDetailsSearch: filterSet });\r\n var filterParams = JSON.stringify(filterSet);\r\n\r\n if (params != null) {\r\n restricted = false;\r\n if (this.state.isOpenVia === \"RcdStatus\") {\r\n this.GetCurrentDetails(filterParams);\r\n }\r\n else {\r\n this.setState({\r\n //reeferDetailsData: params,\r\n assetMasterID: params.AssetMasterID,//WI-23781\r\n //isLoading: false\r\n }, () => this.GetCurrentDetails(filterParams));//RCNG-65\r\n //$('#globalLoader').hide();\r\n }\r\n }\r\n else {\r\n this.GetCurrentDetails(filterParams);\r\n }\r\n\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n } \r\n\r\n private GetCurrentDetails(filterParams: string) {\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // $('#globalLoader').hide();\r\n // this.setState({\r\n // reeferFormatter: data\r\n // }, () => {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferCurrentDetailsDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data.UnitDetails.RCDID != null) {\r\n if ((data.UnitDetails.IsValid3P == true && data.UnitDetails.AggRestricted == false) || (data.UnitDetails.IsValid3P == true && data.UnitDetails.AggRestricted == true && data.UnitDetails.AggApplied == true)) {\r\n restricted = false;\r\n this.setState({\r\n reeferDetailsData: data.UnitDetails,\r\n preTripData: data.PreTripReport,\r\n assetMasterID: data.AssetMasterID\r\n }, () => this.ShowFirstTab());\r\n }\r\n else {\r\n restricted = true;\r\n var unitDetails = new UnitDetailsUI();\r\n unitDetails.UnitMasterID = data.UnitDetails.UnitMasterID;\r\n unitDetails.ReeferID = data.UnitDetails.ReeferID;\r\n unitDetails.RCDID = data.UnitDetails.RCDID;\r\n unitDetails.RCDMasterID = data.UnitDetails.RCDMasterID;\r\n this.setState({\r\n reeferDetailsData: unitDetails,\r\n preTripData: data.PreTripReport,\r\n assetMasterID: data.AssetMasterID\r\n }, () => this.ShowFirstTab());\r\n //PopupWindow.showErrorMessage(\"Error\", \"Current Details not avaialble\");\r\n }\r\n }\r\n else {\r\n restricted = false;\r\n this.ClearReeferDetails();\r\n this.setState({ ReeferId: this.state.reeferDetailsData.ReeferID, isLoading: false, assetMasterID: 0 }, () => this.ShowFirstTab());\r\n PopupWindow.showErrorMessage(\"Error\", \"Invalid Reefer/Device\");\r\n return;\r\n }\r\n });\r\n // });\r\n //});\r\n }\r\n\r\n ClearReeferDetails() {\r\n this.setState({\r\n reeferDetailsData: new UnitDetailsUI(),\r\n reeferHistoryData: [],\r\n reeferCommandsData: [],\r\n rcdHistoryData: [],\r\n preTripData: null\r\n });\r\n }\r\n\r\n ApplySearch() {\r\n const IsMatch = /^[a-zA-Z]{4}[0-9]{6,7}$/;\r\n if (this.state.ReeferId != null && this.state.ReeferId != undefined && this.state.ReeferId != '') {\r\n if (this.state.ReeferId.length <= 11) {\r\n if (!IsMatch.test(this.state.ReeferId)) {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter Reefer ID in proper format\"); return;\r\n }\r\n else {\r\n this.setState({ isLoading: true, enableTab: false });\r\n self.GetReeferDetailsSearchData(null);\r\n }\r\n }\r\n }\r\n else if (this.state.RcdId != null && this.state.RcdId != undefined && this.state.RcdId != '') {\r\n if (this.state.RcdId.length > 11) {\r\n this.setState({ isLoading: true, enableTab: false });\r\n self.GetReeferDetailsSearchData(null);\r\n }\r\n }\r\n }\r\n\r\n ApplyReeferDetailsSearch() {\r\n if (this.state.searchInputValue != null && this.state.searchInputValue != undefined && this.state.searchInputValue != '') {\r\n var inputLength = this.state.searchInputValue.length;\r\n if (inputLength > 11) {\r\n this.setState({ RcdId: this.state.searchInputValue, ReeferId: null, isDevice: true, isOpenVia: null }, () => this.ApplySearch())\r\n }\r\n else if (inputLength <= 11) {\r\n this.setState({ ReeferId: this.state.searchInputValue, RcdId: null, isDevice: false, isOpenVia: null }, () => this.ApplySearch())\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter Reefer/Device ID\"); return;\r\n }\r\n\r\n\r\n }\r\n\r\n static refreshReeferDetailsData() {\r\n self.setState({ isLoading: true, enableTab: true });\r\n self.GetReeferDetailsSearchData(null);\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping', popUpHtml: self.RenderContextMenuPopUp('Ping') });\r\n }\r\n\r\n commandDropdown() {\r\n if (self.props.loggedInUserData != null) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(self.props.loggedInUserData.User.Customer.Rights));\r\n }\r\n var rights = JSON.parse(sessionStorage.getItem('userRights'));\r\n var mapRequiresRight = [14];\r\n var m = $.inArray(mapRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liMapRequiresRight').addClass('disabled');\r\n }\r\n var detailsRequiresRight = [34];\r\n var m = $.inArray(detailsRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liDetailsRequiresRight').addClass('disabled');\r\n }\r\n var historyRequiresRight = [15];\r\n var m = $.inArray(historyRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liHistoryRequiresRight').addClass('disabled');\r\n }\r\n var commandstatusRequiresRight = [3];\r\n var m = $.inArray(commandstatusRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liCommandStatusRequiresRight').addClass('disabled');\r\n }\r\n var assignvslRequiresRight = [74];\r\n var m = $.inArray(assignvslRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liAssignVSLRequiresRight').addClass('disabled');\r\n }\r\n var unassignvslRequiresRight = [75];\r\n var m = $.inArray(unassignvslRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUnassignVSLRequiresRight').addClass('disabled');\r\n }\r\n var assignccRequiresRight = [76];\r\n var m = $.inArray(assignccRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liAssignCCRequiresRight').addClass('disabled');\r\n }\r\n var unassignccRequiresRight = [77];\r\n var m = $.inArray(unassignccRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUnassignCCRequiresRight').addClass('disabled');\r\n }\r\n var pingRequiresRight = [26];\r\n var m = $.inArray(pingRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liPingRequiresRight').addClass('disabled');\r\n }\r\n var setpointRequiresRight = [23];\r\n var m = $.inArray(setpointRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liSetpointRequiresRight').addClass('disabled');\r\n }\r\n var humidityRequiresRight = [27];\r\n var m = $.inArray(humidityRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liHumidityRequiresRight').addClass('disabled');\r\n }\r\n var o2setpointRequiresRight = [24];\r\n var m = $.inArray(o2setpointRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liO2SetPointRequiresRight').addClass('disabled');\r\n }\r\n var co2setpointRequiresRight = [25];\r\n var m = $.inArray(co2setpointRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liCO2SetPointRequiresRight').addClass('disabled');\r\n }\r\n var traditionaldownloadRequiresRight = [31];\r\n var m = $.inArray(traditionaldownloadRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liTraditionalDownloadRequiresRight').addClass('disabled');\r\n }\r\n var fullpretripRequiresRight = [18];\r\n var m = $.inArray(fullpretripRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liFullPreTripRequiresRight').addClass('disabled');\r\n }\r\n var StartPretripshortRequiresRight = [19];\r\n var m = $.inArray(StartPretripshortRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liStartPreTripShortRequiresRight').addClass('disabled');\r\n }\r\n var startpretripftRequiresRight = [20];\r\n var m = $.inArray(startpretripftRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liStartPreTripFtRequiresRight').addClass('disabled');\r\n }\r\n var stoppretripRequiresRight = [21];\r\n var m = $.inArray(stoppretripRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liStopPreTripRequiresRight').addClass('disabled');\r\n }\r\n var panIDRequiresRight = [109];\r\n var m = $.inArray(panIDRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liassignpanidRequiresRight').addClass('disabled');\r\n }\r\n var scheduledpretripRequiresRight = [106];\r\n var m = $.inArray(scheduledpretripRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liScheduledPreTripRequiresRight').addClass('disabled');\r\n }\r\n var lastpretripresultRequiresRight = [30];\r\n var m = $.inArray(lastpretripresultRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liLastPreTripResultRequiresRight').addClass('disabled');\r\n }\r\n var rebootreefercontrollerRequiresRight = [22];\r\n var m = $.inArray(rebootreefercontrollerRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#lirebootreefercontrollerRequiresRight').addClass('disabled');\r\n }\r\n var updatedatalogRequiresRight = [29];\r\n var m = $.inArray(updatedatalogRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUpdateDatalogRequiresRight').addClass('disabled');\r\n }\r\n var updatecontainerIDRequiresRight = [28];\r\n var m = $.inArray(updatecontainerIDRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUpdateContainerIdRequiresRight').addClass('disabled');\r\n }\r\n var uploadfirmwareRequiresRight = [33];\r\n var m = $.inArray(uploadfirmwareRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUploadFirmwareRequiresRight').addClass('disabled');\r\n }\r\n var reportingintervalRequiresRight = [81];\r\n var m = $.inArray(reportingintervalRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liReportingIntervalRequiresRight').addClass('disabled');\r\n }\r\n var updatemodelconfigurationRequiresRight = [89];\r\n var m = $.inArray(updatemodelconfigurationRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUpdateModelConfigurationRequiresRight').addClass('disabled');\r\n }\r\n var verifymodelvalidityRequiresRight = [90];\r\n var m = $.inArray(verifymodelvalidityRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liVerifyModelValidityRequiresRight').addClass('disabled');\r\n }\r\n var syncreeferclockRequiresRight = [92];\r\n var m = $.inArray(syncreeferclockRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liSyncReeferClockRequiresRight').addClass('disabled');\r\n }\r\n var changereeferclocksettingRequiresRight = [108];\r\n var m = $.inArray(changereeferclocksettingRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#lichangereeferclocksettingRequiresRight').addClass('disabled');\r\n }\r\n\r\n var startdefrostRequiresRight = [103];\r\n var m = $.inArray(startdefrostRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liStartDefrostRequiresRight').addClass('disabled');\r\n }\r\n var changedefrostintervalRequiresRight = [104];\r\n var m = $.inArray(changedefrostintervalRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n }\r\n var createtripRequiresRight = [95];\r\n var m = $.inArray(createtripRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liCreateTripRequiresRight').addClass('disabled');\r\n }\r\n var tripstatusRequiresRight = [94];\r\n var m = $.inArray(tripstatusRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liTripStatusRequiresRight').addClass('disabled');\r\n }\r\n var cleardeviationRequiresRight = [98];\r\n var m = $.inArray(cleardeviationRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liClearDeviationRequiresRight').addClass('disabled');\r\n }\r\n var assignBookingRequiresRight = [100];\r\n var m = $.inArray(assignBookingRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liAssignBookingRequiresRight').addClass('disabled');\r\n }\r\n var unassignbookingRequiresRight = [101];\r\n var m = $.inArray(unassignbookingRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUnassignBookingRequiresRight').addClass('disabled');\r\n }\r\n var editbookingRequiresRight = [102];\r\n var m = $.inArray(editbookingRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liEditBookingRequiresRight').addClass('disabled');\r\n }\r\n var assigntocustomerRequiresRight = [40];\r\n var m = $.inArray(assigntocustomerRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liAssignToCustomerRequiresRight').addClass('disabled');\r\n }\r\n var unassignfromcustomerRequiresRight = [82];\r\n var m = $.inArray(unassignfromcustomerRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liUnassignFromCustomerRequiresRight').addClass('disabled');\r\n }\r\n var controllerRequiresRight = [47];\r\n var m = $.inArray(controllerRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liControllerRequiresRight').addClass('disabled');\r\n }\r\n var liassignGuestreeferRequiresRight = [112, 113, 114, 115, 116];\r\n var m = $.inArray(liassignGuestreeferRequiresRight.toString(), rights);\r\n if (m == -1) {\r\n $('#liassignGuestreeferRequiresRight').addClass('disabled');\r\n }\r\n var vesseltasksRequiresRight = [74, 75];\r\n var vesseltasks = false;\r\n $.each(vesseltasksRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n vesseltasks = true;\r\n }\r\n });\r\n if (!vesseltasks) {\r\n $('#liVesselTasksRequiresRight').addClass('disabled');\r\n }\r\n var cargocaretasksRequiresRight = [76, 77];\r\n var cargocaretasks = false;\r\n $.each(cargocaretasksRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n cargocaretasks = true;\r\n }\r\n });\r\n if (!cargocaretasks) {\r\n $('#liCargoCareTasksRequiresRight').addClass('disabled');\r\n }\r\n var commandsRequiresRight = [18, 19, 20, 21, 22, 23, 26, 27, 24, 25, 28, 29, 30, 31, 32, 33, 83];\r\n var commands = false;\r\n $.each(commandsRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n commands = true;\r\n }\r\n });\r\n if (!commands) {\r\n $('#licommandsRequiresRight').addClass('disabled');\r\n }\r\n var managerealtimedlsettingsRequiresRight = [32, 80];\r\n var managerealtimedl = false;\r\n $.each(managerealtimedlsettingsRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n managerealtimedl = true;\r\n }\r\n });\r\n if (!managerealtimedl) {\r\n $('#liManagerealTimedSettingsRequiresRight').addClass('disabled');\r\n }\r\n var pretripRequiresRight = [18, 19, 20];\r\n var pretrip = false;\r\n $.each(pretripRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n pretrip = true;\r\n }\r\n });\r\n if (!pretrip) {\r\n $('#liPreTripRequiresRight').addClass('disabled');\r\n }\r\n var queryreeferinventoryRequiresRight = [83, 84, 85];\r\n var queryreeferinventory = false;\r\n $.each(queryreeferinventoryRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n queryreeferinventory = true;\r\n }\r\n });\r\n if (!queryreeferinventory) {\r\n $('#liQueryReeferInventoryRequiresRight').addClass('disabled');\r\n }\r\n var defrostRequiresRight = [103, 104];\r\n var defrost = false;\r\n $.each(defrostRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n defrost = true;\r\n }\r\n });\r\n if (!defrost) {\r\n $('#liDefrostRequiresRight').removeClass('enabled');\r\n $('#liDefrostRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liDefrostRequiresRight').removeClass('disabled');\r\n $('#liDefrostRequiresRight').addClass('enabled');\r\n }\r\n var tripRequiresRight = [94, 95, 98];\r\n var trip = false;\r\n $.each(tripRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n trip = true;\r\n }\r\n });\r\n if (!trip) {\r\n $('#liTripRequiresRight').addClass('disabled');\r\n }\r\n var bookingRequiresRight = [100, 101, 102];\r\n var booking = false;\r\n $.each(bookingRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n booking = true;\r\n\r\n }\r\n });\r\n if (!booking) {\r\n $('#liBookingRequiresRight').addClass('disabled');\r\n }\r\n var thirdpartyaccessRequiresRight = [40, 82];\r\n var thirdpartyaccess = false;\r\n $.each(thirdpartyaccessRequiresRight, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n thirdpartyaccess = true;\r\n }\r\n });\r\n if (!thirdpartyaccess) {\r\n $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n }\r\n\r\n var dflag = self.state.selectedReeferData[0].DeviationFlg;\r\n var csflag = self.state.selectedReeferData[0].ControllerSerialNumberChgFlag;\r\n var isAssignCargo = self.state.selectedReeferData[0].IsCargoCare;\r\n var liassignvslRequiresRight = self.state.selectedReeferData[0].IsOnVessel;\r\n var ReeferOEMTypeCd = self.state.selectedReeferData[0].ReeferOEMTypeCd;\r\n\r\n if (ReeferOEMTypeCd.trim() == 'U') {\r\n $('#liDefrostRequiresRight').removeClass('enabled');\r\n $('#liDefrostRequiresRight').addClass('disabled');\r\n $('#liPreTripRequiresRight').removeClass('enabled');\r\n $('#liPreTripRequiresRight').addClass('disabled');\r\n $('#liStopPreTripRequiresRight').removeClass('enabled');\r\n $('#liStopPreTripRequiresRight').addClass('disabled');\r\n } else {\r\n $('#liPreTripRequiresRight').removeClass('disabled');\r\n $('#liPreTripRequiresRight').addClass('enabled');\r\n $('#liStopPreTripRequiresRight').removeClass('disabled');\r\n $('#liStopPreTripRequiresRight').addClass('enabled');\r\n $('#liDefrostRequiresRight').removeClass('disabled');\r\n $('#liDefrostRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'TR') {\r\n $('#liVerifyModelValidityRequiresRight').removeClass('enabled');\r\n $('#liVerifyModelValidityRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liVerifyModelValidityRequiresRight').removeClass('disabled');\r\n $('#liVerifyModelValidityRequiresRight').addClass('enabled');\r\n }\r\n\r\n if (ReeferOEMTypeCd.trim() == 'S') {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C') {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'D') {\r\n $('#liDefrostRequiresRight').removeClass('enabled');\r\n $('#liDefrostRequiresRight').addClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liDefrostRequiresRight').removeClass('disabled');\r\n $('#liDefrostRequiresRight').addClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'T') {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n }\r\n\r\n if (self.state.selectedReeferData[0].BookingNumber != null) {\r\n $('#liUnassignBookingRequiresRight').removeClass('disabled');\r\n $('#liUnassignBookingRequiresRight').addClass('enabled');\r\n $('#liEditBookingRequiresRight').removeClass('disabled');\r\n $('#liEditBookingRequiresRight').addClass('enabled');\r\n if (self.state.selectedReeferData[0].EventMasterID == self.state.selectedReeferData[0].LastBookingEventMasterId) {\r\n $('#liAssignBookingRequiresRight').removeClass('disabled');\r\n $('#liAssignBookingRequiresRight').addClass('enabled');\r\n $('#liUnassignBookingRequiresRight').removeClass('enabled');\r\n $('#liUnassignBookingRequiresRight').addClass('disabled');\r\n $('#liEditBookingRequiresRight').removeClass('enabled');\r\n $('#liEditBookingRequiresRight').addClass('disabled');\r\n } else {\r\n $('#liAssignBookingRequiresRight').removeClass('enabled');\r\n $('#liAssignBookingRequiresRight').addClass('disabled');\r\n $('#liUnassignBookingRequiresRight').removeClass('disabled');\r\n $('#liUnassignBookingRequiresRight').addClass('enabled');\r\n $('#liEditBookingRequiresRight').removeClass('disabled');\r\n $('#liEditBookingRequiresRight').addClass('enabled');\r\n }\r\n }\r\n else {\r\n $('#liUnassignBookingRequiresRight').removeClass('enabled');\r\n $('#liUnassignBookingRequiresRight').addClass('disabled');\r\n $('#liEditBookingRequiresRight').removeClass('enabled');\r\n $('#liEditBookingRequiresRight').addClass('disabled');\r\n $('#liAssignBookingRequiresRight').removeClass('disabled');\r\n $('#liAssignBookingRequiresRight').addClass('enabled');\r\n }\r\n\r\n if (!liassignvslRequiresRight) {\r\n $('#liAssignVSLRequiresRight').removeClass('disabled');\r\n $('#liAssignVSLRequiresRight').addClass('enabled');\r\n $('#liUnassignVSLRequiresRight').removeClass('enabled');\r\n $('#liUnassignVSLRequiresRight').addClass('disabled');\r\n } else {\r\n $('#liAssignVSLRequiresRight').removeClass('enabled');\r\n $('#liAssignVSLRequiresRight').addClass('disabled');\r\n $('#liUnassignVSLRequiresRight').removeClass('disabled');\r\n $('#liUnassignVSLRequiresRight').addClass('enabled');\r\n }\r\n\r\n if (isAssignCargo) {\r\n $('#liUnassignCCRequiresRight').removeClass('disabled');\r\n $('#liUnassignCCRequiresRight').addClass('enabled');\r\n $('#liAssignCCRequiresRight').removeClass('enabled');\r\n $('#liAssignCCRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liUnassignCCRequiresRight').removeClass('enabled');\r\n $('#liUnassignCCRequiresRight').addClass('disabled');\r\n $('#liAssignCCRequiresRight').removeClass('disabled');\r\n $('#liAssignCCRequiresRight').addClass('enabled');\r\n }\r\n\r\n if (csflag) {\r\n $('#liControllerRequiresRight').removeClass('disabled');\r\n $('#liControllerRequiresRight').addClass('enabled');\r\n } else {\r\n $('#liControllerRequiresRight').removeClass('enabled');\r\n $('#liControllerRequiresRight').addClass('disabled');\r\n }\r\n\r\n if (self.state.selectedReeferData[0].TripStatusCd != null) {\r\n if (dflag) {\r\n $('#liClearDeviationRequiresRight').removeClass('disabled');\r\n $('#liClearDeviationRequiresRight').addClass('enabled');\r\n }\r\n else {\r\n $('#liClearDeviationRequiresRight').removeClass('enabled');\r\n $('#liClearDeviationRequiresRight').addClass('disabled');\r\n }\r\n } else {\r\n $('#liClearDeviationRequiresRight').removeClass('enabled');\r\n $('#liClearDeviationRequiresRight').addClass('disabled');\r\n }\r\n\r\n $('#liDetailsRequiresRight').removeClass('disabled');\r\n $('#liDetailsRequiresRight').addClass('enabled');\r\n $('#liTripRequiresRight').removeClass('disabled');\r\n $('#liTripRequiresRight').addClass('enabled');\r\n $('#liCreateTripRequiresRight').removeClass('disabled');\r\n $('#liCreateTripRequiresRight').addClass('enabled');\r\n $('#liBookingRequiresRight').removeClass('disabled');\r\n $('#liBookingRequiresRight').addClass('enabled');\r\n $('#liUpdateContainerIdRequiresRight').removeClass('disabled');\r\n $('#liUpdateContainerIdRequiresRight').addClass('enabled');\r\n\r\n }\r\n popUpChangeTempSetPoint() {\r\n self.setState({ modelTitle: 'Change Temperature Setpoint', popUpHtml: self.RenderContextMenuPopUp('ChangeTempSetPoint') });\r\n }\r\n\r\n popUpHumiditySetPoint() {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint', popUpHtml: self.RenderContextMenuPopUp('ChangeHumiditySetPoint') });\r\n }\r\n\r\n popUpO2SetPoint() {\r\n self.setState({ modelTitle: 'Change O2 Setpoint', popUpHtml: self.RenderContextMenuPopUp('ChangeO2SetPoint') });\r\n }\r\n\r\n popUpCo2SetPoint() {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint', popUpHtml: self.RenderContextMenuPopUp('ChangeCO2SetPoint') });\r\n }\r\n\r\n popUpDLTraditional() {\r\n self.setState({ modelTitle: 'Get Traditional Download', popUpHtml: self.RenderContextMenuPopUp('GetDLTraditional') });\r\n }\r\n\r\n popUpPreTripFull() {\r\n self.setState({ pretripCmd: \"StartFullPTI\" }, () => { self.setState({ modelTitle: 'Start Full PreTrip', popUpHtml: self.RenderContextMenuPopUp('PreTrip') }); });\r\n }\r\n\r\n popUpPreTripShort() {\r\n self.setState({ pretripCmd: \"StartShortPTI\" }, () => { self.setState({ modelTitle: 'Start Short PreTrip', popUpHtml: self.RenderContextMenuPopUp('PreTrip') }); });\r\n }\r\n\r\n popUpFunctionTest() {\r\n self.setState({ pretripCmd: \"StartCAShortPTI\" }, () => { self.setState({ modelTitle: 'Start Function Test', popUpHtml: self.RenderContextMenuPopUp('PreTrip') }); });\r\n }\r\n\r\n popUpStopPTI() {\r\n self.setState({ modelTitle: 'Stop PTI', popUpHtml: self.RenderContextMenuPopUp('StopPTI') });\r\n }\r\n\r\n popUpSchedulePTI() {\r\n self.setState({ modelTitle: 'Schedule PreTrip', popUpHtml: self.RenderContextMenuPopUp('SchedulePreTrip') });\r\n }\r\n\r\n popUpGetPTI() {\r\n self.setState({ modelTitle: 'Get Last PreTrip Result', popUpHtml: self.RenderContextMenuPopUp('GetPTI') });\r\n }\r\n\r\n popUpRebootReefer() {\r\n self.setState({ modelTitle: 'Reboot Reefer Controller', popUpHtml: self.RenderContextMenuPopUp('RebootReefer') });\r\n }\r\n\r\n popUpChangeDatalog() {\r\n self.setState({ modelTitle: 'Change Datalog Interval', popUpHtml: self.RenderContextMenuPopUp('ChangeDatalogInterval') });\r\n }\r\n\r\n popUpChangeReeferId() {\r\n self.setState({ modelTitle: 'Change Reefer ID', popUpHtml: self.RenderContextMenuPopUp('ChangeReeferId') });\r\n }\r\n\r\n popUpChangeReporting() {\r\n self.setState({ modelTitle: 'Change Reporting Interval', popUpHtml: self.RenderContextMenuPopUp('ChangeReportingInterval') });\r\n }\r\n\r\n popUpQueryReefer() {\r\n self.setState({ modelTitle: 'Query Reefer Inventory', popUpHtml: self.RenderContextMenuPopUp('QueryReeferInventory') });\r\n }\r\n\r\n popUpUpdateModelConfig() {\r\n self.setState({ modelTitle: 'Update Model Configuration', popUpHtml: self.RenderContextMenuPopUp('UpdateModelConfiguration') });\r\n }\r\n\r\n popUpVerifyModelValidity() {\r\n var verifyingModelList = [];\r\n //if (self.state.selectedReeferData.length > 0) {\r\n // verifyingModelList = self.state.selectedReeferData.map(function (obj) {\r\n // if (obj.ReeferOEMTypeCd.trim() == \"TR\") {\r\n // return obj.ReeferOEMTypeCd;\r\n // }\r\n // });\r\n\r\n // if (verifyingModelList.length > 0) {\r\n // alert('Command is not supported for TKReceiver OEM.');\r\n // }\r\n\r\n //}\r\n\r\n if (self.state.selectedReeferData.length > 0) {\r\n var TKReceiverCount = 0;\r\n $.each(self.state.selectedItems, function (key, value) {\r\n if (value.ReeferOEMTypeCd.trim() == \"TR\") {\r\n TKReceiverCount++;\r\n }\r\n });\r\n\r\n if (TKReceiverCount == self.state.selectedReeferData.length) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TKReceiver OEM.\");\r\n\r\n return;\r\n }\r\n }\r\n\r\n self.setState({ modelTitle: 'Verify Model Validity', popUpHtml: self.RenderContextMenuPopUp('VerifyModelValidity') });\r\n }\r\n\r\n popUpSyncReeferClock() {\r\n self.setState({ modelTitle: 'Sync Reefer Clock', popUpHtml: self.RenderContextMenuPopUp('SyncReeferClock') });\r\n }\r\n\r\n popUpChangeReeferClockSyncSetting() {\r\n self.setState({ modelTitle: 'Change Reefer Clock Sync Settings', popUpHtml: self.RenderContextMenuPopUp('ChangeReeferClockSyncSettings') });\r\n }\r\n\r\n popUpStartDeforst() {\r\n self.setState({ modelTitle: 'Start Deforst', popUpHtml: self.RenderContextMenuPopUp('StartDeforst') });\r\n }\r\n\r\n popUpGuestReeferConfigCmd() {\r\n self.setState({ modelTitle: 'Guest Reefer configuration commands', popUpHtml: self.RenderContextMenuPopUp('GuestReeferConfiguration') });\r\n }\r\n\r\n popUpChangeDeforstInterval() {\r\n if (self.state.selectedReeferData.length > 0) {\r\n var reeferData = self.state.selectedReeferData;\r\n var OEMTypeCdCount = 0;\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var TKReceiverCount = 0;\r\n var UnknownCount = 0;\r\n $.each(reeferData, function (key, value) {\r\n if (value.ReeferOEMTypeCd == null || value.ReeferOEMTypeCd == undefined) {\r\n OEMTypeCdCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"S\") {\r\n Starcoolcount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"D\") {\r\n DaikinCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"C\") {\r\n CarrierCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"T\") {\r\n ThermokingCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"TR\") {\r\n TKReceiverCount++;\r\n }\r\n else if (value.ReeferOEMTypeCd.trim() == \"U\") {\r\n UnknownCount++;\r\n }\r\n });\r\n\r\n this.setState({ isChangeDeforstInterval: false });\r\n\r\n if (OEMTypeCdCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer(s) must have a valid OEM type.\");\r\n }\r\n else if (Starcoolcount == reeferData.length || CarrierCount == reeferData.length || TKReceiverCount == reeferData.length) {\r\n if (Starcoolcount != reeferData.length) {\r\n this.setState({ isChangeDeforstInterval: true });\r\n }\r\n }\r\n else if (DaikinCount == reeferData.length || ThermokingCount == reeferData.length) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Thermoking OEMs.\");\r\n }\r\n else if (UnknownCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer(s) must have a valid OEM type.\");\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n }\r\n self.setState({ modelTitle: 'Change Deforst Interval', popUpHtml: self.RenderContextMenuPopUp('ChangeDeforstInterval') });\r\n }\r\n }\r\n\r\n popUpAssignPanId() {\r\n self.setState({ modelTitle: 'Assign PAN ID', popUpHtml: self.RenderContextMenuPopUp('AssignPanId') });\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string) {\r\n switch (popUpName) {\r\n case 'Ping':\r\n return ;\r\n case 'ChangeTempSetPoint':\r\n return ;\r\n case 'ChangeHumiditySetPoint':\r\n return ;\r\n case 'ChangeO2SetPoint':\r\n return ;\r\n case 'ChangeCO2SetPoint':\r\n return ;\r\n case 'GetDLTraditional':\r\n return ;\r\n case 'PreTrip':\r\n return ;\r\n case 'StopPTI':\r\n return ;\r\n case 'SchedulePreTrip':\r\n return ;\r\n case 'GetPTI':\r\n return ;\r\n case 'RebootReefer':\r\n return ;\r\n case 'ChangeDatalogInterval':\r\n return ;\r\n case 'ChangeReeferId':\r\n return ;\r\n case 'ChangeReportingInterval':\r\n return ;\r\n case 'QueryReeferInventory':\r\n return ;\r\n case 'UpdateModelConfiguration':\r\n return ;\r\n case 'VerifyModelValidity':\r\n return ;\r\n case 'SyncReeferClock':\r\n return ;\r\n case 'StartDeforst':\r\n return ;\r\n case 'ChangeDeforstInterval':\r\n return ;\r\n case 'AssignPanId':\r\n return ;\r\n case 'ChangeReeferClockSyncSettings':\r\n return ;\r\n case 'GuestReeferConfiguration':\r\n return ;\r\n }\r\n }\r\n\r\n public render() {\r\n var enableCommands = '';\r\n if (this.state.reeferDetailsData.ReeferID == \"\" || this.state.reeferDetailsData.ReeferID == null)\r\n enableCommands = 'disabled';\r\n else\r\n enableCommands = '';\r\n\r\n //let isReeferOrRCD = (this.state.DataSource == 'Reefer' || this.state.DataSource == 'Vessel') ? this.state.ReeferId : this.state.RcdId;\r\n //var temp = this.state.reeferDetailsData.ReeferID;\r\n\r\n return
\r\n
\r\n
\r\n
\r\n\r\n {\r\n window.location.search != undefined && window.location.search != null && window.location.href != undefined &&\r\n window.location.href != null && window.location.href.includes('home')\r\n ?\r\n
\r\n \r\n \r\n \r\n Current Details\r\n
\r\n\r\n :\r\n window.location.search != undefined && window.location.search != null && window.location.href != undefined &&\r\n window.location.href != null && window.location.href.includes('reeferstatus')\r\n\r\n ?\r\n
\r\n \r\n \r\n \r\n Current Details\r\n
\r\n :\r\n window.location.search != undefined && window.location.search != null && window.location.href != undefined &&\r\n window.location.href != null && window.location.href.includes('vesselstatus')\r\n\r\n ?\r\n
\r\n \r\n \r\n \r\n Current Details\r\n
\r\n :\r\n
\r\n \r\n \r\n \r\n Current Details\r\n
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n this.Reeferchange(e)} value={this.state.searchInputValue} />\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
    \r\n
  • Ping
  • \r\n
  • Chg.Temp.Setpoint
  • \r\n
  • Chg.Hum.Setpoint
  • \r\n
  • Chg.O2 Setpoint
  • \r\n
  • Chg.CO2 Setpoint
  • \r\n
  • Get DL (Traditional)
  • \r\n
  • \r\n \r\n
      \r\n
    • Full
    • \r\n
    • Short
    • \r\n
    • Function Test
    • \r\n
    \r\n
  • \r\n
  • Stop PTI
  • \r\n
  • Scheduled PreTrip
  • \r\n
  • Get PTI Results
  • \r\n
  • Reboot Reefer Controller
  • \r\n
  • Chg.DataLog Interval
  • \r\n
  • Chg.Reefer ID
  • \r\n
  • Chg.Reporting Interval
  • \r\n
  • Query Reefer Inventory
  • \r\n
  • Update Model Configuration
  • \r\n
  • Verify Model Validity
  • \r\n
  • Sync.Reefer Clock
  • \r\n
  • Change Reefer Clock Sync Settings
  • \r\n
  • \r\n \r\n
      \r\n
    • Start Deforst
    • \r\n
    • Chg.Deforst Interval
    • \r\n
    \r\n
  • \r\n
  • Assign PAN Id
  • \r\n
  • Guest Reefer configuration
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.modelTitle}
\r\n \r\n \r\n
\r\n
\r\n {this.state.popUpHtml}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n
  • \r\n
\r\n
\r\n {this.state.tabContentHtml}\r\n
\r\n
\r\n
\r\n }\r\n\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ ...state.userDetails, ...state.reeferStatus }), // Selects which state properties are merged into the component's props\r\n ReeferStatusState.actionCreators,\r\n)(ReeferDetails as any);\r\n\r\n\r\nclass ReeferDetailsFilter {\r\n ReeferId: string;\r\n RcdId: string;\r\n}\r\nclass UnitDetailsUI {\r\n ICCID: string;\r\n Geofence: string;\r\n GeofenceName: string;\r\n RevisionNum?: number;\r\n RSSI?: number;\r\n MNC?: number;\r\n TowerLocalizationAreaCode?: number;\r\n TowerBaseStationID?: number;\r\n GPSLockState: string;\r\n GPSLastLock?: number;\r\n GPSLongitude?: number;\r\n GPSLatitude?: number;\r\n ReeferSwitchOn?: boolean;\r\n IsReeferPhysicallyConnected?: boolean;\r\n BatteryVoltage?: number;\r\n DeviceTemp?: number;\r\n ReeferACPowerLevel?: number;\r\n DisplaySerNum: string;\r\n AtmContSerNum: string;\r\n PwrMeasureSerNum: string;\r\n HumSensorSerNum: string;\r\n BookedTemperature?: number;\r\n TripName: string;\r\n TripRouteWaypointId?: number;\r\n TripNameAndStatus: string;\r\n TripDefStatusDsc: string;\r\n TripStatusCd: string;\r\n TripId?: number;\r\n ModifiedDTTM?: Date;\r\n RCDRfrComErr?: boolean;\r\n ReeferClockInSync?: boolean;\r\n OemModelID?: number;\r\n ControllerTypeCd?: number;\r\n ReeferConfigTypeCd: string;\r\n ModelNumber: string;\r\n FreqConverterSerNum: string;\r\n CO2SensorSerNum: string;\r\n O2SensorSerNum: string;\r\n ReeferOEMTypeCd: string;\r\n RCDPowerSourceCd: string;\r\n TemperatureUnit: string;\r\n SIM_IMSI: string;\r\n UnitTypeCd: string;\r\n CondenserPressure?: number;\r\n DischargePressure?: number;\r\n CompositeSuctionPressure?: number;\r\n VentPositionSensorCMH?: number;\r\n CO2Setpoint?: number;\r\n O2Setpoint?: number;\r\n AlarmsList: string;\r\n HumiditySetpoint?: number;\r\n SoftwareRevision: string;\r\n PretripTestStateID?: any;\r\n EventMasterID?: number;\r\n EventDTTM?: Date;\r\n ParentEventID: number;\r\n ReeferID: string;\r\n UnitMasterID?: number;\r\n SetPoint?: number;\r\n ReturnTemp1?: number;\r\n SupplyTemp1?: number;\r\n AmbientTemp?: number;\r\n MSISDN: string;\r\n RCDReportingInterval?: number;\r\n RCDMeshFirmwareVersion: string;\r\n RCDBootloaderVersion: string;\r\n RCDFirmwareVersion: string;\r\n RCDID: string;\r\n RCDMasterID?: number;\r\n Cargo4Temp?: number;\r\n USDA3Temp?: number;\r\n USDA2Temp?: number;\r\n USDA1Temp?: number;\r\n ControlModeID?: any;\r\n LineFrequency?: number;\r\n CompressorSuctionTemp?: number;\r\n ThreePhaseCurrent: string;\r\n SupplyTemp2?: number;\r\n ReturnTemp2?: number;\r\n BookingNumber: string;\r\n DeviceConfig?: boolean;\r\n DevicePowerSourceCd: string;\r\n RunState: string;\r\n OEMModel: string;\r\n ControllerDesc: string;\r\n OEMModelDesc: string;\r\n IsValid3P: boolean;\r\n AssetMasterID?: number;\r\n CustCd3P: string;\r\n CustName3P: string;\r\n ControllerTypeSetting: string;\r\n OEParams: string;\r\n OverallResult: string;\r\n TripWiseResultDescription: string;\r\n TWDateTime?: Date;\r\n IsReeferCommunicationEstablished?: boolean;\r\n LineFrequencyQualifier?: any;\r\n}","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Dropzone from 'react-dropzone';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n\r\nimport Formatters from '../../actions/Formatters';\r\nvar Config: any = require('../../Config.json');\r\nvar baplieColumns;\r\n\r\ninterface fileState {\r\n files: any[];\r\n formValue: number;\r\n baplieData: server.BaplieFileData;\r\n okMethod: Function;\r\n cancelMethod: Function;\r\n confirmationMsg: string;\r\n VesselID: string;\r\n VoyageCode: string;\r\n PortOfDeparture: string;\r\n PortOfDestination: string; \r\n}\r\n\r\nconst emptyBaplieData = {\r\n VesselID: '',\r\n VoyageCode: '',\r\n PortOfDeparture: '',\r\n PortOfDestination: '',\r\n IsParsingSuccess: false,\r\n ReeferData: []\r\n}\r\nvar BaplieFileDataFilter: server.BaplieFileData;\r\nvar self;\r\nexport class BaplieFileUpload extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n files: [], formValue: 1, baplieData: emptyBaplieData, okMethod: Function, cancelMethod: Function, confirmationMsg: '',\r\n VoyageCode: '', VesselID: '', PortOfDestination: '', PortOfDeparture: ''\r\n\r\n };\r\n baplieColumns = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n onDrop(files) {\r\n if (files != null && files.length > 1) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select only one file to upload.\");\r\n }\r\n else {\r\n this.setState({\r\n files: files\r\n });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Bay CD\", field: \"BayCD\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Bay Row\", field: \"BayRow\", cellRenderer: Formatters.stringTypeFormatter, width: 140 },\r\n { headerName: \"Bay Tier\", field: \"BayTier\", cellRenderer: Formatters.stringTypeFormatter, width: 140 },\r\n ];\r\n }\r\n\r\n uploadBaplieFile() {\r\n if (this.state.files.length > 0) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/Vessel/UploadBaplieFile';\r\n var formData = new FormData();\r\n formData.append(\"UploadedFile\", this.state.files[0]);\r\n var request = RCUtils.FetchRequest(url, {\r\n method: 'POST',\r\n body: formData\r\n });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n this.setState({\r\n formValue: 2, baplieData: data, VoyageCode: data.VoyageCode, VesselID: data.VesselID, PortOfDestination: data.PortOfDestination, PortOfDeparture: data.PortOfDeparture\r\n\r\n });\r\n \r\n \r\n \r\n \r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"There is no data to export.\");\r\n }\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please select a file to upload.\");\r\n }\r\n }\r\n\r\n finishUpload() {\r\n if (this.state.VesselID == '' || this.state.VesselID == null) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter the VesselID.\");\r\n } else if (this.state.VoyageCode == '' || this.state.VoyageCode == null) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter the VoyageCode.\");\r\n } else if (this.state.PortOfDeparture == '' || this.state.PortOfDeparture == null) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter Departure.\");\r\n } else if (this.state.PortOfDestination == '' || this.state.PortOfDestination == null) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter Destination.\");\r\n } else {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/Vessel/SubmitBaplieFile';\r\n BaplieFileDataFilter = {\r\n VesselID: this.state.VesselID, VoyageCode: this.state.VoyageCode, PortOfDeparture: this.state.PortOfDeparture, PortOfDestination: this.state.PortOfDestination,\r\n ReeferData: this.state.baplieData.ReeferData, IsParsingSuccess: true\r\n }\r\n var request = RCUtils.FetchRequest(url, {\r\n method: 'POST',\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n //body: JSON.stringify(this.state.baplieData)\r\n body: JSON.stringify(BaplieFileDataFilter)\r\n });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data == 'Vessel information already exists. Do you want to overwrite?') {\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"Vessel information already exists. Do you want to overwrite?\", this.finalSubmit.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n this.props.refreshVesselData();\r\n // this.props.loadDataOfBaplie(this.state.baplieData);\r\n PopupWindow.showErrorMessage(\"File Status\", data);\r\n this.closeBapliestate();\r\n }\r\n });\r\n }\r\n }\r\n\r\n finalSubmit() {\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n\r\n\r\n var url = Config.ApiBaseUrl + '/api/Vessel/UpdateBaplieData';\r\n var request = RCUtils.FetchRequest(url, {\r\n method: 'POST',\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n //WI-23110\r\n //body: JSON.stringify(this.state.baplieData)\r\n body: JSON.stringify(BaplieFileDataFilter)\r\n });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n //this.props.loadDataOfBaplie(this.state.baplieData); \r\n this.closeBapliestate();\r\n PopupWindow.showErrorMessage(\"File Status\", data);\r\n });\r\n }\r\n\r\n static ClearBapieStateData() {\r\n self.closeBapliestate();\r\n }\r\n\r\n clearBaplieState() {\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"You are going to exit.Are you sure you want to continue?\", this.closeBapliestate.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n\r\n closeBapliestate() {\r\n this.setState({ files: [], formValue: 1, baplieData: emptyBaplieData });\r\n RCNGWindow.ConfirmWindow.close();\r\n $(\"#confirmPopUpModel\").css(\"display\", \"none\");\r\n $('#btnCloseBaplie').click();\r\n }\r\n\r\n closeConfirmation() {\r\n $(\"#confirmPopUpModel\").css(\"display\", \"none\");\r\n }\r\n\r\n VesselIDChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({ VesselID: Value });\r\n }\r\n\r\n VoyageIDChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({ VoyageCode: Value });\r\n }\r\n\r\n PortOfDepartureChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({ PortOfDeparture: Value });\r\n }\r\n\r\n PortOfDestinationChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({ PortOfDestination: Value });\r\n }\r\n\r\n onClickBackHandler() {\r\n this.setState({\r\n formValue: 1\r\n });\r\n }\r\n\r\n public render() {\r\n return
\r\n
\r\n
\r\n {\r\n this.state.formValue == 1 ?
\r\n
\r\n
\r\n
\r\n \r\n
Please click here or drag files to upload
\r\n
\r\n
\r\n
\r\n
\r\n Dropped files\r\n
    \r\n {\r\n this.state.files.map(f =>
  • {f.name} - {f.size} bytes
  • )\r\n }\r\n
\r\n
\r\n
\r\n
\r\n :\r\n
\r\n
\r\n
\r\n
\r\n Vessel ID:\r\n
\r\n
\r\n this.VesselIDChange(e)} className='form-control' />\r\n
\r\n
\r\n Voyage ID:\r\n
\r\n
\r\n this.VoyageIDChange(e)} />\r\n
\r\n
\r\n
\r\n
\r\n Port of Departure:\r\n
\r\n
\r\n this.PortOfDepartureChange(e)} />\r\n
\r\n
\r\n Port of Destination:\r\n
\r\n
\r\n this.PortOfDestinationChange(e)} />\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n {\r\n this.state.formValue == 1 ?\r\n \r\n : ''}\r\n {this.state.formValue == 2 ? : ''}\r\n {this.state.formValue == 2 ? : ''}\r\n \r\n
\r\n
\r\n }\r\n}","/// \r\n/// \r\nimport * as React from 'react';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport { BaplieFileUpload } from './BaplieFileUpload';\r\nimport UserRights from '../../actions/UserRights';\r\nimport $ from 'jquery';\r\n\r\nvar self;\r\ninterface VesselFilters {\r\n Filters: server.VesselSearchFilters,\r\n TargetId: string, \r\n VesselValue: string,\r\n VoyageValue: string,\r\n DeparturePortValue: string,\r\n DestinationPortValue: string,\r\n SuggestionsVessel: any[],\r\n SuggestionsVoyage: any[],\r\n SuggestionsDeparturePorts: any[],\r\n SuggestionsDestinationPorts: any[],\r\n popUpHtml: any;\r\n vesselData: server.VesselEntityCollection;\r\n}\r\n\r\nconst initialVesselState: server.VesselSearchFilters = {\r\n VesselId: '',\r\n VoyageId: '',\r\n PortOfDeparture: '',\r\n PortOfDestination: '',\r\n AllReefers: '' \r\n};\r\n\r\nexport class VesselSearch extends React.Component {\r\n constructor(props: any) {\r\n super(props); \r\n this.state = {\r\n Filters: initialVesselState,\r\n TargetId: '', \r\n VesselValue: this.props.vesselFilters.VesselId,\r\n VoyageValue: this.props.vesselFilters.VoyageId,\r\n DeparturePortValue: this.props.vesselFilters.PortOfDeparture,\r\n DestinationPortValue: this.props.vesselFilters.PortOfDestination,\r\n SuggestionsVessel: [],\r\n SuggestionsVoyage: [],\r\n SuggestionsDeparturePorts: [],\r\n SuggestionsDestinationPorts: [],\r\n popUpHtml: '',\r\n vesselData: this.props.vesselData\r\n }; \r\n self = this;\r\n } \r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n this.setState({ vesselData: nextProps.vesselData });\r\n }\r\n\r\n getObjectArray(inputType: string) {\r\n var finalArray = [];\r\n\r\n switch (inputType) {\r\n case 'VesselID':\r\n finalArray = this.state.vesselData.VesselIDList;\r\n return;\r\n case 'VoyageID':\r\n finalArray = this.state.vesselData.VoyageIDList;\r\n return;\r\n case 'PortOfDeparture':\r\n finalArray = this.state.vesselData.PortOfDepartureList;\r\n return;\r\n case 'PortOfDestination':\r\n finalArray = this.state.vesselData.PortOfDestinationList;\r\n return;\r\n }\r\n\r\n return finalArray;\r\n }\r\n \r\n\r\n vesselChange(event: React.FormEvent) {\r\n var vesselfilters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n vesselfilters.VesselId = Value;\r\n this.setState({\r\n Filters: vesselfilters\r\n });\r\n }\r\n\r\n voyageChange(event: React.FormEvent) {\r\n var vesselfilters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n vesselfilters.VoyageId = Value;\r\n this.setState({\r\n Filters: vesselfilters\r\n });\r\n }\r\n\r\n clearFilter() { \r\n this.setState({\r\n Filters: initialVesselState,\r\n TargetId: '',\r\n DeparturePortValue: '',\r\n DestinationPortValue: '', \r\n SuggestionsDeparturePorts: [],\r\n SuggestionsDestinationPorts: [],\r\n VesselValue: '',\r\n VoyageValue: '',\r\n SuggestionsVessel: [],\r\n SuggestionsVoyage: []\r\n });\r\n } \r\n\r\n applyFilter() {\r\n $('#vesselId').blur();\r\n $('#voyageId').blur();\r\n $('#portOfDeparture').blur();\r\n $('#portOfDestination').blur();\r\n\r\n var vesselfilters = this.state.Filters;\r\n vesselfilters.VesselId = this.state.VesselValue;\r\n vesselfilters.VoyageId = this.state.VoyageValue;\r\n vesselfilters.PortOfDeparture = this.state.DeparturePortValue;\r\n vesselfilters.PortOfDestination = this.state.DestinationPortValue;\r\n vesselfilters.AllReefers = \"\";\r\n\r\n if (this.state.VesselValue != '' || this.state.VoyageValue != '' || this.state.DeparturePortValue != '' || this.state.DestinationPortValue != '') {\r\n this.setState({\r\n Filters: vesselfilters\r\n });\r\n\r\n this.props.bindingVesselStatusGrid(this.state.Filters);\r\n }\r\n else {\r\n vesselfilters.AllReefers = \"All Assets\"; \r\n this.setState({\r\n Filters: vesselfilters\r\n });\r\n\r\n this.props.bindingVesselStatusGrid(this.state.Filters);\r\n }\r\n }\r\n\r\n getVesselSuggestions(value) {\r\n var targetValue = this.state.TargetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return (inputLength === 0 || this.state.vesselData.VesselIDList == null) ? [] : this.state.vesselData.VesselIDList.filter(VesselID =>\r\n VesselID.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n }\r\n\r\n getVoyageSuggestions(value) {\r\n var targetValue = this.state.TargetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return (inputLength === 0 || this.state.vesselData.VoyageIDList == null) ? [] : this.state.vesselData.VoyageIDList.filter(VoyageID =>\r\n VoyageID.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n }\r\n\r\n getDeparturePortSuggestions(value) {\r\n var targetValue = this.state.TargetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return (inputLength === 0 || this.state.vesselData.PortOfDepartureList == null) ? [] : this.state.vesselData.PortOfDepartureList.filter(PortOfDeparture =>\r\n PortOfDeparture.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n }\r\n\r\n getDestinationPortSuggestions(value) {\r\n var targetValue = this.state.TargetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return (inputLength === 0 || this.state.vesselData.PortOfDestinationList == null) ? [] : this.state.vesselData.PortOfDestinationList.filter(PortOfDestination =>\r\n PortOfDestination.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n onVesselSuggestionsClearRequested = () => {\r\n this.setState({\r\n SuggestionsVessel: []\r\n });\r\n };\r\n\r\n onVoyageSuggestionsClearRequested = () => {\r\n this.setState({\r\n SuggestionsVoyage: []\r\n });\r\n };\r\n\r\n onDepartureSuggestionsClearRequested = () => {\r\n this.setState({\r\n SuggestionsDeparturePorts: []\r\n });\r\n };\r\n\r\n onDestinationSuggestionsClearRequested = () => {\r\n this.setState({\r\n SuggestionsDestinationPorts: []\r\n });\r\n };\r\n\r\n onVesselSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n SuggestionsVessel: this.getVesselSuggestions(value)\r\n });\r\n };\r\n\r\n onVoyageSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n SuggestionsVoyage: this.getVoyageSuggestions(value)\r\n });\r\n };\r\n\r\n onDepartureSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n SuggestionsDeparturePorts: this.getDeparturePortSuggestions(value)\r\n });\r\n };\r\n\r\n onDestinationSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n SuggestionsDestinationPorts: this.getDestinationPortSuggestions(value)\r\n });\r\n };\r\n\r\n onChangeVessel = (event, { newValue }) => {\r\n this.setState({\r\n VesselValue: newValue,\r\n TargetId: event.target.id\r\n }); \r\n };\r\n\r\n onChangeVoyage = (event, { newValue }) => {\r\n this.setState({\r\n VoyageValue: newValue,\r\n TargetId: event.target.id\r\n });\r\n }; \r\n\r\n onChangeDeparturePorts = (event, { newValue }) => {\r\n this.setState({\r\n DeparturePortValue: newValue,\r\n TargetId: event.target.id\r\n });\r\n };\r\n\r\n onChangeDestinationPorts = (event, { newValue }) => {\r\n this.setState({\r\n DestinationPortValue: newValue,\r\n TargetId: event.target.id\r\n });\r\n };\r\n\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n loadDataOfBaplie(baplieData: server.BaplieFileData) {\r\n this.setState({\r\n VesselValue: baplieData.VesselID,\r\n VoyageValue: baplieData.VoyageCode,\r\n DeparturePortValue: baplieData.PortOfDeparture,\r\n DestinationPortValue: baplieData.PortOfDestination\r\n });\r\n\r\n this.applyFilter();\r\n }\r\n\r\n BaplieFileUpload() {\r\n setTimeout(function () {\r\n self.setState({ popUpHtml: self.RenderContextMenuPopUp('BaplieFileUpload') });\r\n }, 10);\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string) {\r\n switch (popUpName) {\r\n case 'BaplieFileUpload':\r\n return ;\r\n }\r\n }\r\n\r\n clearBaplieFileData() {\r\n BaplieFileUpload.ClearBapieStateData();\r\n }\r\n\r\n refreshVesselData() {\r\n this.props.refreshVesselData();\r\n }\r\n\r\n public render() {\r\n const { SuggestionsVessel, SuggestionsVoyage, SuggestionsDeparturePorts, SuggestionsDestinationPorts } = this.state;//, suggestionsFullName } \r\n\r\n const VesselInputProps = {\r\n id: 'vesselId',\r\n placeholder: 'Enter Vessel ID',\r\n value: this.state.VesselValue,// userIdvalue,\r\n onChange: this.onChangeVessel.bind(this)\r\n };\r\n\r\n const VoyageInputProps = {\r\n id: 'voyageId',\r\n placeholder: 'Enter Voyage ID',\r\n value: this.state.VoyageValue,// userIdvalue,\r\n onChange: this.onChangeVoyage.bind(this)\r\n };\r\n\r\n const DepartureInputProps = {\r\n id: 'portOfDeparture',\r\n placeholder: 'Enter Port Of Departure',\r\n value: this.state.DeparturePortValue,// userIdvalue,\r\n onChange: this.onChangeDeparturePorts.bind(this)\r\n };\r\n\r\n const DestinationInputProps = {\r\n id: 'portOfDestination',\r\n placeholder: 'Enter Port Of Destination',\r\n value: this.state.DestinationPortValue,\r\n onChange: this.onChangeDestinationPorts.bind(this)\r\n };\r\n\r\n return
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Upload Baplie
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as VesselStatusState from '../../store/VesselStatus';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer'; //RCNG 146\r\nimport $ from 'jquery';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport './../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { VesselSearch } from '../childcomponents/VesselSearch';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { SendEmailControl } from './../sharedcomponents/SendEmailControl';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PingControl } from './../sharedcomponents/ForwardCommands/PingControl';\r\nimport { TempSetPoint } from './../sharedcomponents/ForwardCommands/TempSetPoint';\r\nimport { HumiditySetPoint } from './../sharedcomponents/ForwardCommands/HumiditySetPoint';\r\nimport { O2SetPoint } from './../sharedcomponents/ForwardCommands/O2SetPoint';\r\nimport { CO2SetPoint } from './../sharedcomponents/ForwardCommands/CO2SetPoint';\r\nimport { ChangeReeferId } from './../sharedcomponents/ForwardCommands/ChangeReeferId';\r\nimport { ChangeReportingInterval } from './../sharedcomponents/ForwardCommands/ChangeReportingInterval';\r\nimport { ChangeDataLogInterval } from './../sharedcomponents/ForwardCommands/ChangeDataLogInterval';\r\nimport { TraditionalDataDownload } from './../sharedcomponents/ForwardCommands/TraditionalDataDownload';\r\nimport { PreTrip } from './../sharedcomponents/ForwardCommands/PreTrip';\r\nimport { StopPTI } from './../sharedcomponents/ForwardCommands/StopPTI';\r\nimport { ScheduledPreTrip } from './../sharedcomponents/ForwardCommands/ScheduledPreTrip';\r\nimport { LastPretripResult } from './../sharedcomponents/ForwardCommands/LastPretripResult';\r\nimport { RebootReeferController } from './../sharedcomponents/ForwardCommands/RebootReeferController';\r\nimport { QueryReeferInventory } from './../sharedcomponents/ForwardCommands/QueryReeferInventory';\r\nimport { UpdateModelConfiguration } from './../sharedcomponents/ForwardCommands/UpdateModelConfiguration';\r\nimport { VerifyModelValidity } from './../sharedcomponents/ForwardCommands/VerifyModelValidity';\r\nimport { SyncReeferClock } from './../sharedcomponents/ForwardCommands/SyncReeferClock';\r\nimport { StartDeforst } from './../sharedcomponents/ForwardCommands/StartDeforst';\r\nimport { ChangeDeforstInterval } from './../sharedcomponents/ForwardCommands/ChangeDeforstInterval';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { AssignPANID } from './../sharedcomponents/ForwardCommands/AssignPANID';\r\nimport { ChangeReeferClockSyncSetting } from './../sharedcomponents/ForwardCommands/ChangeReeferClockSyncSettings';\r\nimport { GuestReeferConfiguration } from './../sharedcomponents/ForwardCommands/GuestReeferConfiguration';\r\nimport { AutoConfiguration } from './../sharedcomponents/ForwardCommands/AutoConfiguration';\r\nimport { AssetConfiguration } from './../sharedcomponents/ForwardCommands/AssetConfiguration';\r\nimport { MultipleSetpoints } from './../sharedcomponents/ForwardCommands/MultipleSetpoints';\r\nimport { AutomaticColdTreatment } from './../sharedcomponents/ForwardCommands/AutomaticColdTreatment';\r\nimport { GetFreshAirType } from './../sharedcomponents/ForwardCommands/GetFreshAirType';\r\nimport { SetFreshAirType } from './../sharedcomponents/ForwardCommands/SetFreshAirType';\r\nimport { GridToolBarControl } from './../sharedcomponents/GridToolBarControl';\r\nimport { ChangeZigbeeSettings } from './../sharedcomponents/ForwardCommands/ChangeZigbeeSettings';\r\nimport { ControlledAtmosphere } from './../sharedcomponents/ForwardCommands/ControlledAtmosphere';\r\nimport { DeviceReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { DeviceHardReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { TripWiseReport } from './../sharedcomponents/ForwardCommands/TripWiseReport';\r\nimport forEach from 'lodash/forEach';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport UserRights from '../../actions/UserRights';\r\nimport CommonActions from '../../actions/CommonActions';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport ExportAction from '../../actions/ExportAction'\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar vesselColumns;\r\nvar vesselStatus;\r\nvar self;\r\nvar customerTypeCd;\r\nvar custId;\r\nvar userEmail;\r\n\r\nvar voyageList: any[];\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\n// At runtime, Redux will merge together...\r\ntype VesselStatusProps =\r\n UserDetailState.UserState\r\n & VesselStatusState.VesselSearchState // ... state we've requested from the Redux store \r\n & typeof VesselStatusState.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface VesselSearchState {\r\n selectedItems: any[];\r\n isChangeDeforstInterval: boolean;\r\n preTripCmd: string;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n exportFields: ExportFields;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n PTReport: string;\r\n ReportReeferId: string;\r\n isStarCoolOem: boolean;\r\n gridData: server.USP_UnitCurrentConditionUI_Model[];\r\n vesselData: server.VesselEntityCollection;\r\n CustomerSpecificCommandData: any;\r\n fullPreTripCommandText: string;\r\n shortPreTripCommandText: string;\r\n funcPreTripCommandText: string;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n\r\n voyageList: any[];\r\n\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\n\r\nclass VesselStatus extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;//this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;//this.props.loggedInUserData.User.Customer.CustomerId;\r\n userEmail = JSON.parse(sessionStorage.getItem('UserInfo')).UserEmail;\r\n var exportData = new ExportFields();\r\n var emptyVesselData = { VesselIDList: [], VoyageIDList: [], PortOfDepartureList: [], PortOfDestinationList: [] };\r\n var commandSpecificData: server.CommandSpecificData = { commandId: '', Oem: [] };\r\n this.state = {\r\n selectedItems: [], isChangeDeforstInterval: false, preTripCmd: '', modelTitle: '', popUpHtml: '',\r\n pageSize: 25,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n PTReport: '',\r\n ReportReeferId: '',\r\n isStarCoolOem: false,\r\n gridData: [],\r\n vesselData: emptyVesselData,\r\n CustomerSpecificCommandData: commandSpecificData,\r\n fullPreTripCommandText: 'Full', shortPreTripCommandText: 'Short', funcPreTripCommandText: 'Function Test',\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n voyageList: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n };\r\n\r\n this.props.requestEventMaster();\r\n vesselColumns = this.createColumnDefs();\r\n this.props.requestVesselData(vesselColumns);\r\n self = this;\r\n }\r\n\r\n onGridReady(params: any) {\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n\r\n if (event.data != null && event.data != undefined) {\r\n //self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === 0)\r\n this.reeferdetailsAction(this.state.selectedItems, 'Reefer', 'Comments');\r\n }\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.UnitEventDTTM)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n /*\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: '',\r\n children: [\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellClass: 'bigInt', cellRenderer: ReeferFormatters.CargoCareFormatter, pinned: true, width: 65 },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", cellClass: 'bigInt', cellRenderer: (params) => { return ReeferFormatters.statusIndicatorWithDescriptionForALM(params, self.props.reeferFormatter.AlarmMasterList); }, pinned: true, width: 65 },\r\n { headerName: \"RUN\", field: \"RunState\", valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellClass: 'bigInt', cellRenderer: Formatters.runStateFormatter, pinned: true, width: 65 },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellClass: 'bigInt', cellRenderer: Formatters.pwrStateFormatter, pinned: true, width: 65 },\r\n { headerName: \"VSL\", field: \"VesselCd\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, pinned: true, width: 80 },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellClass: 'bigInt', cellRenderer: Formatters.oemTypeFormatter, pinned: true, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", pinned: true, cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Vessel ID\", field: \"VesselID\", pinned: true, cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Voyage ID\", field: \"VoyageID\", pinned: true, cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Departure port\", field: \"PortOfDeparture\", pinned: true, cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 120 },\r\n { headerName: \"Destination port\", field: \"PortOfDestination\", pinned: true, cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 }\r\n ],\r\n pinned: true\r\n },\r\n {\r\n headerName: 'Latest Event, Last Reported Reefer and Device data',\r\n children: [\r\n { headerName: \"Event\", field: \"EventDescription\", cellClass: 'bigInt', valueGetter: (params) => { return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList, self.props.reeferFormatter.EventMasterList); }, cellRenderer: (params) => { return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList, self.props.reeferFormatter.EventMasterList); }, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, width: 150 }, \r\n -{ headerName: \"Reefer data\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellClass: 'bigInt', cellRenderer: (params) => { return ReeferFormatters.AlarmDescriptionFormatter(params, self.props.reeferFormatter.AlarmMasterList); }, width: 150 },\r\n { headerName: \"Opr.Mode\", field: \"RunningMode\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Cmd P\", field: \"PendingCommands\", cellClass: 'bigInt', cellRenderer: Formatters.commandTypeFormatter, width: 60 },\r\n { headerName: \"Cmd A\", field: \"ActiveCommands\", cellClass: 'bigInt', cellRenderer: Formatters.commandTypeFormatter, width: 60 },\r\n { headerName: \"Cmd E\", field: \"ErrorCommands\", cellClass: 'bigInt', cellRenderer: Formatters.commandTypeFormatter, width: 60 },\r\n { headerName: \"T set \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"SetPoint\", width: 90 },\r\n { headerName: \"T sup 1 \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"SupplyTemp1\", width: 90 },\r\n { headerName: \"T sup 2 \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"SupplyTemp2\", width: 90 },\r\n { headerName: \"T rtn 1 \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"ReturnTemp1\", width: 90 },\r\n { headerName: \"T rtn 2 \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"ReturnTemp2\", width: 90 },\r\n { headerName: \"T amb \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"AmbientTemp\", width: 90 }, \r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", cellClass: 'bigInt', cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n { headerName: \"RH read\", field: \"Humidity\", cellClass: 'bigInt', cellRenderer: ReeferFormatters.HumiditySettingFormatter, width: 90 },\r\n { headerName: \"CO2 set\", field: \"CO2Setpoint\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"CO2 read\", field: \"CO2Reading\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"O2 set\", field: \"O2Setpoint\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"O2 read\", field: \"O2Reading\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"T evap wall \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"EvaporatorTemp\", width: 110 },\r\n { headerName: \"P suc\", field: \"CompositeSuctionPressure\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"T Suc \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"CompressorSuctionTemp\", width: 90 },\r\n { headerName: \"P dis\", field: \"DischargePressure\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"T dis \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"CompressorDischargeTemp\", width: 90 },\r\n { headerName: \"P cond\", field: \"CondenserPressure\", cellClass: 'bigInt', cellRenderer: ReeferFormatters.sensorDataPCondFormatter, width: 90 },\r\n { headerName: \"T cond wall \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"CondenserTemperature\", width: 110 },\r\n { headerName: \"M cond\", field: \"CondenserFanOutPut\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"LS evap\", field: \"LowSpeedEvaporatorFanOutPut\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"HS evap\", field: \"HighSpeedEvaporatorFanOutPut\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Heat on\", field: \"HeaterOnTime\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Open exp\", field: \"EvaporatorExpansionValveOpening\", cellClass: 'bigInt', cellRenderer: ReeferFormatters.sensorDataOpenExpFormatter, width: 90 },\r\n { headerName: \"Open suc\", field: \"SuctionModulationValveOpening\", cellClass: 'bigInt', cellRenderer: ReeferFormatters.sensorDataOpenSucFormatter, width: 90 },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Open econ\", field: \"EconomizerValveOpening\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Comp freq\", field: \"CompressorFrequency\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"USDA 1 \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"USDA1Temp\", width: 90 },\r\n { headerName: \"USDA 2 \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"USDA2Temp\", width: 90 },\r\n { headerName: \"USDA 3 \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"USDA3Temp\", width: 90 },\r\n { headerName: \"USDA 4 cargo \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"Cargo4Temp\", width: 130 },\r\n { headerName: \"Vent pos\", field: \"VentPositionSensorCMH\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Atm. mode\", field: \"ControlledAtmosphereMode\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"PTI state\", field: \"PTIState\", cellClass: 'bigInt', valueGetter: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.props.reeferFormatter.PreTripList); }, cellRenderer: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.props.reeferFormatter.PreTripList); }, width: 100 },\r\n { headerName: \"PTI result\", field: \"PTResult\", tooltip: Formatters.toolTipFormatter, cellClass: 'bigInt', cellRenderer: ReeferFormatters.preTripFormatter, width: 100 },\r\n { headerName: \"PTI time\", field: \"PTRDateTime\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Freq\", field: \"LineFrequency\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 100 },\r\n { headerName: \"3 Ph. curr.\", field: \"ThreePhaseCurrent\", cellClass: 'bigInt', cellRenderer: ReeferFormatters.Current3PhaseFormatter, width: 135 },\r\n { headerName: \"Tot curr.\", field: \"TotalCurrentDraw\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 100 },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 150 },\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceFormatter, width: 150 },\r\n { headerName: \"GPS coords\", field: \"GPSCoords\", cellClass: 'bigInt', valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, cellRenderer: Formatters.GPSCoordsFormatter, width: 150 },\r\n { headerName: \"Last GPS (h:m:s)\", field: \"GPSLastLock\", cellClass: 'bigInt', cellRenderer: Formatters.secondsToTimeConverter, width: 150 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"MNC\", field: \"MNC\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 70 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 70 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Const s/n\", field: \"ControllerSerialNumber\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Cont SW version\", field: \"SoftwareRevision\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 120 },\r\n { headerName: \"Cont time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, width: 120 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", cellClass: 'bigInt', valueGetter: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, cellRenderer: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, width: 130 },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", cellClass: 'bigInt', valueGetter: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, cellRenderer: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, width: 130 },\r\n { headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", cellClass: 'bigInt', valueGetter: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, cellRenderer: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, width: 150 },\r\n { headerName: \"Geofence revision\", field: \"RevisionNum\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device temp \", headerValueGetter: Formatters.TempHeaderFormatter, cellClass: 'bigInt', cellRenderer: Formatters.TemperatureFormatter, field: \"DeviceTemp\", width: 130 },\r\n { headerName: \"Device bat (V)\", field: \"BatteryVoltage\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 80 },\r\n { headerName: \"Cell signal\", field: \"RSSI\", cellClass: 'bigInt', cellRenderer: Formatters.RSSITypeFormatter, width: 70 },\r\n { headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"ModifiedDTTM\", cellClass: 'bigInt', cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"VFD\", field: \"VFD\", cellClass: 'bigInt', cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Assigned to\", field: \"CustomerName\", cellClass: 'bigInt', valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); },cellRenderer: Formatters.stringTypeFormatterFor3P, width: 150 },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 120 }\r\n ]\r\n }\r\n ];\r\n }\r\n */\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: '',\r\n children: [\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.CargoCareFormatterForFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.statusIndicatorWithDescriptionForALMForFilter(params) } }, valueGetter: (params) => { return ReeferFormatters.statusALMSorting(params); }, resizable: true, width: 65, cellRenderer: (params) => { return ReeferCellRenderer.StatusIndicatorWithDescriptionForAlarms(params, self.props.reeferFormatter.AlarmMasterList); }, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"RUN\", field: \"RunState\", pinned: true, width: 65, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.runStateFormatterForFilter(params); } }, resizable: true, valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferCellRenderer.RunStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.pwrStateFormatterForFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: ReeferCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"VSL\", field: \"VesselCd\", cellClass: 'bigInt', sortable: true, filter: true, resizable: true, cellRenderer: Formatters.stringTypeFormatter, pinned: true, width: 80 },\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"OEM\", field: \"ReeferOEMTypeCd\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.oemTypeFormatterForFilter(params); } }, resizable: true,\r\n valueGetter: params => { return ReeferFormatters.OEMTypeValueFormatterFieldName(params); },\r\n width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ReeferID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Vessel ID\", field: \"VesselID\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Voyage ID\", field: \"VoyageID\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VoyageID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Departure port\", field: \"PortOfDeparture\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PortOfDeparture\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Destination port\", field: \"PortOfDestination\", pinned: true, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PortOfDestination\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Booking\",\r\n children: [\r\n { headerName: \"Booking #\", field: \"BookingNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BookingNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK temp \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"TemperatureUnit\"); }, cellRenderer: ReeferFormatters.TemperatureFormatterForBooking, field: \"TemperatureUnit\", columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Assigned to\", field: \"CustomerName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); }, filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } }, cellRenderer: ReeferCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open' }\r\n ]\r\n },\r\n {\r\n headerName: 'Latest Event, Last Reported Reefer and Device data',\r\n children: [\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => { return ReeferFormatters.EventDescriptionFormattersOld(params, self.props.reeferFormatter.CustomerSpecificEventList, self.props.reeferFormatter.EventMasterList); },\r\n cellRenderer: (params) => { return ReeferFormatters.EventDescriptionFormattersOld(params, self.props.reeferFormatter.CustomerSpecificEventList, self.props.reeferFormatter.EventMasterList); }, width: 150,\r\n enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Event time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Device fence\", field: \"GeofenceName\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device fence\", field: \"GeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"GeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence\", field: \"ServerGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Device fence ID\", field: \"Geofence\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device fence ID\", field: \"Geofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Geofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence ID\", field: \"ServerGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n /*{ headerName: \"City\", field: \"City\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 140 },\r\n { headerName: \"State\", field: \"State\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 140 },\r\n { headerName: \"Country\", field: \"Country\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Zip\", field: \"Zip\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 100 },*/\r\n { headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Zip\", field: \"Zip\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Zip\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n\r\n { headerName: \"Reefer data\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"UnitEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.AlarmDescriptionSorting(params, self.props.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.AlarmsDescriptionFormatter(params, self.props.reeferFormatter.AlarmMasterList); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Opr .Mode\", field: \"RunningMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.OperatingModeFormatter(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cmd P\", field: \"PendingCommands\", cellClass: 'myExcelStyle', resizable: true, cellRenderer: ReeferCellRenderer.CommandTypeFormatter, width: 60 },\r\n { headerName: \"Cmd A\", field: \"ActiveCommands\", cellClass: 'myExcelStyle', resizable: true, cellRenderer: ReeferCellRenderer.CommandTypeFormatter, width: 60 },\r\n { headerName: \"Cmd E\", field: \"ErrorCommands\", cellClass: 'myExcelStyle', resizable: true, cellRenderer: ReeferCellRenderer.CommandTypeFormatter, width: 60 },\r\n { headerName: \"T set \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SetPoint\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp2\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp2\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T amb. \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"AmbientTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"AmbientTemp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HumiditySetpoint\"); }, cellRenderer: ReeferFormatters.HumiditySetpointFormatter, getQuickFilterText: ReeferFormatters.HumiditySetpointFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH read\", field: \"Humidity\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.HumiditySettingFormatter(params); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 set\", field: \"CO2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 read\", field: \"CO2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 set\", field: \"O2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 read\", field: \"O2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T evap wall \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorTemp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P suc\", field: \"CompositeSuctionPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompositeSuctionPressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T suc\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorSuctionTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorSuctionTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P dis\", field: \"DischargePressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"DischargePressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T dis \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P cond\", field: \"CondenserPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataPCondFormatter(params); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T cond wall \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CondenserTemperature\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CondenserTemperature\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"M cond\", field: \"CondenserFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CondenserFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"LS evap\", field: \"LowSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LowSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"HS evap\", field: \"HighSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HighSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Heat on\", field: \"HeaterOnTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HeaterOnTime\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open exp\", field: \"EvaporatorExpansionValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenExpFormatter(params); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open suc\", field: \"SuctionModulationValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenSucFormatter(params); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HotGasValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open econ\", field: \"EconomizerValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"EconomizerValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp freq\", field: \"CompressorFrequency\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA1Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA1Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA2Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA2Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA3 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA3Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA3Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA4 cargo \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"Cargo4Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"Cargo4Temp\", width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Vent pos\", field: \"VentPositionSensorCMH\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VentPositionSensorCMH\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Atm. mode\", field: \"ControlledAtmosphereMode\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ControlledAtmosphereMode(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI state\", field: \"PTIState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.props.reeferFormatter.PreTripList); }, cellRenderer: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.props.reeferFormatter.PreTripList); }, getQuickFilterText: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.props.reeferFormatter.PreTripList); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI result\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltip: Formatters.toolTipFormatter, valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); }, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"PTRDateTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Freq\", field: \"LineFrequency\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"3 ph curr\", field: \"ThreePhaseCurrent\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ThreePhaseCurrentSortingFieldName(params, \"ThreePhaseCurrent\"); }, cellRenderer: ReeferFormatters.Current3PhaseFormatter, width: 135, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Tot curr\", field: \"TotalCurrentDraw\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"TotalCurrentDraw\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"ReeferACPowerLevel\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: ReeferCellRenderer.GPSCoordsFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.reeferSecondsToTimeConverterFilter(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"MCC (country)\", field: \"CountryName\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"MCC (country)\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, field: \"CountryName\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.MNCSorting(params); }, cellRenderer: ReeferCellRenderer.MNCTypeFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Cont s/n\", field: \"ControllerSerialNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerSerialNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont SW version\", field: \"SoftwareRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SoftwareRevision\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DataLoggerDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, cellRenderer: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, cellRenderer: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, cellRenderer: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"Geofence revision\", field: \"RevisionNum\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Geofence revision\", field: \"RevisionNum\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RevisionNum\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device temp \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"DeviceTemp\", width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BatteryVoltage\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.BattVoltageSortingFieldName(params, \"BatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.BatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: ReeferCellRenderer.RSSITypeFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Receipt time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterModifiedDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"ModifiedDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"ModifiedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage1\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage2\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage3\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"EverFRESH\", field: \"EverFRESH\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EverFRESH\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VFD\", field: \"VFD\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VFD\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"Assigned to\", field: \"CustomerName\", cellClass: 'bigInt', valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); }, cellRenderer: Formatters.stringTypeFormatterFor3P, width: 150 },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FreshAirType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }\r\n ]\r\n }\r\n ]\r\n }\r\n\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (!nextprops.isLoading) {\r\n $('#globalLoader').hide();\r\n if (nextprops.vesselStatus != null && nextprops.vesselStatus != undefined) {\r\n this.setState({ gridData: nextprops.vesselStatus });\r\n }\r\n\r\n if (nextprops.vesselData != null && nextprops.vesselData != undefined) {\r\n this.setState({ vesselData: nextprops.vesselData });\r\n }\r\n\r\n if (nextprops.performCargoAction) {\r\n $('#globalLoader').show();\r\n this.props.requestVesselSearch(this.props.searchFilters, vesselColumns);\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != []) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n } else {\r\n $('#globalLoader').show();\r\n }\r\n }\r\n\r\n bindingVesselStatusGrid(searchState: any) {\r\n $('#globalLoader').show();\r\n this.props.requestVesselSearch(searchState, vesselColumns);\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != []) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n exportToExcel() {\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.props.vesselStatus != 'object' ? JSON.parse(this.props.vesselStatus) : this.props.vesselStatus;\r\n }\r\n $(\"#globalLoader\").show();\r\n var r = this.props.columnDefs;\r\n try {\r\n //Excel.InitializeExcelExport(arrData, r, 'VesselStatusGrid');\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n var formName = 'VesselStatusGrid';\r\n ExportAction.ExportSelectedRows(this.state.gridApiParams, formName);\r\n //var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n //this.state.exportFields.ExportData = JSON.stringify(uri);\r\n //var sheetData = { HeaderData: [], ColumnData: [] };\r\n //sheetData = Excel.ConvertCSVToJSon(uri);\r\n //GridToolBarExcel.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n //26668 - start\r\n onRowDataChanged(params: any): void {\r\n var reeferIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n reeferIdSelected = self.state.PrevSelectedItems[0].ReeferID;\r\n }\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n var gridData = self.state.reeferStatusData;\r\n if (gridData != null && gridData != undefined && gridData.length > 0) {\r\n TotalCount = gridData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && reeferIdSelected !== \"\") {\r\n let count = 0;\r\n if (reeferIdSelected) {\r\n params.api.forEachLeafNode((node) => {\r\n count = count + 1;\r\n if (node.data.ReeferID === reeferIdSelected) {\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n //26668 - end\r\n onSelectionChanged(params: any) {\r\n if (self.props.loggedInUserData != null) {\r\n sessionStorage.setItem(\"userRights\", JSON.stringify(self.props.loggedInUserData.User.Customer.Rights));\r\n }\r\n\r\n //var rights = JSON.parse(sessionStorage.getItem('userRights'));\r\n //var rights = self.props.loggedInUserData.User.Customer.Rights;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n //var selectedItems = self.state.selectedItems;\r\n //26668 - commenting below and adding \r\n //self.setState({ selectedItems: selectedReeferData });\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isST9100Present = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'ST9100') {\r\n isST9100Present = isST9100Present + 1;\r\n }\r\n }\r\n });\r\n if (isST9100Present > 0) {\r\n $('#liCargoCareTasksRequiresRight').addClass('hidden');\r\n $('#liCommandsRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n $('#liCargoCareTasksRequiresRight').removeClass('hidden');\r\n $('#liCommandsRequiresRight').removeClass('hidden');\r\n }\r\n\r\n var tripWISEReport;\r\n tripWISEReport = JSON.parse(sessionStorage.getItem('customerDetails')).TripWISEreport;\r\n\r\n // showing Selected commands for device Type CT5000\r\n if (isDeviceTypeFound > 0) {\r\n if ($(\"#liPingRequiresRight\").hasClass(\"show\")) $('#liPingRequiresRight').removeClass('hidden');\r\n if ($(\"#liSetpointRequiresRight\").hasClass(\"show\")) $('#liSetpointRequiresRight').removeClass('hidden');\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').removeClass('hidden');\r\n if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('hidden');\r\n if ($(\"#liDefrostRequiresRight\").hasClass(\"show\")) $('#liDefrostRequiresRight').removeClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartDefrostRequiresRight\").hasClass(\"show\")) $('#liStartDefrostRequiresRight').removeClass('hidden');\r\n if ($(\"#liChangeDefrostIntervalRequiresRight\").hasClass(\"show\")) $('#liChangeDefrostIntervalRequiresRight').removeClass('hidden');\r\n if ($(\"#liRebootReeferController\").hasClass(\"show\")) $('#liRebootReeferController').removeClass('hidden');\r\n\r\n if ($(\"#liReportingIntervalRequiresRight\").hasClass(\"show\")) $('#liReportingIntervalRequiresRight').addClass('hidden');\r\n if ($(\"#liDeviceResetRequiresRight\").hasClass(\"show\")) $('#liDeviceResetRequiresRight').addClass('hidden');\r\n if ($(\"#liDeviceHardResetRequiresRight\").hasClass(\"show\")) $('#liDeviceHardResetRequiresRight').addClass('hidden');\r\n if ($(\"#liSyncReeferClockRequiresRight\").hasClass(\"show\")) $('#liSyncReeferClockRequiresRight').addClass('hidden');\r\n if ($(\"#lichangereeferclocksettingRequiresRight\").hasClass(\"show\")) $('#lichangereeferclocksettingRequiresRight').addClass('hidden');\r\n if ($(\"#liUpdateContainerIdRequiresRight\").hasClass(\"show\")) $('#liUpdateContainerIdRequiresRight').addClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').addClass('hidden');\r\n if ($(\"#liTraditionalDownloadRequiresRight\").hasClass(\"show\")) $('#liTraditionalDownloadRequiresRight').addClass('hidden');\r\n if ($(\"#liUpdateDatalogRequiresRight\").hasClass(\"show\")) $('#liUpdateDatalogRequiresRight').addClass('hidden');\r\n if ($(\"#liManagerealTimedSettingsRequiresRight\").hasClass(\"show\")) $('#liManagerealTimedSettingsRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripFrozenRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFrozenRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripCARequriesRight\").hasClass(\"show\")) $('#liStartPreTripCARequriesRight').addClass('hidden');\r\n if ($(\"#liStartCAFullPTIRequriesRight\").hasClass(\"show\")) $('#liStartCAFullPTIRequriesRight').addClass('hidden');\r\n if ($(\"#liStartCAFuntionTestRequriesRight\").hasClass(\"show\")) $('#liStartCAFuntionTestRequriesRight').addClass('hidden');\r\n if ($(\"#liStopPreTripRequiresRight\").hasClass(\"show\")) $('#liStopPreTripRequiresRight').addClass('hidden');\r\n if ($(\"#liScheduledPreTripRequiresRight\").hasClass(\"show\")) $('#liScheduledPreTripRequiresRight').addClass('hidden');\r\n if ($(\"#lilastpretripresultRequiresRight\").hasClass(\"show\")) $('#lilastpretripresultRequiresRight').addClass('hidden');\r\n if ($(\"#lilastpretripreportRequiresRight\").hasClass(\"show\")) $('#lilastpretripreportRequiresRight').addClass('hidden');\r\n if ($(\"#litripwiseReportRequiresRight\").hasClass(\"show\")) $('#litripwiseReportRequiresRight').addClass('hidden');\r\n if ($(\"#liUploadFirmwareRequiresRight\").hasClass(\"show\")) $('#liUploadFirmwareRequiresRight').addClass('hidden');\r\n if ($(\"#liQueryReeferInventoryRequiresRight\").hasClass(\"show\")) $('#liQueryReeferInventoryRequiresRight').addClass('hidden');\r\n if ($(\"#liUpdateModelConfigurationRequiresRight\").hasClass(\"show\")) $('#liUpdateModelConfigurationRequiresRight').addClass('hidden');\r\n if ($(\"#liVerifyModelValidityRequiresRight\").hasClass(\"show\")) $('#liVerifyModelValidityRequiresRight').addClass('hidden');\r\n if ($(\"#liMSCRequiresRight\").hasClass(\"show\")) $('#liMSCRequiresRight').addClass('hidden');\r\n if ($(\"#liACTRequiresRight\").hasClass(\"show\")) $('#liACTRequiresRight').addClass('hidden');\r\n if ($(\"#liassignGuestreeferRequiresRight\").hasClass(\"show\")) $('#liassignGuestreeferRequiresRight').addClass('hidden');\r\n if ($(\"#liZigbeesettingsRequiresRight\").hasClass(\"show\")) $('#liZigbeesettingsRequiresRight').addClass('hidden');\r\n if ($(\"#liassignpanidRequiresRight\").hasClass(\"show\")) $('#liassignpanidRequiresRight').addClass('hidden');\r\n if ($(\"#liAutoConfigurationRequiresRight\").hasClass(\"show\")) $('#liAutoConfigurationRequiresRight').addClass('hidden');\r\n if ($(\"#liAssetConfigurationRequiresRight\").hasClass(\"show\")) $('#liAssetConfigurationRequiresRight').addClass('hidden');\r\n if ($(\"#liFreshAirTypeRequiresRight\").hasClass(\"show\")) $('#liFreshAirTypeRequiresRight').addClass('hidden');\r\n if ($(\"#liGetFreshAirTypeRequiresRight\").hasClass(\"show\")) $('#liGetFreshAirTypeRequiresRight').addClass('hidden');\r\n if ($(\"#liSetFreshAirTypeRequiresRight\").hasClass(\"show\")) $('#liSetFreshAirTypeRequiresRight').addClass('hidden');\r\n if ($(\"#liClockRequiresRight\").hasClass(\"show\")) $('#liClockRequiresRight').addClass('hidden');\r\n if ($(\"#liReeferDataLogRequiresRight\").hasClass(\"show\")) $('#liReeferDataLogRequiresRight').addClass('hidden');\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liReeferModelConfiguration').addClass('hidden');\r\n if ($(\"#liStartPreTripChilledandCARequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledandCARequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liPingRequiresRight\").hasClass(\"show\")) $('#liPingRequiresRight').removeClass('hidden');\r\n if ($(\"#liSetpointRequiresRight\").hasClass(\"show\")) $('#liSetpointRequiresRight').removeClass('hidden');\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').removeClass('hidden');\r\n if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('hidden');\r\n if ($(\"#liDefrostRequiresRight\").hasClass(\"show\")) $('#liDefrostRequiresRight').removeClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartDefrostRequiresRight\").hasClass(\"show\")) $('#liStartDefrostRequiresRight').removeClass('hidden');\r\n if ($(\"#liChangeDefrostIntervalRequiresRight\").hasClass(\"show\")) $('#liChangeDefrostIntervalRequiresRight').removeClass('hidden');\r\n if ($(\"#liRebootReeferController\").hasClass(\"show\")) $('#liRebootReeferController').removeClass('hidden');\r\n if ($(\"#liReportingIntervalRequiresRight\").hasClass(\"show\")) $('#liReportingIntervalRequiresRight').removeClass('hidden');\r\n if ($(\"#liDeviceResetRequiresRight\").hasClass(\"show\")) $('#liDeviceResetRequiresRight').removeClass('hidden');\r\n if ($(\"#liDeviceHardResetRequiresRight\").hasClass(\"show\")) $('#liDeviceHardResetRequiresRight').removeClass('hidden');\r\n if ($(\"#liSyncReeferClockRequiresRight\").hasClass(\"show\")) $('#liSyncReeferClockRequiresRight').removeClass('hidden');\r\n if ($(\"#lichangereeferclocksettingRequiresRight\").hasClass(\"show\")) $('#lichangereeferclocksettingRequiresRight').removeClass('hidden');\r\n if ($(\"#liUpdateContainerIdRequiresRight\").hasClass(\"show\")) $('#liUpdateContainerIdRequiresRight').removeClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').removeClass('hidden');\r\n if ($(\"#liTraditionalDownloadRequiresRight\").hasClass(\"show\")) $('#liTraditionalDownloadRequiresRight').removeClass('hidden');\r\n if ($(\"#liUpdateDatalogRequiresRight\").hasClass(\"show\")) $('#liUpdateDatalogRequiresRight').removeClass('hidden');\r\n if ($(\"#liManagerealTimedSettingsRequiresRight\").hasClass(\"show\")) $('#liManagerealTimedSettingsRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFrozenRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFrozenRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripCARequriesRight\").hasClass(\"show\")) $('#liStartPreTripCARequriesRight').removeClass('hidden');\r\n if ($(\"#liStartCAFullPTIRequriesRight\").hasClass(\"show\")) $('#liStartCAFullPTIRequriesRight').removeClass('hidden');\r\n if ($(\"#liStartCAFuntionTestRequriesRight\").hasClass(\"show\")) $('#liStartCAFuntionTestRequriesRight').removeClass('hidden');\r\n if ($(\"#liStopPreTripRequiresRight\").hasClass(\"show\")) $('#liStopPreTripRequiresRight').removeClass('hidden');\r\n if ($(\"#liScheduledPreTripRequiresRight\").hasClass(\"show\")) $('#liScheduledPreTripRequiresRight').removeClass('hidden');\r\n if ($(\"#lilastpretripresultRequiresRight\").hasClass(\"show\")) $('#lilastpretripresultRequiresRight').removeClass('hidden');\r\n if ($(\"#lilastpretripreportRequiresRight\").hasClass(\"show\")) $('#lilastpretripreportRequiresRight').removeClass('hidden');\r\n if ($(\"#liUploadFirmwareRequiresRight\").hasClass(\"show\")) $('#liUploadFirmwareRequiresRight').removeClass('hidden');\r\n if ($(\"#liQueryReeferInventoryRequiresRight\").hasClass(\"show\")) $('#liQueryReeferInventoryRequiresRight').removeClass('hidden');\r\n if ($(\"#liUpdateModelConfigurationRequiresRight\").hasClass(\"show\")) $('#liUpdateModelConfigurationRequiresRight').removeClass('hidden');\r\n if ($(\"#liVerifyModelValidityRequiresRight\").hasClass(\"show\")) $('#liVerifyModelValidityRequiresRight').removeClass('hidden');\r\n if ($(\"#liMSCRequiresRight\").hasClass(\"show\")) $('#liMSCRequiresRight').removeClass('hidden');\r\n if ($(\"#liACTRequiresRight\").hasClass(\"show\")) $('#liACTRequiresRight').removeClass('hidden');\r\n if ($(\"#liassignGuestreeferRequiresRight\").hasClass(\"show\")) $('#liassignGuestreeferRequiresRight').removeClass('hidden');\r\n if ($(\"#liZigbeesettingsRequiresRight\").hasClass(\"show\")) $('#liZigbeesettingsRequiresRight').removeClass('hidden');\r\n if ($(\"#liassignpanidRequiresRight\").hasClass(\"show\")) $('#liassignpanidRequiresRight').removeClass('hidden');\r\n if ($(\"#liAutoConfigurationRequiresRight\").hasClass(\"show\")) $('#liAutoConfigurationRequiresRight').removeClass('hidden');\r\n if ($(\"#liAssetConfigurationRequiresRight\").hasClass(\"show\")) $('#liAssetConfigurationRequiresRight').removeClass('hidden');\r\n if ($(\"#liFreshAirTypeRequiresRight\").hasClass(\"show\")) $('#liFreshAirTypeRequiresRight').removeClass('hidden');\r\n if ($(\"#liGetFreshAirTypeRequiresRight\").hasClass(\"show\")) $('#liGetFreshAirTypeRequiresRight').removeClass('hidden');\r\n if ($(\"#liSetFreshAirTypeRequiresRight\").hasClass(\"show\")) $('#liSetFreshAirTypeRequiresRight').removeClass('hidden');\r\n if ($(\"#liClockRequiresRight\").hasClass(\"show\")) $('#liClockRequiresRight').removeClass('hidden');\r\n if ($(\"#liReeferDataLogRequiresRight\").hasClass(\"show\")) $('#liReeferDataLogRequiresRight').removeClass('hidden');\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liReeferModelConfiguration').removeClass('hidden');\r\n if ($(\"#liStartPreTripChilledandCARequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledandCARequiresRight').addClass('hidden');\r\n if (isCT4Found > 0 && tripWISEReport == true) {\r\n if ($(\"#litripwiseReportRequiresRight\").hasClass(\"show\")) $('#litripwiseReportRequiresRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#litripwiseReportRequiresRight\").hasClass(\"show\")) $('#litripwiseReportRequiresRight').addClass('hidden');\r\n }\r\n\r\n var forwardCommandParams = JSON.stringify(selectedReeferData);\r\n var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetCCAlarmStatus';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data) {\r\n $('#liClearSetPoint').removeClass('disabled');\r\n $(\"#liClearSetPoint\").addClass('enabled');\r\n }\r\n else {\r\n $('#liClearSetPoint').removeClass('enabled');\r\n $(\"#liClearSetPoint\").addClass('disabled');\r\n }\r\n });\r\n\r\n if (selectedReeferData.length > 1) {\r\n $('#liDetailsRequiresRight').removeClass('enabled');\r\n $('#liDetailsRequiresRight').addClass('disabled');\r\n $('#lilastpretripreportRequiresRight').removeClass('enabled');\r\n $('#lilastpretripreportRequiresRight').addClass('disabled');\r\n $('#litripwiseReportRequiresRight').removeClass('enabled');\r\n $('#litripwiseReportRequiresRight').addClass('disabled');\r\n $('#liUpdateContainerIdRequiresRight').removeClass('enabled');\r\n $('#liUpdateContainerIdRequiresRight').addClass('disabled');\r\n $('#liZigbeesettingsRequiresRight').hide();\r\n var isGuestFound;\r\n\r\n isGuestFound = selectedReeferData.filter(row => row.DeviceConfig == true);\r\n\r\n if (isGuestFound.length > 0) {\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Device Config must be same for all selected rows.\");\r\n $('#liReportingIntervalRequiresRight').removeClass('enabled');\r\n $('#liReportingIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n\r\n $('#liReportingIntervalRequiresRight').removeClass('disabled');\r\n $('#liReportingIntervalRequiresRight').addClass('enabled');\r\n }\r\n\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFrozenRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFrozenRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripCARequriesRight\").hasClass(\"show\")) $('#liStartPreTripCARequriesRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('hidden');\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartCAFullPTIRequriesRight\").hasClass(\"show\")) $('#liStartCAFullPTIRequriesRight').removeClass('hidden');\r\n if ($(\"#liStartCAFuntionTestRequriesRight\").hasClass(\"show\")) $('#liStartCAFuntionTestRequriesRight').removeClass('hidden');\r\n\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'C').length) {\r\n if (isGuestFound.length == selectedReeferData.length) {\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').removeClass('hidden');\r\n }\r\n }\r\n else {\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').removeClass('hidden');\r\n }\r\n\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'D').length) {\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripFrozenRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFrozenRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripCARequriesRight\").hasClass(\"show\")) $('#liStartPreTripCARequriesRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFrozenRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFrozenRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripCARequriesRight\").hasClass(\"show\")) $('#liStartPreTripCARequriesRight').addClass('hidden');\r\n }\r\n\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'D').length) {\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').removeClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').removeClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n }\r\n else if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'S').length) {\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').addClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').removeClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'S').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').addClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').removeClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').addClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').addClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n }\r\n\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'S').length) {\r\n if ($(\"#liStartCAFullPTIRequriesRight\").hasClass(\"show\")) $('#liStartCAFullPTIRequriesRight').removeClass('hidden');\r\n if ($(\"#liStartCAFuntionTestRequriesRight\").hasClass(\"show\")) $('#liStartCAFuntionTestRequriesRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liStartCAFullPTIRequriesRight\").hasClass(\"show\")) $('#liStartCAFullPTIRequriesRight').addClass('hidden');\r\n if ($(\"#liStartCAFuntionTestRequriesRight\").hasClass(\"show\")) $('#liStartCAFuntionTestRequriesRight').addClass('hidden');\r\n }\r\n\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'S').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'C' && row.DeviceConfig == true).length)) {\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n }\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'C' && row.DeviceConfig == true).length) {\r\n if ($(\"#liUpdateDatalogRequiresRight\").hasClass(\"show\")) $('#liUpdateDatalogRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liUpdateDatalogRequiresRight\").hasClass(\"show\")) $('#liUpdateDatalogRequiresRight').removeClass('hidden');\r\n }\r\n\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'D').length)) {\r\n if ($(\"#liStartPreTripChilledandCARequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledandCARequiresRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liStartPreTripChilledandCARequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledandCARequiresRight').addClass('hidden');\r\n }\r\n if (selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'S').length > 0) {\r\n if ($(\"#liChangeDefrostIntervalRequiresRight\").hasClass(\"show\")) $('#liChangeDefrostIntervalRequiresRight').addClass('hidden');\r\n }\r\n\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd.trim() == 'C').length)) {\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liReeferModelConfiguration').addClass('show');\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liReeferModelConfiguration').addClass('hidden');\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('show');\r\n }\r\n }\r\n else {\r\n var dflag = selectedReeferData[0].DeviationFlg;\r\n var csflag = selectedReeferData[0].ControllerSerialNumberChgFlag;\r\n var isAssignCargo = selectedReeferData[0].IsCargoCare;\r\n //var liassignvslRequiresRight = selectedReeferData[0].IsOnVessel;\r\n var ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd != null ? selectedReeferData[0].ReeferOEMTypeCd : \"\";\r\n\r\n var IsGuest = selectedReeferData[0].DeviceConfig;\r\n\r\n if (IsGuest) {\r\n $('#liReportingIntervalRequiresRight').removeClass('enabled');\r\n $('#liReportingIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liReportingIntervalRequiresRight').removeClass('disabled');\r\n $('#liReportingIntervalRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'U') {\r\n $('#liDefrostRequiresRight').removeClass('enabled');\r\n $('#liDefrostRequiresRight').addClass('disabled');\r\n $('#liPreTripRequiresRight').removeClass('enabled');\r\n $('#liPreTripRequiresRight').addClass('disabled');\r\n $('#liStopPreTripRequiresRight').removeClass('enabled');\r\n $('#liStopPreTripRequiresRight').addClass('disabled');\r\n } else {\r\n $('#liPreTripRequiresRight').removeClass('disabled');\r\n $('#liPreTripRequiresRight').addClass('enabled');\r\n $('#liStopPreTripRequiresRight').removeClass('disabled');\r\n $('#liStopPreTripRequiresRight').addClass('enabled');\r\n $('#liDefrostRequiresRight').removeClass('disabled');\r\n $('#liDefrostRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined) {\r\n\r\n if (ReeferOEMTypeCd.toString().trim() == 'C') {\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liReeferModelConfiguration').addClass('show');\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liReeferModelConfiguration').addClass('hidden');\r\n if ($(\"#liReeferModelConfiguration\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('show');\r\n }\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'TR') {\r\n $('#liVerifyModelValidityRequiresRight').removeClass('enabled');\r\n $('#liVerifyModelValidityRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liVerifyModelValidityRequiresRight').removeClass('disabled');\r\n $('#liVerifyModelValidityRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'S') {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C') {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n if (IsGuest) {\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liHumidityRequiresRight\").hasClass(\"show\")) $('#liHumidityRequiresRight').removeClass('hidden');\r\n }\r\n }\r\n else {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n }\r\n //if (ReeferOEMTypeCd.trim() == 'D') {\r\n // $('#liDefrostRequiresRight').removeClass('enabled');\r\n // $('#liDefrostRequiresRight').addClass('disabled');\r\n // $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n // $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n //}\r\n //else {\r\n // $('#liDefrostRequiresRight').removeClass('disabled');\r\n // $('#liDefrostRequiresRight').addClass('enabled');\r\n // $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n // $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n //}\r\n if (ReeferOEMTypeCd.trim() == 'T') {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('enabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liChangeDefrostIntervalRequiresRight').removeClass('disabled');\r\n $('#liChangeDefrostIntervalRequiresRight').addClass('enabled');\r\n }\r\n\r\n //if (!liassignvslRequiresRight) {\r\n // $('#liAssignVSLRequiresRight').removeClass('disabled');\r\n // $('#liAssignVSLRequiresRight').addClass('enabled');\r\n // $('#liUnassignVSLRequiresRight').removeClass('enabled');\r\n // $('#liUnassignVSLRequiresRight').addClass('disabled');\r\n //} else {\r\n // $('#liAssignVSLRequiresRight').removeClass('enabled');\r\n // $('#liAssignVSLRequiresRight').addClass('disabled');\r\n // $('#liUnassignVSLRequiresRight').removeClass('disabled');\r\n // $('#liUnassignVSLRequiresRight').addClass('enabled');\r\n //}\r\n\r\n if (isAssignCargo) {\r\n $('#liUnassignCCRequiresRight').removeClass('disabled');\r\n $('#liUnassignCCRequiresRight').addClass('enabled');\r\n $('#liAssignCCRequiresRight').removeClass('enabled');\r\n $('#liAssignCCRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liUnassignCCRequiresRight').removeClass('enabled');\r\n $('#liUnassignCCRequiresRight').addClass('disabled');\r\n $('#liAssignCCRequiresRight').removeClass('disabled');\r\n $('#liAssignCCRequiresRight').addClass('enabled');\r\n }\r\n\r\n if (ReeferOEMTypeCd.trim() == 'D') {\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripFrozenRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFrozenRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripCARequriesRight\").hasClass(\"show\")) $('#liStartPreTripCARequriesRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('hidden');\r\n if ($(\"#liStartPreTripFrozenRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFrozenRequiresRight').addClass('hidden');\r\n if ($(\"#liStartPreTripCARequriesRight\").hasClass(\"show\")) $('#liStartPreTripCARequriesRight').addClass('hidden');\r\n }\r\n\r\n if (ReeferOEMTypeCd.trim() == 'D') {\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').removeClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').removeClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n }\r\n else if (ReeferOEMTypeCd.trim() == 'S') {\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').addClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').removeClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liStartPreTripChilledRequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledRequiresRight').addClass('hidden');\r\n if ($(\"#liControlledAtmosphereRight\").hasClass(\"show\")) $('#liControlledAtmosphereRight').addClass('hidden');\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n }\r\n\r\n if (ReeferOEMTypeCd.trim() == 'S') {\r\n if ($(\"#liStartCAFullPTIRequriesRight\").hasClass(\"show\")) $('#liStartCAFullPTIRequriesRight').removeClass('hidden');\r\n if ($(\"#liStartCAFuntionTestRequriesRight\").hasClass(\"show\")) $('#liStartCAFuntionTestRequriesRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liStartCAFullPTIRequriesRight\").hasClass(\"show\")) $('#liStartCAFullPTIRequriesRight').addClass('hidden');\r\n if ($(\"#liStartCAFuntionTestRequriesRight\").hasClass(\"show\")) $('#liStartCAFuntionTestRequriesRight').addClass('hidden');\r\n }\r\n if ((ReeferOEMTypeCd.trim() == 'C' && IsGuest) || (ReeferOEMTypeCd.trim() == 'S') || (ReeferOEMTypeCd.trim() == 'D')) {\r\n\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').addClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liO2SetPointRequiresRight\").hasClass(\"show\")) $('#liO2SetPointRequiresRight').removeClass('hidden');\r\n if ($(\"#liCO2SetPointRequiresRight\").hasClass(\"show\")) $('#liCO2SetPointRequiresRight').removeClass('hidden');\r\n }\r\n\r\n if (ReeferOEMTypeCd.trim() == 'C' && IsGuest) {\r\n if ($(\"#liUpdateDatalogRequiresRight\").hasClass(\"show\")) $('#liUpdateDatalogRequiresRight').addClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liUpdateDatalogRequiresRight\").hasClass(\"show\")) $('#liUpdateDatalogRequiresRight').removeClass('hidden');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'D') {\r\n if ($(\"#liStartPreTripChilledandCARequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledandCARequiresRight').removeClass('hidden');\r\n }\r\n else {\r\n if ($(\"#liStartPreTripChilledandCARequiresRight\").hasClass(\"show\")) $('#liStartPreTripChilledandCARequiresRight').addClass('hidden');\r\n }\r\n $('#liDetailsRequiresRight').removeClass('disabled');\r\n $('#liDetailsRequiresRight').addClass('enabled');\r\n $('#liUpdateContainerIdRequiresRight').removeClass('disabled');\r\n $('#liUpdateContainerIdRequiresRight').addClass('enabled');\r\n\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined) {\r\n if (ReeferOEMTypeCd.trim() == 'T' || ReeferOEMTypeCd.trim() == 'U') {\r\n $('#lilastpretripreportRequiresRight').removeClass('enabled');\r\n $('#lilastpretripreportRequiresRight').addClass('disabled');\r\n $('#litripwiseReportRequiresRight').removeClass('enabled');\r\n $('#litripwiseReportRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#lilastpretripreportRequiresRight').removeClass('disabled');\r\n $('#lilastpretripreportRequiresRight').addClass('enabled');\r\n if (isCT4Found > 0 && tripWISEReport == true) {\r\n $('#litripwiseReportRequiresRight').removeClass('disabled');\r\n $('#litripwiseReportRequiresRight').addClass('enabled');\r\n }\r\n else {\r\n $('#litripwiseReportRequiresRight').removeClass('enabled');\r\n $('#litripwiseReportRequiresRight').addClass('disabled');\r\n }\r\n }\r\n }\r\n else {\r\n $('#lilastpretripreportRequiresRight').removeClass('enabled');\r\n $('#lilastpretripreportRequiresRight').addClass('disabled');\r\n $('#litripwiseReportRequiresRight').removeClass('enabled');\r\n $('#litripwiseReportRequiresRight').addClass('disabled');\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'S') {\r\n if ($(\"#liChangeDefrostIntervalRequiresRight\").hasClass(\"show\")) $('#liChangeDefrostIntervalRequiresRight').addClass('hidden');\r\n }\r\n }\r\n }\r\n }\r\n\r\n setCommandText(Oem: any) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandLabel';\r\n var input = JSON.stringify(Oem);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n this.setState({\r\n fullPreTripCommandText: data[0] != 'disabled' ? data[0] : 'Full',\r\n shortPreTripCommandText: data[1] != 'disabled' ? data[1] : 'Short',\r\n funcPreTripCommandText: data[2] != 'disabled' ? data[2] : 'Function Test'\r\n });\r\n if (data[0] == 'disabled') {\r\n if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('disabled');\r\n if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('enabled');\r\n }\r\n else {\r\n if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('disabled');\r\n if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('enabled');\r\n }\r\n if (data[1] == 'disabled') {\r\n if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('disabled');\r\n if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('enabled');\r\n }\r\n else {\r\n if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('enabled');\r\n if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('disabled');\r\n }\r\n\r\n if (data[2] == 'disabled') {\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('disabled');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('enabled');\r\n }\r\n else {\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('enabled');\r\n if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('disabled');\r\n }\r\n });\r\n }\r\n\r\n getCommandWindowText(Oem: any[], command: string) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandData';\r\n this.state.CustomerSpecificCommandData.Oem = Oem;\r\n this.state.CustomerSpecificCommandData.commandId = command;\r\n\r\n var input = JSON.stringify(this.state.CustomerSpecificCommandData);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n self.setState({ pretripCmd: command, modelTitle: data }, () => self.RenderContextMenuPopUp('PreTrip', true));\r\n });\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getVesselContextMenuItems = params => {\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var reeferid = selectedrowNode.data.ReeferID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.ReeferID === reeferid)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.vesselContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('14'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.vesselContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('154'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.vesselContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('15'),\r\n },\r\n {\r\n name: 'Command History',\r\n action: () => {\r\n this.vesselContextMenuClick(\"CommandStatus\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('155'),\r\n },\r\n {\r\n name: 'CargoCare Tasks',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('76, 77', params),\r\n subMenu: [\r\n {\r\n name: 'Assign to CargoCare',\r\n action: () => {\r\n this.assignCargoCare();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('76'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'AssigntoCargoCare'),\r\n },\r\n {\r\n name: 'Unassign from CargoCare',\r\n action: () => {\r\n this.unAssignCaregoCare();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('77'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'UnassignfromCargoCare'),\r\n },\r\n //{\r\n // name: 'Clear Set Point',\r\n // action: () => {\r\n // this.clearSetPoint();\r\n // },\r\n // //disabled: UserRights.checkMenuItemClearSetPointDisabled(params),\r\n // disabled: UserRights.checkMenuItemDisabled(params, 'ClearSetPoint'),\r\n\r\n //},\r\n ],\r\n },\r\n {\r\n name: 'Commands',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('18, 19, 20, 21, 22, 23, 26, 27, 24, 25, 28, 29, 30, 31, 32, 33, 80, 81, 83, 84, 85, 89, 90, 92, 103, 104, 106, 108, 109, 111, 112, 113, 114, 115, 116, 118, 122, 123, 125, 126, 145, 150, 270', params),\r\n disabled: UserRights.checkMenuItemDisabledForCommands(params, 'Commands'),//RCNG-1842\r\n subMenu: [\r\n {\r\n name: 'Reporting',\r\n ////cssClasses: UserRights.checkMenuItemVisibilityMultiple('26, 81, 145, 150'),\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('26, 81, 145, 150', params, 'Reporting', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Ping / Report',\r\n action: () => {\r\n this.popUpPing();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('26', params, 'Ping', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set Reporting Interval',\r\n action: () => {\r\n this.popUpChangeReporting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('81', params, 'SetReportingInterval', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'SetReportingInterval'),\r\n },\r\n {\r\n name: 'Device Reset',\r\n action: () => {\r\n this.popUpDeviceReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('145', params, 'DeviceReset', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Reset To Defaults',\r\n action: () => {\r\n this.popUpDeviceHardReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('150', params, 'DeviceResetToDefaults', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n\r\n name: 'Reefer Settings',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25, 28, 92, 108', params, 'ReeferSettings', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Change Setpoints',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25', params, 'ChangeSetpoints', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Temperature',\r\n action: () => {\r\n this.popUpChangeTempSetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('23'),\r\n },\r\n {\r\n name: 'Humidity',\r\n action: () => {\r\n this.popUpHumiditySetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('27', params, 'Humidity', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Humidity'),\r\n },\r\n {\r\n name: 'O2',\r\n action: () => {\r\n this.popUpO2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('24', params, 'O2', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CO2',\r\n action: () => {\r\n this.popUpCo2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('25', params, 'CO2', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Clock',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('92, 108', params, 'Clock', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Sync to Device',\r\n action: () => {\r\n this.popUpSyncReeferClock();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('92', params, 'SynctoDevice', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Clock Sync Settings',\r\n action: () => {\r\n this.popUpChangeReeferClockSyncSetting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('108', params, 'ClockSyncSettings', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Change Reefer ID',\r\n action: () => {\r\n this.popUpChangeReeferId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('28', params, 'ChangeReeferID', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ChangeReeferID'),\r\n },\r\n {\r\n name: 'Controlled Atmosphere',\r\n action: () => {\r\n this.popUpControlledAtmosphere();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('139', params, 'ControlledAtmosphere', self.props.reeferFormatter.RefControllerTypes),\r\n }\r\n ],\r\n },\r\n {\r\n name: 'Reefer Data Log',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('29, 31, 32, 80', params, 'ReeferDataLog', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Get Data Log',\r\n action: () => {\r\n this.popUpDLTraditional(this);\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('31', params, 'GetDataLog', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set Data Log Interval',\r\n action: () => {\r\n this.popUpChangeDatalog();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('29', params, 'SetDataLogInterval', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Real-Time Retrieval Settings',\r\n //action: () => {\r\n // to do Check \r\n //this.popUpChangeDatalog();\r\n //},\r\n cssClasses: UserRights.checkMenuItemVisibility('32, 80'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Reefer Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('18, 19, 20, 21, 30, 106, 206', params, 'ReeferPreTrip', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Start Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('18, 19, 20'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StartPre-Trip'),\r\n subMenu: [\r\n {\r\n name: this.state.fullPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripFull();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('18', params, 'fullPreTripCommandText', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.shortPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripShort();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('19', params, 'shortPreTripCommandText', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.funcPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('20', params, 'funcPreTripCommandText', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled',\r\n action: () => {\r\n this.popUpChangeToChilled();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('140', params, 'Chilled', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Frozen',\r\n action: () => {\r\n this.popUpChangeToFrozen();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('141', params, 'Frozen', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA',\r\n action: () => {\r\n this.popUpChangeToCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('142', params, 'CA', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Full',\r\n action: () => {\r\n this.popUpChangeToCAFullPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('143', params, 'CAFull', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Function Test',\r\n action: () => {\r\n this.popUpChangeToCAFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('144', params, 'CAFunctionTest', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled and CA',\r\n action: () => {\r\n this.popUpChangeToChilledandCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('148', params, 'ChilledandCA', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Stop Pre-Trip',\r\n action: () => {\r\n this.popUpStopPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('21', params, 'StopPre-Trip', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StopPre-Trip'),\r\n },\r\n {\r\n name: 'Scheduled Pre-Trip',\r\n action: () => {\r\n this.popUpSchedulePTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('106', params, 'ScheduledPre-Trip', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Get Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'GetPre-TripResults', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Show Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTIReport();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'ShowPre-TripResults', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ShowPreTripResults'),\r\n },\r\n ,\r\n {\r\n name: 'Get TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWR();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('206', params, 'GetTripWISEReport', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n //{\r\n // name: 'Show TripWISE Report',\r\n // action: () => {\r\n // this.popUpGetTWReport();\r\n // },\r\n // cssClasses: UserRights.checkMenuItemVisibilitybyData('206', params, 'ShowTripWISEReport'),\r\n // disabled: UserRights.checkMenuItemDisabled(params, 'ShowTripWISEReport'),\r\n //},\r\n ],\r\n },\r\n {\r\n name: 'Reboot Reefer Controller',\r\n action: () => {\r\n this.popUpRebootReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('22', params, 'RebootReeferController', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Query Reefer Inventory',\r\n action: () => {\r\n this.popUpQueryReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('83,84,85', params, 'QueryReeferInventory', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Reefer Model Configuration',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('89, 90', params, 'ReeferModelConfiguration', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Update',\r\n action: () => {\r\n this.popUpUpdateModelConfig();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('89', params, 'Update', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Verify',\r\n action: () => {\r\n this.popUpVerifyModelValidity();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('90', params, 'Verify', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Verify'),\r\n },\r\n ],\r\n\r\n },\r\n {\r\n name: 'Defrost',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('103, 104', params, 'Defrost', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Defrost'),\r\n\r\n subMenu: [\r\n\r\n {\r\n name: 'Start Defrost',\r\n action: () => {\r\n this.popUpStartDeforst();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('103', params, 'StartDefrost', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chg.Defrost Interval',\r\n action: () => {\r\n this.popUpChangeDeforstInterval();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('104', params, 'ChgDefrostInterval', self.props.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ChgDefrostInterval'),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n\r\n name: 'Multiple Setpoints',\r\n action: () => {\r\n this.popUpMSC();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('123', params, 'MultipleSetpoints', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Automatic Cold Treatment',\r\n action: () => {\r\n this.popUpACT();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('122', params, 'AutomaticColdTreatment', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Guest Reefer configuration',\r\n action: () => {\r\n this.popUpGuestReeferConfigCmd();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('112, 113, 114, 115, 116', params, 'GuestReeferconfiguration', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Change Zigbee Config Settings',\r\n action: () => {\r\n this.popUpZigbeeSettings();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('118', params, 'ChangeZigbeeConfigSettings', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Assign PAN Id',\r\n action: () => {\r\n this.popUpAssignPanId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('109', params, 'AssignPANId', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Configuration',\r\n action: () => {\r\n this.popAutoConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('110', params, 'DeviceConfiguration', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Asset Configuration',\r\n action: () => {\r\n this.popAssetConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('121', params, 'AssetConfiguration', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Fresh Air Type',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('125, 126', params, 'FreshAirType', self.props.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n\r\n {\r\n name: 'Get - Fresh Air Type',\r\n action: () => {\r\n this.popUpGetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('125', params, 'Get-FreshAirType', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set - Fresh Air Type',\r\n action: () => {\r\n this.popUpSetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('126', params, 'Set-FreshAirType', self.props.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n //{\r\n // name: 'Get Asset ID',\r\n // action: () => {\r\n // this.popUpGetAssetId();\r\n // },\r\n // cssClasses: UserRights.checkMenuItemVisibilitybyData('199', params, 'GetAssetId'),\r\n //},\r\n //{\r\n // name: 'Enable Door Sensor',\r\n // action: () => {\r\n // this.popUpEnableDoorSensor();\r\n // },\r\n // cssClasses: UserRights.checkMenuItemVisibilitybyData('207', params, 'EnableDoorSensor'),\r\n //},\r\n ],\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.exportToExcel();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n getContextMenuItems(params: any) {\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var reeferid = resortitem.data.ReeferID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ReeferID === reeferid)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n $(\".context-menu\").show(); $(\"#contextmenu\").show();\r\n Excel.preventDefault();\r\n\r\n $(\".ag-cell\").unbind(\"contextmenu\");\r\n $(\".ag-cell\").bind('contextmenu', function (e) {\r\n $(\"#contextmenu\").show();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var reeferid = resortitem.data.ReeferID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ReeferID === reeferid)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n var top = e.pageY + 5;\r\n if (height < top) {\r\n top = (top - halfheight) + 170;\r\n }\r\n\r\n var left = e.pageX;\r\n if (left >= ($(window).width() - 200)) {\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n right: 20 + \"px\",\r\n width: 160 + 'px',\r\n left: $(window).width() - 200 + 'px'\r\n });\r\n\r\n $('.context-menu').find(\"ul.dropdown-menu\").css(\"left\", \"-155px\");\r\n }\r\n else {\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n left: left + \"px\"\r\n });\r\n\r\n $('.context-menu').find(\"ul.dropdown-menu\").css(\"left\", \"155px\");\r\n }\r\n $(\".context-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('contextmenu click', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n\r\n $('.context-menu').bind('contextmenu', function () {\r\n return false;\r\n });\r\n $('.context-menu').on('click', 'li', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n }\r\n\r\n reefermapAction(data: any[], isOpenVia: any) {\r\n //this.props.history.push('/reefermap', data);\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.props.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/reefermap', reeferdetails);\r\n }\r\n\r\n reeferhistoryAction(data: any[], isOpenVia: any) {\r\n //this.props.history.push('/reeferhistory', data);\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.props.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/reeferhistory', reeferdetails);\r\n }\r\n\r\n reefercommandstatusAction(data: any[]) {\r\n if (data[0].RCDID != null && data[0].RCDID != undefined && data[0].RCDID != '')\r\n // this.props.history.push('/reefercommands', data);\r\n this.props.history.push('/reefercommands?From=' + window.location.pathname.replace('/', ''), data);\r\n else\r\n PopupWindow.showErrorMessage('Alert', 'Selected Reefers must have RCDID.');\r\n }\r\n\r\n reeferdetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data[0], source: dataSource, reeferFormatter: self.props.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n\r\n //this.props.history.push('/reeferdetails', reeferdetails);\r\n this.props.history.push('/reeferdetails?From=' + window.location.pathname.replace('/', ''), reeferdetails);\r\n }\r\n\r\n vesselContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.reefermapAction(this.state.selectedItems, 'VesselStatus');\r\n break;\r\n case \"History\": this.reeferhistoryAction(this.state.selectedItems, 'VesselStatus');\r\n break;\r\n case \"CommandStatus\": this.reefercommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.reeferdetailsAction(this.state.selectedItems, 'Vessel');\r\n break;\r\n }\r\n }\r\n\r\n //manageVessel = (param) => {\r\n // var rowParams = self.state.selectedItems;\r\n // if (rowParams != null && rowParams != undefined) {\r\n // var isParentEventIDFound;\r\n // isParentEventIDFound = rowParams.filter(row => row.ParentEventID == null);\r\n\r\n // if (isParentEventIDFound.length > 0) {\r\n // PopupWindow.showErrorMessage('Alert', 'Selected Reefers must have a valid Event.');\r\n // }\r\n // else {\r\n\r\n // var url = Config.ApiBaseUrl + '/api/reeferstatus/ManageVessel';\r\n // var vesselData = { reeferCommandUnits: rowParams, IsAssign: param };\r\n // var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(vesselData), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => {\r\n // response.json() as Promise;\r\n // })\r\n // .then(data => {\r\n // this.props.requestVesselSearch(this.props.searchFilters, vesselColumns);\r\n // if (self.state.gridApiParams != null && self.state.gridApiParams != []) {\r\n // self.state.gridApiParams.paginationGoToFirstPage();\r\n // }\r\n // });\r\n // }\r\n // }\r\n //}\r\n\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userData.UserId,\r\n \"TripId\": value.TripId,\r\n\r\n \"RCDReportingInterval\": value.RCDReportingInterval,\r\n \"SetTemp\": value.SetPoint,\r\n \"CustomerID\": value.CustomerID\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n assignCargoCare() {\r\n $('#globalLoader').show();\r\n this.props.requestAssignCargoCare(this.getForwardCommandUnits());\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n\r\n unAssignCaregoCare() {\r\n $('#globalLoader').show();\r\n this.props.requestUnAssignCargoCare(this.getForwardCommandUnits());\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n\r\n clearSetPoint() {\r\n $('#globalLoader').show();\r\n this.props.requestClearSetPoint(this.getForwardCommandUnits());\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n }\r\n\r\n updateVesselStatusDimensions() {\r\n $(\"#VesselStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 276);\r\n $(\"#VesselStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 276);\r\n $(\"#VesselStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 276);\r\n }\r\n\r\n //componentWillUnmount() {\r\n // window.removeEventListener(\"resize\", this.updateVesselStatusDimensions.bind(this));\r\n //}\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsOnly('38');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n //this.updateVesselStatusDimensions();\r\n window.addEventListener(\"resize\", this.updateVesselStatusDimensions.bind(this));\r\n Excel.preventDefault();\r\n \r\n \r\n \r\n \r\n // To make the Modal popups draggable.\r\n this.dragElement(document.getElementById(\"contextMenuModel\"));\r\n setTimeout(() => { this.updateVesselStatusDimensions() }, 200);\r\n }\r\n }\r\n\r\n popUpPing() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n\r\n popUpChangeTempSetPoint() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SET', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Temperature Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeTempSetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpHumiditySetPoint() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('HUM', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemDaikinCount > 0 && oemDaikinCount != self.state.selectedItems.length)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n else {\r\n if (carrrierCount <= 0) {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpO2SetPoint() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('ORC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpCo2SetPoint() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('CO2', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeToChilled() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Star Cool OEM.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeToFrozen() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SFR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ pretripCmd: 'StartFrozenPTI', modelTitle: 'Start Frozen Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeToChilledandCA() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for this combination of OEM Model and Software.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeToCA() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAPTI', modelTitle: 'Start CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeToCAFullPTI() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFullPTI', modelTitle: 'Start CA Full' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeToCAFunctionTest() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var StarCoolCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFunctionTest', modelTitle: 'Start CA Function Test' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpControlledAtmosphere() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemStarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemStarCoolCount == self.state.selectedItems.length) {\r\n if (this.props.refApplicationParams != null && this.props.refApplicationParams != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand != null && this.props.refApplicationParams.ValidateCACommand != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand == \"true\") {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else if (oemDaikinCount == self.state.selectedItems.length) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: false }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else if (oemStarCoolCount >= 1 || oemDaikinCount >= 1) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TK and Carrier OEMs.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpDLTraditional(e) {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('TDD', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDLCommand(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get Traditional Download' });\r\n self.RenderContextMenuPopUp('GetDLTraditional', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpPreTripFull() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SFP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartFullPTI');\r\n //self.setState({ pretripCmd: 'StartFullPTI', modelTitle: 'Start Full Pre-Trip' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpPreTripShort() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SSP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartShortPTI');\r\n //self.setState({ pretripCmd: 'StartShortPTI', modelTitle: 'Start Short Pre-Trip' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpFunctionTest() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SCP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (DaikinCount <= 0) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartCAShortPTI');\r\n //self.setState({ pretripCmd: 'StartCAShortPTI', modelTitle: 'Start Function Test' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin OEM.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpStopPTI() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SPP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Stop Pre-Trip' });\r\n self.RenderContextMenuPopUp('StopPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpSchedulePTI() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Scheduled Pre-Trip' });\r\n self.RenderContextMenuPopUp('SchedulePreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpGetPTI() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('LPR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n if (self.state.selectedItems.filter(row => row.ReeferOEMTypeCd.trim() == 'D' && (row.UnitTypeCd == null || row.UnitTypeCd == \"UK\")).length == 0) {\r\n self.setState({ modelTitle: 'Get Last Pre-Trip Result' });\r\n self.RenderContextMenuPopUp('GetPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should have valid OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n\r\n }\r\n\r\n popUpGetTWR() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('TWR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Get TripWISE Report' });\r\n self.RenderContextMenuPopUp('GetTWR', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpRebootReefer() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('RFC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Reboot Reefer Controller' });\r\n self.RenderContextMenuPopUp('RebootReefer', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeDatalog() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateAllOEMs(self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeReeferId() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('WRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer ID' });\r\n self.RenderContextMenuPopUp('ChangeReeferId', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeReporting() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Change Reporting Interval' });\r\n self.RenderContextMenuPopUp('ChangeReportingInterval', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpQueryReefer() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('QRI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Query Reefer Inventory' });\r\n self.RenderContextMenuPopUp('QueryReeferInventory', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpUpdateModelConfig() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('UMC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Update Model Configuration' });\r\n self.RenderContextMenuPopUp('UpdateModelConfiguration', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpVerifyModelValidity() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('VMV', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var TKReceiverCount = CommonActions.validateOEMType('TR', self.state.selectedItems);\r\n if (TKReceiverCount == self.state.selectedItems.length) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TKReceiver OEM.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Verify Model Validity' });\r\n self.RenderContextMenuPopUp('VerifyModelValidity', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpSyncReeferClock() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Sync Reefer Clock' });\r\n self.RenderContextMenuPopUp('SyncReeferClock', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeReeferClockSyncSetting() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('RCS', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer Clock Sync Settings' });\r\n self.RenderContextMenuPopUp('ChangeReeferClockSyncSettings', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpStartDeforst() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('DSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateMultipleOEMs(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Start Defrost' });\r\n self.RenderContextMenuPopUp('StartDeforst', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpGetFreshAirType() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('GFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('GetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpSetFreshAirType() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('SFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Set - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('SetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpGuestReeferConfigCmd() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Guest Reefer configuration commands' });\r\n self.RenderContextMenuPopUp('GuestReeferConfiguration', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpChangeDeforstInterval() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('CDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateStarCoolCarrierDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n this.setState({ isChangeDeforstInterval: true });\r\n self.setState({ modelTitle: 'Change Defrost Interval' });\r\n self.RenderContextMenuPopUp('ChangeDeforstInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpAssignPanId() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Assign PAN ID' });\r\n self.RenderContextMenuPopUp('AssignPanId', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n //popUpAssignToCustomer() {\r\n // self.setState({ modelTitle: 'Assign Units To Customer' });\r\n // self.RenderContextMenuPopUp('AssignCustomer', false);\r\n //}\r\n\r\n //popUpUnAssignFromCustomer() {\r\n // self.setState({ modelTitle: 'Unassign Units From Customer' });\r\n // self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n //}\r\n\r\n popUpZigbeeSettings() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Change Zigbee Config Settings' });\r\n self.RenderContextMenuPopUp('Zigbee', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpDeviceReset() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Device Reset' });\r\n self.RenderContextMenuPopUp('DeviceReset', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpDeviceHardReset() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Device Reset To Defaults' });\r\n self.RenderContextMenuPopUp('DeviceHardReset', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popAutoConfiguration() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n if (self.state.selectedItems.length > 0) {\r\n var reeferData = self.state.selectedItems;\r\n var customerIdsCount = 0;\r\n\r\n $.each(reeferData, function (key, value) {\r\n var customerId = reeferData[0].CustomerID;\r\n if (value.CustomerID != customerId) {\r\n customerIdsCount++;\r\n }\r\n });\r\n if (customerIdsCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same customer.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Device Configuration' });\r\n self.RenderContextMenuPopUp('AutoConfig', true);\r\n }\r\n\r\n };\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popAssetConfiguration() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n self.setState({ modelTitle: 'Asset Configuration' });\r\n self.RenderContextMenuPopUp('AssetConfig', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpMSC() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('MSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Multiple Setpoint Change', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('MSC', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n popUpACT() {\r\n var IsValidAssociation = CommonActions.validateAssociation(self.state.selectedItems);\r\n if (IsValidAssociation) {\r\n var IsValid = CommonActions.validateCommandSupport('ACT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Automatic Cold Treatment', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('ACT', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer is not associated with any device.\");\r\n }\r\n\r\n refreshStatusGrid() {\r\n $('#globalLoader').show();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n preTripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n\r\n this.props.requestVesselSearch(this.props.searchFilters, vesselColumns);\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != []) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n static refreshVesselStatusGrid() {\r\n self.refreshStatusGrid();\r\n }\r\n\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n switch (popUpName) {\r\n case 'SendEmail':\r\n return ;\r\n case 'Ping':\r\n return ;\r\n case 'ChangeTempSetPoint':\r\n return ;\r\n case 'ChangeHumiditySetPoint':\r\n return ;\r\n case 'ChangeO2SetPoint':\r\n return ;\r\n case 'ChangeCO2SetPoint':\r\n return ;\r\n case 'ChangeControlledAtmosphere':\r\n return ;\r\n case 'GetDLTraditional':\r\n return ;\r\n case 'PreTrip':\r\n return ;\r\n case 'StopPTI':\r\n return ;\r\n case 'SchedulePreTrip':\r\n return ;\r\n case 'GetPTI':\r\n return ;\r\n case 'RebootReefer':\r\n return ;\r\n case 'ChangeDatalogInterval':\r\n return ;\r\n case 'ChangeReeferId':\r\n return ;\r\n case 'ChangeReportingInterval':\r\n return ;\r\n case 'QueryReeferInventory':\r\n return ;\r\n case 'UpdateModelConfiguration':\r\n return ;\r\n case 'VerifyModelValidity':\r\n return ;\r\n case 'SyncReeferClock':\r\n return ;\r\n case 'StartDeforst':\r\n return ;\r\n case 'ChangeDeforstInterval':\r\n return ;\r\n case 'AssignPanId':\r\n return ;\r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n case 'ChangeReeferClockSyncSettings':\r\n return ;\r\n case 'GuestReeferConfiguration':\r\n return ;\r\n case 'Zigbee':\r\n return ;\r\n case 'AutoConfig':\r\n return ;\r\n case 'AssetConfig':\r\n return ;\r\n case 'MSC':\r\n return ;\r\n case 'ACT':\r\n return ;\r\n case 'GetFreshAirType':\r\n return ;\r\n case 'SetFreshAirType':\r\n return ;\r\n case 'DeviceReset':\r\n return ;\r\n case 'DeviceHardReset':\r\n return ;\r\n case 'GetTWR':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var reeferData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.USP_UnitCurrentConditionUI_Model[];\r\n filterSet = reeferData;\r\n var filterParams = JSON.stringify(filterSet);\r\n var checkBoxInfo = this.state.VCCheckBoxInfo;\r\n if (isCommands) {\r\n if (reeferData != undefined && reeferData != null) {\r\n if (popUpName == \"GetDLTraditional\" || popUpName == \"SchedulePreTrip\") {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData, checkBoxInfo) });\r\n $('#btnTrigger').click();\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/CheckIsMsgFromVessel', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n var vesselid = data;\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetVesselInformation?customerID=' + custId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n checkBoxInfo.dropDownVCData = result;\r\n if (result.length > 0) {\r\n if (vesselid == \"-1\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n else if (vesselid == \"0\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = false;\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = true;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = false;\r\n checkBoxInfo.selectedVCData = checkBoxInfo.dropDownVCData.find(d => d.VesselId == parseInt(vesselid));\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n }\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n $('#globalLoader').hide();\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n });\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n }\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n self.setState({ VCCheckBoxInfo: VCInfo });\r\n }\r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n popUpGetPTIReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ PTReport: result })\r\n this.setState({ ReportReeferId: reeferData[0].ReeferID })\r\n $('#globalLoader').hide();\r\n if (this.state.PTReport == null || this.state.PTReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'Pre-Trip Report', popUpHtml:
});\r\n $('#btnTriggerReport').click();\r\n }\r\n });\r\n }\r\n }\r\n\r\n downloadPTReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([this.state.PTReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'PT_' + this.state.ReportReeferId + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.state.PTReport));\r\n element.setAttribute('download', 'PT_' + this.state.ReportReeferId + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n\r\n printPTReport() {\r\n var divToPrint = document.getElementById(\"printData\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n dragElement(elmnt) {\r\n var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;\r\n if (document.getElementById(elmnt.id)) {\r\n /* if present, the header is where you move the DIV from:*/\r\n document.getElementById(elmnt.id).onmousedown = dragMouseDown;\r\n } else {\r\n /* otherwise, move the DIV from anywhere inside the DIV:*/\r\n elmnt.onmousedown = dragMouseDown;\r\n }\r\n\r\n function dragMouseDown(e) {\r\n e = e || window.event;\r\n // get the mouse cursor position at startup:\r\n pos3 = e.clientX;\r\n pos4 = e.clientY;\r\n document.onmouseup = closeDragElement;\r\n // call a function whenever the cursor moves:\r\n document.onmousemove = elementDrag;\r\n }\r\n\r\n function elementDrag(e) {\r\n e = e || window.event;\r\n // calculate the new cursor position:\r\n pos1 = pos3 - e.clientX;\r\n pos2 = pos4 - e.clientY;\r\n pos3 = e.clientX;\r\n pos4 = e.clientY;\r\n // set the element's new position:\r\n elmnt.style.top = (elmnt.offsetTop - pos2) + \"px\";\r\n elmnt.style.left = (elmnt.offsetLeft - pos1) + \"px\";\r\n }\r\n\r\n function closeDragElement() {\r\n /* stop moving when mouse button is released:*/\r\n document.onmouseup = null;\r\n document.onmousemove = null;\r\n }\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n // self.clearGridRowSelection(params); \r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"BatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"HumiditySetpoint\")\r\n return \"OOR\";\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"UnitEventDTTM\" || fieldName.toString() == \"PTRDateTime\" || fieldName.toString() == \"DataLoggerDtm\" || fieldName.toString() == \"ModifiedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"RunState\":\r\n return ReeferCellRenderer.RunStateFormatterGrouping(fieldValue);\r\n case \"MASeverityLevel\":\r\n return ReeferCellRenderer.StatusIndicatorALMFormatterGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return ReeferCellRenderer.PowerStateFormatterGrouping(fieldValue);\r\n case \"CCSeverityLevel\":\r\n return ReeferCellRenderer.CargoCareFormatterGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"VesselCd\":\r\n return fieldValue == \"-NA-\" ? \"No VSL\" : fieldValue;\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return ReeferCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExists\":\r\n return ReeferCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"PTResult\":\r\n return ReeferCellRenderer.PTResultGrouping(fieldValue);\r\n case \"AlarmsList\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return ReeferCellRenderer.AlarmDescriptionGroupingFormatter(fieldValue, DeviceType, self.props.reeferFormatter.AlarmMasterList);\r\n }\r\n case \"Cargo4Temp\":\r\n case \"USDA3Temp\":\r\n case \"USDA2Temp\":\r\n case \"USDA1Temp\":\r\n case \"SetPoint\":\r\n case \"SupplyTemp1\":\r\n case \"SupplyTemp2\":\r\n case \"ReturnTemp1\":\r\n case \"AmbientTemp\":\r\n case \"ReturnTemp2\":\r\n case \"EvaporatorTemp\":\r\n case \"CompressorSuctionTemp\":\r\n case \"CompressorDischargeTemp\":\r\n case \"CondenserTemperature\":\r\n case \"DeviceTemp\":\r\n case \"SensorReturnTemp1\":\r\n case \"SensorSupplyTemp1\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.TemperatureFormatterGrouping(fieldValue, fieldName, params, DeviceType);\r\n }\r\n\r\n case \"TemperatureUnit\":\r\n return Formatters.BookingTemperatureFormatterGrouping(fieldValue, fieldName, params);\r\n case \"EventDTTM\":\r\n case \"UnitEventDTTM\":\r\n case \"PTRDateTime\":\r\n case \"DataLoggerDtm\":\r\n case \"ModifiedDTTM\":\r\n\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"HumiditySetpoint\":\r\n {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n return Formatters.HumiditySetpointGrouping(fieldValue, HumiditySetpointStatus);\r\n }\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n }\r\n\r\n\r\n onGridScroll(params: any) {\r\n //$(\".context-menu\").hide();\r\n //$(\"#contextmenu\").hide();\r\n }\r\n\r\n refreshVesselData() {\r\n this.props.requestVesselData(vesselColumns);\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'OneDecimal',\r\n numberFormat: {\r\n format: '0.0',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'TwoDecimal',\r\n numberFormat: {\r\n format: '0.00',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
\r\n
\r\n
\r\n
\r\n Vessel Status\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 0 ? true : false}\r\n gridApiParams={this.state.gridApiParams} parentchild={\"P\"} formName={\"VesselStatus\"} />\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Page Size:\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.modelTitle}
\r\n \r\n
\r\n
\r\n {this.state.popUpHtml}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.modelTitle}
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.popUpHtml}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ ...state.userDetails, ...state.vesselStatus }), // Selects which state properties are merged into the component's props\r\n VesselStatusState.actionCreators,\r\n)(VesselStatus as any);\r\n","// @ts-nocheck\r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport $ from 'jquery';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport isEqual from 'lodash/isEqual';\r\nimport queryString from 'query-string';\r\nimport { isNullOrUndefined } from 'util';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport Select from 'react-select';\r\nimport \"../../../node_modules/react-select/dist/react-select.css\";\r\nimport { ReeferStatusGrid } from '../childcomponents/ReeferStatusGrid';\r\nimport { GensetStatusGrid } from '../childcomponents/GensetStatusGrid';\r\nimport { DryStatusGrid } from '../childcomponents/DryStatusGrid';\r\nimport { DryStatusSSRMGrid } from '../childcomponents/DryStatusSSRMGrid';\r\n\r\nimport { ChassisStatusGrid } from '../childcomponents/ChassisStatusGrid';\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport { ReeferHistoryGrid } from './ReeferHistoryGrid';\r\nimport { GensetHistoryGrid } from './GensetHistoryGrid';\r\nimport { DryHistoryGrid } from './DryHistoryGrid';\r\nimport { ChassisHistoryGrid } from './ChassisHistoryGrid';\r\nimport UserRights from '../../actions/UserRights';\r\nimport deletepng from '../../images/delete.png';\r\nimport uniq from 'lodash/uniq';\r\nimport { ContextMenu, MenuItem, ContextMenuTrigger } from \"react-contextmenu\";\r\nimport { AssetSearch } from './../../../src/actions/CCWizardEmpties'; //'../../actions/CCWizardEmpties.js'\r\nimport forIn from 'lodash/forIn';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface SearchState {\r\n Oemtypes: server.vRefOEMTypeUIModel[];\r\n RefCountry: server.RefCountryModel[];\r\n RefGeofences: string[];\r\n //RefVessels: string[];\r\n RefVessels: server.vesselsList[]; //WI-26881\r\n Filters: server.ReeferSearchFilters;\r\n CustomAttributes: server.CustomAttributes[];\r\n CustomAttributesHtml: any;\r\n suggestionsFenceId: any[],\r\n suggestionsVesselId: any[],//WI-26881\r\n suggestionsVoyage: any[],//WI-26881\r\n suggestionsCalls: any[],//WI-26881\r\n targetId: string,\r\n stayOpen: boolean;\r\n disabled: boolean;\r\n removeSelected: boolean;\r\n rtl: boolean;\r\n selectedOperator: any;\r\n SerachState: string;\r\n SearchName: string;\r\n IsDefaultSearch: boolean;\r\n SelectedSearch: string;\r\n SearchNamesList: server.SearchNamesResults[];\r\n AssetTypes: any[];\r\n SelectedSearchControls: any[];\r\n AssetStates: any[];\r\n CargoCareProfiles: any[];\r\n DefaultSearchData: any[];\r\n}\r\n\r\nvar IsTriggered = false;\r\nvar self;\r\nvar customAttributesInfo;\r\nvar selectedCustomAttributes;\r\nvar modelYear;\r\nvar modelYearMin;\r\nvar modelYearMax;\r\nvar DisableFields = false;\r\nvar SelectedUserPreferenceId = 0;\r\n//var defaultAssetTypes;\r\nvar selectedSearchParams = null;\r\nvar defaultSearch = false;\r\nvar IsDefaultCheckboxClicked = false;\r\nvar IsFromLoadState = false;\r\nvar DefaultCheckBoxState = false;\r\nvar isFirefox;\r\nvar hasReefers: boolean = false;\r\nvar hasGensets: boolean = false;\r\nvar hasDrys: boolean = false;\r\nvar hasChassis: boolean = false;\r\nvar assetCount = 0;\r\nvar showOem: boolean = false;\r\nvar showInvState: boolean = false;\r\n//var windowTitle = \"\";\r\nconst mathOperators = [\r\n { Operator: \"=\", value: 1 },\r\n { Operator: \"<\", value: 2 },\r\n { Operator: \"<=\", value: 3 },\r\n { Operator: \">\", value: 4 },\r\n { Operator: \">=\", value: 5 },\r\n { Operator: \">\", value: 6 },\r\n { Operator: \"<>\", value: 7 },\r\n];\r\nconst assetStates = [\r\n { label: \"Active\", value: 'A' },\r\n { label: \"Disconnected\", value: 'D' },\r\n { label: \"Retired\", value: 'R' },\r\n];\r\nexport class AdvanceSearch extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n IsTriggered = false;\r\n customAttributesInfo = {};\r\n selectedCustomAttributes = {};\r\n\r\n var assetTypes = this.loadAssetTypes();\r\n //defaultAssetTypes = assetTypes.join(\",\");\r\n this.GetSelectedSearchControls();\r\n var filter: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedGeofence: '', SelectedGeofenceInside: '', SelectedInterval: '', SelectedReefer: '', SelectedAssetStates: JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState,///RCNG-70,\r\n SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: '', SelectedBookingNumber: ''\r\n , SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: ''//WI-26881\r\n , SelectedCargoCareProfiles: ''\r\n };\r\n\r\n if (this.props.previousState != null && this.props.previousState != undefined) {\r\n if (this.props.previousState.SelectedAssetTypes != null) {\r\n filter.SelectedAssetTypes = this.props.previousState.SelectedAssetTypes;\r\n }\r\n\r\n if (this.props.previousState.SelectedAssetStates != null && this.props.previousState.SelectedAssetStates != \"\") { //RCNG-781\r\n filter.SelectedAssetStates = this.props.previousState.SelectedAssetStates;\r\n }\r\n\r\n if (this.props.previousState.SelectedOem != null) {\r\n filter.SelectedOem = this.props.previousState.SelectedOem;\r\n }\r\n\r\n if (this.props.previousState.SelectedCountry != null) {\r\n filter.SelectedCountry = this.props.previousState.SelectedCountry;\r\n }\r\n\r\n if (this.props.previousState.SelectedGeofence != null) {\r\n filter.SelectedGeofence = this.props.previousState.SelectedGeofence;\r\n }\r\n //WI-26881:Start\r\n if (this.props.previousState.SelectedVesselCD != null) {\r\n filter.SelectedVesselCD = this.props.previousState.SelectedVesselCD;\r\n }\r\n if (this.props.previousState.SelectedVoyage != null) {\r\n filter.SelectedVoyage = this.props.previousState.SelectedVoyage;\r\n }\r\n if (this.props.previousState.SelectedCall != null) {\r\n filter.SelectedCall = this.props.previousState.SelectedCall;\r\n }\r\n //WI-26881:End\r\n if (this.props.previousState.SelectedGeofenceInside != null) {\r\n filter.SelectedGeofenceInside = this.props.previousState.SelectedGeofenceInside;\r\n }\r\n\r\n if (this.props.previousState.SelectedInterval != null) {\r\n filter.SelectedInterval = this.props.previousState.SelectedInterval;\r\n }\r\n\r\n if (this.props.previousState.SelectedReefer != null) {\r\n filter.SelectedReefer = this.props.previousState.SelectedReefer;\r\n }\r\n\r\n if (this.props.previousState.SelectedVesselCode != null) {\r\n filter.SelectedVesselCode = this.props.previousState.SelectedVesselCode;\r\n }\r\n\r\n if (this.props.previousState.SelectedBookingNumber != null) {\r\n filter.SelectedBookingNumber = this.props.previousState.SelectedBookingNumber;\r\n }\r\n\r\n if (this.props.previousState.SelectedCargoCareProfiles != null) {//RCNG-3392\r\n filter.SelectedCargoCareProfiles = this.props.previousState.SelectedCargoCareProfiles;\r\n }\r\n\r\n if (this.props.previousState.StatusFilters != null && this.props.previousState.StatusFilters.length > 0) {\r\n filter.StatusFilters = this.props.previousState.StatusFilters;\r\n }\r\n\r\n if (this.props.previousState.AllReefers != null) {\r\n filter.AllReefers = this.props.previousState.AllReefers;\r\n }\r\n }\r\n\r\n this.state = {\r\n Oemtypes: [], RefCountry: [], RefGeofences: [], RefVessels: [], //WI-26881\r\n suggestionsFenceId: [], suggestionsVesselId: [], suggestionsVoyage: [], suggestionsCalls: [],//WI-26881\r\n targetId: '', Filters: filter, CustomAttributes: this.props.CustomAttributes, CustomAttributesHtml: '', selectedOperator: '=',\r\n SerachState: 'SearchOnly', SearchName: '', IsDefaultSearch: false, SelectedSearch: 'Saved Searches', SearchNamesList: [], AssetTypes: assetTypes,\r\n stayOpen: false, disabled: false, removeSelected: false, rtl: false, AssetStates: assetStates, SelectedSearchControls: [],\r\n CargoCareProfiles: [], DefaultSearchData: []//this.props.CargoCareProfiles, \r\n\r\n };\r\n self = this;\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetGeofences')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var fenceData = data.map(fence => fence.Tag);\r\n this.setState({ RefGeofences: fenceData });\r\n }\r\n });\r\n //WI-26881:Start\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/Getvessels')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n //var VesselData = data.map(fence => fence.VesselCd);\r\n //var uniqueVesselData = uniq(VesselData);\r\n this.setState({ RefVessels: data });\r\n }\r\n });\r\n //WI-26881:End\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/OemTypes')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ Oemtypes: data });\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/RefCountry')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefCountry: data });\r\n });\r\n\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetCargoCareCustomerProfiles');\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({ CargoCareProfiles: data });\r\n // });\r\n\r\n if (this.props.CustomAttributes != null && this.props.CustomAttributes != undefined && this.props.CustomAttributes.length > 0) {\r\n this.renderAttributesHtml();\r\n }\r\n\r\n isFirefox = /Firefox[\\/\\s](\\d+\\.\\d+)/.test(navigator.userAgent);\r\n }\r\n\r\n loadAssetTypes() {\r\n var assetTypes = [];\r\n var customer = JSON.parse(sessionStorage.getItem('customerDetails'));\r\n if (customer != null && customer != undefined) {\r\n if (customer.HasDry)\r\n assetTypes.push('Dry');\r\n if (customer.HasGenset)\r\n assetTypes.push('Genset');\r\n if (customer.HasReefer)\r\n assetTypes.push('Reefer');\r\n if (customer.HasChassis)\r\n assetTypes.push('Chassis');\r\n }\r\n return assetTypes;\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.CustomAttributes != null && nextProps.CustomAttributes != undefined && nextProps.CustomAttributes.length > 0) {\r\n this.setState({ CustomAttributes: nextProps.CustomAttributes }, () => this.renderAttributesHtml());\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n assetCount = 0;\r\n var customer = JSON.parse(sessionStorage.getItem('customerDetails'));\r\n if (customer != null && customer != undefined) {\r\n if (customer.GroupsRights != null && customer.GroupsRights != undefined) { // RCNG 940\r\n if (customer.HasReefer && customer.GroupsRights.includes('Reefers')) {\r\n assetCount += 1;\r\n showOem = true;\r\n showInvState = true;\r\n hasReefers = true\r\n }\r\n if (customer.HasGenset && customer.GroupsRights.includes('Gensets')) {\r\n assetCount += 1;\r\n showOem = true;\r\n showInvState = true;\r\n hasGensets = true;\r\n }\r\n if (customer.HasDry && customer.GroupsRights.includes('Dry')) {\r\n assetCount += 1;\r\n showInvState = true;\r\n hasDrys = true;\r\n }\r\n if (customer.HasChassis && customer.GroupsRights.includes('Chassis')) {\r\n assetCount += 1;\r\n hasChassis = true;\r\n }\r\n }\r\n }\r\n this.LoadUserPreferenceSearchNames(this.state.SearchName);\r\n this.loadCargoCareProfiles();\r\n /* WI 24157 commented\r\n //var checkDefaulSearchEnable = JSON.parse(sessionStorage.getItem('UserInfo')).ShowSaveSearchOnLoad;\r\n //if (checkDefaulSearchEnable)\r\n // this.GetDefaultSearchParams();\r\n //else\r\n // setTimeout(() => { this.hideGlobalLoader() }, 5000); */\r\n var params = queryString.parse(window.location.search);\r\n if (!isNullOrUndefined(params.assetId)) {\r\n $(\"#globalLoader\").show();\r\n var filters = self.state.Filters;\r\n filters.SelectedReefer = params.assetId;\r\n\r\n setTimeout(() => { self.LoadGetAllAssetTypeData() }, 5000);\r\n }\r\n else {\r\n var searchState = sessionStorage.getItem(\"DefaultSearch\");\r\n if (searchState == \"enabled\")\r\n this.GetDefaultSearchParams();\r\n //else {\r\n // this.ClearFilter();\r\n //}\r\n }\r\n\r\n $(\"#ddlSavedSearch\").show();\r\n $(\"#txtSearchName\").hide();\r\n }\r\n\r\n hideGlobalLoader() {\r\n $(\"#globalLoader\").hide();\r\n }\r\n\r\n GetDefaultSearchParams() {\r\n var functionID = 1;\r\n var url = Config.ApiBaseUrl + '/api/User/GetDefaultSearchParams?FunctionId=' + functionID;\r\n var request = RCUtils.FetchRequest(url);\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n this.setState({ DefaultSearchData: data });\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');//this.props.dashboardPreferenceId;\r\n var defaultPreference: any = data.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n if(defaultPreference != undefined && defaultPreference.length>0) {\r\n $(\"#globalLoader\").show();\r\n var userPreferences = JSON.parse(defaultPreference[0].PreferenceData);\r\n this.FillDefaultSearchParams(userPreferences);\r\n SelectedUserPreferenceId = defaultPreference[0].UserPreferenceId;\r\n selectedSearchParams = userPreferences;\r\n this.setState({ SelectedSearch: JSON.parse(JSON.stringify(defaultPreference[0].SearchName)), IsDefaultSearch: defaultPreference[0].DefaultSearch }, () => { self.loadDefaultSavedSearch(); });\r\n \r\n DefaultCheckBoxState = defaultPreference[0].DefaultSearch;\r\n IsFromLoadState = defaultPreference[0].DefaultSearch;\r\n sessionStorage.setItem('DefaultSearch', 'enabled');\r\n } \r\n }\r\n else\r\n setTimeout(() => { this.hideGlobalLoader() }, 5000);\r\n });\r\n }\r\n\r\n static applyAdvanceSearchPreferences(searchPreference: any, dashboardPreferenceId) {\r\n if(self != undefined) { \r\n self.RestoreDefaultSearch(dashboardPreferenceId, searchPreference);\r\n }\r\n else\r\n $(\"#globalLoader\").hide();\r\n }\r\n \r\n RestoreDefaultSearch(dashboardPreferenceId : any, searchPreference: any){\r\n var defaultPreference: any = self.state.DefaultSearchData.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n if(defaultPreference != undefined && defaultPreference.length>0) {\r\n //$(\"#globalLoader\").show();\r\n var userPreferences = JSON.parse(defaultPreference[0].PreferenceData);\r\n this.FillDefaultSearchParams(userPreferences);\r\n SelectedUserPreferenceId = defaultPreference[0].UserPreferenceId;\r\n selectedSearchParams = userPreferences;\r\n this.setState({ SelectedSearch: JSON.parse(JSON.stringify(defaultPreference[0].SearchName)), IsDefaultSearch: defaultPreference[0].DefaultSearch }, () => { self.loadDefaultSavedSearch(); });\r\n \r\n DefaultCheckBoxState = defaultPreference[0].DefaultSearch;\r\n IsFromLoadState = defaultPreference[0].DefaultSearch;\r\n //sessionStorage.setItem('DefaultSearch', 'enabled');\r\n } \r\n else {\r\n this.FillDefaultSearchParams(searchPreference);\r\n SelectedUserPreferenceId = 0;\r\n selectedSearchParams = \"\";\r\n DefaultCheckBoxState = false;\r\n this.setState({\r\n SearchName: '',\r\n IsDefaultSearch: DefaultCheckBoxState,\r\n SelectedSearch: 'Saved Searches'\r\n });\r\n IsFromLoadState = false;\r\n //sessionStorage.setItem('DefaultSearch', 'disabled');\r\n $(\"#globalLoader\").hide();\r\n }\r\n }\r\n\r\n FillDefaultSearchParams(userPreference: any) {\r\n var filters = this.state.Filters;\r\n filters.AllReefers = userPreference.AllReefers;\r\n filters.SelectedCountry = userPreference.SelectedCountry;\r\n if (userPreference.SelectedGeofence != null && userPreference.SelectedGeofence != undefined)\r\n filters.SelectedGeofence = userPreference.SelectedGeofence;\r\n else\r\n filters.SelectedGeofence = \"\";\r\n filters.SelectedGeofenceInside = userPreference.SelectedGeofenceInside;\r\n filters.SelectedInterval = userPreference.SelectedInterval;\r\n if (userPreference.SelectedAssetTypes != null && userPreference.SelectedAssetTypes != undefined)\r\n filters.SelectedAssetTypes = userPreference.SelectedAssetTypes;\r\n else\r\n filters.SelectedAssetTypes = \"\";\r\n if (userPreference.SelectedAssetStates != null && userPreference.SelectedAssetStates != undefined && userPreference.SelectedAssetStates != \"\")//RCNG-70;\r\n filters.SelectedAssetStates = userPreference.SelectedAssetStates;\r\n else\r\n filters.SelectedAssetStates = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;///RCNG-70;//RCNG-59\r\n filters.SelectedOem = userPreference.SelectedOem;\r\n filters.SelectedReefer = userPreference.SelectedReefer;\r\n filters.SelectedVesselCode = userPreference.SelectedVesselCode;\r\n filters.SelectedBookingNumber = userPreference.SelectedBookingNumber;\r\n filters.SelectedCargoCareProfiles = userPreference.SelectedCargoCareProfiles;//RCNG-3392\r\n\r\n //WI-26881:Start\r\n if (userPreference.SelectedVesselCD != null && userPreference.SelectedVesselCD != undefined)\r\n filters.SelectedVesselCD = userPreference.SelectedVesselCD;\r\n else\r\n filters.SelectedVesselCD = \"\";\r\n if (userPreference.SelectedVoyage != null && userPreference.SelectedVoyage != undefined)\r\n filters.SelectedVoyage = userPreference.SelectedVoyage;\r\n else\r\n filters.SelectedVoyage = \"\";\r\n if (userPreference.SelectedCall != null && userPreference.SelectedCall != undefined)\r\n filters.SelectedCall = userPreference.SelectedCall;\r\n else\r\n filters.SelectedCall = \"\";\r\n //WI-26881:End\r\n filters.StatusFilters = userPreference.StatusFilters;\r\n customAttributesInfo = userPreference.CustomAttributeFilters;\r\n selectedCustomAttributes = cloneDeep(customAttributesInfo);\r\n\r\n this.setState({ Filters: filters });\r\n this.BindCustomAttributesValues();\r\n }\r\n loadCargoCareProfiles() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetCargoCareCustomerProfilesAdvanceSearch');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CargoCareProfiles: data });\r\n });\r\n }\r\n LoadUserPreferenceSearchNames(searchName: any) {\r\n var url = Config.ApiBaseUrl + '/api/User/GetUserPreferenceSearchNames';\r\n var preferencedata = { UserID: 0, FunctionID: 1, Type: '' };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ SearchNamesList: data }, () => { this.GetDataForNewlySavedUserPreference(searchName); });\r\n });\r\n\r\n }\r\n\r\n renderAttributesHtml() {\r\n this.setState({ CustomAttributesHtml: this.renderCustomAttributeHtml() });\r\n }\r\n MathOptionChange(event: React.FormEvent, inputName: string) {\r\n\r\n var Value: string = event.currentTarget.value\r\n\r\n this.setState({\r\n selectedOperator: Value\r\n }, () => {\r\n inputName = inputName.replace(' ', '')\r\n delete customAttributesInfo[inputName];\r\n this.updateInput(inputName, modelYear);\r\n });\r\n }\r\n renderCustomAttributeHtml() {\r\n var renderAttributesHtml: any[] = [];\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n $.each(this.state.CustomAttributes, function (i, val) {\r\n if (val.AttributeTypeCD == 'E') {\r\n renderAttributesHtml.push(self.renderCustomAttributeDropDown(val.AttributeTypeEnumValsInfo, val.AttributeName));\r\n }\r\n else if (val.AttributeTypeCD == 'A') {\r\n renderAttributesHtml.push(self.renderCustomAttributeTextBox(val.AttributeName));\r\n }\r\n else if (val.AttributeTypeCD == 'N') {\r\n renderAttributesHtml.push(self.renderCustomAttributeMathOperatorTextBox(val.AttributeName, val.AttributeTypeNumericInfo));\r\n }\r\n });\r\n }\r\n\r\n return
\r\n {renderAttributesHtml}\r\n
;\r\n }\r\n\r\n renderCustomAttributeDropDown(AttributeTypeInfo: any[], inputName: string) {\r\n var inputControlName = inputName.replace(\" \", \"\");\r\n return
\r\n \r\n
;\r\n }\r\n\r\n renderCustomAttributeTextBox(inputName: string) {\r\n var inputControlName = inputName.replace(\" \", \"\");\r\n return
\r\n
\r\n \r\n
\r\n
\r\n }\r\n\r\n renderCustomAttributeMathOperatorTextBox(inputName: string, validationVal: any[]) {\r\n var inputControlName = inputName.replace(\" \", \"\");\r\n var validationStrObj = validationVal[0];\r\n modelYearMin = validationStrObj[\"MinValue\"];\r\n modelYearMax = validationStrObj[\"MaxValue\"];\r\n if (validationStrObj != null && validationStrObj != \"\") {\r\n var validationStr = \"This value must be a number greater than or equal to \" + validationStrObj[\"MinValue\"] + \" and less than or equal to \" + validationStrObj[\"MaxValue\"] + \".\";\r\n }\r\n return
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n\r\n customAttributeDropDownChange(event: React.FormEvent) {\r\n var inputName = event.currentTarget.id.split('select')[1];\r\n var inputValue = event.currentTarget.value;\r\n $('#select' + inputName).removeClass(\"fw-semibold\");\r\n\r\n if (customAttributesInfo.hasOwnProperty(inputName)) {\r\n var propertyInput = inputValue.replace(' ', '')\r\n if (propertyInput == inputName) {\r\n delete customAttributesInfo[inputName];\r\n }\r\n else {\r\n customAttributesInfo[inputName] = inputValue;\r\n if ($('#select' + inputName).hasClass('fw-semibold') == false)\r\n $('#select' + inputName).addClass(\"fw-semibold\");\r\n }\r\n }\r\n else {\r\n customAttributesInfo[inputName] = inputValue;\r\n $('#select' + inputName).addClass(\"fw-semibold\");\r\n }\r\n }\r\n\r\n customAttributeNumericTextChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var inputName = event.currentTarget.id.split('txt')[1];\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n inputValue = Value;\r\n else {\r\n event.currentTarget.value = \"\";\r\n inputValue = \"\";\r\n modelYear = \"\";\r\n customAttributesInfo[inputName] = \"\";\r\n return;\r\n }\r\n //var inputName = event.currentTarget.id.split('txt')[1];\r\n var inputValue = event.currentTarget.value;\r\n modelYear = event.currentTarget.value;\r\n //var Value: string = event.currentTarget.value.trim();\r\n this.updateInput(inputName, inputValue);\r\n\r\n }\r\n\r\n customAttributeTextChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var inputName = event.currentTarget.id.split('txt')[1];\r\n const IsMatch = /^[a-zA-Z0-9]*$/;\r\n if (IsMatch.test(Value))\r\n inputValue = Value;\r\n else {\r\n event.currentTarget.value = \"\";\r\n inputValue = \"\";\r\n customAttributesInfo[inputName] = \"\";\r\n return;\r\n }\r\n //var inputName = event.currentTarget.id.split('txt')[1];\r\n var inputValue = event.currentTarget.value.trim();\r\n //var Value: string = event.currentTarget.value.trim();\r\n this.updateTextInput(inputName, inputValue);\r\n\r\n }\r\n\r\n updateTextInput(inputName: string, inputValue: string) {\r\n $('#txt' + inputName).addClass(\"fw-semibold\");\r\n if (customAttributesInfo.hasOwnProperty(inputName)) {\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n customAttributesInfo[inputName] = inputValue;\r\n }\r\n else {\r\n delete customAttributesInfo[inputName];\r\n }\r\n }\r\n else {\r\n customAttributesInfo[inputName] = inputValue;\r\n }\r\n }\r\n\r\n updateInput(inputName: string, inputValue: string) {\r\n $('#txt' + inputName).addClass(\"fw-semibold\");\r\n if (customAttributesInfo.hasOwnProperty(inputName)) {\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n customAttributesInfo[inputName] = this.state.selectedOperator + \"&Cum&\" + inputValue;\r\n // customAttributesInfo[inputName] = inputValue;\r\n }\r\n else {\r\n delete customAttributesInfo[inputName];\r\n }\r\n }\r\n else {\r\n if (inputValue != null && inputValue != undefined && inputValue != '')\r\n customAttributesInfo[inputName] = this.state.selectedOperator + \"&Cum&\" + inputValue;\r\n //customAttributesInfo[inputName] = inputValue;\r\n }\r\n\r\n }\r\n\r\n InsideGeofencechange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n $('#selectInsideGeofence').removeClass(\"fw-semibold\");\r\n\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"Geofence Status\") {\r\n filters.SelectedGeofenceInside = \"\";\r\n }\r\n else {\r\n if ($('#selectInsideGeofence').hasClass('fw-semibold') == false)\r\n $('#selectInsideGeofence').addClass(\"fw-semibold\");\r\n filters.SelectedGeofenceInside = Value;\r\n }\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n Vesselcodechange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n $(this).addClass(\"fw-semibold\");\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedVesselCode = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n suggestionsFenceId: this.getFenceNameSuggestions(value)\r\n });\r\n };\r\n getFenceNameSuggestions(value) {\r\n var geofences = this.state.RefGeofences;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : geofences.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n suggestionsFenceId: []\r\n });\r\n };\r\n onChangeFenceId = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SelectedGeofence = newValue;\r\n $('#geofenceID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n };\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n //WI-26881:Start\r\n onSuggestionsFetchRequestedforvessel = ({ value }) => {\r\n this.setState({\r\n suggestionsVesselId: this.getvesselNameSuggestions(value)\r\n });\r\n };\r\n getvesselNameSuggestions(value) {\r\n //var vessels = this.state.RefVessels;\r\n var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var vessels = uniq(VesselData);\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : vessels.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequestedforvessel = () => {\r\n this.setState({\r\n suggestionsVesselId: []\r\n });\r\n };\r\n onChangeVesselId = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SelectedVesselCD = newValue;\r\n filters.SelectedVoyage = '';\r\n filters.SelectedCall = '';\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n this.setState({\r\n suggestionsVoyage: this.getvoyageNameSuggestions(newValue)\r\n });\r\n };\r\n onChangcall = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SelectedCall = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n };\r\n renderSuggestionVesselvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionVesselValue(suggestion) {\r\n return suggestion;\r\n }\r\n onSuggestionsFetchRequestedforvoyage = ({ value }) => {\r\n this.setState({\r\n suggestionsVoyage: this.voyageNameSuggestions(value)\r\n });\r\n };\r\n onSuggestionsFetchRequestedforcall = ({ value }) => {\r\n this.setState({\r\n suggestionsCalls: this.callSuggestions(value)\r\n });\r\n };\r\n callSuggestions(value) {\r\n if (this.state.Filters.SelectedVesselCD != \"\" && this.state.Filters.SelectedVesselCD != null && this.state.Filters.SelectedVoyage != \"\" && this.state.Filters.SelectedVoyage != null) {\r\n var VesselData = this.state.RefVessels;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.Filters.SelectedVesselCD\r\n && tag.VoyageNum === this.state.Filters.SelectedVoyage && tag.CallNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n //return test;\r\n return uniq(test.map(fence => fence.CallNum));\r\n }\r\n else\r\n return [];\r\n };\r\n voyageNameSuggestions(value) {\r\n if (this.state.Filters.SelectedVesselCD != \"\" && this.state.Filters.SelectedVesselCD != null) {\r\n var VesselData = this.state.RefVessels;\r\n //var vessels = uniq(VesselData);\r\n //var vessels = this.state.RefVessels;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.Filters.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n //return test;\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n }\r\n else\r\n return [];\r\n };\r\n getvoyageNameSuggestions(value) {\r\n //var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var VesselData = this.state.RefVessels;\r\n //var vessels = uniq(VesselData);\r\n //var vessels = this.state.RefVessels;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag =>\r\n tag.VesselCd.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n //return test;\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n //return (inputLength === 0 || this.state.RefVessels == null) ? [] : this.state.vesselData.PortOfDepartureList.filter(PortOfDeparture =>\r\n // PortOfDeparture.toLowerCase().slice(0, inputLength) === inputValue\r\n //);\r\n };\r\n getcallSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.Filters.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.CallNum));\r\n };\r\n onSuggestionsClearRequestedforvoyage = () => {\r\n this.setState({\r\n suggestionsVoyage: []\r\n });\r\n };\r\n onSuggestionsClearRequestedforcall = () => {\r\n this.setState({\r\n suggestionsCalls: []\r\n });\r\n };\r\n onChangevoyage = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SelectedVoyage = newValue;\r\n //$('#vesselID').addClass(\"fw-semibold\");\r\n filters.SelectedCall = '';\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n this.setState({\r\n suggestionsCalls: this.getcallSuggestions(newValue)\r\n });\r\n //this.getVoyageSuggestions(newValue);\r\n };\r\n renderSuggestionvoyagevalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionvoyageValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestioncallvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestioncallValue(suggestion) {\r\n return suggestion;\r\n }\r\n //WI-26881:End\r\n static onSetPreviousState() {\r\n if (self != null && self != undefined) {\r\n var filters = self.state.Filters;//self.props.previousState;//RCNG-97\r\n if (filters.SelectedGeofence == null)\r\n filters.SelectedGeofence = \"\";\r\n self.setState({\r\n Filters: filters\r\n });\r\n }\r\n }\r\n\r\n ReeferIdschange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n $('#txtReeferId').addClass(\"fw-semibold\");\r\n var commaValue: string = this.GetMultiLineCsv(event.currentTarget.value);\r\n filters.SelectedReefer = commaValue;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n BookingNumberchange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n $('#txtBooking').addClass(\"fw-semibold\");\r\n var commaValue: string = this.GetMultiLineCsv(event.currentTarget.value);\r\n filters.SelectedBookingNumber = commaValue;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n GetMultiLineCsv(value) {\r\n //while (value.Contains(Environment.NewLine) || value.Contains('\\r') || value.Contains('\\n'))--->environment new line pending\r\n while (value.includes('\\r') || value.includes('\\n') || value.includes(';') || value.includes(' ')) {\r\n //while (value.includes('\\r') || value.includes('\\n') || value.includes(';')) {\r\n //value = value.Replace(Environment.NewLine, \",\");\r\n value = value.replace('\\r'.toString(), \",\");\r\n value = value.replace('\\n'.toString(), \",\");\r\n value = value.replace(';'.toString(), \",\");\r\n value = value.replace(' '.toString(), \",\");\r\n }\r\n while (value.includes(\",,\")) {\r\n value = value.replace(\",,\", \",\");\r\n }\r\n //s = s.Replace(\",\", \",\" + Environment.NewLine);\r\n return value;\r\n }\r\n\r\n Oemchange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n $('#selectOemType').removeClass('fw-semibold');\r\n\r\n if (Value == \"OEM Type\") {\r\n filters.SelectedOem = \"\";\r\n }\r\n else {\r\n if ($('#selectOemType').hasClass('fw-semibold') == false)\r\n $('#selectOemType').addClass('fw-semibold');\r\n filters.SelectedOem = Value;\r\n }\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n Countrychange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n $('#selectRefCountry').removeClass('fw-semibold');\r\n\r\n if (Value == \"Country\") {\r\n filters.SelectedCountry = \"\";\r\n }\r\n else {\r\n if ($('#selectRefCountry').hasClass('fw-semibold') == false)\r\n $('#selectRefCountry').addClass('fw-semibold');\r\n filters.SelectedCountry = Value;\r\n }\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ReportingIntervalchange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n $('#selectReportingInterval').removeClass('fw-semibold');\r\n\r\n if (Value == \"Reporting (min)\") {\r\n filters.SelectedInterval = \"\";\r\n }\r\n else {\r\n filters.SelectedInterval = Value;\r\n if ($('#selectReportingInterval').hasClass('fw-semibold') == false)\r\n $('#selectReportingInterval').addClass('fw-semibold');\r\n }\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ClearFilter(isFromMicroAlarmChart: boolean) {\r\n var filters = this.state.Filters;\r\n filters.SelectedAssetTypes = \"\";\r\n filters.SelectedAssetStates = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;//RCNG-59//RCNG-70\r\n filters.SelectedCountry = \"\";\r\n filters.SelectedGeofence = \"\";\r\n filters.SelectedGeofenceInside = \"\";\r\n filters.SelectedInterval = \"\";\r\n filters.SelectedOem = \"\";\r\n filters.SelectedReefer = \"\";\r\n filters.SelectedVesselCode = \"\";\r\n filters.SelectedBookingNumber = \"\";\r\n //RCNG-3571-as this need to carry fwd\r\n if (!isFromMicroAlarmChart)\r\n filters.SelectedCargoCareProfiles = \"\";//RCNG-3392\r\n filters.SelectedVesselCD = \"\";//WI-26881\r\n filters.SelectedVoyage = \"\";//WI-26881\r\n filters.SelectedCall = \"\";//WI-26881 \r\n filters.StatusFilters = [];\r\n customAttributesInfo = {};\r\n filters.CustomAttributeFilters = customAttributesInfo;\r\n selectedCustomAttributes = {};\r\n modelYear = \"\";\r\n $('#txtReeferId').removeClass('fw-semibold');\r\n $('#txtBooking').removeClass('fw-semibold');\r\n $('#selectInsideGeofence').removeClass('fw-semibold');\r\n $('#txtGeofence').removeClass('fw-semibold');\r\n $('#selectOemType').removeClass('fw-semibold');\r\n $('#selectRefCountry').removeClass('fw-semibold');\r\n $('#selectReportingInterval').removeClass('fw-semibold');\r\n $('#txtVesselCode').removeClass('fw-semibold');\r\n\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n $.each(this.state.CustomAttributes, function (i, val) {\r\n if (val.AttributeTypeCD.trim() == 'E') {\r\n var inputControlName = val.AttributeName.replace(' ', '');\r\n $('#select' + inputControlName).val(val.AttributeName);\r\n $('#select' + inputControlName).removeClass(\"fw-semibold\");\r\n }\r\n else if (val.AttributeTypeCD.trim() == 'A' || val.AttributeTypeCD.trim() == 'N') {\r\n var inputControlName = val.AttributeName.replace(' ', '');\r\n $('#txt' + inputControlName).val('');\r\n $('#txt' + inputControlName).removeClass(\"fw-semibold\");\r\n }\r\n });\r\n }\r\n var defaultOperator = \"=\";\r\n $(\"#MathOption\").val(defaultOperator);\r\n DefaultCheckBoxState = false;\r\n this.setState({\r\n SearchName: '',\r\n IsDefaultSearch: DefaultCheckBoxState,\r\n SelectedSearch: 'Saved Searches'\r\n });\r\n SelectedUserPreferenceId = 0;\r\n this.setState({\r\n Filters: filters\r\n });\r\n $(\"#ddlSavedSearch\").show();\r\n $(\"#txtSearchName\").hide();\r\n $('#InventoryState .Select-control').removeClass(\"MandatoryBorder\");//RCNG-92\r\n sessionStorage.setItem('DefaultSearch', 'disabled');\r\n //IsDefaultCheckboxClicked = true;\r\n }\r\n ValidateNumaricValue(param) {\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(param))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n static ClearReeferSearchFilters(isFromMicroAlarmChart: boolean) {\r\n if (self != undefined) {\r\n self.ClearFilter(isFromMicroAlarmChart);\r\n }\r\n }\r\n\r\n onDefaultCheck(event: React.FormEvent) {\r\n DefaultCheckBoxState = event.currentTarget.checked;\r\n //IsDefaultCheckboxClicked = true;\r\n this.setState({ IsDefaultSearch: DefaultCheckBoxState });\r\n this.onChangeDefaultSearch();\r\n }\r\n\r\n onChangeDefaultSearch() {\r\n if (IsFromLoadState) {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"Would you like to change the search named \" + this.state.SelectedSearch + \" to a non-default search?\", this.SaveUserSearchConfirm.bind(this), this.onCancelSaveDefaultSearch.bind(this));\r\n }\r\n }\r\n\r\n ApplyFilter() {\r\n if (this.state.SelectedSearch == \"New\") {\r\n if (this.state.AssetTypes.indexOf(\"Reefer\") > -1 && (this.state.Filters.SelectedAssetStates == \"\" || this.state.Filters.SelectedAssetStates == null)) {//RCNG-92,RCNG-112\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-92 \r\n return;\r\n }\r\n var searchName = this.state.SearchName;\r\n if (searchName.trim().length === 0) {\r\n PopupWindow.showErrorMessage(\"Search\", \"Please enter a valid search name.\");\r\n return;\r\n }\r\n if (searchName == null || searchName == '') {\r\n PopupWindow.showErrorMessage(\"Search\", \"Please enter a valid search name.\");\r\n return;\r\n }\r\n else {\r\n if (DefaultCheckBoxState) {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"Save the search named \" + this.state.SearchName + \" as the default search?\", this.SaveUserSearchConfirm.bind(this), this.onCancelSaveSearch.bind(this));\r\n }\r\n else {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"Save the search named \" + this.state.SearchName + \"?\", this.SaveUserSearchConfirm.bind(this), this.onCancelSaveSearch.bind(this));\r\n //this.SaveUserSearch();\r\n }\r\n }\r\n }\r\n else {\r\n if (this.state.AssetTypes.indexOf(\"Reefer\") > -1 && (this.state.Filters.SelectedAssetStates == \"\" || this.state.Filters.SelectedAssetStates == null)) {//RCNG-92,RCNG-112\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-92 \r\n return;\r\n }\r\n var filterChanged = this.CompareExistSearchParams();\r\n if (!filterChanged) {\r\n var searchName = this.state.SelectedSearch;\r\n if (DefaultCheckBoxState) {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"Update the search named \" + searchName + \" as the default search?\", this.SaveUserSearchConfirm.bind(this), this.onCancelSaveSearch.bind(this));\r\n }\r\n else {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"Update the search named \" + searchName + \" ?\", this.SaveUserSearchConfirm.bind(this), this.onCancelSaveSearch.bind(this));\r\n }\r\n }\r\n else\r\n this.performSearchOperation();\r\n }\r\n }\r\n\r\n CompareExistSearchParams() {\r\n\r\n var isModified = true;\r\n if (SelectedUserPreferenceId != 0 && selectedSearchParams != undefined && selectedSearchParams != null) {\r\n var userPreference = selectedSearchParams;\r\n var filters = this.state.Filters;\r\n if (userPreference.SelectedGeofence == null || userPreference.SelectedGeofence == undefined)\r\n userPreference.SelectedGeofence = \"\";\r\n if (userPreference.SelectedAssetTypes == null || userPreference.SelectedAssetTypes == undefined)\r\n userPreference.SelectedAssetTypes = \"\";\r\n if (userPreference.SelectedAssetStates == null || userPreference.SelectedAssetStates == undefined)\r\n userPreference.SelectedAssetStates = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;///RCNG-70;//RCNG-59\r\n //if (filters.AllReefers != userPreference.AllReefers)\r\n // isModified = false;\r\n if (filters.SelectedCountry != userPreference.SelectedCountry)\r\n isModified = false;\r\n if (filters.SelectedGeofence != userPreference.SelectedGeofence)\r\n isModified = false;\r\n //WI-26881:Start\r\n if (filters.SelectedVesselCD != userPreference.SelectedVesselCD)\r\n isModified = false;\r\n if (filters.SelectedVoyage != userPreference.SelectedVoyage)\r\n isModified = false;\r\n if (filters.SelectedCall != userPreference.SelectedCall)\r\n isModified = false;\r\n //WI-26881:End\r\n if (filters.SelectedGeofenceInside != userPreference.SelectedGeofenceInside)\r\n isModified = false;\r\n if (filters.SelectedInterval != userPreference.SelectedInterval)\r\n isModified = false;\r\n if (filters.SelectedAssetTypes != userPreference.SelectedAssetTypes)\r\n isModified = false;\r\n if (filters.SelectedAssetStates != userPreference.SelectedAssetStates)\r\n isModified = false;\r\n if (filters.SelectedOem != userPreference.SelectedOem)\r\n isModified = false;\r\n if (filters.SelectedReefer != userPreference.SelectedReefer)\r\n isModified = false;\r\n if (filters.SelectedVesselCode != userPreference.SelectedVesselCode)\r\n isModified = false;\r\n if (filters.SelectedBookingNumber != userPreference.SelectedBookingNumber)\r\n isModified = false;\r\n if (customAttributesInfo == null || customAttributesInfo == undefined)\r\n customAttributesInfo = {};\r\n\r\n if (selectedCustomAttributes == null || selectedCustomAttributes == undefined)\r\n selectedCustomAttributes = {};\r\n\r\n if (this.getCustomAttributesDiff(customAttributesInfo, selectedCustomAttributes).length > 0)\r\n isModified = false;\r\n //if (this.state.IsDefaultSearch != defaultSearch)\r\n // isModified = false;\r\n //if (IsDefaultCheckboxClicked)\r\n // isModified = false;\r\n if (DefaultCheckBoxState != IsFromLoadState)\r\n isModified = false;\r\n //if (!IsFromLoadState)\r\n // isModified = false;\r\n\r\n }\r\n return isModified;\r\n\r\n }\r\n\r\n getCustomAttributesDiff(obj1, obj2) {\r\n const diff = Object.keys(obj1).reduce((result, key) => {\r\n if (!obj2.hasOwnProperty(key)) {\r\n result.push(key);\r\n } else if (isEqual(obj1[key], obj2[key])) {\r\n const resultKeyIndex = result.indexOf(key);\r\n result.splice(resultKeyIndex, 1);\r\n }\r\n return result;\r\n }, Object.keys(obj2));\r\n\r\n return diff;\r\n }\r\n\r\n loadDefaultSavedSearch() {\r\n this.ResetAssetsData();\r\n setTimeout(() => { this.LoadGetAllAssetTypeData() }, 5000);\r\n }\r\n\r\n performSearchOperation() {\r\n var filters = this.state.Filters;\r\n var allSearchControls = this.GetSearchControls().map(i => i.value);\r\n var selectedSearchControls = this.state.SelectedSearchControls;\r\n var modefiedSearchControls = allSearchControls.filter(item => selectedSearchControls.indexOf(item) < 0);\r\n if (modefiedSearchControls != null && modefiedSearchControls.length > 0) {\r\n modefiedSearchControls.map(field => {\r\n switch (field) {\r\n case \"BookingNumber\":\r\n filters.SelectedBookingNumber = \"\";\r\n return;\r\n case \"CargoCareProfile\":\r\n filters.SelectedCargoCareProfiles = \"\";\r\n return;\r\n case \"GeofenceStatus\":\r\n filters.SelectedGeofenceInside = \"\";\r\n return;\r\n case \"GeofenceID\":\r\n filters.SelectedGeofence = \"\";\r\n return;\r\n case \"AssetTypes\":\r\n filters.SelectedAssetTypes = \"\";\r\n return;\r\n case \"InventoryState\":\r\n filters.SelectedAssetStates = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;\r\n return;\r\n case \"OEM\":\r\n filters.SelectedOem = \"\";\r\n return;\r\n case \"Countries\":\r\n filters.SelectedCountry = \"\";\r\n return;\r\n case \"ReportingInterval\":\r\n filters.SelectedInterval = \"\";\r\n return;\r\n case \"VesselID\":\r\n filters.SelectedVesselCode = \"\";\r\n return;\r\n case \"Voyage\":\r\n filters.SelectedVoyage = \"\";\r\n return;\r\n case \"Call\":\r\n filters.SelectedCall = \"\";\r\n return;\r\n case \"SaveSearch\":\r\n DefaultCheckBoxState = false;\r\n this.setState({\r\n SearchName: '',\r\n IsDefaultSearch: DefaultCheckBoxState,\r\n SelectedSearch: 'Saved Searches'\r\n });\r\n return;\r\n\r\n }\r\n });\r\n }\r\n\r\n $('#globalLoader').show();\r\n this.ResetAssetsData();\r\n\r\n this.setState({ Filters: filters }, () => {\r\n \r\n let selectedCCP = [];\r\n if (Array.isArray(self.state.Filters.SelectedCargoCareProfiles)) {\r\n selectedCCP = self.state.Filters.SelectedCargoCareProfiles.filter(i => i);\r\n } else if (typeof self.state.Filters.SelectedCargoCareProfiles === 'string') {\r\n selectedCCP = self.state.Filters.SelectedCargoCareProfiles.split(\",\").filter(i => i);\r\n } else if (self.state.Filters.SelectedCargoCareProfiles) {\r\n selectedCCP = [self.state.Filters.SelectedCargoCareProfiles];\r\n }\r\n //selectedCCP = self.state.Filters.SelectedCargoCareProfiles.split(\",\").filter(i => i);\r\n\r\n var selectedCCPCodes = \"\";\r\n\r\n if (selectedCCP.length > 0) {\r\n for (const CCP of selectedCCP) {\r\n selectedCCPCodes += self.state.CargoCareProfiles.find(x => x.CargoCareCustomerProfileID === parseInt(CCP)).CargoCareCustomerProfileCode + \", \";\r\n }\r\n }\r\n\r\n if (selectedCCPCodes != \"\") {\r\n selectedCCPCodes = selectedCCPCodes.slice(0, -2);\r\n }\r\n\r\n this.props.SendSearchLoadingIsInProgressToHome(true,selectedCCPCodes);\r\n this.LoadGetAllAssetTypeData();//WI-23763});\r\n });\r\n }\r\n\r\n ResetAssetsData() {\r\n ReeferCallout.ResetMapPushpins();\r\n ReeferCallout.ResetAllPushpins();\r\n this.props.clearHistoryGridHeaders();\r\n var assetTypes = this.state.AssetTypes;\r\n $.each(assetTypes, function (index, value) {\r\n if (value == \"Reefer\") {\r\n ReeferStatusGrid.ClearReeferStatusGridData();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n }\r\n if (value == \"Genset\") {\r\n GensetStatusGrid.ClearGensetStatusGridData();\r\n GensetHistoryGrid.ClearHistoryGridData();\r\n\r\n }\r\n if (value == \"Dry\") {\r\n DryStatusSSRMGrid.ClearDryStatusGridData();\r\n DryHistoryGrid.ClearHistoryGridData();\r\n }\r\n if (value == \"Chassis\") {\r\n ChassisStatusGrid.ClearChassisStatusGridData();\r\n ChassisHistoryGrid.ClearHistoryGridData();\r\n }\r\n });\r\n\r\n }\r\n\r\n GetSearchControls = () => {\r\n let options = [];\r\n var cargoCareProfileRight = UserRights.checkMenuItemVisibility('247')[0];\r\n var offerSelectControls = AssetSearch;\r\n\r\n forIn(AssetSearch, function (value, key) {\r\n if (((cargoCareProfileRight == \"hidden\") && key == \"CargoCareProfile\")\r\n || (!hasReefers && key == \"BookingNumber\")\r\n || (assetCount == 1 && key == \"AssetTypes\")\r\n || (!showOem && key == \"OEM\")\r\n || (!showInvState && key == \"InventoryState\")\r\n ) {\r\n // dont push \r\n }\r\n else {\r\n options.push({ desc: value, value: key })\r\n }\r\n });\r\n\r\n return options;\r\n };\r\n\r\n static RestoreAdvanceSearchControls() {\r\n if(self != undefined)\r\n setTimeout(() => { self.GetSelectedSearchControls() }, 500);\r\n }\r\n\r\n GetSelectedSearchControls() {\r\n var url = Config.ApiBaseUrl + '/api/User/GetUserSearchControlsPreference?dashboardPreferenceId='+this.props.dashboardPreferenceId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"\") {\r\n this.setState({ SelectedSearchControls: this.GetSearchControls().map(i => i.value) });\r\n }\r\n else {\r\n if (UserRights.checkMenuItemVisibility('247')[0] == \"hidden\") {\r\n const index = data.indexOf('CargoCareProfile');\r\n if (index > -1) {\r\n data.splice(index, 1);\r\n }\r\n }\r\n this.setState({ SelectedSearchControls: data });\r\n\r\n }\r\n });\r\n }\r\n\r\n static getSearchPreferenceData() {\r\n var searchName = \"\";\r\n var userPrefId = 0;\r\n if (SelectedUserPreferenceId == 0) {\r\n userPrefId = 0;\r\n searchName = self.state.SearchName;\r\n }\r\n else {\r\n userPrefId = SelectedUserPreferenceId;\r\n searchName = self.state.SelectedSearch;\r\n }\r\n var data = self.state.Filters;\r\n\r\n if (self.state.CustomAttributes != null && self.state.CustomAttributes != undefined && self.state.CustomAttributes.length > 0) {\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n data.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n }\r\n var searchPreferences: any = {\r\n PreferenceData: JSON.stringify(data),\r\n SearchName: searchName,\r\n IsDefaultSearch: DefaultCheckBoxState//this.state.IsDefaultSearch\r\n };\r\n\r\n return searchPreferences;\r\n }\r\n\r\n SaveUserSearchConfirm() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n var searchName = \"\";\r\n var userPrefId = 0;\r\n if (SelectedUserPreferenceId == 0) {\r\n userPrefId = 0;\r\n searchName = this.state.SearchName;\r\n }\r\n else {\r\n userPrefId = SelectedUserPreferenceId;\r\n searchName = this.state.SelectedSearch;\r\n }\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserSearchPreference';\r\n // var data = { Defaultlayouts: this.state.Defaultlayouts, DashBoardItems: this.state.DashBoardItems, layouts: this.state.layouts, WGSwitchAll: this.state.WGSwitchAll }\r\n //var data = { AssetNumber: this.state.Filters.AssetNumber, AssetType: this.state.Filters.AssetType, City: this.state.Filters.City, Country: this.state.Filters.Country, CustomerID: this.state.Filters.CustomerID, CustomerTypeCode: this.state.Filters.CustomerTypeCode, DeviceFence: this.state.Filters.DeviceFence, Geofence: this.state.Filters.Geofence, GeofenceInside: this.state.Filters.GeofenceInside, Oem: this.state.Filters.Oem, POI: this.state.Filters.POI, Region: this.state.Filters.Region, ReportingInterval: this.state.Filters.ReportingInterval, ServerFence: this.state.Filters.ServerFence, State: this.state.Filters.State, ZipCode: this.state.Filters.ZipCode };\r\n var data = this.state.Filters;\r\n\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n data.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n }\r\n var dashboardPreferenceId: any = this.props.dashboardPreferenceId;\r\n var revisionNum: any = this.props.revisionNum; \r\n var preferencedata = {\r\n UserPreferenceId: userPrefId, UserId: 0, FunctionId: 1, PreferenceType: 'S', PreferenceData: JSON.stringify(data), SearchName: searchName,\r\n IsDefaultSearch: DefaultCheckBoxState, DashboardPreferenceId: dashboardPreferenceId, RevisionNum: revisionNum//this.state.IsDefaultSearch\r\n };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if(data == \"RevisionNum Invalid\")\r\n this.props.validateRevisionNum(dashboardPreferenceId);\r\n else if (data == \"SearchName Already Exist\") {\r\n PopupWindow.showErrorMessage(\"Search\", \"Search name already exist.\");\r\n }\r\n else { \r\n if (data == \"Record Saved\") {\r\n var msg = \"Search saved successfully.\";\r\n this.ReloadPreferenceData(msg, searchName);\r\n this.setState({ IsDefaultSearch: DefaultCheckBoxState });\r\n }\r\n else if (data == \"Record Updated\") {\r\n var msg = \"Search updated successfully.\";\r\n this.ReloadPreferenceData(msg, searchName);\r\n this.FillFilters(userPrefId);\r\n this.setState({ IsDefaultSearch: DefaultCheckBoxState });\r\n }\r\n this.props.refreshRevisionNum(dashboardPreferenceId, false);\r\n }\r\n });\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n RefreshDefaultSearchData(){\r\n var functionID = 1;\r\n var url = Config.ApiBaseUrl + '/api/User/GetDefaultSearchParams?FunctionId=' + functionID;\r\n var request = RCUtils.FetchRequest(url);\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n this.setState({ DefaultSearchData : data }); \r\n }\r\n });\r\n }\r\n\r\n ReloadPreferenceData(message: any, searchName: any) {\r\n this.LoadUserPreferenceSearchNames(searchName);\r\n this.RefreshDefaultSearchData();\r\n this.performSearchOperation();\r\n this.setState({ SelectedSearch: searchName });\r\n $(\"#ddlSavedSearch\").show();\r\n $(\"#txtSearchName\").hide();\r\n PopupWindow.showErrorMessage(\"Search\", message);\r\n }\r\n\r\n SaveUserSearch() {\r\n var userPrefId = 0;\r\n RCNGWindow.ConfirmWindow.close();\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserSearchPreference';\r\n // var data = { Defaultlayouts: this.state.Defaultlayouts, DashBoardItems: this.state.DashBoardItems, layouts: this.state.layouts, WGSwitchAll: this.state.WGSwitchAll }\r\n //var data = { AssetNumber: this.state.Filters.AssetNumber, AssetType: this.state.Filters.AssetType, City: this.state.Filters.City, Country: this.state.Filters.Country, CustomerID: this.state.Filters.CustomerID, CustomerTypeCode: this.state.Filters.CustomerTypeCode, DeviceFence: this.state.Filters.DeviceFence, Geofence: this.state.Filters.Geofence, GeofenceInside: this.state.Filters.GeofenceInside, Oem: this.state.Filters.Oem, POI: this.state.Filters.POI, Region: this.state.Filters.Region, ReportingInterval: this.state.Filters.ReportingInterval, ServerFence: this.state.Filters.ServerFence, State: this.state.Filters.State, ZipCode: this.state.Filters.ZipCode };\r\n var data = this.state.Filters;\r\n var preferencedata = {\r\n UserPreferenceId: userPrefId, UserId: 0, FunctionId: 1, PreferenceType: 'S', PreferenceData: JSON.stringify(data), SearchName: this.state.SearchName,\r\n IsDefaultSearch: DefaultCheckBoxState//this.state.IsDefaultSearch\r\n };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"Record Saved\" || data == \"Record Updated\") {\r\n var msg = \"Search saved successfully.\";\r\n this.ReloadPreferenceData(msg, this.state.SearchName);\r\n\r\n } else if (data == \"SearchName Already Exist\") {\r\n PopupWindow.showErrorMessage(\"Search\", \"Search name already exist.\");\r\n }\r\n });\r\n\r\n this.setState({ IsDefaultSearch: DefaultCheckBoxState });\r\n }\r\n\r\n GetDataForNewlySavedUserPreference(searchName: string) {\r\n\r\n let objNewlySavedUserPreference = this.state.SearchNamesList.find(x => x.SearchName === searchName);\r\n\r\n if (objNewlySavedUserPreference != null && objNewlySavedUserPreference != undefined) {\r\n\r\n SelectedUserPreferenceId = objNewlySavedUserPreference.UserPreferenceId;\r\n\r\n if (SelectedUserPreferenceId != null && SelectedUserPreferenceId > 0)\r\n this.FillFilters(SelectedUserPreferenceId);\r\n }\r\n }\r\n\r\n SearchNameOnchange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({\r\n SearchName: Value\r\n });\r\n }\r\n\r\n IsDefaultSearchChange = (event: React.FormEvent) => {\r\n defaultSearch = event.currentTarget.checked;\r\n this.setState({\r\n IsDefaultSearch: !this.state.IsDefaultSearch,\r\n });\r\n }\r\n\r\n AssetChange(value) {\r\n var filters = this.state.Filters;\r\n filters.SelectedAssetTypes = value;\r\n\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n CargoCareProfileChange(value) {\r\n var filters = this.state.Filters;\r\n filters.SelectedCargoCareProfiles = value;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n AssetStateChange(value) {\r\n var filters = this.state.Filters;\r\n filters.SelectedAssetStates = value;\r\n if (value == \"\")\r\n $('#InventoryState .Select-control').addClass(\"MandatoryBorder\");\r\n else\r\n $('#InventoryState .Select-control').removeClass(\"MandatoryBorder\");\r\n this.setState({ Filters: filters });\r\n }\r\n FillFilters(preferenceId: any) {\r\n if (preferenceId != \"\") {\r\n var url = Config.ApiBaseUrl + '/api/User/GetSearchParamsByPreferenceID?UserPreferenceId=' + preferenceId;\r\n //SelectedUserPreferenceId = preferenceId;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var UserPreference = JSON.parse(data.PreferenceData);\r\n selectedSearchParams = UserPreference;\r\n var filters = this.state.Filters;\r\n filters.AllReefers = UserPreference.AllReefers;\r\n filters.SelectedCountry = UserPreference.SelectedCountry;\r\n if (UserPreference.SelectedGeofence != null && UserPreference.SelectedGeofence != undefined)\r\n filters.SelectedGeofence = UserPreference.SelectedGeofence;\r\n else\r\n filters.SelectedGeofence = \"\";\r\n filters.SelectedGeofenceInside = UserPreference.SelectedGeofenceInside;\r\n filters.SelectedInterval = UserPreference.SelectedInterval;\r\n if (UserPreference.SelectedAssetTypes != null && UserPreference.SelectedAssetTypes != undefined)\r\n filters.SelectedAssetTypes = UserPreference.SelectedAssetTypes;\r\n else\r\n filters.SelectedAssetTypes = \"\";\r\n if (UserPreference.SelectedAssetStates != null && UserPreference.SelectedAssetStates != undefined)\r\n filters.SelectedAssetStates = UserPreference.SelectedAssetStates;\r\n else\r\n filters.SelectedAssetStates = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;///RCNG-70;//RCNG-59\r\n filters.SelectedOem = UserPreference.SelectedOem;\r\n filters.SelectedReefer = UserPreference.SelectedReefer;\r\n filters.SelectedVesselCode = UserPreference.SelectedVesselCode;\r\n filters.SelectedBookingNumber = UserPreference.SelectedBookingNumber;\r\n filters.SelectedCargoCareProfiles = UserPreference.SelectedCargoCareProfiles;//RCNG-3392\r\n\r\n // Start WI-268881\r\n if (UserPreference.SelectedVesselCD != null && UserPreference.SelectedVesselCD != undefined)\r\n filters.SelectedVesselCD = UserPreference.SelectedVesselCD;\r\n else\r\n filters.SelectedVesselCD = \"\";\r\n if (UserPreference.SelectedVoyage != null && UserPreference.SelectedVoyage != undefined)\r\n filters.SelectedVoyage = UserPreference.SelectedVoyage;\r\n else\r\n filters.SelectedVoyage = \"\";\r\n if (UserPreference.SelectedCall != null && UserPreference.SelectedCall != undefined)\r\n filters.SelectedCall = UserPreference.SelectedCall;\r\n else\r\n filters.SelectedCall = \"\";\r\n // End WI-26881\r\n filters.StatusFilters = UserPreference.StatusFilters;\r\n customAttributesInfo = UserPreference.CustomAttributeFilters;\r\n selectedCustomAttributes = cloneDeep(customAttributesInfo);\r\n this.setState({ Filters: filters });\r\n //$('#globalLoader').hide();\r\n DefaultCheckBoxState = data.DefaultSearch;\r\n IsFromLoadState = data.DefaultSearch;\r\n this.BindCustomAttributesValues();\r\n });\r\n }\r\n }\r\n\r\n ClearCustomAttributesData() {\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n $.each(this.state.CustomAttributes, function (i, val) {\r\n if (val.AttributeTypeCD.trim() == 'E') {\r\n var inputControlName = val.AttributeName.replace(' ', '');\r\n $('#select' + inputControlName).val(val.AttributeName);\r\n $('#select' + inputControlName).removeClass(\"fw-semibold\");\r\n }\r\n else if (val.AttributeTypeCD.trim() == 'A' || val.AttributeTypeCD.trim() == 'N') {\r\n var inputControlName = val.AttributeName.replace(' ', '');\r\n $('#txt' + inputControlName).val('');\r\n $('#txt' + inputControlName).removeClass(\"fw-semibold\");\r\n }\r\n });\r\n }\r\n modelYear = \"\";\r\n var defaultOperator = \"=\";\r\n $(\"#MathOption\").val(defaultOperator);\r\n }\r\n\r\n BindCustomAttributesValues() {\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n var customAttributes: any = this.state.CustomAttributes;\r\n this.ClearCustomAttributesData();\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n var selectedCustomAttributesInfo = Object.keys(customAttributesInfo).map((key) => [key, customAttributesInfo[key]]);\r\n $.each(selectedCustomAttributesInfo, function (index, value) {\r\n var selectedParam = value[0];\r\n var selectedValue = value[1];\r\n\r\n var attributeType = customAttributes.filter(x => x.AttributeName.replace(\" \", \"\") == selectedParam);\r\n if (attributeType[0] != null && attributeType[0] != '') {\r\n if (attributeType[0].AttributeTypeCD == 'E') {\r\n $(\"#select\" + selectedParam).val(selectedValue);\r\n if ($('#select' + selectedParam).hasClass('fw-semibold') == false)\r\n $('#select' + selectedParam).addClass(\"fw-semibold\");\r\n }\r\n else if (attributeType[0].AttributeTypeCD == 'A') {\r\n $(\"#txt\" + selectedParam).val(selectedValue);\r\n if ($('#txt' + selectedParam).hasClass('fw-semibold') == false)\r\n $('#txt' + selectedParam).addClass(\"fw-semibold\");\r\n }\r\n else if (attributeType[0].AttributeTypeCD == 'N') {\r\n var operatorType = selectedValue.split(\"&\")[0];\r\n var operatorValue = selectedValue.split(\"&\")[2];\r\n $(\"#MathOption\").val(operatorType);\r\n $(\"#txt\" + selectedParam).val(operatorValue);\r\n modelYear = operatorValue;\r\n if ($('#txt' + selectedParam).hasClass('fw-semibold') == false)\r\n $('#txt' + selectedParam).addClass(\"fw-semibold\");\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n LoadReeferGrids() {\r\n var AlertMessage = \"\";\r\n if (!(!modelYear || modelYear == undefined || modelYear == \"\" || modelYear.length == 0)) {\r\n //if ((modelYear.length > 0) || self.ValidateNumaricValue(modelYear)) {\r\n if ((self.ValidateNumaricValue(modelYear)) === true) {\r\n if ((modelYear < modelYearMin) || (modelYear > modelYearMax)) {\r\n AlertMessage = \"This value must be a number greater than or equal to \" + modelYearMin + \" and less than or equal to \" + modelYearMax + \".\\n\";\r\n }\r\n }\r\n }\r\n if (AlertMessage == '') {\r\n this.props.reeferIdForHeader('');\r\n this.state.Filters.AllReefers = \"\";\r\n this.state.Filters.StatusFilters = [];\r\n\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n this.state.Filters.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n }\r\n\r\n if (this.state.Filters.SelectedCountry != \"\" || this.state.Filters.SelectedGeofence != \"\" || this.state.Filters.SelectedGeofenceInside != \"\"\r\n || this.state.Filters.SelectedInterval != \"\" || this.state.Filters.SelectedOem != \"\" || this.state.Filters.SelectedReefer != \"\"\r\n || this.state.Filters.SelectedVesselCode != \"\" || this.state.Filters.SelectedBookingNumber != \"\" || this.state.Filters.SelectedVesselCD != \"\" || this.state.Filters.SelectedVoyage != \"\" || this.state.Filters.SelectedCall != \"\") {//WI-26881\r\n //this.props.bindingReeferStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n else {\r\n this.state.Filters.StatusFilters = [];\r\n this.state.Filters.AllReefers = \"All Assets\";\r\n //this.props.bindingReeferStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n LoadGensetGrids() {\r\n var AlertMessage = \"\";\r\n if (!(!modelYear || modelYear == undefined || modelYear == \"\" || modelYear.length == 0)) {\r\n //if ((modelYear.length > 0) || self.ValidateNumaricValue(modelYear)) {\r\n if ((self.ValidateNumaricValue(modelYear)) === true) {\r\n if ((modelYear < modelYearMin) || (modelYear > modelYearMax)) {\r\n AlertMessage = \"This value must be a number greater than or equal to \" + modelYearMin + \" and less than or equal to \" + modelYearMax + \".\\n\";\r\n }\r\n }\r\n }\r\n if (AlertMessage == '') {\r\n this.props.reeferIdForHeader('');\r\n this.state.Filters.AllReefers = \"\";\r\n this.state.Filters.StatusFilters = [];\r\n\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n this.state.Filters.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n }\r\n\r\n if (this.state.Filters.SelectedCountry != \"\" || this.state.Filters.SelectedGeofence != \"\" || this.state.Filters.SelectedGeofenceInside != \"\"\r\n || this.state.Filters.SelectedInterval != \"\" || this.state.Filters.SelectedOem != \"\" || this.state.Filters.SelectedReefer != \"\" || this.state.Filters.SelectedVesselCode != \"\" || this.state.Filters.SelectedVesselCD != \"\" || this.state.Filters.SelectedVoyage != \"\" || this.state.Filters.SelectedCall != \"\") {//WI-26881\r\n //this.props.bindingGensetStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n else {\r\n this.state.Filters.StatusFilters = [];\r\n this.state.Filters.AllReefers = \"All Assets\";\r\n // this.props.bindingGensetStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n\r\n LoadDryContainerGrids() {\r\n var AlertMessage = \"\";\r\n if (!(!modelYear || modelYear == undefined || modelYear == \"\" || modelYear.length == 0)) {\r\n //if ((modelYear.length > 0) || self.ValidateNumaricValue(modelYear)) {\r\n if ((self.ValidateNumaricValue(modelYear)) === true) {\r\n if ((modelYear < modelYearMin) || (modelYear > modelYearMax)) {\r\n AlertMessage = \"This value must be a number greater than or equal to \" + modelYearMin + \" and less than or equal to \" + modelYearMax + \".\\n\";\r\n }\r\n }\r\n }\r\n if (AlertMessage == '') {\r\n this.props.reeferIdForHeader('');\r\n this.state.Filters.AllReefers = \"\";\r\n this.state.Filters.StatusFilters = [];\r\n\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n this.state.Filters.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n }\r\n\r\n if (this.state.Filters.SelectedCountry != \"\" || this.state.Filters.SelectedGeofence != \"\" || this.state.Filters.SelectedGeofenceInside != \"\"\r\n || this.state.Filters.SelectedInterval != \"\" || this.state.Filters.SelectedOem != \"\" || this.state.Filters.SelectedReefer != \"\"\r\n || this.state.Filters.SelectedVesselCode != \"\" || this.state.Filters.SelectedVesselCD != \"\" || this.state.Filters.SelectedVoyage != \"\" || this.state.Filters.SelectedCall != \"\") {//WI-26881\r\n //this.props.bindingDryStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n else {\r\n this.state.Filters.StatusFilters = [];\r\n this.state.Filters.AllReefers = \"All Assets\";\r\n //this.props.bindingDryStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n\r\n LoadChassisContainerGrids() {\r\n var AlertMessage = \"\";\r\n if (!(!modelYear || modelYear == undefined || modelYear == \"\" || modelYear.length == 0)) {\r\n //if ((modelYear.length > 0) || self.ValidateNumaricValue(modelYear)) {\r\n if ((self.ValidateNumaricValue(modelYear)) === true) {\r\n if ((modelYear < modelYearMin) || (modelYear > modelYearMax)) {\r\n AlertMessage = \"This value must be a number greater than or equal to \" + modelYearMin + \" and less than or equal to \" + modelYearMax + \".\\n\";\r\n }\r\n }\r\n }\r\n if (AlertMessage == '') {\r\n this.props.reeferIdForHeader('');\r\n this.state.Filters.AllReefers = \"\";\r\n this.state.Filters.StatusFilters = [];\r\n\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n this.state.Filters.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n }\r\n\r\n if (this.state.Filters.SelectedCountry != \"\" || this.state.Filters.SelectedGeofence != \"\" || this.state.Filters.SelectedGeofenceInside != \"\"\r\n || this.state.Filters.SelectedInterval != \"\" || this.state.Filters.SelectedOem != \"\" || this.state.Filters.SelectedReefer != \"\"\r\n || this.state.Filters.SelectedVesselCode != \"\" || this.state.Filters.SelectedVesselCD != \"\" || this.state.Filters.SelectedVoyage != \"\" || this.state.Filters.SelectedCall != \"\") {//WI-26881\r\n //this.props.bindingChassisStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n else {\r\n this.state.Filters.StatusFilters = [];\r\n this.state.Filters.AllReefers = \"All Assets\";\r\n //this.props.bindingChassisStatusGrid(this.state.Filters);//WI-23763\r\n }\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n //WI-23763\r\n LoadGetAllAssetTypeData() {\r\n var AlertMessage = \"\";\r\n if (!(!modelYear || modelYear == undefined || modelYear == \"\" || modelYear.length == 0)) {\r\n //if ((modelYear.length > 0) || self.ValidateNumaricValue(modelYear)) {\r\n if ((self.ValidateNumaricValue(modelYear)) === true) {\r\n if ((modelYear < modelYearMin) || (modelYear > modelYearMax)) {\r\n AlertMessage = \"This value must be a number greater than or equal to \" + modelYearMin + \" and less than or equal to \" + modelYearMax + \".\\n\";\r\n }\r\n }\r\n }\r\n if ((this.state.AssetTypes.indexOf(\"Reefer\") > -1 || this.state.AssetTypes.indexOf(\"Genset\") > -1) && (this.state.Filters.SelectedAssetStates == \"\" || this.state.Filters.SelectedAssetStates == null))//RCNG-61\r\n AlertMessage = \"Please select Inventory State.\";//RCNG-61\r\n\r\n if (AlertMessage == '') {\r\n this.props.reeferIdForHeader('');\r\n //WI-23853\r\n if (this.props.previousState != null && this.props.previousState != undefined && this.props.previousState.StatusFilters != null && this.props.previousState.StatusFilters.length > 0) {\r\n this.props.previousState.StatusFilters = [];\r\n }\r\n\r\n this.state.Filters.AllReefers = \"\";\r\n //this.state.Filters.StatusFilters = [];\r\n\r\n if (this.state.CustomAttributes != null && this.state.CustomAttributes != undefined && this.state.CustomAttributes.length > 0) {\r\n if (customAttributesInfo != null && customAttributesInfo != undefined && customAttributesInfo != {}) {\r\n this.state.Filters.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n }\r\n\r\n if (this.state.Filters.SelectedCountry != \"\" || this.state.Filters.SelectedGeofence != \"\" || this.state.Filters.SelectedGeofenceInside != \"\"\r\n || this.state.Filters.SelectedInterval != \"\" || this.state.Filters.SelectedOem != \"\" || this.state.Filters.SelectedReefer != \"\"\r\n || this.state.Filters.SelectedVesselCode != \"\" || this.state.Filters.SelectedBookingNumber != \"\" || this.state.Filters.SelectedVesselCD != \"\" || this.state.Filters.SelectedVoyage != \"\" || this.state.Filters.SelectedCall != \"\") {//WI-26881\r\n this.props.bindingReeferGensetDryChassisStatusGrid(this.state.Filters, false);\r\n }\r\n else {\r\n //this.state.Filters.StatusFilters = [];\r\n //this.state.Filters.AllReefers = \"All Assets\";\r\n //this.props.bindingReeferGensetDryChassisStatusGrid(this.state.Filters);\r\n\r\n //WI-23853\r\n this.state.Filters.AllReefers = \"All Assets\";\r\n var statusfilters = [];\r\n var filters = this.state.Filters;\r\n filters.StatusFilters = statusfilters;\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n this.props.bindingReeferGensetDryChassisStatusGrid(filters, false);\r\n }\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n $('#globalLoader').hide();\r\n }\r\n\r\n }\r\n //WI-23795\r\n renderSaveSearchDialog() {\r\n self.props.renderSaveSearchControl();\r\n }\r\n showGlobalLoader() {\r\n $('#globalLoader').show();\r\n }\r\n static RefreshSearchControls() {\r\n var url = Config.ApiBaseUrl + '/api/User/GetUserSearchControlsPreference?dashboardPreferenceId='+self.props.dashboardPreferenceId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data != null && data != \"\") {\r\n if (UserRights.checkMenuItemVisibility('247')[0] == \"hidden\") {\r\n const index = data.indexOf('CargoCareProfile');\r\n if (index > -1) {\r\n data.splice(index, 1);\r\n }\r\n }\r\n }\r\n self.setState({ SelectedSearchControls: data });\r\n $('#globalLoader').hide();\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n return (data != null && data != undefined) ? data.length : '';\r\n });\r\n }\r\n static FindAssetByFenceLocation(fenceId: string) {\r\n\r\n self.ClearFilter(false);\r\n self.ResetAssetsData();\r\n self.props.reeferIdForHeader('');\r\n self.state.Filters.AllReefers = \"\";\r\n self.state.Filters.StatusFilters = [];\r\n self.state.Filters.SelectedGeofence = fenceId;\r\n //setTimeout(() => { self.showGlobalLoader() }, 1000);\r\n self.showGlobalLoader();\r\n self.props.bindingReeferGensetDryChassisStatusGrid(self.state.Filters, true);\r\n }\r\n\r\n onDeleteConfirmation(preferenceId: any, searchName: any, defaultSearch: any) {\r\n IsTriggered = false;\r\n var message = \"Delete the search named \" + searchName + \" ?\";\r\n if (defaultSearch)\r\n message += \" This is currently the default search. Following this action, no default search will be set until another is identified.\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(message, this.onDeleteSearchName.bind(this, preferenceId), this.onCancelSearchName.bind(this));\r\n }\r\n\r\n onDeleteSearchName(preferenceId) {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n var url = Config.ApiBaseUrl + '/api/User/DeleteSearchPreference?UserPreferenceId=' + preferenceId;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data == \"Success\") {\r\n this.LoadUserPreferenceSearchNames(this.state.SearchName);\r\n this.ClearFilter(false);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCancelSearchName() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n onCancelSaveSearch() {\r\n RCNGWindow.ConfirmWindow.close();\r\n this.performSearchOperationOnCancel();\r\n }\r\n\r\n onCancelSaveDefaultSearch() {\r\n DefaultCheckBoxState = IsFromLoadState;\r\n this.setState({ IsDefaultSearch: DefaultCheckBoxState });\r\n RCNGWindow.ConfirmWindow.close();\r\n //this.performSearchOperationOnCancel();\r\n }\r\n\r\n performSearchOperationOnCancel() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n $('#globalLoader').show();\r\n this.ResetAssetsData();\r\n this.LoadGetAllAssetTypeData();\r\n }\r\n }\r\n\r\n onCreateNewSavedSearch(param: any, id: any, isDefault: any): void {\r\n var Value: string = param;\r\n if (param == \"New\") {\r\n self.ClearFilter(false);\r\n $(\"#ddlSavedSearch\").hide();\r\n $(\"#txtSearchName\").show();\r\n this.setState({ SelectedSearch: Value });\r\n SelectedUserPreferenceId = 0;\r\n }\r\n else {\r\n defaultSearch = false;\r\n self.ClearFilter(false);\r\n if (isDefault)\r\n defaultSearch = true;\r\n this.setState({\r\n SelectedSearch: Value, IsDefaultSearch: defaultSearch\r\n }, () => { this.FillFilters(id); });\r\n SelectedUserPreferenceId = id;\r\n }\r\n\r\n }\r\n\r\n copyToClipboard(inputValue) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", inputValue);\r\n\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = inputValue;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n PastefromClipboard(inputValue) {\r\n if (navigator.clipboard != undefined) {\r\n setTimeout(async () => {\r\n const clipboardText = await navigator.clipboard.readText();\r\n this.SetPasteContent(inputValue, clipboardText);\r\n\r\n }, 1000)\r\n }\r\n else {\r\n const clipboardText = (window as any).clipboardData.getData('Text');\r\n this.SetPasteContent(inputValue, clipboardText);\r\n }\r\n\r\n }\r\n\r\n SetPasteContent(inputValue, clipboardText) {\r\n var filters = self.state.Filters;\r\n if (inputValue[0].id == \"txtReeferId\")\r\n filters.SelectedReefer = inputValue.val() + clipboardText.toString();\r\n else if (inputValue[0].id == \"txtBooking\")\r\n filters.SelectedBookingNumber = inputValue.val() + clipboardText.toString();\r\n this.setState({\r\n Filters: filters\r\n });\r\n inputValue.addClass(\"fw-semibold\");\r\n }\r\n\r\n static UpdateAdvanceSearchFilters(selectedCCProfile: any) {\r\n if (self != undefined) {\r\n self.setState({ Filters: { ...self.state.Filters, SelectedCargoCareProfiles: selectedCCProfile } });\r\n }\r\n }\r\n\r\n public render() {\r\n var Voyagedisabled: any;\r\n var Calldisabled: any;\r\n if (this.state.Filters.SelectedVesselCD != \"\" && this.state.Filters.SelectedVesselCD != null) {\r\n Voyagedisabled = false;\r\n Calldisabled = true;\r\n }\r\n else {\r\n Voyagedisabled = true;\r\n Calldisabled = true;\r\n }\r\n if (this.state.Filters.SelectedVoyage != \"\" && this.state.Filters.SelectedVoyage != null) {\r\n Calldisabled = false;\r\n }\r\n else {\r\n Calldisabled = true;\r\n }\r\n const { suggestionsFenceId, suggestionsVesselId, suggestionsVoyage, suggestionsCalls } = this.state;//WI-26881\r\n\r\n const FenceIdListinputProps = {\r\n id: 'geofenceID',\r\n placeholder: 'Geofence ID',\r\n value: this.state.Filters.SelectedGeofence,\r\n onChange: this.onChangeFenceId.bind(this)\r\n };\r\n const FenceIdListinputPropsforvessel = {\r\n id: 'vesselID',\r\n placeholder: 'Vessel',\r\n value: this.state.Filters.SelectedVesselCD,\r\n onChange: this.onChangeVesselId.bind(this)\r\n };\r\n const FenceIdListinputPropsforvoyage = {\r\n id: 'voyageNum',\r\n placeholder: 'Voyage',\r\n value: this.state.Filters.SelectedVoyage,\r\n onChange: this.onChangevoyage.bind(this),\r\n disabled: Voyagedisabled\r\n };\r\n const FenceIdListinputPropsforcall = {\r\n id: 'CallNum',\r\n placeholder: 'Call',\r\n value: this.state.Filters.SelectedCall,\r\n onChange: this.onChangcall.bind(this),\r\n disabled: Calldisabled\r\n };\r\n var searchNamesList = this.state.SearchNamesList;\r\n var searchNamesListOptions = searchNamesList.map(function (searchNames) {\r\n var searchName = searchNames.SearchName;\r\n if (searchNames.DefaultSearch && searchNames.DashboardPreferenceId == self.props.dashboardPreferenceId)\r\n searchName = searchName + \" (Default)\";\r\n return (\r\n
  • \r\n \r\n
    delete
    \r\n
  • \r\n );\r\n });\r\n\r\n var assetTypes = this.state.AssetTypes;\r\n if (assetTypes != undefined && assetTypes != null && assetTypes.length > 0) {\r\n var assetTypesOptions = assetTypes.map(function (asset) {\r\n return (\r\n { value: asset, label: asset }\r\n );\r\n });\r\n }\r\n\r\n var cargoCareProfiles = this.state.CargoCareProfiles;\r\n if (cargoCareProfiles != undefined && cargoCareProfiles != null && cargoCareProfiles.length > 0) {\r\n\r\n var cargoCareProfilesOptions = cargoCareProfiles.map(function (CCP) {\r\n\r\n return (\r\n { value: CCP.CargoCareCustomerProfileID, label: CCP.CargoCareCustomerProfileCode }\r\n );\r\n });\r\n }\r\n\r\n var selectedSearch: string = this.state.SelectedSearch;\r\n if (selectedSearch.length > 30)\r\n selectedSearch = selectedSearch.slice(0, 27).concat(\"...\");\r\n\r\n var CustomerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;\r\n\r\n var renderAssetTypesHtml;\r\n if (assetTypes.length > 1)\r\n renderAssetTypesHtml =
    \r\n false}\r\n />\r\n
    ;\r\n\r\n var assetStates = this.state.AssetStates;\r\n if (assetStates != undefined && assetStates != null && assetStates.length > 0) {\r\n var assetStatesOptions = assetStates.map(function (states) {\r\n return (\r\n { value: states.value, label: states.label }\r\n );\r\n });\r\n }\r\n\r\n var renderAssetStatesHtml;\r\n if (assetTypes.indexOf(\"Reefer\") > -1)\r\n renderAssetStatesHtml =
    \r\n false}\r\n />\r\n
    ;\r\n\r\n return
    \r\n
    \r\n
    \r\n {this.state.SelectedSearchControls != undefined && this.state.SelectedSearchControls != null ? this.state.SelectedSearchControls.map(field => {\r\n switch (field) {\r\n case \"SaveSearch\":\r\n return (
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    );\r\n\r\n case \"AssetID\":\r\n return (
    \r\n \r\n \r\n \r\n this.copyToClipboard(this.state.Filters.SelectedReefer)}>Copy\r\n {!isFirefox ?\r\n this.PastefromClipboard($('#txtReeferId'))}>Paste : Paste}\r\n \r\n \r\n\r\n
    );\r\n case \"BookingNumber\":\r\n return (hasReefers ?
    \r\n \r\n \r\n \r\n this.copyToClipboard(this.state.Filters.SelectedBookingNumber)}>Copy\r\n {!isFirefox ?\r\n this.PastefromClipboard($('#txtBooking'))}>Paste : Paste}\r\n \r\n \r\n
    : '');\r\n case \"CargoCareProfile\":\r\n return (\r\n UserRights.checkMenuItemVisibility('247')[0] == \"hidden\" ? '' :\r\n
    \r\n false}\r\n />\r\n
    );\r\n case \"GeofenceStatus\":\r\n return (
    \r\n \r\n
    );\r\n case \"GeofenceID\":\r\n return (
    \r\n \r\n
    );\r\n case \"AssetTypes\":\r\n return (assetCount == 1 ? '' :
    \r\n false}\r\n />\r\n
    );\r\n case \"InventoryState\":\r\n return (showInvState ?
    \r\n false}\r\n />\r\n
    : '');\r\n case \"OEM\":\r\n return ((showInvState) && ((assetTypes.indexOf(\"Reefer\") > -1 || (assetTypes.indexOf(\"Genset\") > -1)))\r\n ? (
    \r\n \r\n
    ) : \"\");\r\n case \"Countries\":\r\n return (\r\n
    \r\n \r\n
    );\r\n case \"ReportingInterval\":\r\n return (
    \r\n \r\n
    );\r\n case \"VesselCode\":\r\n return (
    \r\n
    \r\n this.Vesselcodechange(e)} value={this.state.Filters.SelectedVesselCode} />\r\n
    \r\n
    );\r\n\r\n case \"VesselID\":\r\n return (
    \r\n\r\n \r\n\r\n
    );\r\n case \"Voyage\":\r\n return (
    \r\n\r\n \r\n\r\n
    );\r\n case \"Call\":\r\n return (
    \r\n\r\n \r\n\r\n
    );\r\n default:\r\n return (\r\n
    \r\n );\r\n }\r\n }) : ''}\r\n\r\n\r\n\r\n {this.state.CustomAttributesHtml}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    ;\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControl } from './../sharedcomponents/EmailControl';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport { ExportToExcel } from './../sharedcomponents/ExportToExcel';\r\nimport $ from 'jquery';\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = { renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '' };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n modelDialogHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderEmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n //this.props.exportToExcel();\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n uri = Excel.InitializeExportParentToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n uri = Excel.InitializeExportChildToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo() {\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.sourceFrom == 'Dashboard') {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.formName, this.props.parentchild);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadExcelGridToolBar').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n {this.modelDialogHtml()}\r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean; \r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface PingGridState {\r\n SelectedReefers: any[],\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.ForwardCommandParameters,\r\n VCCheckBoxInfo: VCCheckBoxData,\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class PingControl extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems:[] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderPingGrid(this.props.reeferData);\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitPingCommand() {\r\n var command = \"PollUnit\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, null, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderPingGrid(reeferData);\r\n }\r\n\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderPingGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"PollUnit\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"PollUnit\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface TemperatureGridState {\r\n SelectedReefers: any[];\r\n TempValue: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nexport class TempSetPoint extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n var selectReefer = [];\r\n this.state = { SelectedReefers: selectReefer, TempValue: \"\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderSetPointGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitTempSetPoint() {\r\n var command = \"Setpoint\";\r\n var paramValue = this.state.TempValue;\r\n if (paramValue != \"\" && paramValue != null) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderSetPointGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderSetPointGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"Setpoint\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData, TempValue: \"\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n tempChange(event: React.FormEvent) {\r\n var tempVal = this.state.TempValue;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n tempVal = Value;\r\n else\r\n return;\r\n this.setState({ TempValue: tempVal });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"Setpoint\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n var lblDescription = \"\";\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd;\r\n if (tempUnitCd == \"F\")\r\n lblDescription = \"Enter temperature in Fahrenheit :\";\r\n else\r\n lblDescription = \"Enter temperature in Celsius :\";\r\n\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.tempChange(e)} value={this.state.TempValue} />
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport $ from 'jquery';\r\nimport OxygenWarning from '../../images/OxygenWarning.jpg';\r\nexport class ConfirmationWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n yes() {\r\n this.props.OkMethod();\r\n }\r\n\r\n no() {\r\n this.props.cancelMethod();\r\n }\r\n\r\n closePopUp() {\r\n $(\"#confirmPopUpModel\").hide();\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"show\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"hide\");\r\n }\r\n\r\n public render() {\r\n return
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Confirmation
    \r\n \r\n
    \r\n
    \r\n {\r\n this.props.showWarning ?\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n :\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nexport class ConfirmationWindowOK extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n yes() {\r\n this.props.OkMethod();\r\n }\r\n\r\n closePopUp() {\r\n $(\"#confirmPopUpModel\").hide();\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"show\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"hide\");\r\n }\r\n\r\n public render() {\r\n return
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.props.Title}
    \r\n \r\n
    \r\n
    \r\n {\r\n this.props.showWarning ?\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n :\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nexport class ConfirmWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n static close() {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n }\r\n static showConfirmBox(Message, OkMethod, cancelMethod) {\r\n //debugger\r\n //if ($('#add-here').is(':empty'))\r\n // ReactDom.render(, $('#add-here')[0]);\r\n //else\r\n // ReactDom.unmountComponentAtNode($('#add-here')[0]);\r\n //$('#divMsboxDynamicContent').empty();\r\n ReactDom.render(, document.getElementById('divMsboxDynamicContent'));\r\n setTimeout(function () {\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"hide\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"show\");\r\n $('#confirmPopUpModel').show();\r\n \r\n }, 50);\r\n }\r\n \r\n static showGeofenceConfirmBox(Message, OkMethod, cancelMethod) {\r\n //debugger\r\n //if ($('#add-here').is(':empty'))\r\n // ReactDom.render(, $('#add-here')[0]);\r\n //else\r\n // ReactDom.unmountComponentAtNode($('#add-here')[0]);\r\n //$('#divMsboxDynamicContent').empty();\r\n ReactDom.render(, document.getElementById('divMsboxDynamicContent'));\r\n setTimeout(function () {\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"hide\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"show\");\r\n $('#confirmPopUpModel').show();\r\n }, 50);\r\n }\r\n\r\n static showConfirmBoxwith3options(Message, BookingLevel, ReeferLevel, cancelMethod) {\r\n //debugger\r\n //if ($('#add-here').is(':empty'))\r\n // ReactDom.render(, $('#add-here')[0]);\r\n //else\r\n // ReactDom.unmountComponentAtNode($('#add-here')[0]);\r\n //$('#divMsboxDynamicContent').empty();\r\n ReactDom.render(, document.getElementById('divMsboxDynamicContent'));\r\n setTimeout(function () {\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"hide\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"show\");\r\n $('#confirmPopUpModel').show();\r\n }, 50);\r\n }\r\n static showConfirmBoxOK(Title, Message, OkMethod) {\r\n\r\n ReactDom.render(, document.getElementById('divMsboxDynamicContent'));\r\n setTimeout(function () {\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"hide\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"show\");\r\n $('#confirmPopUpModel').show();\r\n }, 50);\r\n }\r\n\r\n static showConfirmBoxWithWarning(Message, OkMethod, cancelMethod) {\r\n ReactDom.render(, document.getElementById('divMsboxDynamicContent'));\r\n setTimeout(function () {\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"hide\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"show\");\r\n $('#confirmPopUpModel').show();\r\n }, 50);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n }\r\n}\r\nexport class ConfirmationWindowwith3options extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n BookingLevel() {\r\n this.props.BookingLevel();\r\n }\r\n\r\n ReeferLevel() {\r\n this.props.ReeferLevel();\r\n }\r\n No() {\r\n this.props.cancelMethod();\r\n }\r\n closePopUp() {\r\n $(\"#confirmPopUpModel\").hide();\r\n $(\"#modal-backdrop-confirmation\").removeClass(\"show\");\r\n $(\"#modal-backdrop-confirmation\").addClass(\"hide\");\r\n }\r\n\r\n public render() {\r\n return
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Confirmation
    \r\n \r\n
    \r\n
    \r\n {\r\n this.props.showWarning ?\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n :\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nimport Switch from 'react-toggle-switch';\r\nimport CommonActions from '../../../actions/CommonActions';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface HumidityGridState {\r\n SelectedReefers: any[];\r\n HumValue: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n isHumidityEnable: boolean;\r\n isDeHumidityEnable: boolean;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class HumiditySetPoint extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], HumValue: \"0\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, isHumidityEnable: false, isDeHumidityEnable: false, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderHumiditySetPointGrid(this.props.reeferData);\r\n this.checkHumiditySetPoint(this.props.reeferData);\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n checkHumiditySetPoint(reeferData: any) {\r\n var daikinCount = CommonActions.validateOEMType('D', reeferData);\r\n if (daikinCount > 0) {\r\n //$('#globalLoader').show();\r\n\r\n //var filterSet = new ReeferHistoryFilter();\r\n\r\n //if (reeferData[0].EventDTTM != null && reeferData[0].EventDTTM != \"\") {\r\n // var toDTTM = Formatters.DateTimeFormatter(reeferData[0].EventDTTM);\r\n // var modifiedDttm = new Date(toDTTM);\r\n // modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n // var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n // var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n // var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n // filterSet.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n // filterSet.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n //}\r\n //else {\r\n // var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n // var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n // var modifiedDttm = new Date(toDTTM);\r\n // modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n // var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n // var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n // var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n // filterSet.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n // filterSet.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n //}\r\n\r\n //filterSet.Units = reeferData[0].UnitMasterID;\r\n\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: JSON.stringify(filterSet), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => { \r\n // if (data != null && data != undefined && data.length > 0) {\r\n // if (data[0].Humidity != null && data[0].Humidity != undefined && data[0].Humidity > 0) {\r\n // this.setState({ isDeHumidityEnable: true, isHumidityEnable: true, HumValue: data[0].Humidity.toString() }, () => $('#globalLoader').hide());\r\n // }\r\n // else {\r\n // this.setState({ isDeHumidityEnable: true, isHumidityEnable: false, HumValue:\"0\" }, () => $('#globalLoader').hide());\r\n // }\r\n // }\r\n // else {\r\n // this.setState({ isDeHumidityEnable: true, isHumidityEnable: false, HumValue: \"0\" }, () => $('#globalLoader').hide());\r\n // }\r\n // });\r\n\r\n var humiditySetValue = reeferData[0].HumiditySetpoint;\r\n if (humiditySetValue != null && humiditySetValue != \"\" && humiditySetValue != \"-999\") {\r\n if (reeferData.filter(row => row.HumiditySetpoint == humiditySetValue).length == reeferData.length)\r\n this.setState({ isDeHumidityEnable: true, isHumidityEnable: true, HumValue: humiditySetValue });\r\n else\r\n this.setState({ isDeHumidityEnable: true, isHumidityEnable: false, HumValue: \"0\" });\r\n }\r\n else\r\n this.setState({ isDeHumidityEnable: true, isHumidityEnable: false, HumValue: \"0\" });\r\n }\r\n else\r\n this.setState({ isDeHumidityEnable: false, isHumidityEnable: false, HumValue: \"0\" });\r\n }\r\n\r\n closeConfirmation() {\r\n $(\"#confirmPopUpModel\").css(\"display\", \"none\");\r\n }\r\n\r\n submitCommandSetPoint(command: string, paramValue: string) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n submitHumSetPoint() {\r\n if (this.state.RowData.length > 0) {\r\n var paramValue = this.state.HumValue;\r\n if (this.state.RowData.filter(row => row.DeviceType != null && row.DeviceType != undefined && (row.DeviceType.toString().trim() == 'CT4000' || row.DeviceType.toString().trim() == 'CT5000')).length > 0) {\r\n if (paramValue != \"\" && paramValue != null) {\r\n if (parseInt(paramValue) < 50 || parseInt(paramValue) > 95) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Setpoint value should be with in range (50-95).\"); return\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\"); return\r\n }\r\n }\r\n var command = \"Humidity\";\r\n if (this.state.isDeHumidityEnable) {\r\n if (this.state.isHumidityEnable) {\r\n if (paramValue != \"\" && paramValue != null) {\r\n if (paramValue == \"0\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"To disable dehumidification, please select OFF.\");\r\n //RCNGWindow.ConfirmWindow.showConfirmBox(\"To disable dehumidification, please select OFF.\", this.submitCommandSetPoint.bind(this, command, paramValue), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\");\r\n }\r\n else {\r\n paramValue = \"0\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n }\r\n else {\r\n if (paramValue != \"\" && paramValue != null) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderHumiditySetPointGrid(reeferData);\r\n this.checkHumiditySetPoint(nextprops.reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderHumiditySetPointGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData, HumValue: \"0\" });\r\n this.state.Filters.CommandName = \"Humidity\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n humChange(event: React.FormEvent) {\r\n var humVal = this.state.HumValue;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n humVal = Value;\r\n else\r\n return;\r\n this.setState({ HumValue: humVal });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"Humidity\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n toggleSwitch = (el) => {\r\n this.setState(prevState => {\r\n return {\r\n isHumidityEnable: !prevState.isHumidityEnable\r\n };\r\n });\r\n this.setState({ HumValue: \"0\" });\r\n }\r\n\r\n renderHumidityHtml() {\r\n if (this.state.isDeHumidityEnable) {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n De-Humidification :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.renderDehumidityHtml()}\r\n
    \r\n\r\n
    ;\r\n }\r\n else {\r\n return
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.humChange(e)} value={this.state.HumValue} />\r\n
    \r\n
    ;\r\n }\r\n }\r\n\r\n renderDehumidityHtml() {\r\n if (this.state.isHumidityEnable) {\r\n return
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.humChange(e)} value={this.state.HumValue} />\r\n
    \r\n
    \r\n
    ;\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    {this.renderHumidityHtml()}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\n","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface O2GridState {\r\n SelectedReefers: any[];\r\n O2Value: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class O2SetPoint extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], O2Value: \"0\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderO2SetPointGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitO2SetPoint() {\r\n var command = \"SetO2Setpoint\";\r\n var paramValue = this.state.O2Value;\r\n if (paramValue != \"\" && paramValue != null) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderO2SetPointGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderO2SetPointGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData, O2Value: \"0\" });\r\n this.state.Filters.CommandName = \"SetO2Setpoint\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n o2Change(event: React.FormEvent) {\r\n var o2Val = this.state.O2Value;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n o2Val = Value;\r\n else\r\n return;\r\n this.setState({ O2Value: o2Val });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"SetO2Setpoint\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n this.o2Change(e)} value={this.state.O2Value} />\r\n Maximum 4 characters\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface CO2GridState {\r\n SelectedReefers: any[];\r\n CO2Value: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class CO2SetPoint extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], CO2Value: \"0\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderCo2SetPointGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitCO2SetPoint() {\r\n var command = \"SetCO2Setpoint\";\r\n var paramValue = this.state.CO2Value;\r\n if (paramValue != \"\" && paramValue != null) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderCo2SetPointGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderCo2SetPointGrid(reeferData: any) {\r\n this.setState({ SelectedReefers: reeferData, CO2Value: \"0\" });\r\n this.state.Filters.CommandName = \"SetCO2Setpoint\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n co2Change(event: React.FormEvent) {\r\n var co2Val = this.state.CO2Value;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n co2Val = Value;\r\n else\r\n return;\r\n this.setState({ CO2Value: co2Val });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"SetCO2Setpoint\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n this.co2Change(e)} value={this.state.CO2Value} />\r\n Maximum 4 characters\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface ChgReeferIdState {\r\n SelectedReefers: any[];\r\n ReeferId: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n ValidState: boolean;\r\n}\r\n\r\nexport class ChangeReeferId extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], ReeferId: \"\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [], ValidState: true };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderChangeReeferIdGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderChangeReeferIdGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderChangeReeferIdGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData, ReeferId: \"\" });\r\n this.state.Filters.CommandName = \"WriteConatinerID\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //this.setState({ RowData: data, ValidState: data[0].IsValid }); //RCNG-254\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n submitReefer() {\r\n if (this.state.RowData.length > 0) {\r\n if (this.state.RowData.filter(row => row.IsPending != null && row.IsPending == 'E').length > 0) {\r\n var errorDescription = this.state.RowData.filter(e =>\r\n e.IsPending != null && e.IsPending === 'E');\r\n if (errorDescription != undefined && errorDescription != null)\r\n PopupWindow.showErrorMessage(\"Alert\", errorDescription[0].Tooltip); return; //RCNG-254\r\n }\r\n var IsCT4Msg; \r\n if (this.state.RowData.filter(row => row.DeviceType != null && row.DeviceType != undefined && row.DeviceType.toString().trim() == 'CT4000').length > 0)\r\n IsCT4Msg = true; \r\n else\r\n IsCT4Msg = false;\r\n if (this.state.VCCheckBoxInfo != null && this.state.VCCheckBoxInfo.enableVCCheckBox == true && IsCT4Msg == true) { PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for vessel.\"); return }\r\n\r\n if (this.state.ReeferId != \"\") {\r\n if (this.state.ReeferId.length == 11) {\r\n const IsMatch = /^[a-zA-Z]{4}[0-9]{7}$/;\r\n if (IsMatch.test(this.state.ReeferId)) {\r\n var command = \"WriteConatinerID\";\r\n var paramValue = this.state.ReeferId;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Change ReeferId\", \"Please enter the ReeferID in proper format.\");\r\n }\r\n }\r\n else { PopupWindow.showErrorMessage(\"Change ReeferId\", \"The length Of the ReeferID should be 11.\"); }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Change ReeferId\", \"Please enter ReeferID.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n reeferIdChange(event: React.FormEvent) {\r\n var reeferId = this.state.ReeferId;\r\n var Value: string = event.currentTarget.value.trim();\r\n reeferId = Value;\r\n this.setState({ ReeferId: reeferId });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"WriteConatinerID\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.reeferIdChange(e)} value={this.state.ReeferId} />
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {\r\n this.state.ValidState == true ?\r\n \r\n :\r\n \r\n }\r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface ChgReportingIntervalState {\r\n SelectedReefers: any[];\r\n SelectedInterval: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n ValidState: boolean;\r\n}\r\n\r\nexport class ChangeReportingInterval extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], SelectedInterval: \"\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [], ValidState: true }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderChangeReportingIntervalGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderChangeReportingIntervalGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n } \r\n\r\n renderChangeReportingIntervalGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData, SelectedInterval: \"\" });\r\n this.state.Filters.CommandName = \"ChangeRCDReportingInterval\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //this.setState({ RowData: data, ValidState: data[0].IsValid }); //RCNG-254\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n submitReportingInterval() {\r\n if (this.state.RowData.length > 0) {\r\n if (this.state.RowData.filter(row => row.IsPending != null && row.IsPending == 'E').length > 0) {\r\n var errorDescription = this.state.RowData.filter(e =>\r\n e.IsPending != null && e.IsPending === 'E');\r\n if (errorDescription != undefined && errorDescription != null)\r\n PopupWindow.showErrorMessage(\"Alert\", errorDescription[0].Tooltip); return; //RCNG-254\r\n }\r\n var IsCT4Msg;\r\n if (this.state.RowData.filter(row => row.DeviceType != null && row.DeviceType != undefined && row.DeviceType.toString().trim() == 'CT4000').length > 0)\r\n IsCT4Msg = true; \r\n else\r\n IsCT4Msg = false;\r\n if (this.state.VCCheckBoxInfo != null && this.state.VCCheckBoxInfo.enableVCCheckBox == true && IsCT4Msg == true) { PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for vessel.\"); return }\r\n\r\n if (this.state.SelectedInterval != \"\") {\r\n var command = \"ChangeRCDReportingInterval\";\r\n var paramValue = this.state.SelectedInterval;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n } else { PopupWindow.showErrorMessage(\"Change Reporting Interval\", \"Please select valid Reporting Interval.\"); }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n ReportingIntervalchange(event: React.FormEvent) {\r\n var selectedInterval = this.state.SelectedInterval;\r\n var Value: string = event.currentTarget.value;\r\n selectedInterval = Value;\r\n this.setState({ SelectedInterval: selectedInterval });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"ChangeRCDReportingInterval\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n {\r\n this.state.ValidState == true ?\r\n \r\n :\r\n \r\n } \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface ChgDataLogIntervalState {\r\n SelectedReefers: any[];\r\n SelectedInterval: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n renderDropDown: any;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class ChangeDataLogInterval extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], SelectedInterval: \"60\", RowData: [], Filters: filterSet, renderDropDown: '', VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData, renderDropDown: this.renderDropDownInterval(this.props.reeferData[0]) });\r\n this.renderChangeDatalogIntervalGrid(this.props.reeferData); \r\n } \r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n renderDropDownInterval(rowData: server.USP_UnitCurrentConditionUI_Model) {\r\n if (rowData.ReeferOEMTypeCd.trim() == 'S') {\r\n return ;\r\n }\r\n else {\r\n return ;\r\n }\r\n }\r\n\r\n submitDataLogInterval() {\r\n var selectedInterval = parseInt(this.state.SelectedInterval);\r\n if (selectedInterval >= 1) {\r\n var command = \"SetDatalogInterval\";\r\n var paramValue = this.state.SelectedInterval;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n } else { PopupWindow.showErrorMessage(\"Change Datalog Interval\", \"Please select valid Datalog Interval.\"); }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.setState({ renderDropDown: this.renderDropDownInterval(reeferData[0]) });\r\n this.renderChangeDatalogIntervalGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderChangeDatalogIntervalGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"SetDatalogInterval\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n DataLogIntervalchange(event: React.FormEvent) {\r\n var selectedInterval = this.state.SelectedInterval;\r\n var Value: string = event.currentTarget.value;\r\n selectedInterval = Value.toString();\r\n this.setState({ SelectedInterval: selectedInterval });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"SetDatalogInterval\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n { this.state.renderDropDown }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface PanIDGridState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nexport class AssignPANID extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderAssignPanidGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n \r\n submitPanIDCommand() {\r\n var command = \"AssignPANID\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, null, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderAssignPanidGrid(reeferData);\r\n } \r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderAssignPanidGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData });\r\n this.state.Filters.CommandName = \"AssignPANID\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"AssignPANID\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","\r\nimport * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface RebootReeferState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nexport class RebootReeferController extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters(); \r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderReebootReeferGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n var reeferData = nextprops.reeferData;\r\n\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderReebootReeferGrid(reeferData); \r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderReebootReeferGrid(reeferData:any) {\r\n this.state.Filters.CommandName = \"RebootReeferController\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n SubmitRebootReeferController() {\r\n var command = \"RebootReeferController\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, \"\", refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"RebootReeferController\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    Selected Reefers
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface ValidityGridState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class VerifyModelValidity extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: []}; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderVerifyModelGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitVerifyModelValidity() {\r\n var command = \"VerifyModelValidity\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, \"\", refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderVerifyModelGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderVerifyModelGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData });\r\n this.state.Filters.CommandName = \"VerifyModelValidity\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"VerifyModelValidity\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface ReeferClockState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class SyncReeferClock extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderSyncReeferClock(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitSyncReeferClock() {\r\n var command = \"SyncReeferClock\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, \"\", refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n \r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderSyncReeferClock(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n } \r\n\r\n renderSyncReeferClock(reeferData: any) {\r\n this.setState({ RowData: reeferData });\r\n this.state.Filters.CommandName = \"SyncReeferClock\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"SyncReeferClock\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface DeforstState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class StartDeforst extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderStartDeforstGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitDeforst() {\r\n var command = \"StartDeforst\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, \"\", refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderStartDeforstGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderStartDeforstGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData });\r\n this.state.Filters.CommandName = \"StartDeforst\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"StartDeforst\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nimport animatedloader from '../../../images/animated-loader.gif';\r\nimport lodashfilter from 'lodash/filter';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface DeforstState {\r\n SelectedReefers: any[];\r\n DeforstInterval: string;\r\n IntervalDropdownValues: any[];\r\n SelectedInterval: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n isInputBox: boolean;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class ChangeDeforstInterval extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], DeforstInterval: \"\", IntervalDropdownValues: [], SelectedInterval: \"\", RowData: [], Filters: filterSet, isInputBox: false, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n if (reeferData != null && reeferData != undefined && reeferData.length > 0) {\r\n this.setState({ SelectedReefers: reeferData, DeforstInterval: \"\" });\r\n this.renderDeforstInterval(reeferData, this.props.isChangeDeforstInterval, reeferData[0].ReeferOEMTypeCd, this.props.reeferFormatter.RefControllerTypes);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#deforstLoader').hide();\r\n }\r\n\r\n onDeforstIntervalChange(event: React.FormEvent) {\r\n var interval = this.state.DeforstInterval;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n interval = Value;\r\n else\r\n return;\r\n this.setState({ DeforstInterval: interval });\r\n }\r\n\r\n submitDeforst() {\r\n if (this.state.DeforstInterval == \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Interval should not be empty.\");\r\n }\r\n else if ((parseInt(this.state.DeforstInterval) < 2 || parseInt(this.state.DeforstInterval) > 48) && this.state.isInputBox == true)\r\n {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Interval should be with in range(2-48).\");\r\n }\r\n else {\r\n var command = \"ChangeDeforstInterval\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, this.state.DeforstInterval, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n }\r\n\r\n IntervalDropdownChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({ DeforstInterval: Value });\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n var reeferData = nextProps.reeferData;\r\n\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n this.renderDeforstInterval(reeferData, nextProps.isChangeDeforstInterval, reeferData[0].ReeferOEMTypeCd, nextProps.reeferFormatter.RefControllerTypes);\r\n }\r\n if (nextProps.VCCheckBoxInfo != undefined && nextProps.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextProps.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderDeforstInterval(reeferData: any, isChangeDeforstInterval: boolean, selectedOem: string, refControllerTypes: any) {\r\n if (selectedOem.trim() !=\"S\") {\r\n $('#deforstLoader').show();\r\n $('#divIntervalRange').hide();\r\n $('#divtxtInterval').hide();\r\n $('#divdrpInterval').show();\r\n\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetIntervalsForDefrostChange';\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n var dataArray = data.split(',');\r\n if (selectedOem.trim() == \"D\") {\r\n var filteredDaikinDataArray = dataArray.filter(function (item) {\r\n return item.trim() !== \"OFF\" && item.trim() !== \"AUTO\" && item.trim() !== \"AUTO2\" && item.trim() !== \"AUTO3\"\r\n && item.trim() !== \"2\";\r\n });\r\n dataArray = filteredDaikinDataArray;\r\n }\r\n else {\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllerTypes, function (item) {\r\n return item.ControllerTypeCd === reeferData[0].ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (!(controllerDesc == 'ML5' && reeferData[0].DeviceType != null && (reeferData[0].DeviceType.toString().trim().toUpperCase() == 'CT3500' || reeferData[0].DeviceType.toString().trim().toUpperCase() == 'CT3600'))) {\r\n var filteredCarrierDataArray = dataArray.filter(function (item) {\r\n return item.trim() !== \"AUTO\" && item.trim() !== \"AUTO2\" && item.trim() !== \"AUTO3\"\r\n && item.trim() !== \"2\";\r\n });\r\n dataArray = filteredCarrierDataArray;\r\n }\r\n }\r\n var isDropdown = $('#divdrpInterval').is(\":visible\");\r\n if (isDropdown = true)\r\n this.setState({ IntervalDropdownValues: dataArray, DeforstInterval: dataArray[0].toString(), isInputBox: false});\r\n else\r\n this.setState({ IntervalDropdownValues: dataArray, DeforstInterval: dataArray[0].toString(), isInputBox: false});\r\n }\r\n $('#deforstLoader').hide();\r\n });\r\n\r\n }\r\n else {\r\n $('#divIntervalRange').show();\r\n $('#divtxtInterval').show();\r\n this.setState({ DeforstInterval: \"\" });\r\n $('#divdrpInterval').hide();\r\n this.setState({isInputBox: true });\r\n }\r\n\r\n this.setState({ SelectedReefers: reeferData});\r\n this.state.Filters.CommandName = \"ChangeDeforstInterval\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"ChangeDeforstInterval\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    Loading
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n this.onDeforstIntervalChange(e)} value={this.state.DeforstInterval} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Interval between 2 to 48\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport DateFormat from 'dateformat';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport * as EmailValidator from 'email-validator';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport moment from 'moment';\r\nimport Select from 'react-select';\r\nimport \"react-select/dist/react-select.css\";\r\nimport lodashfilter from 'lodash/filter';\r\nvar Config: any = require('../../../Config.json');\r\n//TODO 1.maxrecords count for event,temp from db\r\nvar date = new Date();\r\nvar reeferData;\r\nvar isLastTrip = true;\r\nvar isAllTrip = false;\r\nvar isDateRange = false;\r\nvar IsDCCSSupport = null;\r\nvar IsDCCSSupportCount = 0;\r\nvar IsDLSupportCount = 0;\r\nvar oldTempCount = 0;\r\nvar oldEventCount = 0;\r\nvar isDLReeferConnect = false;\r\nvar isDLStarView = false;\r\nvar isDLDCCS = false;\r\nvar isDLBoth = true;\r\nvar dCXDownloads = false;\r\nvar errorSubmit = false;\r\nvar errSubMessage;\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\ninterface Options {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface DataDownloadGridState {\r\n rowData: server.USP_UnitCurrentConditionUI_Model[];\r\n DataDownload: server.TraditionalDownload;\r\n status: string;\r\n Filters: ForwardCommandParams;\r\n FwdCmdResult: server.ForwardCommandResultData;\r\n stayOpen: boolean;\r\n disabled: boolean;\r\n removeSelected: boolean;\r\n rtl: boolean;\r\n emailOptions: Options[];\r\n value: any[];\r\n oemTypeCd: string;\r\n oemModel: string;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n isDLDCX: boolean;\r\n isDLCRReeferConnect: boolean;\r\n deviceType: string;\r\n IsScopeVisible: boolean;\r\n scopeValue: string;\r\n IsDateRangeVisible: boolean;\r\n IsDateRangeDisabled: boolean;\r\n defaultDateRanageValue: string;\r\n ValidState: boolean;\r\n scopeOptions: any[];\r\n}\r\n\r\nexport class TraditionalDataDownload extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = new ForwardCommandParams();\r\n var startDate = new Date();\r\n startDate.setDate(startDate.getDate() + -1).toLocaleString();\r\n var endDate = new Date();\r\n endDate.setDate(endDate.getDate()).toLocaleString();\r\n var filter: server.TraditionalDownload = {\r\n StartDate: startDate, EndDate: endDate, IsChecked: true, TempRecordCount: '1000', EventRecordCount: '1000', Emails: props.userEmail, DownloadType: null, QueryType: null\r\n };\r\n\r\n this.state = {\r\n rowData: [], DataDownload: filter, status: null, Filters: filterSet, FwdCmdResult: null, stayOpen: false, disabled: false, removeSelected: false,\r\n rtl: false, emailOptions: [], value: [], oemTypeCd: props.reeferData[0].ReeferOEMTypeCd, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [],\r\n oemModel: props.reeferData[0].UnitTypeCd, isDLCRReeferConnect: false, isDLDCX: false, deviceType: props.reeferData[0].DeviceType, IsScopeVisible: false, scopeValue: null, IsDateRangeVisible: true, IsDateRangeDisabled: false, defaultDateRanageValue: \"--/--/----\",\r\n ValidState: true, scopeOptions: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n isLastTrip = true;\r\n isAllTrip = false;\r\n isDateRange = false;\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ rowData: this.props.reeferData });\r\n this.getEmails(this.props.userEmail, this.props.customerId);\r\n dCXDownloads = this.props.dCXDownloads;\r\n this.getDeviceTypeValidation(this.props.reeferData, this.props.reeferFormatter);\r\n this.renderTDDGrid(this.props.reeferData);\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n isDLReeferConnect = false;\r\n isDLStarView = false;\r\n isDLDCCS = false;\r\n isDLBoth = true;\r\n $('#globalLoader').hide();\r\n }\r\n\r\n\r\n handleSelectChange(value) {\r\n var tDD = this.state.DataDownload;\r\n tDD.Emails = value;\r\n if (value == '')//RCNG-4363 Fix\r\n value = undefined;\r\n\r\n this.setState({ value: value, DataDownload: tDD });\r\n }\r\n FinalSubmit() {\r\n if (this.state.rowData.filter(row => row.IsPending != null && row.IsPending == 'E').length > 0) {\r\n var errorDescription = this.state.rowData.filter(e =>\r\n e.IsPending != null && e.IsPending === 'E');\r\n if (errorDescription != undefined && errorDescription != null)\r\n PopupWindow.showErrorMessage(\"Alert\", errorDescription[0].Tooltip); return; //RCNG-254\r\n }\r\n var IsCT4Msg; var IsSekstant;\r\n var IsMsgFromVessel;\r\n if (this.state.rowData.filter(row => row.DeviceType != null && row.DeviceType != undefined && row.DeviceType.toString().trim() == 'CT4000').length > 0)\r\n IsCT4Msg = true;\r\n else\r\n IsCT4Msg = false;\r\n if (this.state.rowData.filter(row => row.VesselCd != null && row.VesselCd != undefined).length > 0)\r\n IsMsgFromVessel = true;\r\n else\r\n IsMsgFromVessel = false;\r\n if (IsMsgFromVessel == true && IsCT4Msg == true) { PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for vessel.\"); return }\r\n\r\n if (this.state.rowData.filter(row => row.DeviceType != null && row.DeviceType != undefined && row.DeviceType.toString().trim() == 'Sekstant'\r\n && row.ReeferOEMTypeCd != null && row.ReeferOEMTypeCd != undefined && row.ReeferOEMTypeCd.toString().trim() == 'S').length > 0) {\r\n if (this.state.DataDownload.DownloadType == 'StarView')\r\n IsSekstant = false;\r\n else\r\n IsSekstant = true;\r\n }\r\n if (IsSekstant == true) { PopupWindow.showErrorMessage(\"Alert\", \"Only StarView format is supported\"); return }\r\n\r\n var Oemtype = this.state.Filters.SelectedReefers[0].ReeferOEMTypeCd;\r\n var OemModel = this.state.Filters.SelectedReefers[0].UnitTypeCd;\r\n if (Oemtype.trim() != \"S\" && Oemtype.trim() != \"D\" && Oemtype.trim() != \"C\") {\r\n this.state.DataDownload.DownloadType = null;\r\n }\r\n else if (Oemtype.trim() == \"C\") {\r\n if (this.state.DataDownload.DownloadType == null) {\r\n if (this.state.isDLDCX == true)\r\n this.state.DataDownload.DownloadType = \"DCX\";\r\n else\r\n this.state.DataDownload.DownloadType = \"DL\";\r\n }\r\n this.state.DataDownload.QueryType = this.state.scopeValue;\r\n if (this.state.scopeValue == null || this.state.scopeValue == '') {\r\n this.setState({ scopeValue: \"DateRange\" });\r\n }\r\n else if (this.state.scopeValue != \"DateRange\") {\r\n this.state.DataDownload.StartDate = null;\r\n this.state.DataDownload.EndDate = null;\r\n }\r\n }\r\n else if (this.state.DataDownload.DownloadType == null && isDLBoth) {\r\n if (Oemtype.trim() == \"S\")\r\n this.state.DataDownload.DownloadType = 'DL,StarView';\r\n if (Oemtype.trim() == \"D\")\r\n this.state.DataDownload.DownloadType = 'DL,DCCS';\r\n }\r\n if (Oemtype.trim() == \"T\" && OemModel != \"TR\") {\r\n var TempCount = this.state.DataDownload.TempRecordCount;\r\n var EventCount = this.state.DataDownload.EventRecordCount;\r\n var TempValidation = \"1001\";\r\n if (TempCount.toString() == null || TempCount.toString() == \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Number of Temp Counts should not be Empty.\");\r\n return;\r\n }\r\n else if (EventCount.toString() == null || EventCount.toString() == \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Number of Events Counts should not be Empty.\");\r\n return;\r\n }\r\n else if (parseInt(TempCount) == 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Number of Temp Counts should be greater than 0\");\r\n return;\r\n }\r\n else if (parseInt(EventCount) == 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Number of Events should be greater than 0\");\r\n return;\r\n }\r\n else if (parseInt(TempValidation) <= parseInt(EventCount)) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Number of Events Counts should not be more than 1000.\");\r\n return;\r\n }\r\n else if (parseInt(TempValidation) <= parseInt(TempCount)) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Number of Temp Counts should not be more than 1000.\");\r\n return;\r\n }\r\n else {\r\n var refreshGrid = this.props.refreshGrid;\r\n var tDD = this.state.DataDownload;\r\n var result;\r\n var errorCount = 0;\r\n var command = \"TraditionalDataDownLoad\";\r\n var emailsEntered = this.state.DataDownload.Emails;\r\n if (emailsEntered == 'undefined' || emailsEntered == \"\" || emailsEntered == null) {\r\n PopupWindow.showErrorMessage(\"Email Id(s)\", \"Please enter Email Id(s)\");\r\n return;\r\n }\r\n if (emailsEntered.includes(\",\")) {\r\n result = false;\r\n var Emails = emailsEntered.split(',');\r\n Emails.forEach(function (value) {\r\n if (value != null || value != \"\") {\r\n result = EmailValidator.validate(value.trim());\r\n if (result == false) { errorCount++; }\r\n }\r\n });\r\n }\r\n else {\r\n result = EmailValidator.validate(emailsEntered);\r\n if (result == false) { errorCount++; }\r\n }\r\n\r\n if (errorCount > 0) {\r\n PopupWindow.showErrorMessage(\"Email Id(s)\", \"Please enter valid Email Id(s)\"); return;\r\n }\r\n else {\r\n if (emailsEntered.endsWith(\",\")) {\r\n emailsEntered = emailsEntered.substring(0, emailsEntered.length - 1);\r\n }\r\n tDD.Emails = emailsEntered;\r\n this.setState({ DataDownload: tDD });\r\n ReeferCommandsGrid.submitCommands(command, tDD, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n }\r\n }\r\n else {\r\n var refreshGrid = this.props.refreshGrid;\r\n var tDD = this.state.DataDownload;\r\n var result;\r\n var errorCount = 0;\r\n var command = \"TraditionalDataDownLoad\";\r\n var emailsEntered = this.state.DataDownload.Emails;\r\n if (emailsEntered == 'undefined' || emailsEntered == \"\" || emailsEntered == null) {\r\n PopupWindow.showErrorMessage(\"Email Id(s)\", \"Please enter Email Id(s)\");\r\n return;\r\n }\r\n if (emailsEntered.includes(\",\")) {\r\n result = false;\r\n var Emails = emailsEntered.split(',');\r\n Emails.forEach(function (value) {\r\n if (value != null || value != \"\") {\r\n result = EmailValidator.validate(value.trim());\r\n if (result == false) { errorCount++; }\r\n }\r\n });\r\n }\r\n else {\r\n result = EmailValidator.validate(emailsEntered);\r\n if (result == false) { errorCount++; }\r\n }\r\n\r\n if (errorCount > 0) {\r\n PopupWindow.showErrorMessage(\"Email Id(s)\", \"Please enter valid Email Id(s)\"); return;\r\n }\r\n else if (errorSubmit == true) {\r\n PopupWindow.showErrorMessage(\"Alert\", errSubMessage); return;\r\n }\r\n else {\r\n if (emailsEntered.endsWith(\",\")) {\r\n emailsEntered = emailsEntered.substring(0, emailsEntered.length - 1);\r\n }\r\n tDD.Emails = emailsEntered;\r\n this.setState({ DataDownload: tDD });\r\n ReeferCommandsGrid.submitCommands(command, tDD, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n }\r\n }\r\n submitDataDownloadCommand() {\r\n if (this.state.rowData.length > 0)\r\n {\r\n var Oemtype = this.state.Filters.SelectedReefers[0].ReeferOEMTypeCd;\r\n if (Oemtype.trim() == \"D\" && IsDCCSSupportCount > 0 && IsDLSupportCount > 0 ) {\r\n $('#confirmModal').show();\r\n }\r\n else {\r\n this.FinalSubmit();\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var Starcoolcount = 0;\r\n var DaikinCount = 0;\r\n var CarrierCount = 0;\r\n var ThermokingCount = 0;\r\n var UnknownCount = 0;\r\n var Oem = null;\r\n this.setState({ IsDateRangeVisible: true }) //RCNG-3852\r\n reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n if (reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n // this.setState({ rowData: reeferData });\r\n this.setState({ oemTypeCd: reeferData[0].ReeferOEMTypeCd, oemModel: reeferData[0].UnitTypeCd, deviceType: reeferData[0].DeviceType });\r\n this.setState({ rowData: this.props.reeferData });\r\n this.getEmails(this.props.userEmail, this.props.customerId);\r\n dCXDownloads = this.props.dCXDownloads;\r\n this.ClearDownloadValues();\r\n this.getDeviceTypeValidation(reeferData, nextprops.reeferFormatter);\r\n this.renderTDDGrid(reeferData);\r\n\r\n }\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n renderTDDGrid(reeferData: any) {\r\n $('#globalLoader').show();\r\n this.state.Filters.CommandName = \"TraditionalDataDownLoad\";\r\n errorSubmit = false;\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ rowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //this.setState({ rowData: data, ValidState: data[0].IsValid }); //RCNG-254\r\n $.each(data, function (key, val) {\r\n if (isDateRange) {\r\n if (val.DownloadType == \"DL\" && val.ReeferOEMTypeCd.trim() == \"D\" && (val.Tooltip == \"\" || val.Tooltip == null)) {\r\n val.IsPending = \"U\";\r\n val.Tooltip =\"Date Range not supported.\";\r\n }\r\n }\r\n });\r\n this.setState({ rowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n getDeviceTypeValidation(reeferData: any, reeferFormatter: any) {\r\n IsDCCSSupportCount = 0;\r\n IsDLSupportCount = 0;\r\n isDateRange = false;\r\n if (reeferData != null && reeferData.length > 0) {\r\n if (!(reeferData[0].ReeferOEMTypeCd == null || reeferData[0].ReeferOEMTypeCd == undefined)) {\r\n this.setState({IsDateRangeDisabled: false });\r\n if (reeferData[0].ReeferOEMTypeCd.trim() == \"C\") {\r\n if (dCXDownloads == true && reeferData[0].DeviceType != null && (reeferData[0].DeviceType.trim() == \"CT4000\" || reeferData[0].DeviceType.trim().toUpperCase() == \"TRIPLINK\"))\r\n {\r\n //WI-RCNG-3349 -Added condition for TripLINK\r\n this.state.Filters.OtherValue = \"DCX\";\r\n this.setState({ isDLCRReeferConnect: false, isDLDCX: true });\r\n this.state.DataDownload.DownloadType = \"DCX\";\r\n ReeferCommandsGrid.UpdateOtherValue(\"DCX\");\r\n }\r\n else {\r\n this.state.Filters.OtherValue = \"DL\";\r\n this.setState({ isDLCRReeferConnect: true, isDLDCX: false });\r\n this.state.DataDownload.DownloadType = \"DL\";\r\n ReeferCommandsGrid.UpdateOtherValue(\"DL\");\r\n }\r\n if (reeferFormatter != null || reeferFormatter != undefined) {\r\n var FirmwareSeriesCapabilityList = reeferFormatter.FirmwareSeriesCapabilityList;\r\n var FirmwareVersionCapabilityList = reeferFormatter.FirmwareVersionCapabilityList;\r\n var DeviceFirmwareVersions = reeferFormatter.DeviceFirmwareVersions;\r\n var scopeOptionList = [];\r\n var IsDCXSupport = null;\r\n var IsReeferConnectSupport = null;\r\n var IsDateRangeSupport = null;\r\n var IsLastDaysSupport = null;\r\n var IsLastestTripSupport = null;\r\n var IsEntireLogSupport = null;\r\n\r\n $.each(reeferData, function (key, val) {\r\n var IsVDCXSupport = false;\r\n var IsVReeferConnectSupport = false;\r\n var IsVDateRangeSupport = false;\r\n var IsVLastDaysSupport = false;\r\n var IsVLastestTripSupport = false;\r\n var IsVEntireLogSupport = false;\r\n if (val.RCDFirmwareVersion != null && val.RCDFirmwareVersion != undefined && val.RCDFirmwareVersion != \"\") {\r\n if (val.DeviceType != null && val.DeviceType != \"\" && val.DeviceType != undefined) {\r\n if (DeviceFirmwareVersions != null && DeviceFirmwareVersions != undefined && DeviceFirmwareVersions.length > 0) {\r\n var FWDescription = lodashfilter(DeviceFirmwareVersions, function (item) {\r\n return item.ShortName.toUpperCase().trim() === val.RCDFirmwareVersion.toUpperCase().trim()\r\n || item.LongName.toUpperCase().trim() === val.RCDFirmwareVersion.toUpperCase().trim() \r\n && item.FirmwareVersionType.toUpperCase().trim() === \"MAIN\"\r\n && item.DeviceTypeCD.toUpperCase().trim() === val.DeviceType.toUpperCase().trim();\r\n });\r\n if (FWDescription != null && FWDescription.length > 0) {\r\n var FirmwareID = FWDescription[0].FirmwareID;\r\n var FirmwareSeriesId = FWDescription[0].FirmwareSeriesId;\r\n\r\n if (FirmwareVersionCapabilityList != null && FirmwareVersionCapabilityList != undefined && FirmwareVersionCapabilityList.length > 0) {\r\n var versionCapabilityList = lodashfilter(FirmwareVersionCapabilityList, function (item) {\r\n return item.FirmwareId === FirmwareID;\r\n });\r\n\r\n if (versionCapabilityList != null && versionCapabilityList.length > 0) {\r\n var versionCapabilityDCXSupport = lodashfilter(versionCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 1;\r\n });\r\n if (versionCapabilityDCXSupport != null && versionCapabilityDCXSupport.length > 0\r\n && (IsDCXSupport == null || (IsDCXSupport != null && !IsDCXSupport))) {\r\n if (versionCapabilityDCXSupport[0].IsCapable) {\r\n IsDCXSupport = true;\r\n }\r\n else {\r\n IsDCXSupport = false;\r\n }\r\n IsVDCXSupport = true;\r\n }\r\n var versionCapabilityRCSupport = lodashfilter(versionCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 2;\r\n });\r\n if (versionCapabilityRCSupport != null && versionCapabilityRCSupport.length > 0\r\n && (IsReeferConnectSupport == null || (IsReeferConnectSupport != null && !IsReeferConnectSupport))) {\r\n if (versionCapabilityRCSupport[0].IsCapable) {\r\n IsReeferConnectSupport = true;\r\n }\r\n else {\r\n IsReeferConnectSupport = false;\r\n }\r\n IsVReeferConnectSupport = true;\r\n }\r\n var versionCapabilityRange = lodashfilter(versionCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 3;\r\n });\r\n if (versionCapabilityRange != null && versionCapabilityRange.length > 0\r\n && (IsDateRangeSupport == null || (IsDateRangeSupport != null && !IsDateRangeSupport))) {\r\n if (versionCapabilityRange[0].IsCapable) {\r\n IsDateRangeSupport = true;\r\n }\r\n else {\r\n IsDateRangeSupport = false;\r\n }\r\n IsVDateRangeSupport = true;\r\n }\r\n var versionCapabilityLastDays = lodashfilter(versionCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 4;\r\n });\r\n if (versionCapabilityLastDays != null && versionCapabilityLastDays.length > 0\r\n && (IsLastDaysSupport == null || (IsLastDaysSupport != null && !IsLastDaysSupport))) {\r\n if (versionCapabilityLastDays[0].IsCapable) {\r\n IsLastDaysSupport = true;\r\n }\r\n else {\r\n IsLastDaysSupport = false;\r\n }\r\n IsVLastDaysSupport = true;\r\n }\r\n var versionCapabilityLastestTrip = lodashfilter(versionCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 5;\r\n });\r\n if (versionCapabilityLastestTrip != null && versionCapabilityLastestTrip.length > 0\r\n && (IsLastestTripSupport == null || (IsLastestTripSupport != null && !IsLastestTripSupport))) {\r\n if (versionCapabilityLastestTrip[0].IsCapable) {\r\n IsLastestTripSupport = true;\r\n }\r\n else {\r\n IsLastestTripSupport = false;\r\n }\r\n IsVLastestTripSupport = true;\r\n }\r\n var versionCapabilityEntireLog = lodashfilter(versionCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 6;\r\n });\r\n if (versionCapabilityEntireLog != null && versionCapabilityEntireLog.length > 0\r\n && (IsEntireLogSupport == null || (IsEntireLogSupport != null && !IsEntireLogSupport))) {\r\n if (versionCapabilityEntireLog[0].IsCapable) {\r\n IsEntireLogSupport = true;\r\n }\r\n else {\r\n IsEntireLogSupport = false;\r\n }\r\n IsVEntireLogSupport = true;\r\n }\r\n }\r\n }\r\n\r\n if (FirmwareSeriesCapabilityList != null && FirmwareSeriesCapabilityList != undefined && FirmwareSeriesCapabilityList.length > 0) {\r\n var seriesCapabilityList = lodashfilter(FirmwareSeriesCapabilityList, function (item) {\r\n return item.FirmwareSeriesId === FirmwareSeriesId;\r\n });\r\n\r\n if (seriesCapabilityList != null && seriesCapabilityList.length > 0) {\r\n var seriesCapabilityDCXSupport = lodashfilter(seriesCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 1;\r\n });\r\n if (seriesCapabilityDCXSupport != null && seriesCapabilityDCXSupport.length > 0\r\n && !IsVDCXSupport && (IsDCXSupport == null || (IsDCXSupport != null && !IsDCXSupport))) {\r\n if (seriesCapabilityDCXSupport[0].IsCapable) {\r\n IsDCXSupport = true;\r\n }\r\n else {\r\n IsDCXSupport = false;\r\n }\r\n }\r\n var seriesCapabilityRCSupport = lodashfilter(seriesCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 2;\r\n });\r\n if (seriesCapabilityRCSupport != null && seriesCapabilityRCSupport.length > 0\r\n && !IsVReeferConnectSupport && (IsReeferConnectSupport == null || (IsReeferConnectSupport != null && !IsReeferConnectSupport))) {\r\n if (seriesCapabilityRCSupport[0].IsCapable) {\r\n IsReeferConnectSupport = true;\r\n }\r\n else {\r\n IsReeferConnectSupport = false;\r\n }\r\n }\r\n var seriesCapabilityRange = lodashfilter(seriesCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 3;\r\n });\r\n if (seriesCapabilityRange != null && seriesCapabilityRange.length > 0\r\n && !IsVDateRangeSupport && (IsDateRangeSupport == null || (IsDateRangeSupport != null && !IsDateRangeSupport))) {\r\n if (seriesCapabilityRange[0].IsCapable) {\r\n IsDateRangeSupport = true;\r\n }\r\n else {\r\n IsDateRangeSupport = false;\r\n }\r\n }\r\n var seriesCapabilityLastDays = lodashfilter(seriesCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 4;\r\n });\r\n if (seriesCapabilityLastDays != null && seriesCapabilityLastDays.length > 0\r\n && !IsVLastDaysSupport && (IsLastDaysSupport == null || (IsLastDaysSupport != null && !IsLastDaysSupport))) {\r\n if (seriesCapabilityLastDays[0].IsCapable) {\r\n IsLastDaysSupport = true;\r\n }\r\n else {\r\n IsLastDaysSupport = false;\r\n }\r\n }\r\n var seriesCapabilityLastestTrip = lodashfilter(seriesCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 5;\r\n });\r\n if (seriesCapabilityLastestTrip != null && seriesCapabilityLastestTrip.length > 0\r\n && !IsVLastestTripSupport && (IsLastestTripSupport == null || (IsLastestTripSupport != null && !IsLastestTripSupport))) {\r\n if (seriesCapabilityLastestTrip[0].IsCapable) {\r\n IsLastestTripSupport = true;\r\n }\r\n else {\r\n IsLastestTripSupport = false;\r\n }\r\n }\r\n var seriesCapabilityEntireLog = lodashfilter(seriesCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 6;\r\n });\r\n if (seriesCapabilityEntireLog != null && seriesCapabilityEntireLog.length > 0\r\n && !IsVEntireLogSupport && (IsEntireLogSupport == null || (IsEntireLogSupport != null && !IsEntireLogSupport))) {\r\n if (seriesCapabilityEntireLog[0].IsCapable) {\r\n IsEntireLogSupport = true;\r\n }\r\n else {\r\n IsEntireLogSupport = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (IsLastestTripSupport != null && IsLastestTripSupport) {\r\n scopeOptionList.push({ 'key': 'LastTrip', 'value': 'LastTrip', 'display': 'Latest trip' });\r\n }\r\n if (IsLastDaysSupport != null && IsLastDaysSupport) {\r\n scopeOptionList.push({ 'key': 'Last30Days', 'value': 'Last30Days', 'display': 'Last 30 days' });\r\n scopeOptionList.push({ 'key': 'Last60Days', 'value': 'Last60Days', 'display': 'Last 60 days' });\r\n scopeOptionList.push({ 'key': 'Last90Days', 'value': 'Last90Days', 'display': 'Last 90 days' });\r\n }\r\n if (IsDateRangeSupport != null && IsDateRangeSupport) {\r\n scopeOptionList.push({ 'key': 'DateRange', 'value': 'DateRange', 'display': 'Specific date range' });\r\n }\r\n if (IsEntireLogSupport != null && IsEntireLogSupport) {\r\n scopeOptionList.push({ 'key': 'EntireDatalog', 'value': 'EntireDatalog', 'display': 'Entire log' });\r\n }\r\n this.setState({ scopeOptions: scopeOptionList });\r\n\r\n if (scopeOptionList.length > 0) {\r\n if (scopeOptionList.length == 1 && IsDateRangeSupport != null && IsDateRangeSupport) {\r\n this.setState({ IsScopeVisible: false });\r\n this.setState({ scopeValue: \"DateRange\" });\r\n }\r\n else {\r\n this.setState({ IsScopeVisible: true });\r\n if (IsDateRangeSupport != null && !IsDateRangeSupport) {\r\n this.setState({ IsDateRangeVisible: false });\r\n }\r\n if (IsReeferConnectSupport != null && IsReeferConnectSupport && IsDCXSupport != null && IsDCXSupport) {\r\n this.setState({ scopeValue: \"Last30Days\", IsDateRangeDisabled: true });\r\n }\r\n else if (IsReeferConnectSupport != null && !IsReeferConnectSupport && IsDCXSupport != null && IsDCXSupport) {\r\n this.setState({ scopeValue: \"Last30Days\", IsDateRangeDisabled: true });\r\n }\r\n else if (IsReeferConnectSupport != null && IsReeferConnectSupport && IsDCXSupport != null && !IsDCXSupport) {\r\n this.setState({ scopeValue: \"DateRange\", IsDateRangeDisabled: false });\r\n }\r\n else {\r\n this.setState({ IsDateRangeDisabled: true });\r\n if (IsLastestTripSupport != null && IsLastestTripSupport) {\r\n this.setState({ scopeValue: \"LastTrip\" });\r\n }\r\n else if (IsEntireLogSupport != null && IsEntireLogSupport) {\r\n this.setState({ scopeValue: \"EntireDatalog\" });\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.setState({ IsScopeVisible: false });\r\n if (IsDateRangeSupport != null && !IsDateRangeSupport) {\r\n this.setState({ IsDateRangeVisible: false });\r\n }\r\n }\r\n }\r\n }\r\n else if (reeferData[0].ReeferOEMTypeCd.trim() == \"D\") {\r\n var oldControllerTypes: any = [14, 15, 16];//RCNG-4613\r\n if (reeferFormatter != null || reeferFormatter != undefined) {\r\n var FirmwareSeriesCapabilityList = reeferFormatter.FirmwareSeriesCapabilityList;\r\n var FirmwareVersionCapabilityList = reeferFormatter.FirmwareVersionCapabilityList;\r\n var DeviceFirmwareVersions = reeferFormatter.DeviceFirmwareVersions;\r\n //var IsDCCSSupport = null;\r\n\r\n $.each(reeferData, function (key, val) {\r\n IsDCCSSupport = null;\r\n if (val.RCDFirmwareVersion != null && val.RCDFirmwareVersion != undefined && val.RCDFirmwareVersion != \"\") {\r\n if (val.DeviceType != null && val.DeviceType != \"\" && val.DeviceType != undefined) {\r\n if (DeviceFirmwareVersions != null && DeviceFirmwareVersions != undefined && DeviceFirmwareVersions.length > 0) {\r\n var FWDescription = lodashfilter(DeviceFirmwareVersions, function (item) {\r\n return item.ShortName.toUpperCase().trim() === val.RCDFirmwareVersion.toUpperCase().trim()\r\n || item.LongName.toUpperCase().trim() === val.RCDFirmwareVersion.toUpperCase().trim()\r\n && item.FirmwareVersionType.toUpperCase().trim() === \"MAIN\"\r\n && item.DeviceTypeCD.toUpperCase().trim() === val.DeviceType.toUpperCase().trim();\r\n });\r\n if (FWDescription != null && FWDescription.length > 0) {\r\n var FirmwareID = FWDescription[0].FirmwareID;\r\n var FirmwareSeriesId = FWDescription[0].FirmwareSeriesId;\r\n\r\n if (FirmwareVersionCapabilityList != null && FirmwareVersionCapabilityList != undefined && FirmwareVersionCapabilityList.length > 0) {\r\n var versionCapabilityList = lodashfilter(FirmwareVersionCapabilityList, function (item) {\r\n return item.FirmwareId === FirmwareID;\r\n });\r\n\r\n if (versionCapabilityList != null && versionCapabilityList.length > 0) {\r\n var versionCapabilityDCCSupport = lodashfilter(versionCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 7;\r\n });\r\n if (versionCapabilityDCCSupport != null && versionCapabilityDCCSupport.length > 0) {\r\n if (versionCapabilityDCCSupport[0].IsCapable && !oldControllerTypes.includes(val.ControllerTypeCd)) {\r\n IsDCCSSupport = true;\r\n IsDCCSSupportCount = IsDCCSSupportCount + 1;\r\n val.DownloadType = \"DCCS\";\r\n }\r\n else {\r\n IsDLSupportCount = IsDLSupportCount + 1;\r\n val.DownloadType = \"DL\";\r\n IsDCCSSupport = false;\r\n }\r\n //IsVDCSSupport = true;\r\n }\r\n //else {\r\n // if (reeferData[0].DeviceType.trim() == \"CT3600\") {\r\n // IsDCCSSupport = true;\r\n // IsVDCSSupport = true;\r\n // }\r\n //}\r\n }\r\n }\r\n\r\n if (IsDCCSSupport == null && FirmwareSeriesCapabilityList != null && FirmwareSeriesCapabilityList != undefined && FirmwareSeriesCapabilityList.length > 0) {\r\n var seriesCapabilityList = lodashfilter(FirmwareSeriesCapabilityList, function (item) {\r\n return item.FirmwareSeriesId === FirmwareSeriesId;\r\n });\r\n\r\n if (seriesCapabilityList != null && seriesCapabilityList.length > 0) {\r\n var seriesCapabilityDCCSupport = lodashfilter(seriesCapabilityList, function (item) {\r\n return item.FirmwareFeatureId === 7;\r\n });\r\n if (seriesCapabilityDCCSupport != null && seriesCapabilityDCCSupport.length > 0) {\r\n if (seriesCapabilityDCCSupport[0].IsCapable && !oldControllerTypes.includes(val.ControllerTypeCd)) {\r\n IsDCCSSupport = true;\r\n IsDCCSSupportCount = IsDCCSSupportCount + 1;\r\n val.DownloadType = \"DCCS\";\r\n }\r\n else {\r\n IsDLSupportCount = IsDLSupportCount + 1;\r\n IsDCCSSupport = false;\r\n val.DownloadType = \"DL\";\r\n }\r\n }\r\n\r\n }\r\n else {\r\n if (val.DeviceType.trim() == \"CT3600\" && !oldControllerTypes.includes(val.ControllerTypeCd)) {\r\n val.DownloadType = \"DCCS\";\r\n IsDCCSSupport = true;\r\n IsDCCSSupportCount = IsDCCSSupportCount + 1;\r\n //IsVDCSSupport = true;\r\n }\r\n else {\r\n IsDLSupportCount = IsDLSupportCount + 1;\r\n val.DownloadType = \"DL\";\r\n IsDCCSSupport = false;\r\n }\r\n }\r\n }\r\n else if (IsDCCSSupport == null) {\r\n if (val.DeviceType.trim() == \"CT3600\" && !oldControllerTypes.includes(val.ControllerTypeCd)) {\r\n IsDCCSSupport = true;\r\n IsDCCSSupportCount = IsDCCSSupportCount + 1;\r\n val.DownloadType = \"DCCS\";\r\n }\r\n else {\r\n IsDLSupportCount = IsDLSupportCount + 1;\r\n IsDCCSSupport = false;\r\n val.DownloadType = \"DL\";\r\n }\r\n }\r\n }\r\n else {\r\n if (val.DeviceType.trim() == \"CT3600\" && !oldControllerTypes.includes(val.ControllerTypeCd)) {\r\n IsDCCSSupport = true;\r\n IsDCCSSupportCount = IsDCCSSupportCount + 1;\r\n val.DownloadType = \"DCCS\";\r\n }\r\n else {\r\n IsDLSupportCount = IsDLSupportCount + 1;\r\n IsDCCSSupport = false;\r\n val.DownloadType = \"DL\";\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (val.DeviceType.trim() == \"CT3600\" && !oldControllerTypes.includes(val.ControllerTypeCd)) {\r\n IsDCCSSupport = true;\r\n IsDCCSSupportCount = IsDCCSSupportCount + 1;\r\n val.DownloadType = \"DCCS\";\r\n }\r\n else {\r\n IsDLSupportCount = IsDLSupportCount + 1;\r\n IsDCCSSupport = false;\r\n val.DownloadType = \"DL\";\r\n }\r\n }\r\n });\r\n if (IsDCCSSupportCount>0) {\r\n var tDD = this.state.DataDownload;\r\n IsDCCSSupport = true;\r\n tDD.DownloadType = \"DCCS\";\r\n isLastTrip = false;\r\n isAllTrip = false;\r\n isDateRange = true;\r\n tDD.QueryType = \"DateRange\";\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n }\r\n else {\r\n var tDD = this.state.DataDownload;\r\n IsDCCSSupport = false;\r\n tDD.DownloadType = \"DL\";\r\n isLastTrip = true;\r\n isAllTrip = false;\r\n isDateRange = false;\r\n tDD.QueryType = \"LastTrip\";\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n startDateChange(date) {\r\n var traditionalDownloadStartDate: server.TraditionalDownload = JSON.parse(JSON.stringify(this.state.DataDownload));\r\n traditionalDownloadStartDate.StartDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM'); //DateFormat(new Date(date), 'MM/dd/yyyy');\r\n this.setState({ DataDownload: traditionalDownloadStartDate });\r\n }\r\n\r\n endDateChange(date) {\r\n var traditionalDownloadEndDate: server.TraditionalDownload = JSON.parse(JSON.stringify(this.state.DataDownload));\r\n traditionalDownloadEndDate.EndDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM'); //DateFormat(new Date(date), 'MM/dd/yyyy');\r\n this.setState({ DataDownload: traditionalDownloadEndDate });\r\n }\r\n\r\n getEmails(useremail, customerId) {\r\n var url = Config.ApiBaseUrl + '/api/User/GetEmails?userEmail=' + useremail + '&customerId=' + customerId;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'async': 'false' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ emailOptions: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n GroupTypeChange(event: React.FormEvent) {\r\n var tDD = this.state.DataDownload;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"LastTrip\") {\r\n isLastTrip = true;\r\n isAllTrip = false;\r\n\r\n tDD.IsChecked = true;\r\n isDateRange = false;\r\n if (IsDCCSSupportCount>0)\r\n tDD.DownloadType = \"DCCS\";\r\n else\r\n tDD.DownloadType = \"DL\";\r\n tDD.QueryType = \"LastTrip\";\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n $.each(this.state.rowData, function (key, val) {\r\n if (val.ReeferOEMTypeCd.trim() == \"D\" && val.IsPending==\"U\") {\r\n val.IsPending = \"\";\r\n val.Tooltip = \"\";\r\n }\r\n });\r\n }\r\n else if (Value == \"AllTrips\") {\r\n isLastTrip = false;\r\n isAllTrip = true;\r\n tDD.IsChecked = false;\r\n isDateRange = false;\r\n if (IsDCCSSupportCount>0)\r\n tDD.DownloadType = \"DCCS\";\r\n else\r\n tDD.DownloadType = \"DL\";\r\n tDD.QueryType = \"EntireDatalog\";\r\n tDD.IsChecked = true;\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n $.each(this.state.rowData, function (key, val) {\r\n if (val.ReeferOEMTypeCd.trim() == \"D\" && val.IsPending == \"U\") {\r\n val.IsPending = \"\";\r\n val.Tooltip = \"\";\r\n }\r\n });\r\n }\r\n else {\r\n isLastTrip = false;\r\n isAllTrip = false;\r\n isDateRange = true;\r\n tDD.DownloadType = \"DCCS\";\r\n tDD.QueryType = \"DateRange\";\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n $.each(this.state.rowData, function (key, val) {\r\n if (val.DownloadType == \"DL\" && val.ReeferOEMTypeCd.trim() == \"D\" && (val.Tooltip == \"\" || val.Tooltip == null)) {\r\n val.IsPending = \"U\";\r\n val.Tooltip = \"Date Range not supported.\";\r\n }\r\n });\r\n }\r\n }\r\n\r\n SCGroupTypeChange(event: React.FormEvent) {\r\n var tDD = this.state.DataDownload;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"DL\") {\r\n isDLReeferConnect = true;\r\n isDLStarView = false;\r\n isDLBoth = false;\r\n }\r\n else if (Value == \"StarView\") {\r\n isDLReeferConnect = false;\r\n isDLStarView = true;\r\n isDLBoth = false;\r\n }\r\n else {\r\n isDLReeferConnect = false;\r\n isDLStarView = false;\r\n isDLBoth = true;\r\n }\r\n tDD.DownloadType = Value;\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n }\r\n\r\n /*DaikinGroupTypeChange(event: React.FormEvent) {\r\n var tDD = this.state.DataDownload;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"DL\") {\r\n isDLReeferConnect = true;\r\n isDLDCCS = false;\r\n isDLBoth = false;\r\n }\r\n else if (Value == \"DCCS\") {\r\n isDLReeferConnect = false;\r\n isDLDCCS = true;\r\n isDLBoth = false;\r\n }\r\n else {\r\n isDLReeferConnect = false;\r\n isDLDCCS = false;\r\n isDLBoth = true;\r\n }\r\n tDD.DownloadType = Value;\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n }*/\r\n\r\n CarrierGroupTypeChange(event: React.FormEvent) {\r\n var tDD = this.state.DataDownload;\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"DL\") {\r\n this.setState({ isDLCRReeferConnect: true, isDLDCX: false });\r\n }\r\n else if (Value == \"DCX\") {\r\n this.setState({ isDLCRReeferConnect: false, isDLDCX: true });\r\n }\r\n tDD.DownloadType = Value;\r\n filters.OtherValue = Value;\r\n ReeferCommandsGrid.UpdateOtherValue(Value);\r\n this.setState({\r\n DataDownload: tDD, Filters: filters\r\n }, () =>\r\n this.renderTDDGrid(this.props.reeferData));\r\n }\r\n\r\n ScopeChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n this.setState({ scopeValue: Value });\r\n if (Value == \"DateRange\") {\r\n this.setState({ IsDateRangeDisabled: false });\r\n }\r\n else {\r\n this.setState({ IsDateRangeDisabled: true });\r\n }\r\n }\r\n\r\n TempCountsChange(event: React.FormEvent) {\r\n var tDD = this.state.DataDownload;\r\n var Value: string = event.currentTarget.value.trim();\r\n tDD.TempRecordCount = parseInt(Value).toString();\r\n if (tDD.TempRecordCount.toString() == \"NaN\") {\r\n tDD.TempRecordCount = \"\";\r\n }\r\n\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n }\r\n\r\n EventCountChange(event: React.FormEvent) {\r\n var tDD = this.state.DataDownload;\r\n var Value: string = event.currentTarget.value.trim();\r\n tDD.EventRecordCount = parseInt(Value).toString();\r\n if (tDD.EventRecordCount.toString() == \"NaN\") {\r\n tDD.EventRecordCount = \"\";\r\n }\r\n this.setState({\r\n DataDownload: tDD\r\n });\r\n oldEventCount = parseInt(Value);\r\n }\r\n\r\n //isNumber(value) {\r\n // return typeof value === 'number' && isFinite(value);\r\n //} \r\n\r\n ClearDownloadValues() {\r\n var filterSet = new ForwardCommandParams();\r\n var startDate = new Date();\r\n startDate.setDate(startDate.getDate() + -1).toLocaleString();\r\n var endDate = new Date();\r\n endDate.setDate(endDate.getDate()).toLocaleString();\r\n isLastTrip = true;\r\n isAllTrip = false;\r\n isDateRange = false;\r\n IsDCCSSupport = null;\r\n IsDCCSSupportCount = 0;\r\n IsDLSupportCount = 0;\r\n isDLReeferConnect = false;\r\n isDLStarView = false;\r\n isDLDCCS = false;\r\n isDLBoth = true;\r\n var filter: server.TraditionalDownload = {\r\n StartDate: startDate, EndDate: endDate, IsChecked: true, TempRecordCount: '1000', EventRecordCount: '1000', Emails: \"\", DownloadType: null, QueryType: null\r\n };\r\n this.setState({ DataDownload: filter, emailOptions: [], value: [], removeSelected: true });\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n performYesAction() {\r\n this.closeModel();\r\n this.FinalSubmit();\r\n }\r\n closeModel() {\r\n $('#confirmModal').hide();\r\n }\r\n performNoAction() {\r\n this.closeModel();\r\n }\r\n public render() {\r\n var DateRangedisabled: any;\r\n if (IsDCCSSupportCount>0) {\r\n DateRangedisabled = false;\r\n }\r\n else {\r\n DateRangedisabled = true;\r\n }\r\n return
    \r\n
    \r\n {\r\n this.state.oemTypeCd.trim() == \"D\" || (this.state.oemTypeCd.trim() == \"T\" && this.state.oemModel == \"TR\") ?\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n this.GroupTypeChange(e)} />\r\n \r\n
    \r\n
    \r\n this.GroupTypeChange(e)} />\r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n {this.state.oemTypeCd.trim() == \"D\" ?\r\n
    \r\n
    \r\n
    \r\n this.GroupTypeChange(e)} />\r\n \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n :
    \r\n }\r\n\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n : this.state.oemTypeCd.trim() == \"T\" ?\r\n
    \r\n
    \r\n
    \r\n
    this.TempCountsChange(e)} />
    \r\n\r\n
    \r\n
    this.EventCountChange(e)} onChange={e => this.EventCountChange(e)} />
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n : this.state.oemTypeCd.trim() == \"S\" ?\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    Format(s):
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n this.SCGroupTypeChange(e)} />\r\n \r\n
    \r\n
    \r\n this.SCGroupTypeChange(e)} />\r\n \r\n
    \r\n
    \r\n this.SCGroupTypeChange(e)} />\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Select Email Id(s) :
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n : this.state.oemTypeCd.trim() == \"C\" ?\r\n
    \r\n
    \r\n {\r\n this.state.IsScopeVisible == true ?\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    :
    \r\n }\r\n {(dCXDownloads == true && this.state.deviceType != null && this.state.deviceType.trim() == \"CT4000\") ?\r\n
    \r\n
    Format(s) :
    \r\n
    \r\n
    \r\n
    \r\n this.CarrierGroupTypeChange(e)} />\r\n \r\n
    \r\n
    \r\n this.CarrierGroupTypeChange(e)} />\r\n \r\n
    \r\n
    \r\n
    \r\n
    :
    \r\n }\r\n
    \r\n {\r\n this.state.IsDateRangeVisible == true ?\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    :
    \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n :\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n\r\n
    \r\n \r\n
    \r\n\r\n \r\n {\r\n this.state.ValidState == true ?\r\n \r\n :\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Confirmation
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n The selected reefers has different DL type. Command will be sent with respect to either DL or DCCS type. Do you want to continue?\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ForwardCommandParams {\r\n SelectedReefers: server.USP_UnitCurrentConditionUI_Model[];\r\n CommandName: string;\r\n TempValue: any;\r\n TraditionalDownload: server.TraditionalDownload;\r\n OtherValue: string;\r\n}\r\n\r\n\r\n","\r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport ReeferStatus from '../../routecomponents/ReeferStatus';\r\nimport ReeferDetails from '../../routecomponents/ReeferDetails';\r\nimport VesselStatus from '../../routecomponents/VesselStatus';\r\nimport { ReeferStatusGrid } from '../../childcomponents/ReeferStatusGrid';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport ReeferFormatters from '../../../actions/ReeferFormatter';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport { PopupWindow } from './../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from './../../sharedcomponents/GridToolBarPopups';\r\nimport { ReeferStatusSSRMGrid } from '../../childcomponents/ReeferStatusSSRMGrid';\r\n// pull in the ag-grid styles we're interested in\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface StopPTIGridState {\r\n SelectedReefers: any[];\r\n rowData: server.USP_UnitCurrentConditionUI_Model[];\r\n columnDefs: any[];\r\n Filters: ForwardCommandParams;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n GridToolBarHtml: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nvar colDefs;\r\nvar self;\r\nexport class StopPTI extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ForwardCommandParams();\r\n this.state = { SelectedReefers: [], rowData: [], columnDefs: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml: '', IsCommandIssued: false, PrevSelectedItems: [] };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderGridToolBar();\r\n var reeferData = this.props.reeferData;\r\n if (reeferData.length > 0) {\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ SelectedReefers: reeferData });\r\n //this.setState({ rowData: reeferData, SelectedReefers: reeferData });\r\n $('#globalLoader').show();\r\n this.GetDataFromAPI(reeferData);\r\n }\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n \r\n \r\n \r\n \r\n }\r\n\r\n submitStopPTICommand() {\r\n var command = \"StopPretrip\";\r\n this.submitTemperatureCommands(command, null);\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData.length > 0) {\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ SelectedReefers: reeferData }); \r\n $('#globalLoader').show();\r\n this.GetDataFromAPI(reeferData);\r\n }\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n refreshGrid = () => {\r\n $('#globalLoader').show();\r\n this.GetDataFromAPI(this.state.SelectedReefers);\r\n $('#globalLoader').hide();\r\n };\r\n\r\n GetDataFromAPI(reeferData) {\r\n self.state.Filters.SelectedReefers = reeferData;\r\n this.state.Filters.CommandName = \"StopPretrip\";\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/LoadPTIData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ rowData: data }, ()=> this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n //*-----Start Grid Related-----*//\r\n submitTemperatureCommands(commandName, paramValue) {\r\n var refreshGrid = this.props.refreshGrid;\r\n if (self.state.rowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0))\r\n { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.rowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PreTripCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response)\r\n .then(data => {\r\n //$(\"#Hide_\" + commandName).click();\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n if (refreshGrid == \"details\")\r\n ReeferDetails.refreshReeferDetailsData();\r\n else if (refreshGrid == \"home\") {\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n else {\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n }\r\n else if (refreshGrid == \"vessel\")\r\n VesselStatus.refreshVesselStatusGrid();\r\n else\r\n ReeferStatus.refreshReeferStatusGrid();\r\n \r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n \r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n //this.gridApi.sizeColumnsToFit();\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n { headerName: \"Last event\", field: \"EventDescription\", cellRenderer: (params) => { return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList, self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts); }, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 },\r\n { headerName: \"Last pretrip time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"LastPreTripDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 160 },\r\n { headerName: \"PTI state\", field: \"PTIState\", cellRenderer: Formatters.RefCommandStatus, width: 150 }\r\n ];\r\n }\r\n //*-----End Grid Related-----*//\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ForwardCommandParams {\r\n SelectedReefers: server.USP_UnitCurrentConditionUI_Model[];\r\n CommandName: string;\r\n TempValue: any;\r\n IsCmdSendViaVC?: Boolean\r\n VesselInfo: server.VesselInformation; \r\n}","/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport $ from 'jquery';\r\nimport ReeferStatus from '../../routecomponents/ReeferStatus';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport ReeferFormatters from '../../../actions/ReeferFormatter';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from '../../sharedcomponents/GridToolBarPopups';\r\nimport { ReeferStatusGrid } from '../../childcomponents/ReeferStatusGrid';\r\nimport { ReeferStatusSSRMGrid } from '../../childcomponents/ReeferStatusSSRMGrid';\r\nimport ReeferDetails from '../../routecomponents/ReeferDetails';\r\nimport VesselStatus from '../../routecomponents/VesselStatus';\r\nimport DateFormat from 'dateformat';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\n//import * as moment from 'moment';\r\nimport moment from 'moment';\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-fresh.css';\r\n//import 'react-datepicker/dist/react-datepicker.css';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport * as RCNGWindow from '../../sharedcomponents/ConfirmationWindow';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\nvar date = new Date();\r\nvar reeferData;\r\nvar colDefs;\r\nvar selectedRowUnitMasterIds;\r\nvar command;\r\nvar startDate;\r\nvar StartDate;\r\nvar endDate;\r\nvar EndDate;\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface PreTripGridState {\r\n cmdFilters: server.PreTripCommnadFilters;\r\n SelectedReefers: any[];\r\n rowData: server.USP_UnitCurrentConditionUI_Model[];\r\n columnDefs: any[];\r\n Filters: any;\r\n fwdCmdResult: server.ForwardCommandResultData;\r\n IsscheduleTrip: boolean;\r\n validateOEMType: any;\r\n title: string;\r\n SuggestionsGeofenceNames: any[];\r\n GeofenceNamesList: any[];\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class PreTrip extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n //var filterSet = new ForwardCommandParams();\r\n //var fwdcmd = new ForwardCommandResultData();\r\n //var validoemtype = new validateOEMType();\r\n this.settingDates();\r\n var validoemtype: server.ValidateOEMType = { RefCustSpecificCommandCnt: 0, Msg: null, Title: null, RefCustomerSpecificCommand: [], SelectedReefers: [], command: null };\r\n var filterSet: server.ForwardCommandParams = { SelectedReefers: [], CommandName: null, TempValue: null, PreTripCmdFilters: null, TraditionalDownload: null, lstAutoConfigParams: null, IsCmdSendViaVC: null, VesselInfo: null};\r\n var fwdcmd: server.ForwardCommandResultData = { CurrentCondition: null, IsError: false, Tooltip: null, IsTooltipVisisble: null, IsPending: null, UnitMasterId: 0, LastPreTripDTTM: null, PTIState: null, Command: null, PreTripCmdFilters: null };\r\n var cmdfilter: server.PreTripCommnadFilters = { StartDate: StartDate, EndDate: EndDate, Geofence: '', IsScheduledPreTrip: false, GeofenceID: null, GeofenceTagName: null, IsPreTripSubmitted: false };\r\n this.state = { rowData: [], cmdFilters: cmdfilter, SelectedReefers: [], columnDefs: [], Filters: filterSet, fwdCmdResult: fwdcmd, IsscheduleTrip: false, validateOEMType: validoemtype, title: null, SuggestionsGeofenceNames: [], GeofenceNamesList: [], VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: []};\r\n colDefs = this.createColumnDefs();\r\n command = props.preTripCmd; \r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetGeofences')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ GeofenceNamesList: data });\r\n }); \r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData; \r\n if (reeferData.length > 0) {\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ SelectedReefers: reeferData });\r\n //this.setState({ rowData: reeferData, SelectedReefers: reeferData });\r\n this.getDataFromAPI(reeferData);\r\n }\r\n } \r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n \r\n \r\n \r\n \r\n $(\".inputdisabled > .input-group \").removeClass('enabled');\r\n $(\".inputdisabled > .input-group \").addClass('disabled'); \r\n\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.cmdFilters.IsScheduledPreTrip) {\r\n $('#txtGeofenceName').removeAttr('disabled');\r\n }\r\n else {\r\n $('#txtGeofenceName').attr('disabled', 'disabled'); \r\n } \r\n }\r\n \r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n var filters = this.state.cmdFilters;\r\n command = nextprops.preTripCmd;\r\n this.settingDates();\r\n filters.Geofence = \"\";\r\n filters.EndDate = EndDate;\r\n filters.StartDate = StartDate;\r\n filters.IsScheduledPreTrip = false;\r\n this.setState({ cmdFilters: filters });\r\n\r\n $('#geofenceName').prop('disabled', true);\r\n $(\".inputdisabled > .input-group \").removeClass('enabled');\r\n $(\".inputdisabled > .input-group \").addClass('disabled'); \r\n this.setState({ IsscheduleTrip: false });\r\n if (reeferData.length > 0) {\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ SelectedReefers: reeferData });\r\n this.getDataFromAPI(reeferData);\r\n this.validateOEMType(reeferData, command);\r\n }\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n //*----Validations-------*//\r\n settingDates() {\r\n startDate = DateFormat(new Date(Date.now()), 'mm/dd/yyyy');\r\n StartDate = DateFormat(new Date(moment(new Date(startDate)).startOf('day').toString()), 'mm/dd/yyyy HH:MM:ss');\r\n endDate = moment(new Date(startDate)).endOf('day').toString();\r\n EndDate = DateFormat(new Date(endDate), 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n\r\n validateOEMType(reeferData: any, cmd: string) {\r\n this.state.validateOEMType.SelectedReefers = this.state.SelectedReefers;\r\n this.state.validateOEMType.command = cmd; //from UI\r\n var validateOEMType = JSON.stringify(this.state.validateOEMType);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ValidateOEMType', { method: 'POST', body: validateOEMType, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.Msg != null) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer(s) must have a valid OEM type.\");\r\n }\r\n else {\r\n this.setState({ title: data.Title });\r\n }\r\n });\r\n }\r\n\r\n commandFromDateChange(date) {\r\n var filters = this.state.cmdFilters;\r\n filters.StartDate = DateFormat(new Date(date.toString()), 'mm/dd/yyyy HH:MM:ss');\r\n this.setState({\r\n cmdFilters: filters\r\n });\r\n }\r\n\r\n commandToDateChange(date) {\r\n var filters = this.state.cmdFilters;\r\n filters.EndDate = DateFormat(new Date(date.toString()), 'mm/dd/yyyy HH:MM:ss');\r\n this.setState({\r\n cmdFilters: filters\r\n });\r\n }\r\n\r\n geofenceChange = (event, { newValue }) => {\r\n var filters = this.state.cmdFilters;\r\n var value: string = event.currentTarget.value;\r\n filters.Geofence = newValue;\r\n this.setState({\r\n cmdFilters: filters\r\n });\r\n };\r\n\r\n refreshGrid = () => {\r\n $('#globalLoader').show();\r\n this.getDataFromAPI(this.state.SelectedReefers);\r\n $('#globalLoader').hide();\r\n };\r\n\r\n scheduleTripSelected(event) {\r\n var filters = this.state.cmdFilters;\r\n filters.IsScheduledPreTrip = !this.state.IsscheduleTrip;\r\n this.setState({\r\n cmdFilters: filters,\r\n IsscheduleTrip: !this.state.IsscheduleTrip\r\n });\r\n\r\n if (this.state.cmdFilters.IsScheduledPreTrip) {\r\n $(\".inputdisabled > .input-group \").removeClass('disabled'); \r\n $(\".inputdisabled > .input-group \").addClass('enabled'); \r\n $('#txtGeofenceName').prop('disabled', false);\r\n }\r\n else {\r\n var filters = this.state.cmdFilters;\r\n filters.Geofence = \"\";\r\n filters.StartDate = new Date();\r\n filters.EndDate = new Date();\r\n this.setState({ cmdFilters: filters });\r\n $('#txtGeofenceName').prop('disabled', true);\r\n $(\".inputdisabled > .input-group \").removeClass('enabled');\r\n $(\".inputdisabled > .input-group \").addClass('disabled'); \r\n }\r\n }\r\n\r\n //*--------Validations End---------------*//\r\n //*-----Start Grid Related-----*//\r\n getDataFromAPI(reeferData) {\r\n this.state.Filters.SelectedReefers = reeferData; \r\n this.state.Filters.CommandName = command;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/LoadPTIData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ rowData: data });\r\n });\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n //this.gridApi.sizeColumnsToFit(); \r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n // element.appendChild(imageElement);\r\n // return element;\r\n //}\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 80, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 100, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 100, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 80 },\r\n { headerName: \"Last event\", field: \"EventDescription\", cellRenderer: (params) => { return ReeferFormatters.EventDescriptionFormatters(params, this.props.reeferFormatter.CustomerSpecificEventList, this.props.reeferFormatter.EventMasterList, this.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, this.props.reeferFormatter.Ref_SensorAlerts); }, width: 100 },\r\n { headerName: \"Event time \", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 70 },\r\n { headerName: \"Last pretrip time \", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"LastPreTripDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 190 },\r\n { headerName: \"PTI state\", field: \"PTIState\", cellRenderer: Formatters.RefCommandStatus, width: 100 }\r\n ];\r\n }\r\n\r\n onSelectionChanged(params: any) {\r\n var unitmasterids = this.state.fwdCmdResult;\r\n var selectedRows = params.api.getSelectedRows();\r\n unitmasterids.UnitMasterId = selectedRows[0].UnitMasterID;\r\n unitmasterids.Command = command;\r\n this.setState({ fwdCmdResult: unitmasterids });\r\n }\r\n //*-----End Grid Related-----*//\r\n //*----Submit------*//\r\n validatePreTripGeofence() {\r\n this.state.Filters.PreTripCmdFilters = this.state.cmdFilters;\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ValidatePreTripGeofence?geofence=' + this.state.cmdFilters.Geofence, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var cmdfilters = this.state.cmdFilters;\r\n if (data.length > 0) {\r\n var selectedGeo = data[0];\r\n cmdfilters.GeofenceTagName = selectedGeo.Tag + \"/\" + selectedGeo.Name;\r\n cmdfilters.GeofenceID = selectedGeo.GeofenceID;\r\n this.validatePretripDates();\r\n }\r\n else {\r\n cmdfilters.GeofenceTagName = null;\r\n cmdfilters.GeofenceID = null;\r\n PopupWindow.showErrorMessage(\"Alert\", \"Goefence is not available\");\r\n $('#globalLoader').hide();\r\n }\r\n this.setState({ cmdFilters: cmdfilters });\r\n });\r\n }\r\n\r\n validatePretripDates() {\r\n var unitMasterID;\r\n var selectedReeferdata = JSON.parse(JSON.stringify(this.state.Filters.SelectedReefers));\r\n if (selectedReeferdata != undefined && selectedReeferdata[0].UnitMasterID != undefined) {\r\n unitMasterID = selectedReeferdata[0].UnitMasterID;\r\n } else {\r\n unitMasterID = this.state.fwdCmdResult.UnitMasterId;\r\n }\r\n this.state.fwdCmdResult.Command = command;\r\n this.state.fwdCmdResult.UnitMasterId = unitMasterID;\r\n this.state.fwdCmdResult.PreTripCmdFilters = this.state.Filters.PreTripCmdFilters;\r\n var fwdcmdresult = JSON.stringify(this.state.fwdCmdResult);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ValidatePretripDates', { method: 'POST', body: fwdcmdresult, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"Exists\") {\r\n var cmdpretripfliters = this.state.cmdFilters;\r\n cmdpretripfliters.IsPreTripSubmitted = false;\r\n this.setState({ cmdFilters: cmdpretripfliters });\r\n PopupWindow.showErrorMessage(\"Alert\", \"Schedule PreTrip already exists with same prerequisite.\");\r\n $('#globalLoader').hide();\r\n }\r\n else\r\n this.submitTemperatureCommands();\r\n });\r\n }\r\n\r\n submitPreTripCommand() {\r\n if (this.state.rowData.length > 0) {\r\n if (this.state.cmdFilters.IsScheduledPreTrip == true && this.state.VCCheckBoxInfo.enableVCCheckBox == true)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) are on vessel, Scheduling Pretrip is not allowed\");\r\n else if (this.state.cmdFilters.IsScheduledPreTrip == true && this.state.VCCheckBoxInfo.isVCMessage == true) {\r\n var confirmationMessage = \"Selected Reefer(s) are on vessel. Are you sure you want to issue the command?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.submitCommandAction.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else\r\n this.submitPreTripCommandConfirmation();\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n submitCommandAction() {\r\n RCNGWindow.ConfirmWindow.close();\r\n this.submitPreTripCommandConfirmation();\r\n }\r\n\r\n submitPreTripCommandConfirmation() {\r\n $('#globalLoader').show();\r\n this.state.Filters.CommandName = command;\r\n this.state.Filters.SelectedReefers = this.state.rowData;\r\n this.state.Filters.PreTripCmdFilters = this.state.cmdFilters;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var validationParams = JSON.stringify(this.state.Filters.PreTripCmdFilters); \r\n if (this.state.cmdFilters.IsScheduledPreTrip == true) {\r\n var validationResult = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ValidatePreTripCommand', { method: 'POST', body: validationParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(validationResult)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"Success\") {\r\n if (this.state.cmdFilters.Geofence != undefined && this.state.cmdFilters.Geofence != null && this.state.cmdFilters.Geofence != \"\") {\r\n this.validatePreTripGeofence();\r\n }//Geofoence empty checking\r\n else {\r\n this.validatePretripDates();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", data.toString());\r\n $('#globalLoader').hide();\r\n }\r\n });\r\n }\r\n else\r\n this.submitTemperatureCommands();\r\n }\r\n\r\n submitTemperatureCommands() {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0))\r\n {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\");\r\n $('#globalLoader').hide();\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var refreshGrid = this.props.refreshGrid;\r\n this.state.Filters.CommandName = command;\r\n this.state.Filters.SelectedReefers = this.state.rowData;\r\n this.state.Filters.PreTripCmdFilters = this.state.cmdFilters;\r\n this.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n this.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PreTripCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response)\r\n .then(data => {\r\n //($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n //$(\"#Hide_\" + this.state.Filters.CommandName).click();\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n if (refreshGrid == \"details\")\r\n ReeferDetails.refreshReeferDetailsData();\r\n else if (refreshGrid == \"home\") {\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n else {\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n }\r\n else if (refreshGrid == \"vessel\")\r\n VesselStatus.refreshVesselStatusGrid();\r\n else\r\n ReeferStatus.refreshReeferStatusGrid();\r\n \r\n });\r\n }\r\n }\r\n //*----Submit End----*//\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n SuggestionsGeofenceNames: []\r\n });\r\n };\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n SuggestionsGeofenceNames: this.getGeofenceNameSuggestions(value)\r\n });\r\n };\r\n\r\n getObjectArray(inputType: string) {\r\n var finalArray = this.state.GeofenceNamesList.map(function (obj) {\r\n switch (inputType) {\r\n case 'Tag':\r\n return obj.Tag;\r\n }\r\n });\r\n\r\n return finalArray;\r\n }\r\n\r\n getGeofenceNameSuggestions(value) {\r\n if (value != null && value != undefined && value != '') {\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : this.getObjectArray('Tag').filter(Tag =>\r\n Tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n } \r\n } \r\n \r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n const { SuggestionsGeofenceNames } = this.state;\r\n const GeofenceNameInputProps = {\r\n id: 'txtGeofenceName',\r\n placeholder: 'Enter Geofence Name',\r\n value: this.state.cmdFilters.Geofence,// userIdvalue,\r\n onChange: this.geofenceChange.bind(this),\r\n disabled:true\r\n };\r\n\r\n return
    \r\n
    \r\n
    \r\n
    \r\n Schedule PreTrip:\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\n\r\n//class ForwardCommandParams {\r\n// SelectedReefers: server.USP_UnitCurrentConditionUI_Model[];\r\n// CommandName: string;\r\n// TempValue: any;\r\n// PreTripCmdFilters: server.PreTripCommnadFilters;\r\n//}\r\n//class PreTripCommnadFilters {\r\n// Geofence: string;\r\n// IsScheduledPreTrip?: boolean;\r\n// StartDate?: Date;\r\n// EndDate?: Date;\r\n// GeofenceID?: number;\r\n// GeofenceTagName?: string;\r\n// IsPreTripSubmitted: boolean;\r\n//}\r\n\r\n//class ForwardCommandResultData {\r\n// currentcondition: server.USP_UnitCurrentConditionUI_Model;\r\n// IsError: boolean;\r\n// Tooltip: string;\r\n// IsTooltipVisisble: string;\r\n// IsPending: string;\r\n// UnitMasterId: Number;\r\n// LastPreTripDTTM?: Date;\r\n// PTIState: string;\r\n// Command: string;\r\n// PreTripCmdFilters: server.PreTripCommnadFilters;\r\n\r\n//}\r\n\r\n//class validateOEMType {\r\n// RefCustSpecificCommandCnt: Number;\r\n// Msg: string;\r\n// Title: string;\r\n// RefCustomerSpecificCommand: server.RefCustomerSpecificCommand[];\r\n// SelectedReefers: server.USP_UnitCurrentConditionUI_Model[];\r\n// command: string;\r\n//}\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport ReeferFormatters from '../../../actions/ReeferFormatter';\r\n//import { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { ReeferStatusGrid } from '../../childcomponents/ReeferStatusGrid';\r\nimport { ReeferStatusSSRMGrid } from '../../childcomponents/ReeferStatusSSRMGrid';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from '../../sharedcomponents/GridToolBarPopups';\r\nimport Select from 'react-select';\r\nimport \"react-select/dist/react-select.css\"\r\nimport ReeferStatus from '../../routecomponents/ReeferStatus';\r\nimport ReeferDetails from '../../routecomponents/ReeferDetails';\r\nimport VesselStatus from '../../routecomponents/VesselStatus';\r\nimport $ from 'jquery';\r\nimport animatedloader from '../../../images/animated-loader.gif';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\nvar self;\r\n\r\ninterface Options {\r\n label: string;\r\n value: string;\r\n}\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface LastPretripState {\r\n SelectedReefers: any[],\r\n EmailValue: string,\r\n CustomerId: number;\r\n removeSelected: boolean;\r\n disabled: boolean;\r\n crazy: boolean;\r\n stayOpen: boolean;\r\n value: any[];\r\n rtl: boolean;\r\n emailOptions: Options[];\r\n ModelNumber: string; \r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters; \r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nvar colDefs;\r\nexport class LastPretripResult extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = {\r\n SelectedReefers: [], EmailValue: props.userEmail, CustomerId: props.customerId,\r\n removeSelected: true,\r\n disabled: false,\r\n crazy: false,\r\n stayOpen: false,\r\n value: [],\r\n rtl: false,\r\n emailOptions: [],\r\n ModelNumber: '',\r\n RowData: [],\r\n Filters: filterSet,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n IsCommandIssued: false, PrevSelectedItems: []\r\n };\r\n\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n\r\n \r\n \r\n \r\n \r\n\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderLastPretripGrid(this.props.reeferData); \r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.reeferData != null && nextProps != undefined && nextProps.reeferData.length > 0) {\r\n $('#globalLoader').show(); \r\n this.renderLastPretripGrid(nextProps.reeferData); \r\n }\r\n if (nextProps.VCCheckBoxInfo != undefined && nextProps.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextProps.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n refreshGrid = () => {\r\n this.setState({\r\n RowData: this.state.RowData\r\n });\r\n };\r\n\r\n renderLastPretripGrid(reeferData: any) {\r\n this.getEmails(this.props.userEmail, this.props.customerId);\r\n this.setState({ SelectedReefers: reeferData });\r\n this.state.Filters.CommandName = \"LastPretripResult\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData, ModelNumber: \"\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n submitLastPretripResult() {\r\n var emailID = this.state.value;\r\n if (emailID.toString() != \"\") {\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ValidatePreTripEmailId?emailIds=' + emailID.toString();\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"\") {\r\n var command = \"LastPretripResult\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTemperatureCommands(command, this.state.value, refreshGrid);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", data);\r\n }\r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter Email address.\");\r\n }\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue, refreshGrid) {\r\n if (this.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0))\r\n { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n this.state.Filters.CommandName = commandName;\r\n this.state.Filters.SelectedReefers = this.state.RowData;\r\n this.state.Filters.TempValue = paramValue;\r\n this.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n this.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData; \r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response)\r\n .then(data => {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n if (refreshGrid == \"details\")\r\n ReeferDetails.refreshReeferDetailsData();\r\n else if (refreshGrid == \"home\") {\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n else {\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n }\r\n else if (refreshGrid == \"vessel\")\r\n VesselStatus.refreshVesselStatusGrid();\r\n else\r\n ReeferStatus.refreshReeferStatusGrid();\r\n \r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n \r\n emailChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n this.setState({ EmailValue: Value });\r\n }\r\n\r\n //multiselect\r\n handleSelectChange(value) {\r\n this.setState({ value });\r\n }\r\n\r\n //toggleCheckbox(e) {\r\n // this.setState({\r\n // [e.target.name]: e.target.checked,\r\n // });\r\n //}\r\n\r\n toggleRtl(e) {\r\n let rtl = e.target.checked;\r\n this.setState({ rtl });\r\n }\r\n\r\n getEmails(useremail, customerId) {\r\n var url = Config.ApiBaseUrl + '/api/User/GetEmails?userEmail=' + useremail + '&customerId=' + customerId;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'async': 'false' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ emailOptions: data });\r\n $('#lastPreTripLoader').hide();\r\n });\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"LastPretripResult\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n //this.gridApi.sizeColumnsToFit();\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n {\r\n headerName: \"Last event\", field: \"EventDescription\",\r\n cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList,\r\n self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts);\r\n }, width: 150\r\n },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Ctrl s/n\", field: \"ControllerSerialNumber\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 160 },\r\n { headerName: \"Ctrl SW rev\", field: \"SoftwareRevision\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Ctrl mode\", field: \"ControlModeID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 }\r\n\r\n ];\r\n } \r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n //const options2 = this.state.emailOptions;\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    Loading
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\n\r\n","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport DateFormat from 'dateformat';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport UserRights from './../../../actions/UserRights';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface QueryReeferInventoryState {\r\n SelectedReefers: any[],\r\n SelectedInventory: string,\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.ForwardCommandParameters,\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class QueryReeferInventory extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters(); \r\n this.state = { SelectedReefers: [], SelectedInventory: \"Parts Serials\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderQueryReeferInventory(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitQueryReeferInventory() {\r\n if (this.state.SelectedInventory != \"\") {\r\n var command = \"QueryReeferInventory\";\r\n var paramValue = this.state.SelectedInventory;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n } else { PopupWindow.showErrorMessage(\"Error\", \"Please select valid Inventory.\"); }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ RowData: reeferData, SelectedInventory: \"Parts Serials\" });\r\n }\r\n\r\n if (reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderQueryReeferInventory(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderQueryReeferInventory(reeferData: any) {\r\n this.state.Filters.CommandName = \"QueryReeferInventory\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData, SelectedInventory: \"Parts Serials\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n queryReeferInventoryChange(event: React.FormEvent) {\r\n var selectedInventory = this.state.SelectedInventory;\r\n var Value: string = event.currentTarget.value;\r\n selectedInventory = Value;\r\n this.setState({ SelectedInventory: selectedInventory });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"QueryReeferInventory\", TempValue: \"Parts Serials\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport DateFormat from 'dateformat';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface UpdateModelConfigState {\r\n SelectedReefers: any[],\r\n ModelNumber: string,\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.ForwardCommandParameters,\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class UpdateModelConfiguration extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], ModelNumber: \"\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderUpdateModel(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n this.setState({ RowData: reeferData, ModelNumber: \"\" });\r\n $('#globalLoader').show();\r\n this.renderUpdateModel(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderUpdateModel(reeferData: any) {\r\n this.state.Filters.CommandName = \"UpdateModelConfiguration\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData, ModelNumber: \"\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n submitModelConfiguration() {\r\n if (this.state.ModelNumber != \"\") {\r\n var command = \"UpdateModelConfiguration\";\r\n var paramValue = this.state.ModelNumber;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n } else { PopupWindow.showErrorMessage(\"Error\", \"Model number should not be empty.\"); }\r\n }\r\n\r\n reeferIdChange(event: React.FormEvent) {\r\n var modelNumber = this.state.ModelNumber;\r\n var Value: string = event.currentTarget.value.trim();\r\n modelNumber = Value;\r\n this.setState({ ModelNumber: modelNumber });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"UpdateModelConfiguration\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n Model Number :\r\n
    \r\n
    \r\n
    \r\n this.reeferIdChange(e)} value={this.state.ModelNumber} />\r\n eg model no. format: 69NT40-541-001\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface chgReeferClockSyncSetting{\r\n SelectedReefers: any[];\r\n SelectedParamValue: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class ChangeReeferClockSyncSetting extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], SelectedParamValue: \"Enable\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderChangeReeferClockGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitchangeReeferClockSyncSetting() { \r\n var command = \"ReeferClockSyncSettings\";\r\n var paramValue = this.state.SelectedParamValue;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid); \r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderChangeReeferClockGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderChangeReeferClockGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"ReeferClockSyncSettings\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n ReeferClockSyncchange(event: React.FormEvent) {\r\n var ParamValue: string = event.currentTarget.value;\r\n this.setState({ SelectedParamValue: ParamValue });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"ReeferClockSyncSettings\", TempValue: \"Enable\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","\r\nimport * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface GuestReeferConfigurationState {\r\n SelectedReefers: any[];\r\n SelectedConfigurationCmd: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n GuestReeferCmds: server.GuestReeferConfigurationOptions[];\r\n GuestReeferCmdValue: string;\r\n GuestReeferCmdSelectedValue: number;\r\n GuestReeferCmdDetails: server.GuestReeferConfigurationCmdDetails;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class GuestReeferConfiguration extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], SelectedConfigurationCmd: \"0\", RowData: [], Filters: filterSet, GuestReeferCmds: [], GuestReeferCmdValue: \"\", GuestReeferCmdSelectedValue: -1, GuestReeferCmdDetails: null, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderGuestReeferCmdGrid(this.props.reeferData);\r\n this.loadGuestReeferCmdData();\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n loadGuestReeferCmdData() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetGuestReeferCmds')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ GuestReeferCmds: data }, () => { this.GetGuestReeferConfigurationValue(this.state.GuestReeferCmds[0].GuestReeferCmdValue); });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n public ConfigurationCmdChange(event: any): void {\r\n this.setState({ GuestReeferCmdValue: '' });\r\n //this.setState({ [event.currentTarget.name]: event.currentTarget.value });\r\n var result: any = false;\r\n if (event.currentTarget.value != 'undefined' && event.currentTarget.value != null && event.currentTarget.value != '-1') { \r\n result = this.GetGuestReeferConfigurationValue(event.currentTarget.value);\r\n }\r\n if (result) {\r\n var reefersData = this.props.reeferData;\r\n if (reefersData != undefined && reefersData != null && reefersData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderGuestReeferCmdGrid(reefersData);\r\n }\r\n } \r\n }\r\n GetGuestReeferConfigurationValue(value: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GuestReeferCmdDetails?GuestReeferConfigurationValue=' + value, { method: 'POST', headers: { 'Accept': 'applicatio/json', 'Content-Type': 'application/json' } })\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GuestReeferCmdDetails', { method: 'POST', body: value, headers: { 'Accept': 'applicatio/json', 'Content-Type': 'application/json' } })\r\n var configurationValue = \"\";\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ GuestReeferCmdDetails: data }, () => {\r\n var configurationValue = this.state.GuestReeferCmdDetails.ConfigurationValue + \" \" + this.state.GuestReeferCmdDetails.ConfigurationValueDesc; \r\n this.setState({ GuestReeferCmdValue: JSON.parse(JSON.stringify(configurationValue)) });\r\n });\r\n $('#globalLoader').hide();\r\n return true;\r\n });\r\n }\r\n submitGuestReeferCmd() {\r\n if (this.state.GuestReeferCmdDetails != null) {\r\n var command = this.state.GuestReeferCmdDetails.CommandName;\r\n var paramValue = this.state.GuestReeferCmdDetails.ConfigurationValue;\r\n if (paramValue != \"\" && paramValue != null) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select Guest Reefer Configuration Command.\");\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderGuestReeferCmdGrid(reeferData);\r\n this.loadGuestReeferCmdData();\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderGuestReeferCmdGrid(reeferData: any) {\r\n var cmdName = \"\";\r\n if (this.state.GuestReeferCmdDetails != undefined && this.state.GuestReeferCmdDetails != null) {\r\n cmdName = this.state.GuestReeferCmdDetails.CommandName;\r\n }\r\n this.setState({ SelectedReefers: reeferData, SelectedConfigurationCmd: \"0\" });\r\n this.state.Filters.CommandName = cmdName;\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n var configCmds = this.state.GuestReeferCmds;\r\n var configCmdsOptions = configCmds.map(function (cmd) {\r\n return (\r\n \r\n );\r\n });\r\n return
    \r\n
    \r\n
    \r\n
    \r\n Guest Reefer Configuration Command :\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Guest Reefer Configuration Value :\r\n
    \r\n
    \r\n {this.state.GuestReeferCmdValue}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface AutoConfigState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n RefDeviceConfig: USP_GetDeviceConfigurations_Result[];\r\n isLoading: boolean;\r\n CustomerFriendlyName: string;\r\n Template1: string;\r\n Template2: string;\r\n Template3: string;\r\n Template4: string;\r\n Template5: string;\r\n Template6: string;\r\n Template7: string;\r\n Template8: string;\r\n Template9: string;\r\n Template10: string;\r\n Email: string;\r\n ConfigValue: string;\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n AssetFilters: server.AssetParams,\r\n}\r\n\r\nexport class AutoConfiguration extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.setDefaultFilters();\r\n var AssetFilterSet = this.setAssetFilters();\r\n this.state = {\r\n RefDeviceConfig: [], SelectedReefers: [], isLoading: false, ConfigValue: '', RowData: [], Email: '', CustomerFriendlyName: '', Template1: '', Template2: '', Template3: '', Template4: '',\r\n Template5: '', Template6: '', Template7: '', Template8: '', Template9: '', Template10: '', Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [],\r\n AssetFilters: AssetFilterSet\r\n }\r\n }\r\n\r\n getDeviceConfigurationsByCustomerId()\r\n { \r\n $('#globalLoader').show();\r\n var forwardCommandParams = JSON.stringify(this.state.AssetFilters);\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/GetDeviceConfigurationsByCustomer?customerId=' + customerId;\r\n\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetDeviceConfigurationsByCustomer';\r\n\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n\r\n this.setState({ RefDeviceConfig: data, isLoading: true });\r\n $('#globalLoader').hide();\r\n \r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.clearDeviceConfigData();\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderChangeZigbeeGrid(this.props.reeferData);\r\n this.getDeviceConfigurationsByCustomerId(); \r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.clearDeviceConfigData();\r\n var reeferData = nextprops.reeferData; \r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderChangeZigbeeGrid(reeferData);\r\n this.getDeviceConfigurationsByCustomerId();\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n clearDeviceConfigData() {\r\n this.setState({\r\n Template1: '', Template2: '', Template3: '', Template4: '', Template5: '',\r\n Template6: '', Template7: '', Template8: '', Template9: '', Template10: '',\r\n ConfigValue: '', Email: ''\r\n });\r\n }\r\n\r\n DeviceConfigurationChange(event: React.FormEvent) {\r\n this.setState({\r\n Template1: '', Template2: '', Template3: '', Template4: '', Template5: '',\r\n Template6: '', Template7: '', Template8: '', Template9: '', Template10: ''\r\n }); \r\n var deviceConfig: string = event.currentTarget.value; \r\n if (deviceConfig != '--Select--') {\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetDeviceConfigTemplates?configId=' + deviceConfig;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n this.setState({\r\n ConfigValue: deviceConfig, Template1: data[0].Template1, isLoading: true, Template3: data[0].Template3, Template4: data[0].Template4,\r\n Template5: data[0].Template5, Template6: data[0].Template6, Template7: data[0].Template7, Template8: data[0].Template8, Template9: data[0].Template9,\r\n Template10: data[0].Template10, Template2: data[0].Template2\r\n });\r\n }\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n else {\r\n this.setState({\r\n ConfigValue: deviceConfig\r\n });\r\n } \r\n }\r\n\r\n renderChangeZigbeeGrid(reeferData: any) {\r\n\r\n this.state.Filters.CommandName = \"ZigbeeSettings\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n //this.setState({ RowData: reeferData, SelectedSettings: \"Enable\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n submitAutoConfiguration() { \r\n //if (this.state.RefDeviceConfig != null) {\r\n var filters = new AutoConfigParams();\r\n filters.DeviceConfigId = this.state.ConfigValue;\r\n\r\n filters.EmailIds = this.state.Email;\r\n\r\n if (this.state.ConfigValue == '') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Config.\");\r\n } else if (this.state.Email == '') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please Enter Email(s).\");\r\n } else {\r\n\r\n var command = \"AutoConfig\";\r\n var filterParams = JSON.stringify(filters);\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, filterParams, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n } \r\n //} else { PopupWindow.showErrorMessage(\"Error\", \"Please select Configurations.\"); }\r\n }\r\n\r\n EmailChange(event: React.FormEvent) { \r\n var Value: string = event.currentTarget.value.trim();\r\n this.setState({ Email: Value });\r\n } \r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"ZigbeeSettings\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n setAssetFilters() {\r\n var filters: server.AssetParams = {\r\n DeviceType: this.props.reeferData[0].DeviceType, customerId: this.props.reeferData[0].CustomerID\r\n };\r\n return filters;\r\n }\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Templates :\r\n
    \r\n
    \r\n {this.state.Template1} \r\n {this.state.Template2}\r\n {this.state.Template3}\r\n {this.state.Template4}\r\n {this.state.Template5}\r\n {this.state.Template6}\r\n {this.state.Template7}\r\n {this.state.Template8}\r\n {this.state.Template9}\r\n {this.state.Template9}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass USP_GetDeviceConfigurations_Result {\r\n FriendlyName: string;\r\n DeviceConfigurationID: number;\r\n Description: string;\r\n CustomerFriendlyName: string;\r\n}\r\n\r\nclass USP_GetDeviceConfigTemplates_Result {\r\n Template1: string;\r\n Template2: string;\r\n Template3: string;\r\n Template4: string;\r\n Template5: string;\r\n Template6: string;\r\n Template7: string;\r\n Template8: string;\r\n Template9: string;\r\n Template10: string;\r\n}\r\n\r\nclass AutoConfigParams\r\n{\r\n DeviceConfigId: string;\r\n EmailIds:string\r\n}","export default __webpack_public_path__ + \"static/media/TripCancel.6c3a29af.png\";","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport $ from 'jquery';\r\n\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport { GridToolBarPopups } from './../../sharedcomponents/GridToolBarPopups';\r\n// pull in the ag-grid styles we're interested in\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport TripCancel from '../../../images/TripCancel.png';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface ScheduledPreTripGridState {\r\n SelectedReefers: any[];\r\n rowData: server.USP_GetScheduledPretripDetails_Result[];\r\n columnDefs: any[];\r\n Filters: ForwardCommandParams;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n GridToolBarHtml: any;\r\n}\r\n\r\nvar colDefs;\r\nvar self;\r\nvar cancelEvent;\r\nexport class ScheduledPreTrip extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ForwardCommandParams();\r\n this.state = { SelectedReefers: [], rowData: [], columnDefs: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml:'' };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderGridToolBar();\r\n \r\n \r\n \r\n \r\n\r\n var reeferData = this.props.reeferData;\r\n if (reeferData.length > 0) {\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ SelectedReefers: reeferData });\r\n $('#globalLoader').show();\r\n this.GetDataFromAPI(reeferData);\r\n }\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n } \r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData.length > 0) {\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ SelectedReefers: reeferData });\r\n $('#globalLoader').show();\r\n this.GetDataFromAPI(reeferData);\r\n }\r\n } \r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n GetDataFromAPI(reeferData) {\r\n self.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/LoadScheduledPTIData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ rowData: data }, ()=> this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n //*-----Start Grid Related-----*//\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n }\r\n\r\n refreshGrid = () => {\r\n $('#globalLoader').show();\r\n this.GetDataFromAPI(this.state.SelectedReefers);\r\n $('#globalLoader').hide();\r\n };\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = TripCancel;\r\n // imageElement.title = \"Cancel\";\r\n // element.appendChild(imageElement);\r\n // return element;\r\n //}\r\n removeIndicator(params: any) {\r\n return ;\r\n }\r\n onCellClickedCancel(event) {\r\n cancelEvent = null;\r\n cancelEvent = event;\r\n $('#pretripCancelModal').show();\r\n }\r\n\r\n CancelAction() {\r\n self.Delete(cancelEvent);\r\n $(\"#pretripCancelModal\").hide();\r\n }\r\n\r\n Delete(params:any) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/SubmitScheduledPTIData', { method: 'POST', body: JSON.stringify(params.data), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response)\r\n .then(data => {\r\n self.closeConfirmation();\r\n });\r\n params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n self.closeConfirmation();\r\n //RCNGWindow.ConfirmWindow.close(); \r\n }\r\n\r\n closeConfirmation(){\r\n $(\"#pretripCancelModal\").hide();\r\n }\r\n\r\n NoConfirmation(){\r\n self.closeConfirmation();\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Cancel\", field: \"CommandTypeCd\", cellRenderer: this.removeIndicator, onCellClicked: this.onCellClickedCancel.bind(this),width: 85 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", width: 140 },\r\n { headerName: \"Device ID\", field: \"RCDID\", width: 150 },\r\n { headerName: \"Time window start\", field: \"StartDate\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Time window end\", field: \"EndDate\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Geofence\", field: \"GeofenceCustomerID\", width: 100 },\r\n { headerName: \"Created time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"scheduledCreatedDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Pretrip type\", field: \"CommandText\", width: 150 },\r\n ];\r\n\r\n }\r\n\r\n //*-----End Grid Related-----*//\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Confirmation
    \r\n \r\n \r\n
    \r\n
    \r\n Do you want to cancel the scheduled pretrip?\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ForwardCommandParams {\r\n SelectedReefers: server.USP_UnitCurrentConditionUI_Model[];\r\n CommandName: string;\r\n TempValue: any;\r\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAXCAYAAAARIY8tAAAACXBIWXMAAAsTAAALEwEAmpwYAAAVZ2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMTEtMTZUMTM6MTM6MTUrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMTEtMjZUMTU6MzQrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTExLTI2VDE1OjM0KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMWYwNjFjMC1iNjc1LTgwNGItOGI3MS1iYzQyZjA0N2FmZDciIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjYzc1NzgwOS04MWZhLTBjNGUtYTI3Mi03ZmU1ZjFiYzBiOGEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5MTBjZmZhMy1iN2E5LTZjNDctYjJhZS1hM2IxODI0NTU5YjYiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTEwY2ZmYTMtYjdhOS02YzQ3LWIyYWUtYTNiMTgyNDU1OWI2IiBzdEV2dDp3aGVuPSIyMDE4LTExLTE2VDEzOjEzOjE1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxZmVhYzIyOS1hNjE2LWI3NDMtOThlMC1kMDkzYjA4OTU3MjYiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTZUMTM6MTM6MzcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjc5ZmRkMTAxLTMxZDItY2M0OS04ZmI5LTdiZDI1MDVjNTU5YyIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNlQxMzoxNjozNSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZGZlZGY4YWItZTIwNi1hOTQ3LWFkNDktNDJiOTNlZWNkMWY0IiBzdEV2dDp3aGVuPSIyMDE4LTExLTE2VDEzOjE2OjM1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphMWYwNjFjMC1iNjc1LTgwNGItOGI3MS1iYzQyZjA0N2FmZDciIHN0RXZ0OndoZW49IjIwMTgtMTEtMjZUMTU6MzQrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc5ZmRkMTAxLTMxZDItY2M0OS04ZmI5LTdiZDI1MDVjNTU5YyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5MTBjZmZhMy1iN2E5LTZjNDctYjJhZS1hM2IxODI0NTU5YjYiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5MTBjZmZhMy1iN2E5LTZjNDctYjJhZS1hM2IxODI0NTU5YjYiLz4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjA4ZTdlNTc0LTRhODItZmE0Ny1hNjcxLWVhM2NiODgyZjgxNTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxM2YzZDM1MC0wNWM3LWRjNDUtYTBhMi0yMjA5YzI4ZGQyMzM8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTk3NmYzY2UtMzcwMS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjFmZjAwYjEzLTY5YzQtZmE0Ny1iNDE0LTVhM2E3ZjIwZWVjNzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNzRkM2Q5NC1hZTRkLTEyNDEtYTU4Yi0zMjNmN2RlMTQ3YzQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NDQ5NTc2MmEtMzZmOC0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjRlMTM5ZmU0LTJiZWMtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1MWQ5YjRlNC0zNzA1LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NTU1NGY1MDYtNWIzNi1kZjRlLTk3ZDAtOTI2NTkzYzBhNGVhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjVmOTNiYTc1LTM5MmUtMTFlNy1hODFlLWJmZjYzYzUzMDNiMjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3M2YwMDEzMC0zOTVhLTExZTctYWMzNi1mYjM1MWVjZDY0OWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkNDA0MmEtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhiZGI1MWEyLTc2N2QtMTFlNy1iZmQ2LThmNWRlOTRkMWY0MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5NWE5MzEwZS03MzA1LWE4NGYtYWRhMC0zNDA2MjIxNjcwMDQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OTlkZTNlYTAtMzY1My01ZTRhLWJlMTYtZTUwZmYwNGEyNjNmPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjliOTYyYTg0LWUyNGYtMWY0Zi1hOTc3LTU3YzdiMzYxNWFjZjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphMTViZWU0My05Y2ViLTdhNDEtYTk3YS1jOTM1OTQwN2IwYjU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YTUzZWVjNDQtOWE4NC0wMDRhLThkZjctMTA4MjcwMmRlNzRhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmFjZjZiOTZiLTVmZTUtMTFlNy05NzZiLWYzNjU3YTExNzM2OTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiNWVkZGMwOS0zNmY3LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Y2IxN2ZhN2QtZDlhMi1hNTQ1LWFlODktMmQyMGIxZTdhNzA4PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplMTg1Njc5Yy1jZGYwLTJlNDEtYmE1OC0wNDdlNWJjYTE4NDc8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTVjYzU5YjItMzZmOC0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmVkOWM3NGM2LTM2ZmItMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYzE5ZDlmYS1hODMyLTIyNDItODMwOC1kNjhmZDk4OTk0ZmY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZmZjYmVjMDAtNGVlYi1lYTQ2LTkwZDktNjg4YTg2M2VkZjFiPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyMjg2NzJhYi01NTJlLTg4NDctYTY0Ni04ZjA1OTA1NTBhNzE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjJkYTk1YjVlLTZjMjQtNDQ0MS1iYzQxLTM3ZTI4OWNiYzkxNDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NDUyZDA5OTQtY2Y2MC0yMTQwLTg4MGYtZGEwMmRkMjA4OGJhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo1OEJBN0EyRjJFOTkxMUU3QUQzMThFODMwN0Q1RUQxMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NjZkODRmOWUtNzVjMC0zYjRiLTlhNDgtNGViZTJiNzQ3NWI5PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3MWQ0YTcxOC1kNGQxLWI0NGYtYjFkYy02ZjM3YTUxZmJjZmE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjgxM2ZiMjczLWY2ZTktOTc0Ny05NDI4LTg4NGYwZWFkMGFhZTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6OWYwN2YxMzYtZGRkZi0wZDQ0LTkxNDItOGRiY2M3NWQxOGJlPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpCOTUwQUQwMjEwOUYxMUU3QkVGQ0E5NzdDMUJFOEQxQTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6RDFDNDYwMDMwRTRGMTFFN0JFRkNBOTc3QzFCRThEMUE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmE1MWY3YWFjLTAyOGUtOTQ0ZC04YzZlLTRhOGI4OGJmM2NlZDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6ZGFmOGQ2YjYtZWUwZi1mMzQwLWE0ZWUtNDI1MTFlMTdiNDkxPC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9y8kGwAAAuZJREFUSIm11M1rnFUUBvDfnZlkMrUpk5a0Jk3z1VLHmhjQhZTiUpAg6F7RpVYRVxYRt+5duvIPsAuXLuxG0hIRS9oKCS0kJdpOoUlKQZN0kpk5Lt5MDNPGpGAPXM7LfZ/7POeec+5JEeFZWu6ZsqOw/ZXSXtiE1/ECfsDynuwRRES22GuNBNORHftoH3jxFAIp+CQ6OmpRKEQwFZz4PwUGgukYGIgYG4vI5erBZ/sR2G+R38YrMToqzp2jpyeP99C318H/EsjLmuBFfKBc7kyVCkNDVCrwMt7FQTubpc12/ujHMRzHEAa3fEVKYyYmRH8/jYYYG5Pm5jo9eHABb2Aef+DPLX8fd/F32n5oKf0ipaO6up6TUgklxWJBscipU+LsWQ4coNGgUJBmZpiZYW2NWo16fV0ut+7RozWNxga+EHFx5w1uS+k13d1UKmJ4mGKRcjkjjqBez5D1upiYYHychw9ZX5eWlkpmZ0sWFw9rNKpYaq/Bec3mt5aXw8oKvb2MjmbkzWYWecsisr2U6Ovj5MlM/O5dNjdv4X1Mwc4UQTe+ltJ5IyOFmJzMhDY2Hq9eBIUsAenKFS5fplb7HZ/i5xamvYv+2srdNxYW1tKlS6yu0tn5uEAulwU1M8PUVFOt9hs+3CZvwR4/aQ1f4aL5eapV8vl/o27dOJ+nVpNu3mRjYxGfY7qdbLf+rWF+O9cRWbRdXZnf3Mx8s9nC30f1SUS7CXRgQLFIdzcHD2a7y8tZMctlDh3K9splOIHTuLVfgecx6PBhjhyR7t3j2jXm5rJu6uvj9Glx5owYHpauXj2q0Rh5mhv0S2lQb6904wbXr3PnDhHXsaBafcvsbEdaWMjSls8XNBpPnku7TNN3IqXVKJcjSqUIFoMLwUvBsWAy+D5Siujqikgpgu+C0n7H9cdb/bISfBlUglwbpid4M/hxC/tTcLxdoP2htWwQ47i9Vbj6LqmEHryKdfyKzR3p2SHwjOwflieQQaPBEUEAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAUCAYAAACeXl35AAAACXBIWXMAAAsTAAALEwEAmpwYAAAPwWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMS0xNFQxMjoyMTo1MiswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMS0yMlQxMDozNjozNiswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMTEtMjJUMTA6MzY6MzYrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjA4ZjIwZjgtMjViNi0xZDQzLTk1OWMtMjc0NjZjY2QxNTFlIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OGY3ZGZhYzAtZGUzOS0xMjQ0LWE5MzctOTdiMTQ3MmJlYmFlIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OTM1NDE2YjEtNDgxYS01NDQ2LTgyYzAtMGIzNzdmOWY5YWQxIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MzU0MTZiMS00ODFhLTU0NDYtODJjMC0wYjM3N2Y5ZjlhZDEiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTRUMTI6MjE6NTIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmNiMzBhZTg5LWRjZTktMjc0OC1iNTYyLTAyMWQ4NWQxMmNmOSIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNFQxMjoyMTo1MiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjA4ZjIwZjgtMjViNi0xZDQzLTk1OWMtMjc0NjZjY2QxNTFlIiBzdEV2dDp3aGVuPSIyMDE5LTExLTIyVDEwOjM2OjM2KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxpPjNEQjRCREQ3MkE2MzMyNDVDNjZDNUVENUE4ODlGQjM2PC9yZGY6bGk+IDxyZGY6bGk+NTY0QTJENUI4ODhDNDExQ0JCRTkxODJERDY0NzkxRTE8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTNmM2QzNTAtMDVjNy1kYzQ1LWEwYTItMjIwOWMyOGRkMjMzPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjE5NzZmM2NlLTM3MDEtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNzRkM2Q5NC1hZTRkLTEyNDEtYTU4Yi0zMjNmN2RlMTQ3YzQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MzFmNmJjZDctMjVlNC02NzQ5LWE5YTEtMGRmZmQzOWU1MDI5PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ0NWE5Yjg2LTJjZGQtZjM0Mi1iNDZlLTg1NGY3MGFmNWExMTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NDk1NzYyYS0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NGUxMzlmZTQtMmJlYy0xMWU3LWJkNmYtYWY5ZWE5NWY5ZDVlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjUxZDliNGU0LTM3MDUtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1ZjkzYmE3NS0zOTJlLTExZTctYTgxZS1iZmY2M2M1MzAzYjI8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NjJjYTljMzItYTcyNC0zMzQ1LWEzNTQtODFhNDY5YTVmYWE3PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjczZjAwMTMwLTM5NWEtMTFlNy1hYzM2LWZiMzUxZWNkNjQ5ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4YmQ0MDQyYS0zNzA1LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkYjUxYTItNzY3ZC0xMWU3LWJmZDYtOGY1ZGU5NGQxZjQzPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhmN2RmYWMwLWRlMzktMTI0NC1hOTM3LTk3YjE0NzJiZWJhZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphY2Y2Yjk2Yi01ZmU1LTExZTctOTc2Yi1mMzY1N2ExMTczNjk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YjVlZGRjMDktMzZmNy0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplNWNjNTliMi0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWQ5Yzc0YzYtMzZmYi0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZmY2JlYzAwLTRlZWItZWE0Ni05MGQ5LTY4OGE4NjNlZGYxYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MjI4NjcyYWItNTUyZS04ODQ3LWE2NDYtOGYwNTkwNTUwYTcxPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyZGE5NWI1ZS02YzI0LTQ0NDEtYmM0MS0zN2UyODljYmM5MTQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ1MmQwOTk0LWNmNjAtMjE0MC04ODBmLWRhMDJkZDIwODhiYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NThCQTdBMkYyRTk5MTFF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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAUCAYAAACeXl35AAAACXBIWXMAAAsTAAALEwEAmpwYAAAPwWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMS0xNFQxMjoxNjo1NiswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMS0yMlQxMDozNDozMiswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMTEtMjJUMTA6MzQ6MzIrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZTRiNjQxYjAtM2FjYS1mOTRkLThkY2MtOGI3YjQ0ZGJkOWFiIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NDQ1YTliODYtMmNkZC1mMzQyLWI0NmUtODU0ZjcwYWY1YTExIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmZiZjNmZDYtOWFkMy1mYzQzLWFkOTgtNzRjNjFlZmUzZjgxIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiZmJmM2ZkNi05YWQzLWZjNDMtYWQ5OC03NGM2MWVmZTNmODEiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTRUMTI6MTY6NTYrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmY5NGRiNDRmLWYyZDEtZmM0Mi04ZTEwLTNlZTU2MWNmZDJhZSIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNFQxMjoxNjo1NiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTRiNjQxYjAtM2FjYS1mOTRkLThkY2MtOGI3YjQ0ZGJkOWFiIiBzdEV2dDp3aGVuPSIyMDE5LTExLTIyVDEwOjM0OjMyKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxpPjNEQjRCREQ3MkE2MzMyNDVDNjZDNUVENUE4ODlGQjM2PC9yZGY6bGk+IDxyZGY6bGk+NTY0QTJENUI4ODhDNDExQ0JCRTkxODJERDY0NzkxRTE8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTNmM2QzNTAtMDVjNy1kYzQ1LWEwYTItMjIwOWMyOGRkMjMzPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjE5NzZmM2NlLTM3MDEtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNzRkM2Q5NC1hZTRkLTEyNDEtYTU4Yi0zMjNmN2RlMTQ3YzQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MzFmNmJjZDctMjVlNC02NzQ5LWE5YTEtMGRmZmQzOWU1MDI5PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ0NWE5Yjg2LTJjZGQtZjM0Mi1iNDZlLTg1NGY3MGFmNWExMTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NDk1NzYyYS0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NGUxMzlmZTQtMmJlYy0xMWU3LWJkNmYtYWY5ZWE5NWY5ZDVlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjUxZDliNGU0LTM3MDUtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1ZjkzYmE3NS0zOTJlLTExZTctYTgxZS1iZmY2M2M1MzAzYjI8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NjJjYTljMzItYTcyNC0zMzQ1LWEzNTQtODFhNDY5YTVmYWE3PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjczZjAwMTMwLTM5NWEtMTFlNy1hYzM2LWZiMzUxZWNkNjQ5ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4YmQ0MDQyYS0zNzA1LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkYjUxYTItNzY3ZC0xMWU3LWJmZDYtOGY1ZGU5NGQxZjQzPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhmN2RmYWMwLWRlMzktMTI0NC1hOTM3LTk3YjE0NzJiZWJhZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphY2Y2Yjk2Yi01ZmU1LTExZTctOTc2Yi1mMzY1N2ExMTczNjk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YjVlZGRjMDktMzZmNy0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplNWNjNTliMi0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWQ5Yzc0YzYtMzZmYi0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZmY2JlYzAwLTRlZWItZWE0Ni05MGQ5LTY4OGE4NjNlZGYxYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MjI4NjcyYWItNTUyZS04ODQ3LWE2NDYtOGYwNTkwNTUwYTcxPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyZGE5NWI1ZS02YzI0LTQ0NDEtYmM0MS0zN2UyODljYmM5MTQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ1MmQwOTk0LWNmNjAtMjE0MC04ODBmLWRhMDJkZDIwODhiYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NThCQTdBMkYyRTk5MTFF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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAXCAYAAAARIY8tAAAACXBIWXMAAAsTAAALEwEAmpwYAAAVvGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMTEtMTZUMTM6MTM6MTUrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMTEtMjZUMTU6MzU6NTUrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTExLTI2VDE1OjM1OjU1KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0ZjNiYzM5Ny02ZGQ4LWNiNGItYmYwNi00YzM1NjBjYjdjMzEiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NWUyYjAyZi1lN2ZmLTFlNGUtYTlkZi0yMjc3MWNmNzA5OWYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5MTBjZmZhMy1iN2E5LTZjNDctYjJhZS1hM2IxODI0NTU5YjYiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTEwY2ZmYTMtYjdhOS02YzQ3LWIyYWUtYTNiMTgyNDU1OWI2IiBzdEV2dDp3aGVuPSIyMDE4LTExLTE2VDEzOjEzOjE1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxZmVhYzIyOS1hNjE2LWI3NDMtOThlMC1kMDkzYjA4OTU3MjYiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTZUMTM6MTM6MzcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmUxOGVlNGNjLWFiNjUtMzc0Yy04ZjM1LTFmYWFiNjdjMjY1YiIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNlQxMzoxNzowMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YTEwN2Q1ZjEtYjlhMi0yZTRiLTkxZWItZmY3OTJkZTRhNTU2IiBzdEV2dDp3aGVuPSIyMDE4LTExLTE2VDEzOjE3OjAzKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ZjNiYzM5Ny02ZGQ4LWNiNGItYmYwNi00YzM1NjBjYjdjMzEiIHN0RXZ0OndoZW49IjIwMTgtMTEtMjZUMTU6MzU6NTUrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmUxOGVlNGNjLWFiNjUtMzc0Yy04ZjM1LTFmYWFiNjdjMjY1YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5MTBjZmZhMy1iN2E5LTZjNDctYjJhZS1hM2IxODI0NTU5YjYiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5MTBjZmZhMy1iN2E5LTZjNDctYjJhZS1hM2IxODI0NTU5YjYiLz4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjA4ZTdlNTc0LTRhODItZmE0Ny1hNjcxLWVhM2NiODgyZjgxNTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxM2YzZDM1MC0wNWM3LWRjNDUtYTBhMi0yMjA5YzI4ZGQyMzM8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTk3NmYzY2UtMzcwMS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjFmZjAwYjEzLTY5YzQtZmE0Ny1iNDE0LTVhM2E3ZjIwZWVjNzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNzRkM2Q5NC1hZTRkLTEyNDEtYTU4Yi0zMjNmN2RlMTQ3YzQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NDQ5NTc2MmEtMzZmOC0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjRlMTM5ZmU0LTJiZWMtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1MWQ5YjRlNC0zNzA1LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NTU1NGY1MDYtNWIzNi1kZjRlLTk3ZDAtOTI2NTkzYzBhNGVhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjVmOTNiYTc1LTM5MmUtMTFlNy1hODFlLWJmZjYzYzUzMDNiMjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3M2YwMDEzMC0zOTVhLTExZTctYWMzNi1mYjM1MWVjZDY0OWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkNDA0MmEtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhiZGI1MWEyLTc2N2QtMTFlNy1iZmQ2LThmNWRlOTRkMWY0MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5NWE5MzEwZS03MzA1LWE4NGYtYWRhMC0zNDA2MjIxNjcwMDQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OTlkZTNlYTAtMzY1My01ZTRhLWJlMTYtZTUwZmYwNGEyNjNmPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjliOTYyYTg0LWUyNGYtMWY0Zi1hOTc3LTU3YzdiMzYxNWFjZjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphMTViZWU0My05Y2ViLTdhNDEtYTk3YS1jOTM1OTQwN2IwYjU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YTUzZWVjNDQtOWE4NC0wMDRhLThkZjctMTA4MjcwMmRlNzRhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmFjZjZiOTZiLTVmZTUtMTFlNy05NzZiLWYzNjU3YTExNzM2OTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiNWVkZGMwOS0zNmY3LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Y2IxN2ZhN2QtZDlhMi1hNTQ1LWFlODktMmQyMGIxZTdhNzA4PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplMTg1Njc5Yy1jZGYwLTJlNDEtYmE1OC0wNDdlNWJjYTE4NDc8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTVjYzU5YjItMzZmOC0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmVkOWM3NGM2LTM2ZmItMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYzE5ZDlmYS1hODMyLTIyNDItODMwOC1kNjhmZDk4OTk0ZmY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZmU1NTY2ZjUtOGIzNC03YTQxLTg0YjUtZTBlZWY3MGNiZDg4PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZmY2JlYzAwLTRlZWItZWE0Ni05MGQ5LTY4OGE4NjNlZGYxYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MjI4NjcyYWItNTUyZS04ODQ3LWE2NDYtOGYwNTkwNTUwYTcxPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyZGE5NWI1ZS02YzI0LTQ0NDEtYmM0MS0zN2UyODljYmM5MTQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ1MmQwOTk0LWNmNjAtMjE0MC04ODBmLWRhMDJkZDIwODhiYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NThCQTdBMkYyRTk5MTFFN0FEMzE4RTgzMDdENUVEMTA8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjY2ZDg0ZjllLTc1YzAtM2I0Yi05YTQ4LTRlYmUyYjc0NzViOTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NzFkNGE3MTgtZDRkMS1iNDRmLWIxZGMtNmYzN2E1MWZiY2ZhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4MTNmYjI3My1mNmU5LTk3NDctOTQyOC04ODRmMGVhZDBhYWU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjlmMDdmMTM2LWRkZGYtMGQ0NC05MTQyLThkYmNjNzVkMThiZTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6Qjk1MEFEMDIxMDlGMTFFN0JFRkNBOTc3QzFCRThEMUE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkQxQzQ2MDAzMEU0RjExRTdCRUZDQTk3N0MxQkU4RDFBPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDphNTFmN2FhYy0wMjhlLTk0NGQtOGM2ZS00YThiODhiZjNjZWQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmRhZjhkNmI2LWVlMGYtZjM0MC1hNGVlLTQyNTExZTE3YjQ5MTwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqNju/EAAANvSURBVEiJtZbPa1xVFMc/59733rwZM50f0SSTH5O0/ojVolAL1oVLRUQQBFct1Z10Ia4sRVwLLgQ3QhfiP1CoGxW34qIIgSoBS2ObdCY/Wsc0M9NJM3nz3rvHRVKM6cQGbO7qwfve8znnnvO+74qqcpDLHGh0wLv/MP3ZzMO0ArwKTAPfAqsP23DtkxP/APaxphQ+RzkpggUu7GfTfo9IVHnTt+a45wlO9RQw8SgBY0mSni6XcsHkeAkj8oqqvvPIAKr6thg5XhnJc+zoCIV8aJPEnQYq/wdgRfBEONrrpe8VDoXB5HiR0eEc1WoRI/KCOj0lwgDs3cudL0aBYed0TJVJVa06p5NJ6p4NfHvs6cODPF7OkqTwZLVErd4Mlm/dPRcE9jVjzA0R6oIsWit1oAEsA+s7AZdEZCgbeo8pZIGs7xnP8yzV8QLPTQ+hGOJYKZeyvPh8Bd/3noh6yetJnOKcdsVIN47TDee0B5wHLu4ELIjwci7nMzFWoDJcIONb8gMeQeihTkhTB0CSwlNHBjkyVaSznhJFMe3OZvZmrZm91eiUVXVFhL929+BsmroLrXZXO50epUKGykiOIBOgqeDcvy3FORAsg6UMY6MDJKmjcWedOE7nRDgD/Ly7By0ROeecxtcXVs9GvcQ7eaJKsRCS9vErVcVYIUkcs783uDK7QtSLZz3Pfgj8dF+3e4o6InJeRL6sLTY3Zn5dorsZ4/sPDpuIgMLc/B2uzC67zSie8Tz7wc7g/QAAG8bIpyAXF5darDU3MH1Uxgi9OKG+3KYbxTXPMx8Dl3fr9prfSIQbTgVVRXUrY98XANIUtgsAB0ZMA1jpF2ivD81XGA8zlmzWkg3B94R2O6LZ6pKmjkwAYWDJDwQYkQlVnukXaI8KdETQarEYciifY60ZcX2+xc16k9QppVLI5HiJqYkiw8MDXJ1rDMWJO2yM7A/gHKPWmmohHzK/sMYf86s0Vu+RpOlvgszfbtx9q77Y9pdWyoShh7HGk1T7+lJfgIhUjDB163aH2mKL9W6vbkW+ssZ+D6yCfn2vG79/9dqf72ZCH1XFWhlhywG6+wAwqpBrd6I1Ef3Cs+aSwBzgthU/eJbLqvpNFMUficgbbP0fymx50H8DgO+AmjEsgMwBSR9NU0R+BH4BXtrOvPFAsgd9q/gbwVtk2/V1Ev8AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAXCAYAAAARIY8tAAAACXBIWXMAAAsTAAALEwEAmpwYAAAWiWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMS0xNlQxMzoxMzoxNSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMS0yNlQxNTozNTowNSswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMTEtMjZUMTU6MzU6MDUrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmJhODJhYTMxLTBlZWYtNDk0NS04NjIxLWYzYTgxZGQ2Y2I0ZCIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmRkYjkxYzcyLWU1MWYtYzc0NC04MGIxLWMzYjZhMDg1YjQ1ZSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjkxMGNmZmEzLWI3YTktNmM0Ny1iMmFlLWEzYjE4MjQ1NTliNiIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlhSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6WVJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgZXhpZjpDb2xvclNwYWNlPSIxIiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjQiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSIyNCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTEwY2ZmYTMtYjdhOS02YzQ3LWIyYWUtYTNiMTgyNDU1OWI2IiBzdEV2dDp3aGVuPSIyMDE4LTExLTE2VDEzOjEzOjE1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxZmVhYzIyOS1hNjE2LWI3NDMtOThlMC1kMDkzYjA4OTU3MjYiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTZUMTM6MTM6MzcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmZhNTk2NzA2LTlmMmYtNjc0ZS1iNThiLTE1MGYzYTFhMDVlMSIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNlQxMzoxNzo0NiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZmNmOWYxNzAtMjIxOS00NzQ2LWJlYzItNDc2ZWQzMDdkMDVlIiBzdEV2dDp3aGVuPSIyMDE4LTExLTE2VDEzOjE3OjQ2KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYTgyYWEzMS0wZWVmLTQ5NDUtODYyMS1mM2E4MWRkNmNiNGQiIHN0RXZ0OndoZW49IjIwMTgtMTEtMjZUMTU6MzU6MDUrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmZhNTk2NzA2LTlmMmYtNjc0ZS1iNThiLTE1MGYzYTFhMDVlMSIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjZjYzJlZWE2LTAyNjMtMmI0YS04NjkwLTVjNzI5MWM1ZThlOSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjkxMGNmZmEzLWI3YTktNmM0Ny1iMmFlLWEzYjE4MjQ1NTliNiIvPiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MDhlN2U1NzQtNGE4Mi1mYTQ3LWE2NzEtZWEzY2I4ODJmODE1PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjEzZjNkMzUwLTA1YzctZGM0NS1hMGEyLTIyMDljMjhkZDIzMzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxOTc2ZjNjZS0zNzAxLTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MWZmMDBiMTMtNjljNC1mYTQ3LWI0MTQtNWEzYTdmMjBlZWM3PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjI3NGQzZDk0LWFlNGQtMTI0MS1hNThiLTMyM2Y3ZGUxNDdjNDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NDk1NzYyYS0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NGUxMzlmZTQtMmJlYy0xMWU3LWJkNmYtYWY5ZWE5NWY5ZDVlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjUxZDliNGU0LTM3MDUtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1NTU0ZjUwNi01YjM2LWRmNGUtOTdkMC05MjY1OTNjMGE0ZWE8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NWY5M2JhNzUtMzkyZS0xMWU3LWE4MWUtYmZmNjNjNTMwM2IyPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjczZjAwMTMwLTM5NWEtMTFlNy1hYzM2LWZiMzUxZWNkNjQ5ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4YmQ0MDQyYS0zNzA1LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkYjUxYTItNzY3ZC0xMWU3LWJmZDYtOGY1ZGU5NGQxZjQzPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk1YTkzMTBlLTczMDUtYTg0Zi1hZGEwLTM0MDYyMjE2NzAwNDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5OWRlM2VhMC0zNjUzLTVlNGEtYmUxNi1lNTBmZjA0YTI2M2Y8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YTE1YmVlNDMtOWNlYi03YTQxLWE5N2EtYzkzNTk0MDdiMGI1PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmEzMDcyMDRkLTFhMTktOWM0OS1hNjlkLTdmNDc3Nzg0ZmVjNzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphNTNlZWM0NC05YTg0LTAwNGEtOGRmNy0xMDgyNzAyZGU3NGE8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YWNmNmI5NmItNWZlNS0xMWU3LTk3NmItZjM2NTdhMTE3MzY5PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmI1ZWRkYzA5LTM2ZjctMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjYjE3ZmE3ZC1kOWEyLWE1NDUtYWU4OS0yZDIwYjFlN2E3MDg8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZDZhMzM0NzYtMmJmNS0xMWU3LWJkNmYtYWY5ZWE5NWY5ZDVlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmUxODU2NzljLWNkZjAtMmU0MS1iYTU4LTA0N2U1YmNhMTg0NzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplNWNjNTliMi0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWQ5Yzc0YzYtMzZmYi0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZjMTlkOWZhLWE4MzItMjI0Mi04MzA4LWQ2OGZkOTg5OTRmZjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmZmNiZWMwMC00ZWViLWVhNDYtOTBkOS02ODhhODYzZWRmMWI8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjIyODY3MmFiLTU1MmUtODg0Ny1hNjQ2LThmMDU5MDU1MGE3MTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MmRhOTViNWUtNmMyNC00NDQxLWJjNDEtMzdlMjg5Y2JjOTE0PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo0NTJkMDk5NC1jZjYwLTIxNDAtODgwZi1kYTAyZGQyMDg4YmE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjU4QkE3QTJGMkU5OTExRTdBRDMxOEU4MzA3RDVFRDEwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo2NmQ4NGY5ZS03NWMwLTNiNGItOWE0OC00ZWJlMmI3NDc1Yjk8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjcxZDRhNzE4LWQ0ZDEtYjQ0Zi1iMWRjLTZmMzdhNTFmYmNmYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6ODEzZmIyNzMtZjZlOS05NzQ3LTk0MjgtODg0ZjBlYWQwYWFlPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo5ZjA3ZjEzNi1kZGRmLTBkNDQtOTE0Mi04ZGJjYzc1ZDE4YmU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkI5NTBBRDAyMTA5RjExRTdCRUZDQTk3N0MxQkU4RDFBPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpEMUM0NjAwMzBFNEYxMUU3QkVGQ0E5NzdDMUJFOEQxQTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTUxZjdhYWMtMDI4ZS05NDRkLThjNmUtNGE4Yjg4YmYzY2VkPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpkYWY4ZDZiNi1lZTBmLWYzNDAtYTRlZS00MjUxMWUxN2I0OTE8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7s7UX1AAADPUlEQVRIibWWz2tcVRTHP+fe+yYzL2mSTsyvafOjCv4oaqS2tFIEXSj+KIjSrizqQpAuxJWlC/8BF4IboQtx4bZaEWwRipQi2AS6iV0IkbQ2Ji1J02bsJPPr3XePi0lsmE5IwOau3uOdez7nfb/nnvdEVdnOZbY1O+DWLornZLNYAV4EngB+ABY329D9pt4HbGGNAp8DhwALnN7Kpq1KJMAbmMw+JAPKu8DQwwTsIuW4jUcz0c4DIPYFlHceHkB5S2Gf2zFGZuBtJNtvNXAcGPw/AEujCZ7SlPdNtjfj8gewnXuJug+C8OyqVB2wsZfrHxSAfpRdwAjKsCojBJ7EytOZ3pex8WOoeqKewyRL45lw79ZJLK9gmBaYQfgbYQZYAOaA5fWAs4jpExe3K+QEyYnEzrgY1/0cUd/rKIAvY+NR2gpHSdyFXvXLr5KuoJpUEFvRdKWM+jpwCjizHnAd5KBEeaKu/biuZzAuRjJ9iO1ECRDqDUvUEz3yElHPYbS6gPplQnU2V1/6LZeW/sij/iZwu9mDE4T0dKjMaajdwuSGMZ1jYHegpKD+fqTq6r3FtO/Bdo2hoUZYnoa0PgW8B/za7EER4SSaJv7O+ImqL7u2kQ8x8RCklQfd0xSMhbRKff5HqrPfg69cxfIxcGktrLmLSginEP3SFyfLtdlvoV5ETBZoGoriEIT64i/UZr8L+MoVLB+tT94KAFBG+EyFM/6fSUJ5GoyjcZj1P5CIQ/0KvngFTao3MHwKXG5OtlH/1oBpCA39UUAQGzdq0tqaTkAAwwJws1WijQ5aJLBbbDsS9SCuG7E5QnWOUPkLDXVw7YjrwLT1gzAEPN4qUes3UAZQhk12EMkWCOVrJIsX8XcnCCTY3KNE+f24nYewHXtBLvRp8HukxcTfSKICxgyb7G78nUskty+SrvwJaZhU4Vq4N33EF8ejKP87uBiMc6K+5VxqDRAGgdG0dBVfnEDrpRmEr7CcE1hE+VqT0gf1+fPHJGoHTUAYAHJAZXMAFCDEoTZ/F+ULDGeBKSCsFnAeuIzqN5osf4LwGo3vQ57GDNoU8BNwA7iOMAX4FjFLCD8DE8Dzq5UvPCDGdv9V/AuAjjmmketQ8AAAAABJRU5ErkJggg==\"","/// \r\n\r\nimport * as React from 'react';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\nvar self;\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface StatusFilter {\r\n statusData: any[]\r\n AllReefer_Count: number\r\n Running_Count: number\r\n Stopped_Count: number\r\n MissedRunning_Count: number\r\n MissedStopped_Count: number\r\n AllMicroAlaram_Count: number\r\n MASevere_Count: number\r\n MAMinor_Count: number\r\n AllCargoCare_Count: number\r\n CCSevere_Count: number\r\n CCMinor_Count: number\r\n CCInformational_Count: number\r\n reeferStatusFilters: ReeferStatusFilters\r\n}\r\ninterface ReeferStatusFilters {\r\n AllReefer: boolean,\r\n Running: boolean,\r\n Stopped: boolean,\r\n MissedRunning: boolean,\r\n MissedStopped: boolean,\r\n AllMicroAlaram: boolean,\r\n MASevere: boolean,\r\n MAMinor: boolean,\r\n AllCargoCare: boolean,\r\n CCSevere: boolean,\r\n CCMinor: boolean,\r\n CCInformational: boolean\r\n}\r\nconst emptySearchFilters = {\r\n AllReefer: false, Running: false, Stopped: false, MissedRunning: false, MissedStopped: false, AllMicroAlaram: false, MASevere: false, MAMinor: false, AllCargoCare: false, CCSevere: false, CCMinor: false, CCInformational: false\r\n};\r\nvar isPanelLoaded;\r\nexport class ReeferToggleButtonsFilter extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n statusData: [],\r\n AllReefer_Count: 0,\r\n Running_Count: 0,\r\n Stopped_Count: 0,\r\n MissedRunning_Count: 0,\r\n MissedStopped_Count: 0,\r\n AllMicroAlaram_Count: 0,\r\n MASevere_Count: 0,\r\n MAMinor_Count: 0,\r\n AllCargoCare_Count: 0,\r\n CCSevere_Count: 0,\r\n CCMinor_Count: 0,\r\n CCInformational_Count: 0,\r\n reeferStatusFilters: emptySearchFilters\r\n }\r\n\r\n self = this;\r\n isPanelLoaded = false;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (nextprops.gridData != undefined && nextprops.gridData != null && isPanelLoaded == true) {\r\n this.setStatusFilters(nextprops);\r\n }\r\n if (!isPanelLoaded) {\r\n isPanelLoaded = true;\r\n }\r\n }\r\n\r\n setStatusFilters(nextprops: any) {\r\n self.setState({\r\n isPanelLoaded: true,\r\n statusData: nextprops.gridData,\r\n AllReefer_Count: nextprops.gridData.length,\r\n Running_Count: nextprops.gridData.filter(x => x.RunState == \"I\").length,\r\n MissedRunning_Count: nextprops.gridData.filter(x => x.RunState == \"S\").length,\r\n Stopped_Count: nextprops.gridData.filter(x => x.RunState == \"X\").length,\r\n MissedStopped_Count: nextprops.gridData.filter(x => x.RunState == \"O\").length,\r\n AllMicroAlaram_Count: nextprops.gridData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && (x.MASeverityLevel == 1 || x.MASeverityLevel == 2)).length,\r\n MASevere_Count: nextprops.gridData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != null && x.MASeverityLevel == 1).length,\r\n MAMinor_Count: nextprops.gridData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != null && x.MASeverityLevel == 2).length,\r\n AllCargoCare_Count: nextprops.gridData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && x.CCSeverityLevel != \"\").length,\r\n CCSevere_Count: nextprops.gridData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == 1)).length,\r\n CCMinor_Count: nextprops.gridData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == 2)).length,\r\n CCInformational_Count: nextprops.gridData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == 3)).length\r\n });\r\n }\r\n\r\n //ApplyStatusFilter(param: string) {\r\n // self.props.filterReeferStatusGrid(param);\r\n //}\r\n ApplyStatusFilter(param: string, event: React.FormEvent) {\r\n var searchFilter = this.state.reeferStatusFilters;\r\n var isChecked: boolean = event.currentTarget.checked;\r\n switch (param) {\r\n case \"AllReefer\":\r\n searchFilter.AllReefer = isChecked;\r\n break;\r\n case \"Running\":\r\n searchFilter.Running = isChecked;\r\n break\r\n case \"MissedRunning\":\r\n searchFilter.MissedRunning = isChecked;\r\n break;\r\n case \"Stopped\":\r\n searchFilter.Stopped = isChecked;\r\n break;\r\n case \"MissedStopped\":\r\n searchFilter.MissedStopped = isChecked;\r\n break;\r\n case \"AllMicroAlaram\":\r\n searchFilter.AllMicroAlaram = isChecked;\r\n break;\r\n case \"MASevere\":\r\n searchFilter.MASevere = isChecked;\r\n break;\r\n case \"MAMinor\":\r\n searchFilter.MAMinor = isChecked;\r\n break;\r\n case \"AllCargoCare\":\r\n searchFilter.AllCargoCare = isChecked;\r\n break;\r\n case \"CCSevere\":\r\n searchFilter.CCSevere = isChecked;\r\n break;\r\n case \"CCMinor\":\r\n searchFilter.CCMinor = isChecked;\r\n break;\r\n case \"CCInformational\":\r\n searchFilter.CCInformational = isChecked;\r\n break;\r\n }\r\n\r\n this.setState({\r\n reeferStatusFilters: searchFilter\r\n });\r\n\r\n self.props.filterReeferStatusGrid(searchFilter);\r\n }\r\n\r\n static ClearToggleFilters() {\r\n if (self != undefined) {\r\n var searchFilter = self.state.reeferStatusFilters;\r\n searchFilter.AllReefer = false;\r\n searchFilter.Running = false;\r\n searchFilter.MissedRunning = false;\r\n searchFilter.Stopped = false;\r\n searchFilter.MissedStopped = false;\r\n searchFilter.AllMicroAlaram = false;\r\n searchFilter.MASevere = false;\r\n searchFilter.MAMinor = false;\r\n searchFilter.AllCargoCare = false;\r\n searchFilter.CCSevere = false;\r\n searchFilter.CCMinor = false;\r\n searchFilter.CCInformational = false;\r\n self.setState({\r\n reeferStatusFilters: searchFilter\r\n });\r\n }\r\n }\r\n\r\n ClearReeferStatusFilters() {\r\n var searchFilter = self.state.reeferStatusFilters;\r\n searchFilter.AllReefer = false;\r\n searchFilter.Running = false;\r\n searchFilter.MissedRunning = false;\r\n searchFilter.Stopped = false;\r\n searchFilter.MissedStopped = false;\r\n searchFilter.AllMicroAlaram = false;\r\n searchFilter.MASevere = false;\r\n searchFilter.MAMinor = false;\r\n searchFilter.AllCargoCare = false;\r\n searchFilter.CCSevere = false;\r\n searchFilter.CCMinor = false;\r\n searchFilter.CCInformational = false;\r\n self.setState({\r\n reeferStatusFilters: searchFilter\r\n });\r\n\r\n self.props.filterReeferStatusGrid(searchFilter);\r\n }\r\n\r\n public render() {\r\n\r\n return
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n\r\n
      \r\n
    • Grid Filters
    • \r\n
    • Total Reefers {this.state.AllReefer_Count}
    • \r\n
    • Running and Operational {this.state.Running_Count}
    • \r\n
    • On Standby {this.state.MissedRunning_Count}
    • \r\n
    • Shut Down or Faulty {this.state.Stopped_Count}
    • \r\n
    • Offline or Powered Down {this.state.MissedStopped_Count}
    • \r\n
    \r\n\r\n
      \r\n
    • Micro Alarms
    • \r\n
    • Total Reefers {this.state.AllMicroAlaram_Count}
    • \r\n
    • Severe {this.state.MASevere_Count}
    • \r\n
    • Minor {this.state.MAMinor_Count}
    • \r\n
    \r\n\r\n
      \r\n
    • CargoCare Alarms
    • \r\n
    • Total Reefers {this.state.AllCargoCare_Count}
    • \r\n
    • Severe {this.state.CCSevere_Count}
    • \r\n
    • Minor {this.state.CCMinor_Count}
    • \r\n
    • Informational {this.state.CCInformational_Count}
    • \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\n\r\nimport batterycritical from '../images/battery-critical.svg';\r\nimport batterylow from '../images/battery-low.svg';\r\nimport batterynormal from '../images/battery-normal.svg';\r\n\r\nimport PlugSolid from '../images/PlugSolid.svg';\r\nimport UnPlug from '../images/Unplug.svg';\r\n\r\nimport TripInprogress from '../images/Status/RouteDeviation/TripInprogress.png';\r\nimport TripCompletedDeviation from '../images/Status/RouteDeviation/TripCompletedDeviation.png';\r\nimport TripCompleted from '../images/Status/RouteDeviation/TripCompleted.png';\r\nimport TripProblemetic from '../images/Status//RouteDeviation/TripProblemetic.png';\r\nimport TripPending from '../images/Status/RouteDeviation/TripPending.png';\r\nimport TripDeleted from '../images/Status/RouteDeviation/TripDeleted.png';\r\nimport TripCancelDeviation from '../images/Status/RouteDeviation/TripCancelDeviation.png';\r\nimport TripCancel from '../images/Status/RouteDeviation/TripCancel.png';\r\nimport AssetStateActive from '../images/AssetState/ActiveRA.svg';\r\nimport AssetStateDisconnected from '../images/AssetState/DisconnectedRA.png';\r\nimport AssetStateRetired from '../images/AssetState/RetiredRA.svg';\r\n\r\nimport RSSIUNK from '../images/RSSI/RSSI_UNK.png';\r\nimport RSSI1 from '../images/RSSI/RSSI_1.png';\r\nimport RSSI2 from '../images/RSSI/RSSI_2.png';\r\nimport RSSI3 from '../images/RSSI/RSSI_3.png';\r\nimport RSSI4 from '../images/RSSI/RSSI_4.png';\r\nimport RSSI5 from '../images/RSSI/RSSI_5.png';\r\n\r\nimport DBP0 from '../images/DoorBattPct/0.svg';\r\nimport DBP10 from '../images/DoorBattPct/10.svg';\r\nimport DBP20 from '../images/DoorBattPct/20.svg';\r\nimport DBP30 from '../images/DoorBattPct/30.svg';\r\nimport DBP40 from '../images/DoorBattPct/40.svg';\r\nimport DBP50 from '../images/DoorBattPct/50.svg';\r\nimport DBP60 from '../images/DoorBattPct/60.svg';\r\nimport DBP70 from '../images/DoorBattPct/70.svg';\r\nimport DBP80 from '../images/DoorBattPct/80.svg';\r\nimport DBP90 from '../images/DoorBattPct/90.svg';\r\nimport DBP100 from '../images/DoorBattPct/100.svg';\r\n\r\nimport GroupChat from '../images/GroupChat.png';\r\n\r\nexport class DryCellRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n static PwrStateFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DryPWR != null && params.data.DryPWR != undefined) { \r\n\r\n if (params.data.DryPWR.toString().toUpperCase().trim() == \"A\") {\r\n return ;\r\n }\r\n else if (params.data.DryPWR.toString().toUpperCase().trim() == \"B\") {\r\n return ;\r\n }\r\n }\r\n }\r\n //return '-NA-';\r\n return \"-NA-\";\r\n }\r\n\r\n static BatteryStatusFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.BatteryStatus != null && params.data.BatteryStatus != undefined) {\r\n if (params.data.BatteryStatus.toString().toUpperCase().trim() == \"C\") {\r\n return ;\r\n }\r\n else if (params.data.BatteryStatus.toString().toUpperCase().trim() == \"L\") {\r\n return ;\r\n }\r\n else if (params.data.BatteryStatus.toString().toUpperCase().trim() == \"N\") {\r\n return ;\r\n } \r\n }\r\n }\r\n return '-NA-';\r\n }\r\n\r\n static AssetStateFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n //var imageElement = document.createElement(\"img\");\r\n var assetState = params.data.AssetState;\r\n if (params.data.AssetState != null && params.data.AssetState != undefined) {\r\n if (assetState.toUpperCase().trim() == 'A') {\r\n return ;\r\n }\r\n else if (assetState.toUpperCase().trim() == 'D') {\r\n return ;\r\n }\r\n else if (assetState.toUpperCase().trim() == 'R') {\r\n return ;\r\n }\r\n }\r\n }\r\n\r\n return '-NA-';\r\n //var element = document.createElement(\"span\");\r\n\r\n //if (params.data != null && params.data != undefined) {\r\n // var imageElement = document.createElement(\"img\");\r\n // if (params.data.AssetState != null && params.data.AssetState != undefined) {\r\n // var assetState = params.data.AssetState;\r\n // switch (assetState.toUpperCase().trim()) {\r\n // case 'A':\r\n // element.className = \"ActiveRA\";\r\n // imageElement.src = AssetStateActive;\r\n // element.title = \"Active\";\r\n // break;\r\n // case 'D':\r\n // element.className = \"DisconnectedRA\";\r\n // imageElement.src = AssetStateDisconnected;\r\n // element.title = \"Disconnected\";\r\n // break;\r\n // case 'R':\r\n // element.className = \"RetiredRA\";\r\n // imageElement.src = AssetStateRetired;\r\n // element.title = \"Retired\";\r\n // break;\r\n // default:\r\n // break;\r\n\r\n // }\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n // return element;\r\n //}\r\n\r\n return '-NA-';\r\n }\r\n\r\n static TripstatusIndicator(params) {\r\n var deviationFlg = '';\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n\r\n //var imageSrc = '';\r\n var valueString = params.value.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n //imageSrc = TripInprogress;\r\n return ;\r\n //break;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n //imageSrc = TripCompletedDeviation; /* WI19591 checking Trip is deviated */\r\n return ;\r\n else\r\n //imageSrc = TripCompleted;\r\n return ;\r\n //break;\r\n case 'D':\r\n //imageSrc = TripProblemetic;\r\n return ;\r\n //break;\r\n case 'P':\r\n //imageSrc = TripPending;\r\n return ;\r\n //break;\r\n case 'R':\r\n //imageSrc = TripDeleted;\r\n return ;\r\n //break;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n //imageSrc = TripCancelDeviation; /* WI19591 checking Trip is deviated */\r\n return ;\r\n else\r\n //imageSrc = TripCancel;\r\n return ;\r\n //break;\r\n default:\r\n break;\r\n\r\n }\r\n }\r\n\r\n return ;\r\n\r\n }\r\n return ;\r\n }\r\n\r\n static RSSITypeFormatter(params) {\r\n var imageSrc = \"\";\r\n if (params.data != null && params.data != undefined) {//WI-21812:For Unknown RSSI Id image is not showing\r\n if (params.data.RSSI != null && params.data.RSSI != undefined) {\r\n if (params.data.RSSI == 0)\r\n imageSrc = RSSIUNK;\r\n else if (params.data.RSSI <= -111)\r\n imageSrc = RSSI1;\r\n else if (params.data.RSSI >= -110 && params.data.RSSI <= -100)\r\n imageSrc = RSSI2;\r\n else if (params.data.RSSI >= -99 && params.data.RSSI <= -88)\r\n imageSrc = RSSI3;\r\n else if (params.data.RSSI >= -87 && params.data.RSSI <= -76)\r\n imageSrc = RSSI4;\r\n else if (params.data.RSSI >= -75)\r\n imageSrc = RSSI5;\r\n else\r\n imageSrc = RSSIUNK;\r\n }\r\n else\r\n imageSrc = RSSIUNK;//WI-21812:For Unknown RSSI Id image is not showing\r\n }\r\n return ;\r\n\r\n }\r\n\r\n static CommentExistsFormatter(params) {\r\n\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value == 0) {\r\n return ;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n }\r\n\r\n static GPSCoordsFormatter(params) {\r\n if (params.value != null && params.value != '-1000') {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && (params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1020\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1030\")) {\r\n if (params.value != null && params.value != '-1000')\r\n return params.value;\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSLatitude != 0 && params.data.GPSLongitude != 0 && (params.data.GPSLockState == null || params.data.GPSLockState == '' || params.data.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n if (params.value != null && params.value != '-1000') {\r\n //params.value = {params.value};\r\n //params.value =

    {params.value}

    ;\r\n var pCss = {\r\n 'color': '#736F6E'\r\n };\r\n return

    {params.value}

    ;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSCoords != null && params.data.GPSCoords != undefined && params.data.GPSCoords.toString().trim() == \"\") {\r\n return '-NA-';\r\n }\r\n else\r\n return params.value;\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static StringTypeValueFormatter(params) {\r\n if (params.value != \"-NA-\" && params.value != \"\" && params.value != null) {//RCNG-1357\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static StringTypeFormatter(params) {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n\r\n }\r\n\r\n static StringTypeFormatterFor3P(params) {\r\n if (params.value != null && params.value != \"null\" && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n if (params.value === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n //Grouping formatters starts here\r\n\r\n static TripStatusFormatterGrouping(param) {\r\n var deviationFlg = '';\r\n if (param != null && param != undefined) {\r\n var valueString = param.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n return
    In Progress
    ;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n return
    Completed Deviation
    ;\r\n else\r\n return
    Completed
    ;\r\n\r\n case 'D':\r\n return
    Problemetic
    ;\r\n case 'P':\r\n return
    Pending
    ;\r\n case 'R':\r\n return
    Deleted
    ;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n return
    Cancel Deviation
    ;\r\n else\r\n return
    Cancel
    ;\r\n default:\r\n return \"*No Trip\";\r\n\r\n }\r\n }\r\n return \"*No Trip\";\r\n }\r\n return \"*No Trip\";\r\n }\r\n\r\n static RSSIFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return
    5 Bars
    ;\r\n else if (param == 2)\r\n return
    4 Bars
    ;\r\n else if (param == 3)\r\n return
    3 Bars
    ;\r\n else if (param == 4)\r\n return
    2 Bars
    ;\r\n else if (param == 5)\r\n return
    1 Bar
    ;\r\n else\r\n return
    Unknown
    ;\r\n }\r\n }\r\n\r\n static CommentExistsGrouping(params) {\r\n if (params != null && params != '-NA-') {\r\n if (params.toString() == \"0\")\r\n return
    yes
    ;\r\n else\r\n return \"*No Comments\";\r\n }\r\n else\r\n return '*No Comments';\r\n }\r\n\r\n static DryBatteryStatusFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return
    Critical
    ;\r\n case \"2\":\r\n return
    Low
    ;\r\n case \"3\":\r\n return
    Normal
    ;\r\n case \"-1\":\r\n return '*No BATT';\r\n }\r\n }\r\n }\r\n static AssetStateFormatterGrouping(param) {\r\n if (param != null && param != undefined && param != '') {\r\n if (param == \"A\") {\r\n return
    Active
    ;\r\n }\r\n else if (param == \"D\") {\r\n return
    Disconnected
    ;\r\n }\r\n else if (param == \"R\") {\r\n return
    Retired
    ;\r\n }\r\n }\r\n return \"*No INV\";\r\n }\r\n static DryPwrStateFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return
    Powered
    ;\r\n case \"2\":\r\n return
    On Battery
    ;\r\n case \"3\":\r\n return '*No PWR';\r\n }\r\n }\r\n }\r\n\r\n static DryDoorBattPctFormatterGrouping(param) {\r\n \r\n if (param != null && param != undefined) {\r\n if (param == \"-1\") return '*No Door bat';\r\n else {\r\n switch (param.toString()){\r\n case \"0\":\r\n return
    {param.toString()}
    ;\r\n case \"10\":\r\n return
    {param.toString()}
    ;\r\n case \"20\":\r\n return
    {param.toString()}
    ;\r\n case \"30\":\r\n return
    {param.toString()}
    ;\r\n case \"40\":\r\n return
    {param.toString()}
    ;\r\n case \"50\":\r\n return
    {param.toString()}
    ;\r\n case \"60\":\r\n return
    {param.toString()}
    ;\r\n case \"70\":\r\n return
    {param.toString()}
    ;\r\n case \"80\":\r\n return
    {param.toString()}
    ;\r\n case \"90\":\r\n return
    {param.toString()}
    ;\r\n case \"100\":\r\n return
    {param.toString()}
    ;\r\n }\r\n }\r\n }\r\n }\r\n static DoorBattPctFormatter(params) {\r\n \r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.Door1BattPct != null && params.data.Door1BattPct != undefined) {\r\n var battPct = (Math.round(params.data.Door1BattPct / 10.0)) * 10;\r\n \r\n switch (battPct){\r\n case 0:\r\n return ;\r\n case 10:\r\n return ;\r\n case 20:\r\n return ;\r\n case 30:\r\n return ;\r\n case 40:\r\n return ;\r\n case 50:\r\n return ;\r\n case 60:\r\n return ;\r\n case 70:\r\n return ;\r\n case 80:\r\n return ;\r\n case 90:\r\n return ;\r\n case 100:\r\n return ;\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n\r\n static BatteryPctFormatter(params) {\r\n \r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.BatteryPct != null && params.data.BatteryPct != undefined && params.data.BatteryPct >= 0) {\r\n var battPct = (Math.round(params.data.BatteryPct / 10.0)) * 10;\r\n \r\n switch (battPct){\r\n case 0:\r\n return ;\r\n case 10:\r\n return ;\r\n case 20:\r\n return ;\r\n case 30:\r\n return ;\r\n case 40:\r\n return ;\r\n case 50:\r\n return ;\r\n case 60:\r\n return ;\r\n case 70:\r\n return ;\r\n case 80:\r\n return ;\r\n case 90:\r\n return ;\r\n case 100:\r\n return ;\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n}","// @ts-nocheck\r\n/// \r\nimport $ from 'jquery';\r\nimport { CurrentStatus } from './../components/routecomponents/DryDetails';\r\nimport bingcenterSelected from '../images/bingcenterSelected_icon.png';\r\nimport { initialize, whenLoaded } from \"bing-maps-loader\";\r\n//import '../actions/bingmaps.api';\r\n//require('../actions/bingmaps.api.js');\r\nvar Config: any = require('../Config.json');\r\nvar reeferDetailsMap = null;\r\nvar geoZonesLayer = null;\r\nvar detailsLayer = null;\r\nclass DetailsMap {\r\n static InitDetailsMap(mapId: any) {\r\n whenLoaded.then(() => {\r\n reeferDetailsMap = new Microsoft.Maps.Map(\"#\" + mapId,\r\n {\r\n credentials: Config.BingMapsKey,\r\n mapTypeId: Microsoft.Maps.MapTypeId.road,\r\n zoom: 10,\r\n showMapTypeSelector: false,\r\n showZoomButtons: false,\r\n showLocateMeButton: false\r\n });\r\n Microsoft.Maps.Events.addHandler(reeferDetailsMap, 'maptypechanged', function (args) {\r\n mapTypeChanged(args);\r\n });\r\n });\r\n \r\n }\r\n \r\n static LoadDetailsMap(latitude: any, longitude: any) {\r\n if(detailsLayer != null)\r\n detailsLayer.clear();\r\n if (latitude != null && longitude != null) {\r\n detailsLayer = new Microsoft.Maps.Layer();\r\n reeferDetailsMap.setView({\r\n center: new Microsoft.Maps.Location(latitude, longitude),\r\n zoom: 10\r\n });\r\n var center = reeferDetailsMap.getCenter();\r\n var pushpinImage = bingcenterSelected;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n detailsLayer.add(pushpin);\r\n reeferDetailsMap.layers.insert(detailsLayer);\r\n }\r\n else {\r\n reeferDetailsMap.entities.clear();\r\n }\r\n } \r\n \r\n static BindGeoZonesLayer(latitude: any, longitude: any, positionAccuracy: any) { \r\n if(geoZonesLayer != null)\r\n geoZonesLayer.clear();\r\n if(latitude !=null && longitude !=null && (positionAccuracy !=null && positionAccuracy > 0)) {\r\n geoZonesLayer = new Microsoft.Maps.Layer();\r\n geoZonesLayer.setZIndex(10400);\r\n var loc = new Microsoft.Maps.Location(latitude, longitude);\r\n Microsoft.Maps.loadModule('Microsoft.Maps.SpatialMath', function () {\r\n var paths = Microsoft.Maps.SpatialMath.getRegularPolygon(loc, positionAccuracy, 36, Microsoft.Maps.SpatialMath.DistanceUnits.Meters);\r\n var polygon = new Microsoft.Maps.Polygon(paths, null);\r\n geoZonesLayer.add(polygon); \r\n reeferDetailsMap.layers.insert(geoZonesLayer);\r\n });\r\n }\r\n } \r\n static DisposeGeozonesLayer() {\r\n if (geoZonesLayer != null)\r\n geoZonesLayer.clear();\r\n } \r\n}\r\nfunction mapTypeChanged(params) {\r\n var mapType = reeferDetailsMap.getImageryId();\r\n if (mapType == \"Aerial\") { \r\n $(\"#geoZones\").removeClass('map-Geofence');\r\n $(\"#geoZones\").addClass('mapGeofenceAerial');\r\n CurrentStatus.UpdateFenceImage('A');\r\n }\r\n else { \r\n $(\"#geoZones\").removeClass('mapGeofenceAerial');\r\n $(\"#geoZones\").addClass('map-Geofence'); \r\n CurrentStatus.UpdateFenceImage('R');\r\n }\r\n}\r\n\r\nexport default DetailsMap;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAYAAADk3wSdAAAACXBIWXMAAAsTAAALEwEAmpwYAAARUGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMS0xOVQxMjowNDo0OSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMS0yNlQxNTozMzoyMSswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMTEtMjZUMTU6MzM6MjErMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M2RkYTZmYzgtYzUzNi0wYjQ2LWE3ZmUtMWI2YzEyYWJkNjVmIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ODE0ODcxNzMtZTMzMC01ZTRkLThjODYtMzUyZTQ5N2U4MDA2IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OWUyNmQ1MmYtNjc1Yy1kNDQ4LTgzYjctN2Q3Y2ExNmU3ZmYwIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5ZTI2ZDUyZi02NzVjLWQ0NDgtODNiNy03ZDdjYTE2ZTdmZjAiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTlUMTI6MDQ6NDkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjZjNDY3ZjE0LWE3YzItYWE0Zi04ZGUzLWY0NWVkYWJiNDEzMiIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xOVQxMjowNDo0OSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6M2RkYTZmYzgtYzUzNi0wYjQ2LWE3ZmUtMWI2YzEyYWJkNjVmIiBzdEV2dDp3aGVuPSIyMDE4LTExLTI2VDE1OjMzOjIxKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MDhlN2U1NzQtNGE4Mi1mYTQ3LWE2NzEtZWEzY2I4ODJmODE1PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjEzZjNkMzUwLTA1YzctZGM0NS1hMGEyLTIyMDljMjhkZDIzMzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxOTc2ZjNjZS0zNzAxLTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MWZmMDBiMTMtNjljNC1mYTQ3LWI0MTQtNWEzYTdmMjBlZWM3PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjI3NGQzZDk0LWFlNGQtMTI0MS1hNThiLTMyM2Y3ZGUxNDdjNDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NDk1NzYyYS0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NGUxMzlmZTQtMmJlYy0xMWU3LWJkNmYtYWY5ZWE5NWY5ZDVlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjUxZDliNGU0LTM3MDUtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1ZjkzYmE3NS0zOTJlLTExZTctYTgxZS1iZmY2M2M1MzAzYjI8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NmNjMmVlYTYtMDI2My0yYjRhLTg2OTAtNWM3MjkxYzVlOGU5PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjczZjAwMTMwLTM5NWEtMTFlNy1hYzM2LWZiMzUxZWNkNjQ5ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4YmQ0MDQyYS0zNzA1LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkYjUxYTItNzY3ZC0xMWU3LWJmZDYtOGY1ZGU5NGQxZjQzPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk1YTkzMTBlLTczMDUtYTg0Zi1hZGEwLTM0MDYyMjE2NzAwNDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphMTViZWU0My05Y2ViLTdhNDEtYTk3YS1jOTM1OTQwN2IwYjU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YTUzZWVjNDQtOWE4NC0wMDRhLThkZjctMTA4MjcwMmRlNzRhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmFjZjZiOTZiLTVmZTUtMTFlNy05NzZiLWYzNjU3YTExNzM2OTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiNWVkZGMwOS0zNmY3LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Y2IxN2ZhN2QtZDlhMi1hNTQ1LWFlODktMmQyMGIxZTdhNzA4PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplMTg1Njc5Yy1jZGYwLTJlNDEtYmE1OC0wNDdlNWJjYTE4NDc8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTVjYzU5YjItMzZmOC0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmVkOWM3NGM2LTM2ZmItMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYzE5ZDlmYS1hODMyLTIyNDItODMwOC1kNjhmZDk4OTk0ZmY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZmZjYmVjMDAtNGVlYi1lYTQ2LTkwZDktNjg4YTg2M2VkZjFiPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyMjg2NzJhYi01NTJlLTg4NDctYTY0Ni04ZjA1OTA1NTBhNzE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjJkYTk1YjVlLTZjMjQtNDQ0MS1iYzQxLTM3ZTI4OWNiYzkxNDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NDUyZDA5OTQtY2Y2MC0yMTQwLTg4MGYtZGEwMmRkMjA4OGJhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo1OEJBN0EyRjJFOTkxMUU3QUQzMThFODMwN0Q1RUQxMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NjZkODRmOWUtNzVjMC0zYjRiLTlhNDgtNGViZTJiNzQ3NWI5PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3MWQ0YTcxOC1kNGQxLWI0NGYtYjFkYy02ZjM3YTUxZmJjZmE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjgxM2ZiMjczLWY2ZTktOTc0Ny05NDI4LTg4NGYwZWFkMGFhZTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6OWYwN2YxMzYtZGRkZi0wZDQ0LTkxNDItOGRiY2M3NWQxOGJlPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpCOTUwQUQwMjEwOUYxMUU3QkVGQ0E5NzdDMUJFOEQxQTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6RDFDNDYwMDMwRTRGMTFFN0JFRkNBOTc3QzFCRThEMUE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmE1MWY3YWFjLTAyOGUtOTQ0ZC04YzZlLTRhOGI4OGJmM2NlZDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6ZGFmOGQ2YjYtZWUwZi1mMzQwLWE0ZWUtNDI1MTFlMTdiNDkxPC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XwNDpAAAAnpJREFUOI211c1rXFUYx/HPvXde4zDDZJIhmYgR2iTNJCZtJdSdG92JiaULoQW7cKN/gv9BVwXX+ifYpdsi3fiy6C6UIr5gArVIoaGUpHTmcXFnfBkznUH0wuEuzjnf5/d7znPOk0SE//yLCMGk8VHwW3B14toIhQkxO9jEFTQH/5/wPX79N0rfDL4KIhqNiE4nolaLIIIvg51xSpOIIElGY72GW2q1s1ZX2dwUs7OShw/Z3+fePY6Pv8X7+HFEpXSMgSuy7KxLl8Tly2J9nWZTbG+LvT0uXCBNz+Od0zaPg3aUy2JtLXfx5AnPnnF0RLEozp2jVCrhzLTQPBdpSqFAv//32V6PYnGYstK00DJmFAr5xtE6HgbLodm00FnMq9XyzaPQCCoVqtXh2vo00FexbG6OUmm8/VYLXsHL00C7WInFxVzRadByWSwuwhY2JkGr2FGrJTqd0w+q388dLC8zM1PBzihnFHoee5aWmJvj+fPTcxpBu838PLyL9XHQAj5UKLRtb1Ov57U5etuShONjGg26XVjDB+Og13Bdtys2NnLrWfbPskqSfK5c5uJFVlfhY+yOQt+TZTcsLKS6XZ4+5fAwt18u56qGBV8qcXLCwYHo99naotV6SZLcxNv440E5lGUd7Ta12p+2G408Dc0mKyuiXpfcvcv9+/nVTdM8yKNH+ej3vxHxxvA9/VSv95YHD7KB1R6KWEBTmrZjdzc/8du3ex4//gE/y690Ovif4NZflWbyIh6moz8Y13AVFa3WGdUqBwdH+ARfoDIAJgMhv4joT2on3eDr4E6wPyimO8HSi9rJJGgSvB58HnwXfDYI9MIelfwf3fR3ISgWGy0LMWYAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAYAAADk3wSdAAAACXBIWXMAAAsTAAALEwEAmpwYAAASgGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMS0xOVQxMjowNDo0OSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMS0yNlQxNTozNToyNSswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMTEtMjZUMTU6MzU6MjUrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZDMzNWFkMGUtNWNkMC04MTQxLWFhYmEtYThlZjFkYzFlZGM1IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTI3NWM5YzgtMGE0YS1kNjRhLTkxNjYtNmQ1YjgyMWNjNmJmIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OWUyNmQ1MmYtNjc1Yy1kNDQ4LTgzYjctN2Q3Y2ExNmU3ZmYwIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5ZTI2ZDUyZi02NzVjLWQ0NDgtODNiNy03ZDdjYTE2ZTdmZjAiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTlUMTI6MDQ6NDkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjZjNDY3ZjE0LWE3YzItYWE0Zi04ZGUzLWY0NWVkYWJiNDEzMiIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xOVQxMjowNDo0OSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZDMzNWFkMGUtNWNkMC04MTQxLWFhYmEtYThlZjFkYzFlZGM1IiBzdEV2dDp3aGVuPSIyMDE4LTExLTI2VDE1OjM1OjI1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MDhlN2U1NzQtNGE4Mi1mYTQ3LWE2NzEtZWEzY2I4ODJmODE1PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjEzZjNkMzUwLTA1YzctZGM0NS1hMGEyLTIyMDljMjhkZDIzMzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxOTc2ZjNjZS0zNzAxLTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MWZmMDBiMTMtNjljNC1mYTQ3LWI0MTQtNWEzYTdmMjBlZWM3PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjI3NGQzZDk0LWFlNGQtMTI0MS1hNThiLTMyM2Y3ZGUxNDdjNDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NDk1NzYyYS0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NGUxMzlmZTQtMmJlYy0xMWU3LWJkNmYtYWY5ZWE5NWY5ZDVlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjUxZDliNGU0LTM3MDUtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1NTU0ZjUwNi01YjM2LWRmNGUtOTdkMC05MjY1OTNjMGE0ZWE8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NWY5M2JhNzUtMzkyZS0xMWU3LWE4MWUtYmZmNjNjNTMwM2IyPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjZjYzJlZWE2LTAyNjMtMmI0YS04NjkwLTVjNzI5MWM1ZThlOTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3M2YwMDEzMC0zOTVhLTExZTctYWMzNi1mYjM1MWVjZDY0OWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkNDA0MmEtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhiZGI1MWEyLTc2N2QtMTFlNy1iZmQ2LThmNWRlOTRkMWY0MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5NWE5MzEwZS03MzA1LWE4NGYtYWRhMC0zNDA2MjIxNjcwMDQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OTlkZTNlYTAtMzY1My01ZTRhLWJlMTYtZTUwZmYwNGEyNjNmPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmExNWJlZTQzLTljZWItN2E0MS1hOTdhLWM5MzU5NDA3YjBiNTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphNTNlZWM0NC05YTg0LTAwNGEtOGRmNy0xMDgyNzAyZGU3NGE8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YTdhMjgwOGYtMzU2Zi1iYzRlLWE1NGEtODVjNjc3MDkzYTg5PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmFjZjZiOTZiLTVmZTUtMTFlNy05NzZiLWYzNjU3YTExNzM2OTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiNWVkZGMwOS0zNmY3LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Y2IxN2ZhN2QtZDlhMi1hNTQ1LWFlODktMmQyMGIxZTdhNzA4PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkYmY5ZTcwZS1jY2Q3LTZiNGYtOGFhOC05Yjc3YzFmMGFhZjU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTE4NTY3OWMtY2RmMC0yZTQxLWJhNTgtMDQ3ZTViY2ExODQ3PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmU1Y2M1OWIyLTM2ZjgtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplZDljNzRjNi0zNmZiLTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZmMxOWQ5ZmEtYTgzMi0yMjQyLTgzMDgtZDY4ZmQ5ODk5NGZmPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZmY2JlYzAwLTRlZWItZWE0Ni05MGQ5LTY4OGE4NjNlZGYxYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MjI4NjcyYWItNTUyZS04ODQ3LWE2NDYtOGYwNTkwNTUwYTcxPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyZGE5NWI1ZS02YzI0LTQ0NDEtYmM0MS0zN2UyODljYmM5MTQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ1MmQwOTk0LWNmNjAtMjE0MC04ODBmLWRhMDJkZDIwODhiYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NThCQTdBMkYyRTk5MTFFN0FEMzE4RTgzMDdENUVEMTA8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjY2ZDg0ZjllLTc1YzAtM2I0Yi05YTQ4LTRlYmUyYjc0NzViOTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NzFkNGE3MTgtZDRkMS1iNDRmLWIxZGMtNmYzN2E1MWZiY2ZhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4MTNmYjI3My1mNmU5LTk3NDctOTQyOC04ODRmMGVhZDBhYWU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjlmMDdmMTM2LWRkZGYtMGQ0NC05MTQyLThkYmNjNzVkMThiZTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6Qjk1MEFEMDIxMDlGMTFFN0JFRkNBOTc3QzFCRThEMUE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkQxQzQ2MDAzMEU0RjExRTdCRUZDQTk3N0MxQkU4RDFBPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDphNTFmN2FhYy0wMjhlLTk0NGQtOGM2ZS00YThiODhiZjNjZWQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmRhZjhkNmI2LWVlMGYtZjM0MC1hNGVlLTQyNTExZTE3YjQ5MTwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiE8M/QAAAMRSURBVDiNtZVNaFxVFMd/595337x5M5mPjDOmITPTaaaEWJUuzKZCFdGFILZCFoIFXQiiLty7LQiCIIpLxZXoRtGluHWpC4ui0WCNsaI2YVI0yTSZd46LtDEZ8zELPbtz7//8OPfew/+KmfFfRwQw88oXx+meBy4DLwHvHSVcePm+HegRMWnG3WY2b1AVYV6Qn0RYBH4/rMgdAXwgy/R9Nf20VMw9NFEvukI+d9FMP88yexeYO6zw4E6Newx7u5jG3dZUmU67Rmksobe2wdWfeywtrz26tT2oiciTwNWROs3U5hHpnpmd4Py5Du1miWIxpjtd4fy5k8ycvgPgrKo9NvLxM9XJOHhazRIIbG4qg4Gyvq54J7SmKoTg40xtelSoYCCAcwLGTrJ7MxD5W2Vm8ajQnAhpCBGCcNAYR14QEQz8SFAzxkWkXkgD3rt/Qw2i4MgnMSIyDpSOh2InxUm7XE4IwaNDVDUIwVMu5XBCy8ymjoeq3SVwulZJCZFHdf++qhFHEbVqHuBeM84cB80Dc2kaS62W4j0Me4OqEUXCRGOMNB8SVZsb5uxLzDirahcb9QLlUkKWDfewq6NSSahWUsAeB2YPg0aq+mwuCY1up0YxjRgMDnawrYFRTGPazQreu5ks06cPhJrZJcyeOdWq0mmW8R684/bo7IbIznocYKY7TqtZwUxeMOPCMPQJEfdqvV507WaF/s0B11f7DDIlBKGQd3jvACFEjsG2cn2lj6rR7dQYr+YLIvY68Aj8YyhvOUcDhIXFVb7+7g9EYKwQkySBSilh8kSJQj6wsLjC8i836G9vA0IUeZyAiHTMuAx8dhv6pqo9vNrb8Curf6FGJhCACVWrinONB+8/xYk7C3z51bVstbfxYy74JQVxgvPOicFN4KO9nb4GfIDhRAQvooCCXRKRpzLVP6988+v0wg8RG5vb67k4esOJfCiQgMktq8iA5b3QDFgSgX3ugXwiwgXnfG/tRn/LjFnv5Ypz8jHw245yr37o9Q+Jb4EXge+dk3Xv5R3gOeDaUUXyf/ymfwM/nhDMZKkFtwAAAABJRU5ErkJggg==\"","import * as React from 'react';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Workbook from 'react-excel-workbook';\r\nimport forEach from 'lodash/forEach';\r\nimport Select from 'react-select';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n selectedheaderName: string;\r\n AllColumns: any[];\r\n PrevGroupId: number;\r\n PrevColId: string;\r\n isClearable: boolean;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridReeferHistoryToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', renderGridPreferenceHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false,\r\n excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderExportToExcelHTML: '',\r\n selectedheaderName: null, AllColumns: [], PrevGroupId: -1, PrevColId: null, isClearable: true\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n //return ;\r\n return ;\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderEmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogGridPreferenceHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Grid Preference
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderGridPreferenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogExportToExcelHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n

    Export To Excel

    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderExportToExcelHTML}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardHistory_' + this.props.formName).hide();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ReeferStatusGrid\" || this.props.formName == \"ReeferHistoryGrid\" || this.props.formName == \"PTResultGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName,\r\n this.props.parentchild, functionId, widgetId , this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any ) {\r\n if (this.props.formName == \"ReeferHistoryGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardHistory_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ReeferHistoryGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadHistoryExcel').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n OpenTemperatureChart() {\r\n this.props.openTemperatureGraph();\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#ReeferHistoryQuickFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n onQuickFilterChanged(event: any) { \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n\r\n ColumnChange(event: any) {\r\n if (event != null) {\r\n var name: string = event.value;\r\n this.setState({\r\n selectedheaderName: name\r\n });\r\n var defaultKeys = this.state.AllColumns.filter(x => x.colDef.headerName == name);\r\n var colId = defaultKeys[0].colId;\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n if (defaultKeys.length > 0 && defaultKeys[0].colDef.columnGroupShow == \"open\") {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader(); \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(defaultKeys[0].parent.groupId, true);\r\n //this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.onGroupExpandedOrCollapsed();\r\n setTimeout(() => {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n }, 200);\r\n this.setState({ PrevGroupId: defaultKeys[0].parent.groupId, PrevColId: colId });\r\n }\r\n else {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n this.setState({ PrevGroupId: -1, PrevColId: colId });\r\n }\r\n }\r\n else {\r\n this.setState({\r\n selectedheaderName: null\r\n });\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n }\r\n }\r\n\r\n static GetColumns(params: any) {\r\n var newColumns = [];\r\n var Displayedcolumns = params.columnApi.getAllDisplayedColumnGroups();\r\n forEach(Displayedcolumns, function (value, key) {\r\n forEach(value.children, function (bv, bk) {\r\n newColumns.push(bv);\r\n });\r\n });\r\n self.setState({ AllColumns: newColumns })\r\n }\r\n\r\n public render() {\r\n\r\n if (this.props.formName == \"ReeferHistoryGrid\") {\r\n if (this.state.AllColumns != null && this.state.AllColumns.length > 0) {\r\n var Alldisplayedcolumns = this.state.AllColumns;\r\n\r\n if (Alldisplayedcolumns != undefined && Alldisplayedcolumns != null && Alldisplayedcolumns.length > 0) {\r\n var Selectedcolumns = Alldisplayedcolumns.map(function (Columns) {\r\n return (\r\n { value: Columns.colDef.headerName, label: Columns.colDef.headerName }\r\n );\r\n });\r\n }\r\n }\r\n }\r\n\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.props.formName == \"ReeferHistoryGrid\" ?\r\n : \"\"}\r\n {\r\n this.props.formName == 'ReeferHistoryGrid' ? : ''\r\n }\r\n\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n
    \r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogGridPreferenceHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
    \r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nimport lodashfilter from 'lodash/filter';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport uniq from 'lodash/uniq';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport { SpecificBookingDetails } from '../childcomponents/SpecificBookingDetails';\r\nimport { SpecificBookingReefers } from '../childcomponents/SpecificBookingReefers';\r\nimport { SpecificBookingReeferCommonData } from '../childcomponents/SpecificBookingReeferCommonData';\r\nimport { SpecificBookingReefersGridData } from '../childcomponents/SpecificBookingReefersGridData';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow';\r\nimport ReeferStatus from '../routecomponents/ReeferStatus';\r\nimport { ReeferStatusGrid } from '../childcomponents/ReeferStatusGrid';\r\nimport { ReeferStatusSSRMGrid } from '../childcomponents/ReeferStatusSSRMGrid';\r\nimport { Server } from 'net';\r\nimport moment from 'moment';\r\nimport forEach from 'lodash/forEach';\r\nimport DateFormat from 'dateformat';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar self;\r\nvar selReefers;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar selectedReefers = \"\";\r\nvar selectedUnits = \"\";\r\n\r\ninterface WizardState {\r\n renderHtml: any;\r\n BookingDetails: server.BookingDetails;\r\n BookingReefers: server.BookingSearchDetails;\r\n CommonBookingData: server.CommonBookingData;\r\n rowData: server.bookingReefer[];\r\n disassociaterowData: server.bookingReefer[];\r\n Thirdparty: server.ThirdParty[];\r\n CargoCareProfiles: any[];\r\n RefTemperatureUnit: server.RefTemperatureUnit[];\r\n isEdit: boolean;\r\n tabFrom: number;\r\n currentTab: number;\r\n AllBooking: any[];\r\n BookingCount: number;\r\n BookingType: any;\r\n IsOpen: any;\r\n buttonState: any;\r\n formname: any;\r\n isViewOnly: boolean;\r\n}\r\n\r\nvar emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0,\r\n CustomerAccessGroupIDLoaded:'',\r\n BKCustomer:''\r\n};\r\nvar emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [], BookingNumber:[]\r\n}\r\nvar emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n};\r\nexport class NewBookingEdit extends React.Component, WizardState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.resetAllDetails();\r\n this.state = {\r\n renderHtml: '',\r\n BookingDetails: emptyBookingDetails,\r\n BookingReefers: emptyBookingReefers,\r\n CommonBookingData: emptyCommonBookingData,\r\n rowData: [],\r\n Thirdparty: [],\r\n CargoCareProfiles: [],\r\n RefTemperatureUnit: [],\r\n disassociaterowData: [],\r\n isEdit: true,\r\n tabFrom: 1,\r\n currentTab: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'Edit Booking',\r\n IsOpen: 'Edit',\r\n buttonState: true,\r\n formname: '',\r\n isViewOnly: false\r\n };\r\n\r\n self = this;\r\n //var newBookingDetails = emptyBookingDetails;\r\n //var cDate = moment(this.dateTypeFormatter(new Date())).format('LLL');\r\n //var active = new Date(cDate);\r\n //newBookingDetails.VesselETA = DateFormat(active, 'mm/dd/yyyy HH:MM:ss');\r\n //newBookingDetails.VesselETD = DateFormat(active, 'mm/dd/yyyy HH:MM:ss');\r\n //this.setState({\r\n // BookingDetails: newBookingDetails\r\n //});\r\n\r\n }\r\n dateTypeFormatter(eventDate: Date) {\r\n //written considering parameter 'eventDate' sent is IST\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return prefDateTime;\r\n }\r\n resetAllDetails() {\r\n emptyBookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0,CustomerAccessGroupIDLoaded:'', BKCustomer:''\r\n }\r\n emptyBookingReefers = { BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [], BookingNumber:[] }\r\n }\r\n updatemyBookingDimensions() {\r\n $(\"#BookingTabsHeight\").css('min-height', $(window).height() - 150);\r\n $(\"#BookingTabsHeight\").css('max-height', $(window).height() - 150);\r\n }\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsOnly('212');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n this.updatemyBookingDimensions();\r\n window.addEventListener(\"resize\", this.updatemyBookingDimensions.bind(this));\r\n $(\"#SubscriptionMenu li\").click(function (e) {\r\n e.preventDefault();\r\n return false;\r\n });\r\n $('.deploymentWizard').find(\"ul.nav li:nth-child(0)\").attr(\"href\", \"#menu1\");\r\n //if (this.props.location.state != null && this.props.location.state != undefined) {\r\n //if (this.props.location.state != 0) {\r\n //this.getBookingDetails(this.props.location.state);\r\n // }\r\n //}\r\n //else\r\n //if (self.props.formname == \"ReeferStatus\" ||self.props.formname == \"ReeferStatusGrid\") {\r\n // $('#globalLoader').show();\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + self.props.reeferData[0].BookingNumber)\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // $('#globalLoader').hide();\r\n // if (data != null && data != undefined && data.length > 0) {\r\n // this.setState({ AllBooking: data }, () => { this.EditBooking(); });\r\n // }\r\n\r\n // });\r\n\r\n //}\r\n //else\r\n // this.setState({ renderHtml: this.dynamicRendering(1) });\r\n this.getdata(self.props);\r\n }\r\n }\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setActiveAndInactiveOld(1, 0);\r\n this.setState({\r\n BookingDetails: emptyBookingDetails,\r\n BookingReefers: emptyBookingReefers,\r\n tabFrom: 1,\r\n currentTab: 1\r\n }, () => { this.getdata(nextprops); });\r\n }\r\n getdata(params: any) {\r\n if (params.location.state != null && (params.location.state.formname == \"ReeferStatus\" || params.location.state.formname == \"ReeferStatusGrid\" || params.location.state.formname == \"SSRMReeferStatusGrid\")) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + params.location.state.reeferData[0].BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n this.setState({ AllBooking: data }, () => { this.EditBooking(); });\r\n }\r\n\r\n });\r\n\r\n }\r\n else\r\n this.setState({ renderHtml: this.dynamicRendering(1) });\r\n }\r\n EditBooking() {\r\n var isfound = this.state.AllBooking.filter(x => x.BookingNumber.toLowerCase() == self.props.location.state.reeferData[0].BookingNumber.toLowerCase());\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = isfound[0].Shipper;\r\n BookingInfoDetails.Consignee = isfound[0].Consignee;\r\n BookingInfoDetails.ShipperCode = isfound[0].ShipperCode;\r\n BookingInfoDetails.POR = isfound[0].POR;\r\n BookingInfoDetails.POL = isfound[0].POL;\r\n BookingInfoDetails.POD = isfound[0].POD;\r\n BookingInfoDetails.VesselETD = isfound[0].VesselETD != null ? DateFormat(new Date(isfound[0].VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = isfound[0].VesselETA != null ? DateFormat(new Date(isfound[0].VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = isfound[0].BLNumber;\r\n BookingInfoDetails.ContractParty = isfound[0].ContractParty;\r\n BookingInfoDetails.Consolidation = isfound[0].Consolidation;\r\n BookingInfoDetails.Agent = isfound[0].Agent;\r\n BookingInfoDetails.VesselCode = isfound[0].VesselCode;\r\n BookingInfoDetails.VoyageNumber = isfound[0].VoyageNumber;\r\n BookingInfoDetails.Call = isfound[0].Call;\r\n BookingInfoDetails.Forwarder = isfound[0].Forwarder;\r\n BookingInfoDetails.Notify = isfound[0].Notify;\r\n BookingInfoDetails.BookingNumber = isfound[0].BookingNumber;\r\n BookingInfoDetails.DEL = isfound[0].DEL;\r\n BookingInfoDetails.BKCustomer = isfound[0].BKCustomer;\r\n if (isfound[0].LifecycleCd == 'L' || isfound[0].LifecycleCd == 'R' || isfound[0].LifecycleCd == 'D' || isfound[0].LifecycleCd == 'P') {\r\n var departingVVC = isfound[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = isfound[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n BookingInfoDetails.SelectedVoyage = depVoyage;\r\n BookingInfoDetails.SelectedCall = depCall;\r\n BookingInfoDetails.SelectedVesselCD = depVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVesselCD = arrVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVoyage = arrVoyage;\r\n BookingInfoDetails.ArrSelectedCall = arrCall;\r\n }\r\n BookingInfoDetails.CustomerAccessGroupIDLoaded = isfound[0].CustomerAccessGroupID;\r\n var BookingReefersData = emptyBookingReefers;\r\n BookingReefersData.BookingReefers = this.state.AllBooking.map(x => x.ReeferID).toString();\r\n BookingReefersData.SelectedBookingReefers = this.state.AllBooking.map(x => x.ReeferID).toString();\r\n BookingReefersData.ReeferwithUnitID = this.state.AllBooking.map(x => x.ReeferwithUnitID);\r\n var gridData = [];\r\n forEach(this.state.AllBooking, function (bookingItem) {\r\n \r\n if (bookingItem != \"\" && bookingItem != null) {\r\n\r\n var item = {\r\n action: '', reeferId: bookingItem.ReeferID, cargoCare: bookingItem.CCProfileName, accessCodes: bookingItem.CustomerAccessGroupID, bookedTemperature: bookingItem.BookedTemperature,\r\n bookedTemperatureQualifier: bookingItem.BookedTemperatureQualifier, bookedTemperatureMin: bookingItem.BookedTemperatureMin, bookedTemperatureMax: bookingItem.BookedTemperatureMax,\r\n humidity: bookingItem.HumiditySetpoint, commodity: bookingItem.Commodity, STCC: bookingItem.STCC, HS: bookingItem.HSCode, gensetId: bookingItem.GensetId, ventSetting: bookingItem.VentSetting,\r\n HVFlag: bookingItem.HighValueFlag, serviceLevel: bookingItem.ServiceLevel, CAFlag: bookingItem.CAFlag, O2Setpoint: bookingItem.O2Setpoint, O2SetpointMin: bookingItem.O2SetpointMin, O2SetpointMax: bookingItem.O2SetpointMax,\r\n CO2Setpoint: bookingItem.CO2Setpoint, CO2SetpointMin: bookingItem.CO2SetpointMin, CO2SetpointMax: bookingItem.CO2SetpointMax, CTFlag: bookingItem.CTFlag,\r\n CTDays: bookingItem.CTDays, USDAMaxTemperature: bookingItem.USDAMaxTemperature, postCTTemperature: bookingItem.PostCTTemperature, postCTTemperatureDeviation: bookingItem.PostCTTemperatureDeviation, postCTVentSetting: bookingItem.PostCTVentSetting,\r\n UnitMasterId: bookingItem.UnitMasterID, CustomerAccessGroupIdsStr: ''\r\n };\r\n gridData.push(item);\r\n }\r\n });\r\n this.setState({ BookingDetails: BookingInfoDetails, BookingReefers: BookingReefersData, rowData: gridData, buttonState: false, formname: self.props.location.state.formname }, () => { this.setState({ renderHtml: this.dynamicRendering(1) }); });\r\n }\r\n dynamicRendering(tabPane: number) {\r\n if (tabPane == 1)\r\n return \r\n else if (tabPane == 2)\r\n return \r\n else if (tabPane == 3)\r\n return \r\n else if (tabPane == 4)\r\n return \r\n }\r\n setFinalState(tabState: any, tabPaneFrom: number) {\r\n this.setState({ rowData: tabState.rowData, disassociaterowData: tabState.disassociaterowData }, () => { this.PrepareFinalSubmit(); });\r\n }\r\n ValidateFinalSubmitData() {\r\n var validationsummary = [];\r\n var strValaditionSummary = '';\r\n var reeferData = this.state.rowData;\r\n forEach(reeferData, function (reefer) {\r\n if (reefer.bookedTemperature != \"\" && reefer.bookedTemperature != null && reefer.bookedTemperatureMin != \"\" && reefer.bookedTemperatureMin != null && reefer.bookedTemperatureMax != \"\" && reefer.bookedTemperatureMax != null) {\r\n if (!(self.findInBetween(parseFloat(reefer.bookedTemperature), parseFloat(reefer.bookedTemperatureMin), parseFloat(reefer.bookedTemperatureMax)))) {\r\n var strErr = `Reefer ${reefer.reeferId} Booked Temperature : ${reefer.bookedTemperature} must be between Booked Temperature Min : ${reefer.bookedTemperatureMin} and Booked Temperature Max : ${reefer.bookedTemperatureMax}.`;\r\n validationsummary.push(strErr);\r\n }\r\n }\r\n if (reefer.O2Setpoint != \"\" && reefer.O2Setpoint != null && reefer.O2SetpointMin != \"\" && reefer.O2SetpointMin != null && reefer.O2SetpointMax != \"\" && reefer.O2SetpointMax != null) {\r\n if (!(self.findInBetween(parseFloat(reefer.O2Setpoint), parseFloat(reefer.O2SetpointMin), parseFloat(reefer.O2SetpointMax)))) {\r\n var strErr = `Reefer ${reefer.reeferId} O2Setpoint : ${reefer.O2Setpoint} must be between O2Setpoint Min : ${reefer.O2SetpointMin} and O2Setpoint Max : ${reefer.O2SetpointMax}.`;\r\n validationsummary.push(strErr);\r\n }\r\n }\r\n if (reefer.CO2Setpoint != \"\" && reefer.CO2Setpoint != null && reefer.CO2SetpointMin != \"\" && reefer.CO2SetpointMin != null && reefer.CO2SetpointMax != \"\" && reefer.CO2SetpointMax != null) {\r\n if (!(self.findInBetween(parseFloat(reefer.CO2Setpoint), parseFloat(reefer.CO2SetpointMin), parseFloat(reefer.CO2SetpointMax)))) {\r\n var strErr = `Reefer ${reefer.reeferId} CO2Setpoint : ${reefer.CO2Setpoint} must be between CO2Setpoint Min : ${reefer.CO2SetpointMin} and CO2Setpoint Max : ${reefer.CO2SetpointMax}.`;\r\n validationsummary.push(strErr);\r\n }\r\n }\r\n });\r\n if (validationsummary != null && validationsummary.length > 0) {\r\n strValaditionSummary = validationsummary.join('
    ');\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Validation Error', strValaditionSummary, self.onOKSubmitValidation.bind(this));\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n findInBetween(val, min, max) {\r\n return (val >= min && val <= max);\r\n }\r\n onOKSubmitValidation() {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n }\r\n PrepareFinalSubmitWithoutReefers() {//RCNG-925\r\n $('#globalLoader').show();\r\n var bookingDetails = this.state.BookingDetails;\r\n var reeferData = [];\r\n //if (this.state.disassociaterowData != null && this.state.disassociaterowData != undefined && this.state.disassociaterowData.length > 0) {\r\n // reeferData = [...this.state.rowData, ...this.state.disassociaterowData]\r\n //}\r\n var finalBookingData: server.booking = {\r\n bookingNumber: bookingDetails.BookingNumber, reefers: reeferData, shipper: bookingDetails.Shipper, shipperCode: bookingDetails.ShipperCode,\r\n consignee: bookingDetails.Consignee, agent: bookingDetails.Agent, vessel: bookingDetails.VesselCode,\r\n voyage: bookingDetails.VoyageNumber, POR: bookingDetails.POR, POL: bookingDetails.POL, POD: bookingDetails.POD, DEL: bookingDetails.DEL,\r\n vesselETD: bookingDetails.VesselETD != null ? bookingDetails.VesselETD.toString() : '', vesselETA: bookingDetails.VesselETA != null ? bookingDetails.VesselETA.toString() : '',\r\n BLNumber: bookingDetails.BLNumber, contractParty: bookingDetails.ContractParty, consolidation: bookingDetails.Consolidation, forwarder: bookingDetails.Forwarder, notify: bookingDetails.Notify\r\n , thirdpartyaccess: '', customeraccessgroupid: '', customer: bookingDetails.BKCustomer\r\n };\r\n var inputBody = JSON.stringify(finalBookingData);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/SubmitReeferLevelBooking';\r\n var reefersCount = 0;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: inputBody, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data.toString() != \"\" && data.toString() == \"Booking assigned successfully.\") {\r\n\r\n\r\n /*\r\n if (this.state.formname == 'ReeferStatus') {\r\n $(\"#contextMenuModel .close\").click();\r\n ReeferStatus.refreshReeferStatusGrid();\r\n }\r\n else if (this.state.formname == 'ReeferStatusGrid') {\r\n $(\"#contextMenuModel .close\").click();\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n else if (this.state.formname == 'SSRMReeferStatusGrid') {\r\n $(\"#contextMenuModel .close\").click();\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n */\r\n if (this.state.formname == 'ReeferStatus' || this.state.formname == 'ReeferStatusGrid' || this.state.formname == 'SSRMReeferStatusGrid') {\r\n\r\n (reefersCount == 1) ? PopupWindow.showErrorMessage(\"Edit Booking\", 'Booking updated with ' + reefersCount + ' Reefer successfully')\r\n : PopupWindow.showErrorMessage(\"Edit Booking\", 'Booking updated with ' + reefersCount + ' Reefers successfully');\r\n\r\n setTimeout(() => {\r\n this.props.history.goBack();\r\n }, 2000);\r\n }\r\n else {\r\n (reefersCount == 1) ? RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' updated with ' + reefersCount + ' Reefer successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this))\r\n : RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' updated with ' + reefersCount + ' Reefers successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this));\r\n }\r\n\r\n if (self.state.formname == 'ReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusGrid.refreshStatusGrid(); }, 4000)\r\n if (self.state.formname == 'ReeferStatus')\r\n setTimeout(() => { ReeferStatus.refreshStatusGrid(); }, 4000);\r\n if (self.state.formname == 'SSRMReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusSSRMGrid.refreshDashboardGrid(); }, 4000)\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Edit Booking\", \"Error while processing booking request.\");\r\n }\r\n });\r\n }\r\n\r\n PrepareFinalSubmit() {\r\n var result = this.ValidateFinalSubmitData();\r\n if (result) {\r\n $('#globalLoader').show();\r\n var bookingDetails = this.state.BookingDetails;\r\n var reeferData = this.state.rowData;\r\n if (this.state.disassociaterowData != null && this.state.disassociaterowData != undefined && this.state.disassociaterowData.length > 0) {\r\n reeferData = [...this.state.rowData] //RCNG-1070 Removed the disassociaterowData\r\n }\r\n\r\n var finalBookingData: server.booking = {\r\n bookingNumber: bookingDetails.BookingNumber, reefers: reeferData, shipper: bookingDetails.Shipper, shipperCode: bookingDetails.ShipperCode,\r\n consignee: bookingDetails.Consignee, customer: bookingDetails.BKCustomer, agent: bookingDetails.Agent, vessel: bookingDetails.VesselCode,\r\n voyage: bookingDetails.VoyageNumber, POR: bookingDetails.POR, POL: bookingDetails.POL, POD: bookingDetails.POD, DEL: bookingDetails.DEL,\r\n vesselETD: bookingDetails.VesselETD != null ? bookingDetails.VesselETD.toString() : '', vesselETA: bookingDetails.VesselETA != null ? bookingDetails.VesselETA.toString() : '',\r\n BLNumber: bookingDetails.BLNumber, contractParty: bookingDetails.ContractParty, consolidation: bookingDetails.Consolidation, forwarder: bookingDetails.Forwarder, notify: bookingDetails.Notify,\r\n thirdpartyaccess: this.state.CommonBookingData.ThirdPartyAccess,\r\n customeraccessgroupid: this.state.BookingDetails.CustomerAccessGroupIDLoaded\r\n };\r\n var inputBody = JSON.stringify(finalBookingData);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/SubmitReeferLevelBooking';\r\n var reefersCount = this.state.rowData.length; // RCNG 361\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: inputBody, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data.toString() != \"\" && data.toString() == \"Booking assigned successfully.\") {\r\n\r\n\r\n /*\r\n if (this.state.formname == 'ReeferStatus') {\r\n $(\"#contextMenuModel .close\").click();\r\n ReeferStatus.refreshReeferStatusGrid();\r\n }\r\n else if (this.state.formname == 'ReeferStatusGrid') {\r\n $(\"#contextMenuModel .close\").click();\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n else if (this.state.formname == 'SSRMReeferStatusGrid') {\r\n $(\"#contextMenuModel .close\").click();\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n */\r\n if (this.state.formname == 'ReeferStatus' || this.state.formname == 'ReeferStatusGrid' || this.state.formname == 'SSRMReeferStatusGrid') {\r\n\r\n (reefersCount == 1) ? PopupWindow.showErrorMessage(\"Edit Booking\", 'Booking updated with ' + reefersCount + ' Reefer successfully')\r\n : PopupWindow.showErrorMessage(\"Edit Booking\", 'Booking updated with ' + reefersCount + ' Reefers successfully');\r\n\r\n setTimeout(() => {\r\n this.props.history.goBack();\r\n }, 2000);\r\n }\r\n else {\r\n (reefersCount == 1) ? RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' updated with ' + reefersCount + ' Reefer successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this))\r\n : RCNGWindow.ConfirmWindow.showConfirmBox('\"' + bookingDetails.BookingNumber + '\"' + ' updated with ' + reefersCount + ' Reefers successfully. Would you like to create another booking?', this.onOKSubmit.bind(this, data), this.closeConfirmation.bind(this));\r\n }\r\n\r\n if (self.state.formname == 'ReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusGrid.refreshStatusGrid(); }, 4000)\r\n if (self.state.formname == 'ReeferStatus')\r\n setTimeout(() => { ReeferStatus.refreshStatusGrid(); }, 4000);\r\n if (self.state.formname == 'SSRMReeferStatusGrid')\r\n setTimeout(() => { ReeferStatusSSRMGrid.refreshDashboardGrid(); }, 4000)\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Edit Booking\", \"Error while processing booking request.\");\r\n }\r\n });\r\n }\r\n }\r\n onOKSubmit(param: any) {\r\n var emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0,CustomerAccessGroupIDLoaded:'',\r\n BKCustomer:''\r\n };\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [], BookingNumber: []\r\n }\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false\r\n }, () => { this.props.history.push('/Newbookingassign'); RCNGWindow.ConfirmWindow.close(); });\r\n\r\n }\r\n\r\n RedirectToFirstTab() {\r\n this.setState({ renderHtml: this.dynamicRendering(1) }, () => { this.setActiveAndInactiveOld(1, 0); RCNGWindow.ConfirmWindow.close(); });\r\n }\r\n closeConfirmation() {\r\n var emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0,CustomerAccessGroupIDLoaded:'',\r\n BKCustomer:''\r\n };\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n }\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false\r\n }, () => {\r\n RCNGWindow.ConfirmWindow.close(); this.props.history.push('/home');\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n setTimeout(() => { ReeferStatusSSRMGrid.refreshDashboardGrid(); }, 5000);\r\n } else {\r\n setTimeout(() => { ReeferStatusGrid.refreshStatusGrid(); }, 5000);\r\n }\r\n });\r\n }\r\n\r\n setActiveAndInactiveOld(TabToActive: number, TabToInactive: number) {\r\n\r\n if (TabToInactive > 0)\r\n document.getElementById(\"atab\" + TabToInactive).classList.remove(\"active\");\r\n\r\n document.getElementById(\"atab\" + TabToActive).classList.add(\"active\");\r\n }\r\n\r\n renderWizardPage(tabPane: number, tabState: any, tabPaneFrom: number) {\r\n this.setState({ tabFrom: tabPaneFrom });\r\n this.setActiveAndInactiveOld(tabPane, tabPaneFrom);\r\n switch (tabPane) {\r\n case 1:\r\n var newBookingDetails = emptyBookingDetails;\r\n newBookingDetails.Shipper = tabState.BookingDetails.Shipper;\r\n newBookingDetails.Consignee = tabState.BookingDetails.Consignee;\r\n newBookingDetails.ShipperCode = tabState.BookingDetails.ShipperCode;\r\n newBookingDetails.POR = tabState.BookingDetails.POR;\r\n newBookingDetails.POL = tabState.BookingDetails.POL;\r\n newBookingDetails.POD = tabState.BookingDetails.POD;\r\n newBookingDetails.VesselETD = tabState.BookingDetails.VesselETD;\r\n newBookingDetails.VesselETA = tabState.BookingDetails.VesselETA;\r\n newBookingDetails.BLNumber = tabState.BookingDetails.BLNumber;\r\n newBookingDetails.ContractParty = tabState.BookingDetails.ContractParty;\r\n newBookingDetails.Consolidation = tabState.BookingDetails.Consolidation;\r\n newBookingDetails.Agent = tabState.BookingDetails.Agent;\r\n newBookingDetails.VesselCode = tabState.BookingDetails.VesselCode;\r\n newBookingDetails.VoyageNumber = tabState.BookingDetails.VoyageNumber;\r\n newBookingDetails.Call = tabState.BookingDetails.Call;\r\n newBookingDetails.Forwarder = tabState.BookingDetails.Forwarder;\r\n newBookingDetails.Notify = tabState.BookingDetails.Notify;\r\n newBookingDetails.BookingNumber = tabState.BookingDetails.BookingNumber;\r\n newBookingDetails.DEL = tabState.BookingDetails.DEL;\r\n newBookingDetails.SelectedVesselCD = tabState.BookingDetails.SelectedVesselCD;\r\n newBookingDetails.SelectedCall = tabState.BookingDetails.SelectedCall;\r\n newBookingDetails.SelectedVoyage = tabState.BookingDetails.SelectedVoyage;\r\n newBookingDetails.ArrSelectedVesselCD = tabState.BookingDetails.ArrSelectedVesselCD;\r\n newBookingDetails.ArrSelectedCall = tabState.BookingDetails.ArrSelectedCall;\r\n newBookingDetails.ArrSelectedVoyage = tabState.BookingDetails.ArrSelectedVoyage;\r\n newBookingDetails.userInput = tabState.BookingDetails.userInput;\r\n newBookingDetails.IsVVCModified = tabState.BookingDetails.IsVVCModified;\r\n newBookingDetails.BKCustomer = tabState.BookingDetails.BKCustomer;\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.SelectedReefer;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.ReeferIds;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.ReeferwithUnitID;\r\n newBookingReefersDetails.BookingNumber = tabState.BookingNumber;\r\n this.setState({ BookingDetails: newBookingDetails, BookingReefers: newBookingReefersDetails }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n case 2:\r\n var newBookingDetails = emptyBookingDetails;\r\n newBookingDetails.Shipper = tabState.BookingDetails.Shipper;\r\n newBookingDetails.Consignee = tabState.BookingDetails.Consignee;\r\n newBookingDetails.ShipperCode = tabState.BookingDetails.ShipperCode;\r\n newBookingDetails.POR = tabState.BookingDetails.POR;\r\n newBookingDetails.POL = tabState.BookingDetails.POL;\r\n newBookingDetails.POD = tabState.BookingDetails.POD;\r\n newBookingDetails.VesselETD = tabState.BookingDetails.VesselETD;\r\n newBookingDetails.VesselETA = tabState.BookingDetails.VesselETA;\r\n newBookingDetails.BLNumber = tabState.BookingDetails.BLNumber;\r\n newBookingDetails.ContractParty = tabState.BookingDetails.ContractParty;\r\n newBookingDetails.Consolidation = tabState.BookingDetails.Consolidation;\r\n newBookingDetails.Agent = tabState.BookingDetails.Agent;\r\n newBookingDetails.VesselCode = tabState.BookingDetails.VesselCode;\r\n newBookingDetails.VoyageNumber = tabState.BookingDetails.VoyageNumber;\r\n newBookingDetails.Call = tabState.BookingDetails.Call;\r\n newBookingDetails.Forwarder = tabState.BookingDetails.Forwarder;\r\n newBookingDetails.Notify = tabState.BookingDetails.Notify;\r\n newBookingDetails.BookingNumber = tabState.BookingDetails.BookingNumber;\r\n newBookingDetails.DEL = tabState.BookingDetails.DEL;\r\n newBookingDetails.SelectedVesselCD = tabState.BookingDetails.SelectedVesselCD;\r\n newBookingDetails.SelectedCall = tabState.BookingDetails.SelectedCall;\r\n newBookingDetails.SelectedVoyage = tabState.BookingDetails.SelectedVoyage;\r\n newBookingDetails.ArrSelectedVesselCD = tabState.BookingDetails.ArrSelectedVesselCD;\r\n newBookingDetails.ArrSelectedCall = tabState.BookingDetails.ArrSelectedCall;\r\n newBookingDetails.ArrSelectedVoyage = tabState.BookingDetails.ArrSelectedVoyage;\r\n newBookingDetails.userInput = tabState.BookingDetails.userInput;\r\n newBookingDetails.BKCustomer = tabState.BookingDetails.BKCustomer;\r\n newBookingDetails.IsVVCModified = tabState.BookingDetails.IsVVCModified;\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.BookingReefers.BookingReefers;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.BookingReefers.SelectedBookingReefers;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.BookingReefers.ReeferwithUnitID;\r\n newBookingReefersDetails.BookingNumber = tabState.BookingReefers.BookingNumber;\r\n var Edit = this.state.isEdit;\r\n var BookingAll = this.state.AllBooking;\r\n var CountBooking = this.state.BookingCount;\r\n this.setState({\r\n BookingDetails: newBookingDetails, BookingReefers: newBookingReefersDetails, rowData: tabState.rowData,\r\n isEdit: tabState.isBookingEdit != undefined ? tabState.isBookingEdit : Edit,\r\n AllBooking: tabState.BookingList != undefined ? tabState.BookingList : BookingAll,\r\n BookingCount: tabState.isAllBooking != undefined ? tabState.isAllBooking : CountBooking\r\n }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n case 3:\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.BookingReefers.BookingReefers;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.BookingReefers.SelectedBookingReefers;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.BookingReefers.ReeferwithUnitID;\r\n newBookingReefersDetails.BookingNumber = tabState.BookingReefers.BookingNumber;\r\n\r\n\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: tabState.CommonBookingData.HighValueCargo != undefined ? tabState.CommonBookingData.HighValueCargo : 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: tabState.CommonBookingData.CACTNotRequired != undefined ? tabState.CommonBookingData.CACTNotRequired : false, CTRequire: tabState.CommonBookingData.CTRequire != undefined ? tabState.CommonBookingData.CTRequire : false, CARequire: tabState.CommonBookingData.CARequire != undefined ? tabState.CommonBookingData.CARequire : false, CACTDifferByReefer: tabState.CommonBookingData.CACTDifferByReefer != undefined ? tabState.CommonBookingData.CACTDifferByReefer : false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n\r\n var bookedTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperature === item.bookedTemperature) === i\r\n );\r\n if (bookedTemperatureCount.length > 0 && bookedTemperatureCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperature = bookedTemperatureCount[0].bookedTemperature;\r\n }\r\n var bookedTemperatureMaxCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureMax === item.bookedTemperatureMax) === i\r\n );\r\n if (bookedTemperatureMaxCount.length > 0 && bookedTemperatureMaxCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureMax = bookedTemperatureMaxCount[0].bookedTemperatureMax;\r\n }\r\n var bookedTemperatureMinCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureMin === item.bookedTemperatureMin) === i\r\n );\r\n if (bookedTemperatureMinCount.length > 0 && bookedTemperatureMinCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureMin = bookedTemperatureMinCount[0].bookedTemperatureMin;\r\n }\r\n\r\n\r\n var bookedTemperatureQualifierCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.bookedTemperatureQualifier === item.bookedTemperatureQualifier) === i\r\n );\r\n if (bookedTemperatureQualifierCount.length > 0 && bookedTemperatureQualifierCount.length == 1) {\r\n emptyCommonBookingData.BookedTemperatureUnit = bookedTemperatureQualifierCount[0].bookedTemperatureQualifier;\r\n }\r\n\r\n var humidityCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.humidity === item.humidity) === i\r\n );\r\n if (humidityCount.length > 0 && humidityCount.length == 1) {\r\n emptyCommonBookingData.HumiditySetPoint = humidityCount[0].humidity;\r\n }\r\n var ventSettingCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.ventSetting === item.ventSetting) === i\r\n );\r\n if (ventSettingCount.length > 0 && ventSettingCount.length == 1) {\r\n emptyCommonBookingData.VentSettings = ventSettingCount[0].ventSetting;\r\n }\r\n var gensetIdCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.gensetId === item.gensetId) === i\r\n );\r\n if (gensetIdCount.length > 0 && gensetIdCount.length == 1) {\r\n emptyCommonBookingData.GensetId = gensetIdCount[0].gensetId;\r\n }\r\n var commodityCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.commodity === item.commodity) === i\r\n );\r\n if (commodityCount.length > 0 && commodityCount.length == 1) {\r\n emptyCommonBookingData.CommodityName = commodityCount[0].commodity;\r\n }\r\n\r\n var STCCCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.STCC === item.STCC) === i\r\n );\r\n if (STCCCount.length > 0 && STCCCount.length == 1) {\r\n emptyCommonBookingData.STCC = STCCCount[0].STCC;\r\n }\r\n\r\n\r\n var HSCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.HS === item.HS) === i\r\n );\r\n if (HSCount.length > 0 && HSCount.length == 1) {\r\n emptyCommonBookingData.HSCode = HSCount[0].HS;\r\n }\r\n var serviceLevelCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.serviceLevel === item.serviceLevel) === i\r\n );\r\n if (serviceLevelCount.length > 0 && serviceLevelCount.length == 1) {\r\n emptyCommonBookingData.ServiceLevel = serviceLevelCount[0].serviceLevel;\r\n }\r\n var HVFlagCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.HVFlag === item.HVFlag) === i\r\n );\r\n if (HVFlagCount.length > 0 && HVFlagCount.length == 1) {\r\n emptyCommonBookingData.HighValueCargo = HVFlagCount[0].HVFlag;\r\n }\r\n var cargoCareCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.cargoCare === item.cargoCare) === i\r\n );\r\n if (cargoCareCount.length > 0 && cargoCareCount.length == 1) {\r\n emptyCommonBookingData.CargoCareProfile = cargoCareCount[0].cargoCare;\r\n }\r\n var accessCodesCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.accessCodes === item.accessCodes) === i\r\n );\r\n if (accessCodesCount.length > 0 && accessCodesCount.length == 1) {\r\n emptyCommonBookingData.ThirdPartyAccess = accessCodesCount[0].accessCodes;\r\n }\r\n var CAFlagCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CAFlag === item.CAFlag) === i\r\n );\r\n if (CAFlagCount.length > 0 && CAFlagCount.length == 1) {\r\n emptyCommonBookingData.CARequire = CAFlagCount[0].CAFlag;\r\n }\r\n var CTFlagCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CTFlag === item.CTFlag) === i\r\n );\r\n if (CTFlagCount.length > 0 && CTFlagCount.length == 1) {\r\n emptyCommonBookingData.CTRequire = CTFlagCount[0].CTFlag;\r\n }\r\n var O2SetpointCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2Setpoint === item.O2Setpoint) === i\r\n );\r\n if (O2SetpointCount.length > 0 && O2SetpointCount.length == 1) {\r\n emptyCommonBookingData.O2SetPoint = O2SetpointCount[0].O2Setpoint;\r\n }\r\n var O2SetpointMaxCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2SetpointMax === item.O2SetpointMax) === i\r\n );\r\n if (O2SetpointMaxCount.length > 0 && O2SetpointMaxCount.length == 1) {\r\n emptyCommonBookingData.O2Max = O2SetpointMaxCount[0].O2SetpointMax;\r\n }\r\n\r\n var O2SetpointMinCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.O2SetpointMin === item.O2SetpointMin) === i\r\n );\r\n if (O2SetpointMinCount.length > 0 && O2SetpointMinCount.length == 1) {\r\n emptyCommonBookingData.O2Min = O2SetpointMinCount[0].O2SetpointMin;\r\n }\r\n var CO2SetpointCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2Setpoint === item.CO2Setpoint) === i\r\n );\r\n if (CO2SetpointCount.length > 0 && CO2SetpointCount.length == 1) {\r\n emptyCommonBookingData.CO2SetPoint = CO2SetpointCount[0].CO2Setpoint;\r\n }\r\n var CO2SetpointMaxCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2SetpointMax === item.CO2SetpointMax) === i\r\n );\r\n if (CO2SetpointMaxCount.length > 0 && CO2SetpointMaxCount.length == 1) {\r\n emptyCommonBookingData.CO2Max = CO2SetpointMaxCount[0].CO2SetpointMax;\r\n }\r\n var CO2SetpointMinCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CO2SetpointMin === item.CO2SetpointMin) === i\r\n );\r\n if (CO2SetpointMinCount.length > 0 && CO2SetpointMinCount.length == 1) {\r\n emptyCommonBookingData.CO2Min = CO2SetpointMinCount[0].CO2SetpointMin;\r\n }\r\n var CTDaysCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.CTDays === item.CTDays) === i\r\n );\r\n if (CTDaysCount.length > 0 && CTDaysCount.length == 1) {\r\n emptyCommonBookingData.CTDays = CTDaysCount[0].CTDays;\r\n }\r\n var USDAMaxTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.USDAMaxTemperature === item.USDAMaxTemperature) === i\r\n );\r\n if (USDAMaxTemperatureCount.length > 0 && USDAMaxTemperatureCount.length == 1) {\r\n emptyCommonBookingData.CTMaxTemperature = USDAMaxTemperatureCount[0].USDAMaxTemperature;\r\n }\r\n var postCTTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperature === item.postCTTemperature) === i\r\n );\r\n if (postCTTemperatureCount.length > 0 && postCTTemperatureCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperature = postCTTemperatureCount[0].postCTTemperature;\r\n }\r\n var postCTTemperatureCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperature === item.postCTTemperature) === i\r\n );\r\n if (postCTTemperatureCount.length > 0 && postCTTemperatureCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperature = postCTTemperatureCount[0].postCTTemperature;\r\n }\r\n var postCTTemperatureDeviationCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTTemperatureDeviation === item.postCTTemperatureDeviation) === i\r\n );\r\n if (postCTTemperatureDeviationCount.length > 0 && postCTTemperatureDeviationCount.length == 1) {\r\n emptyCommonBookingData.PostCTTemperatureRange = postCTTemperatureDeviationCount[0].postCTTemperatureDeviation;\r\n }\r\n var postCTVentSettingCount = tabState.rowData.filter(\r\n (item, i, arr) => arr.findIndex(t => t.postCTVentSetting === item.postCTVentSetting) === i\r\n );\r\n if (postCTVentSettingCount.length > 0 && postCTVentSettingCount.length == 1) {\r\n emptyCommonBookingData.PostCTVentSettings = postCTVentSettingCount[0].postCTVentSetting;\r\n }\r\n\r\n this.setState({ BookingReefers: newBookingReefersDetails, CommonBookingData: emptyCommonBookingData, rowData: tabState.rowData }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n case 4:\r\n this.setState({ CommonBookingData: tabState.CommonBookingData, rowData: tabState.rowData, CargoCareProfiles: tabState.CargoCareProfiles, Thirdparty: tabState.Thirdparty, RefTemperatureUnit: tabState.RefTemperatureUnit }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n }\r\n }\r\n backScreen() {\r\n if (this.state.currentTab == 2) {\r\n SpecificBookingReefers.BackScreen();\r\n }\r\n else if (this.state.currentTab == 3) {\r\n //Test.BackScreen();\r\n SpecificBookingReeferCommonData.BackScreen();\r\n }\r\n else if (this.state.currentTab == 4) {\r\n SpecificBookingReefersGridData.BackScreen();\r\n }\r\n\r\n }\r\n\r\n nextScreen() {\r\n if (this.state.currentTab == 1) {\r\n SpecificBookingDetails.NextScreen();\r\n }\r\n else if (this.state.currentTab == 2) {\r\n SpecificBookingReefers.NextScreen();\r\n }\r\n else if (this.state.currentTab == 3) {\r\n SpecificBookingReeferCommonData.NextScreen();\r\n }\r\n else if (this.state.currentTab == 4) {\r\n SpecificBookingReefersGridData.NextScreen();\r\n }\r\n\r\n }\r\n\r\n\r\n cancelWizard() {\r\n var emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0,CustomerAccessGroupIDLoaded:'',\r\n BKCustomer:''\r\n };\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [], BookingNumber: []\r\n }\r\n if (this.state.formname == 'ReeferStatus' || this.state.formname == 'ReeferStatusGrid' || this.state.formname == 'SSRMReeferStatusGrid') {\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false\r\n }, () => { RCNGWindow.ConfirmWindow.close(); this.props.history.goBack(); });\r\n }\r\n else {\r\n this.setState({\r\n currentTab: 1, CommonBookingData: emptyCommonBookingData, rowData: [], BookingDetails: emptyBookingDetails, BookingReefers: emptyBookingReefers, isEdit: false, tabFrom: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'New Booking',\r\n IsOpen: 'New',\r\n buttonState: false\r\n }, () => { RCNGWindow.ConfirmWindow.close(); this.props.history.push('/home'); });\r\n }\r\n }\r\n finishWizard() {\r\n SpecificBookingReefersGridData.finishWizard();\r\n }\r\n static UpdateBookingType(Type: any) {\r\n self.setState({ BookingType: Type });\r\n }\r\n static UpdateButtonStyle(State: any) {\r\n self.setState({ buttonState: State });\r\n }\r\n public render() {\r\n return
    \r\n
    Edit Booking
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n {this.state.renderHtml}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n \r\n {\r\n this.state.currentTab != 1 ? : ''\r\n }\r\n {\r\n this.state.currentTab == 4 ? \r\n :\r\n \r\n }\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    ;\r\n }\r\n}","module.exports = __webpack_public_path__ + \"static/media/ORBCOMMLOGOR.bf8455f3.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAYAAAHFDtl9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAASBJREFUeNpi/L+U4T8DAcCELiCUhqmIkRiTAAAAAP//IqgIw6o9V0g0AQAAAP//IsodJPsYHczaR9gQqrgEAAAA//+ij3eoYsjZ+1QwxFhxsHiHGAAAAAD//6JK7Awa3wwKhxCTs+jikPS5DAz3XmGWQKNphFIAAAAA//8aDZFRh9DUIfdeQbIvAwMDw/uvlDmEhRLNJjUMDO9mQdiC3AMYIpSGAtUccqYFEjXvv1LuqNFyZNQhhAAAAAD//xo0aWQ0ZkYDZDRAiK6+wyYxMDBGQ7BrO3UrMLo2ASgFYZMgnt9dOZpCGBgYGBhWn2RgCDUfzTJw4KIDCZTBBAa82t1zhYGhczOi964kBslCSmKj7ZDRLDMaIEMAAAAAAP//AwBVIlNNvUi63wAAAABJRU5ErkJggg==\"","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { SendEmailControl } from './../sharedcomponents/SendEmailControl';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport { ExportToExcel } from './../sharedcomponents/ExportToExcel';\r\nimport Formatters from '../../actions/Formatters';\r\nimport $ from 'jquery';\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n isFileDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n gridApiParams: any;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\nvar ProcessfirstCellOnlyRowIndex = -1;\r\n\r\n\r\nexport class GridToolBarControl extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = { renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', gridApiParams: this.props.gridApiParams, isFileDownload: false };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n modelDialogHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderEmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n this.setState({ gridApiParams: this.props.gridApiParams });\r\n\r\n $(\"#globalLoader\").show();\r\n this.setState({ isFileDownload: true },\r\n () => { \r\n var IsGroupsExist = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false;\r\n if (IsGroupsExist) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false,\r\n allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n }\r\n else {\r\n var allColumns = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n for (var i = allColumns.length - 1; i >= 0; i--) {\r\n if (allColumns[i].colDef.headerName === 'Group') {\r\n allColumns.splice(i, 1);\r\n }\r\n }\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: true,\r\n //allColumns: true,\r\n columnKeys: allColumns,\r\n skipGroups: true,\r\n processHeaderCallback: this.myHeaderCallback,processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n\r\n }\r\n }\r\n );\r\n\r\n //if (this.state.isFileDownload) {\r\n // this.showMessageAndClosePopup();\r\n //}\r\n\r\n setTimeout(() => {\r\n this.setState({ isFileDownload: true }, () => { this.showMessageAndClosePopup(); })\r\n }, 2000);\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n\r\n }\r\n\r\n showMessageAndClosePopup() {\r\n if (this.state.isFileDownload) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isFileDownload: false });\r\n }\r\n }\r\n\r\n getFileName(formName: string) {\r\n var currentDate = new Date();\r\n return formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds();\r\n }\r\n\r\n GetExportFileName() {\r\n var FileName = this.props.formName;\r\n\r\n switch (FileName) {\r\n\r\n default:\r\n return FileName;\r\n }\r\n }\r\n\r\n getGroupDisplayValueName(params) {\r\n if (params != undefined && params != null) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName; \r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && (fieldName === 'BatteryVoltage' || fieldName === 'DoorSensorBatteryVoltage'))\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n\r\n switch (fieldName) {\r\n case \"IgnitionOn\":\r\n return Formatters.GensetSwitchFormatterGroupingExcel(fieldValue);\r\n case \"GensetRunning\":\r\n return Formatters.EngineSortingFormatterGroupingExcel(fieldValue);\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM': case 'DLEventDTTM': case 'InsertedDttm': case 'UpdatedDttm': case 'DoorEventDtm':\r\n return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n case 'DeviceTemp':\r\n {\r\n return Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n }\r\n case 'IsInsideGeofence': case 'IsActive': case 'StateCd':\r\n {\r\n return Formatters.YesNoConverterforExcel(fieldValue);\r\n }\r\n\r\n case \"DevicePowerSourceCd\":\r\n return Formatters.PowerStateFormatterGroupingForExcel(fieldValue);//done\r\n\r\n case 'BatteryVoltage':\r\n {\r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-999') ? '-NA-' : Formatters.BattVoltageSortingGrouping(fieldValue);\r\n }\r\n case 'DoorSensorBatteryVoltage':\r\n {\r\n var AssetType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n AssetType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].AssetType;\r\n }\r\n if(AssetType != null && AssetType != undefined && AssetType.toString().toUpperCase().trim() == \"D\")\r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-1') ? '-NA-' : Formatters.DoorBattPctSortingGrouping(fieldValue);\r\n }\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n\r\n return Formatters.GuestReeferModeFormatterForExcel(fieldValue);\r\n }\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) return Formatters.rcdPowerSourceFormatterforExcel(fieldValue);\r\n\r\n case \"CustomerName\":\r\n {\r\n if (columnDisplayName == 'Assigned To')\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"-NA-\" : fieldValue;\r\n else\r\n return fieldValue;\r\n }\r\n case \"ReeferOEMTypeCd\": case \"OEMTypeCD\":// WI-26787\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return Formatters.RSSIFormatterGroupingForExcel(fieldValue);\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n\r\n case \"AssetType\":\r\n return Formatters.AssetTypeGrouping(fieldValue);\r\n case \"GeofenceCategoryCd\":\r\n return Formatters.GeofenceTypeGrouping(fieldValue);\r\n case \"FilerepositoryActionCD\":\r\n return Formatters.FileStatusGrouping(fieldValue);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterForExcel(fieldValue, params);\r\n case \"CCSeverityLevel\":\r\n return Formatters.CargoCareFormatterGroupingForExcel(fieldValue); //RCNG - 241 Renamed Normal to Assigned\r\n case \"DoorOpen\":\r\n return Formatters.DeviceDoorFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n myCellCallback(params) {\r\n var returnValue;\r\n\r\n if (params.node.group && ProcessfirstCellOnlyRowIndex != params.node.rowGroupIndex) {\r\n ProcessfirstCellOnlyRowIndex = params.node.rowGroupIndex\r\n if (params.node.key != null && params.node.key != undefined)\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (params.node.group && params.column.colId === \"0\") {\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (!params.node.group) {\r\n switch (params.column.colId) {\r\n\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID': case 'DeviceNumber':\r\n {\r\n if (params.value == undefined || params.value == \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n\r\n case 'Name': case 'Tag': case 'Address': case 'ProfileCode': case 'ProfileCodeDescription': case 'InsertedBy': case 'UpdatedBy':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.stringTypeFormatterChildFormsNew(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'Coordinates':\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GeofenceCoordinatesFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n break;\r\n case 'DeviceTemp':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM': case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'TTL': case 'ExpirationTime': case 'PTRDateTime': case 'DLEventDTTM': case 'InsertedDttm': case 'UpdatedDttm': case 'DoorEventDtm':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.dateTypeFormatterforExcel(params.value);\r\n }\r\n break\r\n\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasFuelSensor': case 'HasOilPressureSwitch': case 'HasDoorSensor': case 'IsDeployed': case 'DCXDownloads': case 'StateCd':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n\r\n case 'BatteryVoltage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'DoorSensorBatteryVoltage':\r\n {\r\n if (params.node.data.AssetType != undefined && params.node.data.AssetType != null && params.node.data.AssetType.toString().toUpperCase().trim() == \"D\") {\r\n if (params.node.data.DoorSensorBatteryVoltage != undefined && params.node.data.DoorSensorBatteryVoltage != null)\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.DoorSensorBatteryVoltage);\r\n }\r\n else\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n\r\n\r\n case 'GPSLastLock': if (params.value != undefined && params.value != null) returnValue = Formatters.secondsToTimeConverterForExcel(params.node.data.GPSLastLock); break;\r\n\r\n case 'IgnitionOn': if (params.value != undefined && params.value != null) returnValue = Formatters.gensetSwitchFormatterForExcel(params.value); break;\r\n\r\n case 'CustomerName':\r\n {\r\n if (params.column.colDef.headerName == 'Assigned To')\r\n returnValue = Formatters.stringTypeFormatterFor3PExcel(params.value);\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n\r\n case \"RSSI\": if (params.value != undefined && params.value != null) returnValue = params.node.data.RSSI; break;\r\n\r\n case \"GetFileRepositoryActionDesc\":\r\n {\r\n returnValue = Formatters.GetFileRepositoryActionDesc(params.value);\r\n }\r\n break;\r\n\r\n case \"RunState\": returnValue = Formatters.runStateFormatterforExcel(params.node.data.RunState.toUpperCase().trim()); break;\r\n \r\n case 'Status': \r\n {\r\n if (params.node.data.Status != undefined || params.node.data.Status != \"-NA-\" && params.node.data.Status != null)\r\n returnValue = params.node.data.Status.trim();\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case \"RcdPowerSourceCd\": returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value); break;\r\n\r\n case 'ManufacturedDate':\r\n {\r\n returnValue = Formatters.YearFromdateTypeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = Formatters.AssetTypeFormatterForExcel(params.value);\r\n break;\r\n case 'GeofenceCategoryCd': if (params.value != undefined && params.value != null) returnValue = Formatters.fenceTypeFormatterForExcel(params.value);\r\n break;\r\n case 'GensetRunning': {\r\n if (params.value != undefined && params.value != null) {\r\n // Start WI-26787\r\n //var HasOilPressureSwitch;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // HasOilPressureSwitch = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasOilPressureSwitch;\r\n //}\r\n //else {\r\n // HasOilPressureSwitch = false;\r\n //}\r\n // End WI-26787\r\n //if (HasOilPressureSwitch != undefined && HasOilPressureSwitch != null)\r\n var isGensetRunning = {\r\n GensetRunning: params.node.data.GensetRunning,\r\n HasOilPressureSwitch: params.node.data.HasOilPressureSwitch,\r\n OEMTypeCD: params.node.data.OEMTypeCD\r\n };\r\n returnValue = Formatters.EngFormatterforExcel(isGensetRunning);\r\n }\r\n }\r\n break;\r\n\r\n case 'DevicePowerSourceCd': {\r\n if (params.value != undefined && params.value != null) {\r\n var DeviceConfig;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceConfig = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceConfig;\r\n }\r\n else {\r\n DeviceConfig = false;\r\n }\r\n\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n else {\r\n DeviceType = \"\";\r\n }\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: params.node.data.DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: params.node.data.DeviceType\r\n };\r\n \r\n //if (DeviceType != undefined && DeviceType != null && DeviceConfig != undefined && DeviceConfig != null)\r\n return Formatters.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'LineFrequency':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorTemp': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp': \r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'TemperatureUnit':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var IsCargoCare = {\r\n isCargocare: params.node.data.IsCargoCare,\r\n CCSeverityLevel: params.node.data.CCSeverityLevel\r\n };\r\n returnValue = Formatters.CargoCareFormatterforExcel(IsCargoCare);\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlarmsList': returnValue = Formatters.AlarmListFormatterforExcel(params.value); break;\r\n case 'Humidity':\r\n {\r\n var isHumidity = {\r\n Humidity: params.node.data.Humidity,\r\n HumiditySetpointStatus: params.node.data.HumiditySetpointStatus\r\n };\r\n returnValue = Formatters.HumiditySettingFormatterforExcel(isHumidity);\r\n }\r\n break;\r\n case 'CondenserPressure':\r\n {\r\n var CondenserPressureData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n CondenserPressure: params.node.data.CondenserPressure\r\n };\r\n returnValue = Formatters.sensorDataPCondFormatterExcel(CondenserPressureData);\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening':\r\n {\r\n var EEVData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.node.data.EvaporatorExpansionValveOpening\r\n };\r\n returnValue = Formatters.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening':\r\n {\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: params.node.data.SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.node.data.SuctionModulationValveOpening\r\n };\r\n returnValue = Formatters.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n break;\r\n case \"ThreePhaseCurrent\": returnValue = Formatters.Current3PhaseFormatterforExcel(params.value); break;\r\n case \"FilerepositoryActionCD\":\r\n {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\")\r\n returnValue = Formatters.GetFileRepositoryActionDesc(params.node.data.FilerepositoryActionCD);\r\n else\r\n return \"-NA-\";\r\n }\r\n break;\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGroupingForExcel(params);\r\n case 'HumiditySetpoint':\r\n {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\")\r\n returnValue = Formatters.HumiditySetpointForExcel(params.value, params.node.data.HumiditySetpointStatus);\r\n else\r\n return \"-NA-\";\r\n\r\n //returnValue = Formatters.HumiditySetpointForExcel(params.value);\r\n }\r\n break;\r\n case 'DoorOpen':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.DeviceDoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Auth0_OrgId':\r\n {\r\n returnValue = Formatters.Auth0MigratedYesNoConverterForExcel(params.value);\r\n }\r\n break;\r\n default: {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n return params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n }\r\n\r\n myGroupHeaderCallback(params) {\r\n\r\n var displayName = params.columnApi.getDisplayNameForColumnGroup(\r\n params.columnGroup\r\n );\r\n return displayName;\r\n }\r\n\r\n myHeaderCallback(params) {\r\n var headerDisplayName = params.column.getColDef().headerName;\r\n switch (headerDisplayName) {\r\n case \"Event Time\": case \"Reported Time\": case \"Created On\": case \"Last Modified On\": case \"Last Updated On\": case \"Updated On\": case \"Created Time\": case \"Modified Time\":\r\n case 'StatusDate': case 'Submitted Dt': case 'Expiration Dt': case 'Status Time': case 'Submitted Time': case 'Expiration Time': case 'Created on': case 'Updated on': case \"Door time\":\r\n case \"Event time\": case \"Receipt time\"://RCNG-1143\r\n return Formatters.TimeZoneFormatter(headerDisplayName);\r\n case \"Device temp. \": case \"Device temp \"://RCNG-1143\r\n return Formatters.TemperatureHeaderFormatter(headerDisplayName); \r\n default:\r\n return headerDisplayName;\r\n }\r\n }\r\n\r\n myRowGroupCallback(params) {\r\n var indent = '--';\r\n var node = params.node;\r\n //var label = node.key.toUpperCase();\r\n\r\n var label = self.getGroupDisplayValueName(params);\r\n if (!node.parent.parent) {\r\n return label; // top level node, parent is root node\r\n }\r\n label = '> ' + label;\r\n // indent once per level in the row group hierarchy\r\n while (node.parent.parent) {\r\n label = indent + label;\r\n node = node.parent;\r\n }\r\n return label;\r\n\r\n } \r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo() {\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.sourceFrom == 'Dashboard') {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.formName, this.props.parentchild);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadExcelGridToolBar').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#GridToolbarfilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n \r\n {this.props.formName == \"UserSearch\" || this.props.formName == \"GroupManagement\" || this.props.formName == \"CargoCareProfiles\" || this.props.formName == \"SubcriptionManager\" ?\r\n
    \r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
    : \"\"}\r\n\r\n {this.modelDialogHtml()}\r\n
    \r\n }\r\n}","// @ts-nocheck\r\nimport $ from 'jquery';\r\nimport DateFormat from 'dateformat';\r\nimport * as React from 'react';\r\nimport NotRunning from '../images/NotRunning.png';\r\nimport Running from '../images/Running.png';\r\nimport RSSIUNK from '../images/RSSI/RSSI_UNK.png';\r\nimport RSSI1 from '../images/RSSI/RSSI_1.png';\r\nimport RSSI2 from '../images/RSSI/RSSI_2.png';\r\nimport RSSI3 from '../images/RSSI/RSSI_3.png';\r\nimport RSSI4 from '../images/RSSI/RSSI_4.png';\r\nimport RSSI5 from '../images/RSSI/RSSI_5.png';\r\nimport GroupChat from '../images/GroupChat.png';\r\nimport UnknownStatus from '../images/Status/UnknownStatus.png';\r\nimport ErrorStatus from '../images/Status/ErrorStatus.png';\r\nimport PendingStatus from '../images/Status/PendingStatus.png';\r\nimport IssuedStatus from '../images/Status/IssuedStatus.png';\r\nimport ExpiredStatus from '../images/Status/ExpiredStatus.png';\r\nimport CancelStatus from '../images/Status/CancelStatus.png';\r\nimport SucessStatus from '../images/Status/SucessStatus.png';\r\nimport AcceptedStatus from '../images/Status/AcceptedStatus.png';\r\nimport RejectedStatus from '../images/Status/RejectedStatus.png';\r\nimport DiscardedStatus from '../images/Status/DiscardedStatus.png';\r\nimport RetryStatus from '../images/Status/RetryStatus.png';\r\nimport AcceptedByBusyRCDStatus from '../images/Status/AcceptedByBusyRCDStatus.png';\r\nimport AwaitingPrerequisites from '../images/Status/AwaitingPrerequisites.png';\r\nimport CancellationRequest from '../images/Status/CancellationRequest.png';\r\nimport SendToVC from '../images/Status/SendToVC.png';\r\nimport ValidationPendingStatus from '../images/Status/ValidationPendingStatus.png';\r\nimport UndeliverableStatus from '../images/Status/UndeliverableStatus.png';\r\nimport deletepng from '../images/delete.png';\r\nimport AssetStateActive from '../images/AssetState/ActiveRA.svg';\r\nimport AssetStateDisconnected from '../images/AssetState/DisconnectedRA.png';\r\nimport AssetStateRetired from '../images/AssetState/RetiredRA.svg';\r\n\r\nexport class GensetCellRender extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n static gensetSwitchFormatterImg(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.IgnitionOn != null && params.data.IgnitionOn != undefined) {\r\n if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"TRUE\")\r\n return
    ;\r\n //return '
    ';\r\n else if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"FALSE\")\r\n return
    ;\r\n //return '
    ';\r\n else\r\n return '';\r\n }\r\n //return params.value;\r\n }\r\n\r\n return '';\r\n }\r\n static FuelLevelQuickFilterFormatter(params) {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.value < 0) {\r\n switch (params.toString()) {\r\n case \"-7\": return \"No Sensor\";\r\n case \"-6\": return \"Config Error\";\r\n case \"-5\": return \"Fuel Reading Unavailable\";\r\n case \"-4\": return \"Not Configured\";\r\n case \"-3\": return \"Sensor Error\";\r\n case \"-2\": return \"Sensor Error\";\r\n case \"-1\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Level\";\r\n }\r\n }\r\n else {\r\n var image: any = params.value;\r\n if (image > 17)\r\n return params.value;\r\n else\r\n image = params.value - 1;\r\n\r\n if (image == 0)\r\n image = \"E\";\r\n else if (image == 16)\r\n image = \"F\";\r\n\r\n //var element = document.createElement(\"span\");\r\n //element.className = \"reefer-alert\";\r\n //var imageElement = document.createElement(\"img\");\r\n //imageElement.src = \"../images/FuelFractionImages/\" + image + \".png\";\r\n //element.appendChild(imageElement);\r\n //return element;\r\n\r\n return ;\r\n }\r\n\r\n }\r\n }\r\n static fillLevelTrace(params) {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor != undefined\r\n && params.data.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.FuelLevelQualifier != null && ((params.data.FuelLevelQualifier == 'A') || (params.data.FuelLevelQualifier == 'P'))) {\r\n if (params.data.FuelLevelTierNumber != null) {\r\n return ;\r\n }\r\n else {\r\n if (params.data.FuelLevelPct != null) {\r\n var tempRoundingValue = \"2\";\r\n return parseFloat(params.data.FuelLevelPct.toFixed(parseInt(tempRoundingValue))) + \" %\";\r\n }\r\n else {\r\n return Fuel Reading Unavailable ;\r\n }\r\n }\r\n }\r\n else {\r\n if (params.data.FuelLevelQualifier == \"S\")\r\n return Sensor Error;\r\n else\r\n return params.data.FuelLevelQualifierDesc;\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static RSSITypeFormatter(params) {\r\n var imageSrc = \"\";\r\n if (params.data != null && params.data != undefined) {//WI-21812:For Unknown RSSI Id image is not showing\r\n if (params.data.RSSI != null && params.data.RSSI != undefined) {\r\n if (params.data.RSSI == 0)\r\n imageSrc = RSSIUNK;\r\n else if (params.data.RSSI <= -111)\r\n imageSrc = RSSI1;\r\n else if (params.data.RSSI >= -110 && params.data.RSSI <= -100)\r\n imageSrc = RSSI2;\r\n else if (params.data.RSSI >= -99 && params.data.RSSI <= -88)\r\n imageSrc = RSSI3;\r\n else if (params.data.RSSI >= -87 && params.data.RSSI <= -76)\r\n imageSrc = RSSI4;\r\n else if (params.data.RSSI >= -75)\r\n imageSrc = RSSI5;\r\n else\r\n imageSrc = RSSIUNK;\r\n }\r\n else\r\n imageSrc = RSSIUNK;//WI-21812:For Unknown RSSI Id image is not showing\r\n }\r\n return ;\r\n\r\n }\r\n static EngineSortingFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == \"0\")\r\n return
    NO
    ;\r\n else if (param == \"1\")\r\n return
    YES
    ;\r\n //else\r\n // return \"-NA-\";\r\n }\r\n return \"*No ENG\";\r\n }\r\n static RSSIFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return
    5 Bars
    ;\r\n else if (param == 2)\r\n return
    4 Bars
    ;\r\n else if (param == 3)\r\n return
    3 Bars
    ;\r\n else if (param == 4)\r\n return
    2 Bars
    ;\r\n else if (param == 5)\r\n return
    1 Bar
    ;\r\n else\r\n return
    Unknown
    ;\r\n }\r\n }\r\n static FillLevelTraceGrouping(params) {\r\n if (params != null && params != undefined && params != '') {\r\n if (params < 0) {\r\n switch (params.toString()) {\r\n case \"-7\": return \"No Sensor\";\r\n case \"-6\": return \"Config Error\";\r\n case \"-5\": return \"Fuel Reading Unavailable\";\r\n case \"-4\": return \"Not Configured\";\r\n case \"-3\": return \"Sensor Error\";\r\n case \"-2\": return \"Sensor Error\";\r\n case \"-1\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Level\";\r\n }\r\n }\r\n else {\r\n var image: any = params;\r\n if (image > 17)\r\n return params;\r\n else\r\n image = params - 1;\r\n\r\n if (image == 0)\r\n image = \"E\";\r\n else if (image == 16)\r\n image = \"F\";\r\n\r\n //var element = document.createElement(\"span\");\r\n //element.className = \"reefer-alert\";\r\n //var imageElement = document.createElement(\"img\");\r\n //imageElement.src = \"../images/FuelFractionImages/\" + image + \".png\";\r\n //element.appendChild(imageElement);\r\n //return element;\r\n return ;\r\n }\r\n\r\n }\r\n }\r\n static commandLogStatusFormatter(params) {\r\n if (params != null && params != undefined) {\r\n if (params.data.Status != null && params.data.Status != undefined && params.data.Status != '') {\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.Status.toString().toUpperCase().trim()) {\r\n\r\n case \"UNKNOWN\":\r\n return ;\r\n case \"ERROR\":\r\n return ;\r\n case \"PENDING\":\r\n return ;\r\n case \"ISSUED\":\r\n return ;\r\n case \"EXPIRED\":\r\n return ;\r\n case \"CANCELLED\":\r\n return ;\r\n case \"SUCCESS\":\r\n return ;\r\n case \"COMMANDACCEPTEDBYRCD\":\r\n return ;\r\n case \"REJECTED\":\r\n return ;\r\n case \"DISCARDED\":\r\n return ;\r\n case \"RETRY\":\r\n return ;\r\n case \"COMMANDACCEPTEDBYBUSYRCD\":\r\n return ;\r\n case \"AWAITINGPREREQUISITES\":\r\n return ;\r\n case \"CANCELLATIONREQUEST\":\r\n return ;\r\n case \"AWAITINGSYNC\":\r\n return ;\r\n case \"SENTTOVC\":\r\n return ;\r\n case \"SYNCERROR\":\r\n return ;\r\n case \"SYNCCANCELLED\":\r\n return ;\r\n case \"VALIDATIONPENDING\":\r\n return ;\r\n case \"UNDELIVERABLE\":\r\n return ;\r\n default:\r\n break;\r\n }\r\n }\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n static gensetRunningFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.HasOilPressureSwitch != null && params.data.GensetRunning != null) {\r\n if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.OEMTypeCD != null && params.data.OEMTypeCD.toString().toUpperCase().trim() == \"C\") {\r\n return '';\r\n }\r\n else {\r\n if (params.data.GensetRunning.toString().toUpperCase().trim() == \"0\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"FALSE\")\r\n return ;\r\n else if (params.data.GensetRunning.toString().toUpperCase().trim() == \"1\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"TRUE\")\r\n return ;\r\n else\r\n return '';\r\n }\r\n }\r\n else\r\n return '';\r\n }\r\n else\r\n return '';\r\n }\r\n else\r\n return '';\r\n }\r\n static stringTypeValueFormatter(params) {\r\n if (params.value != \"-NA-\" && params.value != \"\" && params.value != null) {//RCNG-1357\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static floatTypeFormatter(params) {\r\n if (params.value != null && params.value != undefined) {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static stringTypeFormatter(params) {\r\n\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static floatTypeValueFormatter(params) {\r\n if (params.value != \"-NA-\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static GPSfloatTypeValueFormatter(params) {\r\n if (params.value != '-NA-') {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static GPSCoordsFormatter(params) {\r\n if (params.value != null && params.value != '-1000') {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && (params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1020\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1030\")) {\r\n if (params.value != null && params.value != '-1000')\r\n return params.value;\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSLatitude != 0 && params.data.GPSLongitude != 0 && (params.data.GPSLockState == null || params.data.GPSLockState == '' || params.data.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n if (params.value != null && params.value != '-1000') {\r\n var pCss = {\r\n 'color': '#736F6E'\r\n };\r\n return

    {params.value}

    ;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSCoords != null && params.data.GPSCoords != undefined && params.data.GPSCoords.toString().trim() == \"\") {\r\n return '-NA-';\r\n }\r\n else\r\n return params.value;\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static stringTypeFormatterFor3P(params) {\r\n if (params.value != null && params.value != \"null\" && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n if (params.value === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static CommentExistsFormatter(params) {\r\n\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value == 0) {\r\n return ;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n }\r\n static GensetSwitchFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == \"1\")\r\n return
    ON
    ;\r\n else if (param == \"0\")\r\n return
    OFF
    ;\r\n //else\r\n // return \"-NA-\";\r\n }\r\n return \"*No SW\"\r\n }\r\n static removeIndicator(params: any) {\r\n return {\r\n params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n }}>;\r\n }\r\n\r\n static AssetStateFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n //var imageElement = document.createElement(\"img\");\r\n var assetState = params.data.AssetState;\r\n if (params.data.AssetState != null && params.data.AssetState != undefined) {\r\n if (assetState.toUpperCase().trim() == 'A') {\r\n return ;\r\n }\r\n else if (assetState.toUpperCase().trim() == 'D') {\r\n return ;\r\n }\r\n else if (assetState.toUpperCase().trim() == 'R') {\r\n return ;\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n static AssetStateFormatterGrouping(param) {\r\n if (param != null && param != undefined && param != '') {\r\n if (param == \"A\") {\r\n return
    Active
    ;\r\n }\r\n else if (param == \"D\") {\r\n return
    Disconnected
    ;\r\n }\r\n else if (param == \"R\") {\r\n return
    Retired
    ;\r\n }\r\n }\r\n return \"*No INV\";\r\n }\r\n}\r\n","/// \r\n/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json'); \r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface ReeferSearchState {\r\n isLoading: boolean;\r\n searchFilters: server.ReeferSearchFilters;\r\n reeferStatus: server.USP_UnitCurrentConditionUI_Model[];\r\n /* WI 26566 changes start */\r\n allAssetStatus: any[];\r\n gridType: any; \r\n gensetStatus: any[];\r\n dryStatus: any[];\r\n chassisStatus: any[];\r\n /* WI 26566 changes end */\r\n columnDefs: any[];\r\n performCargoAction: boolean;\r\n reeferFormatter: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n tripWISESupportdeviceTypes: any;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestReeferSearchAction {\r\n type: 'REQUEST_REEFER_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n colDefs: any[];\r\n}\r\n\r\ninterface ReceiveReeferSearchAction {\r\n type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n reeferStatusData: server.USP_UnitCurrentConditionUI_Model[];\r\n /* WI 26566 changes start */\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n gensetStatusData: any[];\r\n dryStatusData: any[];\r\n chassisStatusData: any[];\r\n /* WI 26566 changes end */\r\n colDefs: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n tripWISESupportdeviceTypes: any;\r\n}\r\n/* WI 26566 changes start */\r\ninterface ReceiveAllAssetTypeSearchAction {\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n reeferStatusData: server.USP_UnitCurrentConditionUI_Model[];\r\n gensetStatusData: any[];\r\n dryStatusData: any[];\r\n chassisStatusData: any[];\r\n colDefs: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n tripWISESupportdeviceTypes: any;\r\n}\r\n/* WI 26566 changes end */\r\ninterface RequestAssignCargoCare {\r\n type: 'REQUEST_ASSIGN_CARGO_CARE';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\n\r\ninterface RequestUnAssignCargoCare {\r\n type: 'REQUEST_UN_ASSIGN_CARGO_CARE';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\n\r\ninterface RequestClearSetPoint {\r\n type: 'REQUEST_CLEAR_SET_POINT';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\ninterface RequestEventMaster {\r\n type: 'REQUEST_EVENTMASTER'; \r\n}\r\ninterface ReceiveEventMaster {\r\n type: 'RECEIVE_EVENTMASTER';\r\n reeferFormatterData: server.ReeferFormatter;\r\n}\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestReeferSearchAction | ReceiveReeferSearchAction | RequestAssignCargoCare | RequestUnAssignCargoCare | RequestClearSetPoint | RequestEventMaster | ReceiveEventMaster | ReceiveAllAssetTypeSearchAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestReeferAdvanceSearch: (searchFilters: server.ReeferSearchFilters, reeferCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCurrentConditionReeferDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], allAssetStatusData: [], colDefs: reeferCols, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], allAssetStatusData: [], colDefs: reeferCols, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n }\r\n } \r\n else { \r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', reeferStatusData: data, dryStatusData: [], gensetStatusData: [], chassisStatusData: [], allAssetStatusData: data, colDefs: reeferCols, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n }\r\n }\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], allAssetStatusData: [], colDefs: reeferCols, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_REEFER_ADVANCE_SEARCH', searchFilters: searchFilters, colDefs: reeferCols });\r\n },\r\n requestAssignCargoCare: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/AssignCargoCare', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().reeferStatus.searchFilters, gridType: getState().reeferStatus.gridType, reeferStatusData: getState().reeferStatus.reeferStatus, dryStatusData: getState().reeferStatus.dryStatus, gensetStatusData: getState().reeferStatus.gensetStatus, chassisStatusData: getState().reeferStatus.chassisStatus, allAssetStatusData: getState().reeferStatus.allAssetStatus, colDefs: getState().reeferStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_ASSIGN_CARGO_CARE', commandUnits: commandUnits });\r\n },\r\n requestUnAssignCargoCare: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/UnAssignCargoCare', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().reeferStatus.searchFilters, gridType: getState().reeferStatus.gridType, reeferStatusData: getState().reeferStatus.reeferStatus, dryStatusData: getState().reeferStatus.dryStatus, gensetStatusData: getState().reeferStatus.gensetStatus, chassisStatusData: getState().reeferStatus.chassisStatus, allAssetStatusData: getState().reeferStatus.allAssetStatus, colDefs: getState().reeferStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_UN_ASSIGN_CARGO_CARE', commandUnits: commandUnits });\r\n },\r\n requestClearCargoCareAlert: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearCargoCareAlert', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().reeferStatus.searchFilters, gridType: getState().reeferStatus.gridType, reeferStatusData: getState().reeferStatus.reeferStatus, dryStatusData: getState().reeferStatus.dryStatus, gensetStatusData: getState().reeferStatus.gensetStatus, chassisStatusData: getState().reeferStatus.chassisStatus, allAssetStatusData: getState().reeferStatus.allAssetStatus, colDefs: getState().reeferStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_CLEAR_SET_POINT', commandUnits: commandUnits });\r\n },\r\n\r\n requestClearAllCargoCareAlert: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearAllCargoCareAlerts', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().reeferStatus.searchFilters, gridType: getState().reeferStatus.gridType, reeferStatusData: getState().reeferStatus.reeferStatus, dryStatusData: getState().reeferStatus.dryStatus, gensetStatusData: getState().reeferStatus.gensetStatus, chassisStatusData: getState().reeferStatus.chassisStatus, allAssetStatusData: getState().reeferStatus.allAssetStatus, colDefs: getState().reeferStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_CLEAR_SET_POINT', commandUnits: commandUnits });\r\n },\r\n requestClearSetPoint: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearSetPoint', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().reeferStatus.searchFilters, gridType: getState().reeferStatus.gridType, reeferStatusData: getState().reeferStatus.reeferStatus, dryStatusData: getState().reeferStatus.dryStatus, gensetStatusData: getState().reeferStatus.gensetStatus, chassisStatusData: getState().reeferStatus.chassisStatus, allAssetStatusData: getState().reeferStatus.allAssetStatus, colDefs: getState().reeferStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_CLEAR_SET_POINT', commandUnits: commandUnits });\r\n },\r\n requestEventMaster: (): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_EVENTMASTER', reeferFormatterData: data });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_EVENTMASTER' });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptySearchFilter = {\r\n SelectedOem: null, SelectedCountry: null, SelectedReefer: null, SelectedGeofence: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: null, SelectedAssetTypes: null, SelectedAssetStates: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedVoyage: null, SelectedCall: null, SelectedCargoCareProfiles: null //WI-26881\r\n}\r\nconst unloadedState: ReeferSearchState = { isLoading: false, searchFilters: emptySearchFilter, gridType: '', reeferStatus: [], dryStatus: [], gensetStatus: [], chassisStatus: [], allAssetStatus: [], columnDefs: [], performCargoAction: false, reeferFormatter: null, reeferConfigTypes: null, refApplicationParams: null, tripWISESupportdeviceTypes: null };\r\n\r\nexport const reducer: Reducer = (state: ReeferSearchState, incomingAction: Action) => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_REEFER_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n reeferStatus: state.reeferStatus,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n gensetStatus: state.gensetStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes\r\n };\r\n case 'REQUEST_ASSIGN_CARGO_CARE':\r\n return {\r\n searchFilters: state.searchFilters,\r\n reeferStatus: state.reeferStatus,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n gensetStatus: state.gensetStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes\r\n };\r\n case 'REQUEST_UN_ASSIGN_CARGO_CARE':\r\n return {\r\n searchFilters: state.searchFilters,\r\n reeferStatus: state.reeferStatus,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n gensetStatus: state.gensetStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes\r\n };\r\n case 'REQUEST_CLEAR_SET_POINT':\r\n return {\r\n searchFilters: state.searchFilters,\r\n reeferStatus: state.reeferStatus,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n gensetStatus: state.gensetStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes\r\n };\r\n case 'REQUEST_EVENTMASTER':\r\n return {\r\n reeferFormatter: state.reeferFormatter,\r\n searchFilters: state.searchFilters,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n reeferStatus: state.reeferStatus,\r\n allAssetStatus: state.allAssetStatus,\r\n gensetStatus: state.gensetStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes\r\n };\r\n case 'RECEIVE_EVENTMASTER':\r\n return {\r\n reeferFormatter: action.reeferFormatterData,\r\n searchFilters: state.searchFilters,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n reeferStatus: state.reeferStatus,\r\n allAssetStatus: state.allAssetStatus,\r\n gensetStatus: state.gensetStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n isLoading: false,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes\r\n };\r\n case 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n reeferStatus: action.reeferStatusData,\r\n /* WI 26566 changes start */\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n dryStatus: action.dryStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n /* WI 26566 changes end */\r\n isLoading: false,\r\n columnDefs: action.colDefs,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: action.reeferFormatterData,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams,\r\n tripWISESupportdeviceTypes: action.tripWISESupportdeviceTypes\r\n };\r\n }\r\n /* WI 26566 changes start */\r\n case 'RECEIVE_AllAssetType_ADVANCE_SEARCH':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n reeferStatus: action.reeferStatusData,\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n dryStatus: action.dryStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: action.reeferFormatterData,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams,\r\n tripWISESupportdeviceTypes: action.tripWISESupportdeviceTypes\r\n };\r\n }\r\n /* WI 26566 changes end */\r\n break;\r\n\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state;\r\n};\r\n","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nimport forEach from 'lodash/forEach';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface AssetConfigState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n RefAssetConfig: server.AssetConfigurations[];\r\n RefTriggerConfig: server.ReeferConfigurationTriggerUI[];\r\n isLoading: boolean;\r\n FriendlyName: string;\r\n Template1: string;\r\n Template2: string;\r\n Template3: string;\r\n Template4: string;\r\n Template5: string;\r\n Template6: string;\r\n Template7: string;\r\n Template8: string;\r\n Template9: string;\r\n Template10: string;\r\n Email: string;\r\n ConfigValue: string;\r\n TriggerValue: string;\r\n Filters: server.ForwardCommandParameters;\r\n buttonState: boolean;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class AssetConfiguration extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.setDefaultFilters();\r\n this.state = {\r\n RefAssetConfig: [], RefTriggerConfig: [], SelectedReefers: [], isLoading: false, ConfigValue: '', TriggerValue: '', RowData: [], Email: '', FriendlyName: '', Template1: '', Template2: '', Template3: '', Template4: '',\r\n Template5: '', Template6: '', Template7: '', Template8: '', Template9: '', Template10: '', Filters: filterSet, buttonState: true, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: []\r\n }\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetConfigurationsByCustomer';\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n\r\n this.setState({ RefAssetConfig: data, isLoading: true });\r\n $('#globalLoader').hide();\r\n\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.clearAssetConfigData();\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderChangeAssetConfigGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n clearAssetConfigData() {\r\n this.setState({\r\n Template1: '', Template2: '', Template3: '', Template4: '', Template5: '',\r\n Template6: '', Template7: '', Template8: '', Template9: '', Template10: '',\r\n ConfigValue: '', TriggerValue: '', RefTriggerConfig: [], Email: '', buttonState: true\r\n });\r\n }\r\n componentWillReceiveProps(nextprops: any) {\r\n this.clearAssetConfigData();\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderChangeAssetConfigGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n AssetConfigurationChange(event: React.FormEvent) {\r\n this.renderChangeAssetConfigGridReset(this.state.RowData);\r\n this.setState({\r\n RefTriggerConfig: [], TriggerValue: '',\r\n Template1: '', Template2: '', Template3: '', Template4: '', Template5: '',\r\n Template6: '', Template7: '', Template8: '', Template9: '', Template10: '', buttonState: true\r\n });\r\n var assetConfig: string = event.currentTarget.value;\r\n if (assetConfig != '--Select--') {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetReeferConfigTriggerUIByAssetConfigId?configId=' + assetConfig;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n this.setState({\r\n ConfigValue: assetConfig, RefTriggerConfig: data, isLoading: true\r\n });\r\n }\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n else {\r\n this.setState({\r\n ConfigValue: assetConfig\r\n });\r\n }\r\n }\r\n ReeferConfigurationTriggerChange(event: React.FormEvent) {\r\n this.setState({\r\n Template1: '', Template2: '', Template3: '', Template4: '', Template5: '', Template6: '', Template7: '', Template8: '', Template9: '', Template10: ''\r\n });\r\n var reeferTrigger: string = event.currentTarget.value;\r\n if (reeferTrigger != '--Select--') {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetConfigTemplates?triggerId=' + reeferTrigger;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n this.setState({\r\n TriggerValue: reeferTrigger, Template1: data[0].Template1, isLoading: true, Template3: data[0].Template3, Template4: data[0].Template4,\r\n Template5: data[0].Template5, Template6: data[0].Template6, Template7: data[0].Template7, Template8: data[0].Template8, Template9: data[0].Template9,\r\n Template10: data[0].Template10, Template2: data[0].Template2\r\n });\r\n this.renderChangeAssetConfigGrid(this.state.RowData);\r\n }\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n else {\r\n this.setState({\r\n TriggerValue: reeferTrigger\r\n });\r\n this.renderChangeAssetConfigGridReset(this.state.RowData);\r\n }\r\n }\r\n renderChangeAssetConfigGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"AssetConfig\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.state.Filters.OtherValue = this.state.TriggerValue;\r\n //this.setState({ RowData: reeferData, SelectedSettings: \"Enable\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n this.enableDisableSubmitButton(data);\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n enableDisableSubmitButton(rowData: any) {\r\n var count = 0;\r\n if (rowData.length > 0) {\r\n forEach(rowData, function (value, key) {\r\n var state = value.IsPending;\r\n if (state == \"E\")\r\n count++;\r\n });\r\n if (count > 0)\r\n this.setState({ buttonState: true });\r\n else\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n renderChangeAssetConfigGridReset(reeferData: any) {\r\n this.state.Filters.CommandName = \"AssetConfig\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.state.Filters.OtherValue = null;\r\n //this.setState({ RowData: reeferData, SelectedSettings: \"Enable\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n submitAssetConfiguration() {\r\n var filters = new AssetConfigParams();\r\n filters.AssetConfigId = this.state.ConfigValue;\r\n filters.EmailIds = this.state.Email;\r\n\r\n if (this.state.ConfigValue == '') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select Configurations.\");\r\n }\r\n else if (this.state.TriggerValue == '') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select Trigger.\");\r\n }\r\n else if (this.state.Email == '') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter Email(s).\");\r\n } else {\r\n var command = \"AssetConfig\";\r\n var filterParams = JSON.stringify(filters);\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, filterParams, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n }\r\n\r\n EmailChange(event: React.FormEvent) {\r\n\r\n var Value: string = event.currentTarget.value.trim();\r\n this.setState({ Email: Value });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"AssetConfig\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n Templates :\r\n\r\n
    \r\n
    \r\n {this.state.Template1}\r\n {this.state.Template2}\r\n {this.state.Template3}\r\n {this.state.Template4}\r\n {this.state.Template5}\r\n {this.state.Template6}\r\n {this.state.Template7}\r\n {this.state.Template8}\r\n {this.state.Template9}\r\n {this.state.Template10}\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
    \r\n
    \r\n\r\n }\r\n\r\n}\r\n\r\nclass AssetConfigTemplates {\r\n Template1: string;\r\n Template2: string;\r\n Template3: string;\r\n Template4: string;\r\n Template5: string;\r\n Template6: string;\r\n Template7: string;\r\n Template8: string;\r\n Template9: string;\r\n Template10: string;\r\n}\r\nclass AssetConfigParams {\r\n AssetConfigId: string;\r\n EmailIds: string\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from '../PopupWindow';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface MSCGridState {\r\n SelectedReefers: any[],\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.MSCParams,\r\n ForwardCommandParms: server.ForwardCommandParams;\r\n cssONOFFClass: string\r\n cssHumidityClass: string\r\n cssPoint2Class: string\r\n VisibleHumidity1: string;\r\n VisibleHumidity2: string;\r\n VisibleHumidity3: string;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nvar self;\r\nvar MSCDurationInitialText;\r\nvar MSCDuration1Text;\r\nvar MSCDuration2Text;\r\nexport class MultipleSetpoints extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n var forwardCommandParms: server.ForwardCommandParams = { SelectedReefers: [], CommandName: null, TempValue: null, PreTripCmdFilters: null, TraditionalDownload: null, lstAutoConfigParams: null, IsCmdSendViaVC: null, VesselInfo: null };\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, ForwardCommandParms: forwardCommandParms, cssONOFFClass: 'd-block', cssHumidityClass: 'd-block', cssPoint2Class: 'd-none', VisibleHumidity1: 'd-none', VisibleHumidity2: 'd-none', VisibleHumidity3: 'd-none', VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderMSCGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderMSCGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n\r\n var filters = this.state.Filters;\r\n if (this.state.Filters.MSCTurnONoFF == \"OFF\") {\r\n this.state.Filters.MSCTurnONoFF = \"ON\";\r\n this.setState({ Filters: filters });\r\n this.setState({ cssONOFFClass: 'd-block' });\r\n }\r\n }\r\n\r\n renderMSCGrid(reeferData: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var filterSet = this.setDefaultFilters();\r\n this.setState({ Filters: filterSet });\r\n this.state.ForwardCommandParms.CommandName = \"MultipleSetpointChange\";\r\n this.state.ForwardCommandParms.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.ForwardCommandParms);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n var reeferOEMTypeCd = reeferData[0].ReeferOEMTypeCd.trim();\r\n\r\n if (reeferOEMTypeCd == \"S\") {\r\n MSCDurationInitialText = \"Initial MSC Duration (hour(s)) :\";\r\n MSCDuration1Text = \"MSC Duration 1 (hour(s)) :\";\r\n MSCDuration2Text = \"MSC Duration 2 (hour(s)) :\";\r\n this.setState({ VisibleHumidity1: 'row', VisibleHumidity2: 'row', VisibleHumidity3: 'row' });\r\n\r\n }\r\n else if (reeferOEMTypeCd == \"C\") {\r\n MSCDurationInitialText = \"Initial MSC Duration (day(s)) :\";\r\n MSCDuration1Text = \"MSC Duration 1 (day(s)) :\";\r\n MSCDuration2Text = \"MSC Duration 2 (day(s)) :\";\r\n this.setState({ VisibleHumidity1: 'd-none', VisibleHumidity2: 'd-none', VisibleHumidity3: 'd-none' });\r\n\r\n }\r\n }\r\n\r\n StatusONOFFChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var filters = this.state.Filters;\r\n if (Value == 'ON') {\r\n this.setState({ cssONOFFClass: 'd-block' })\r\n }\r\n else {\r\n this.setState({ cssONOFFClass: 'd-none' })\r\n\r\n }\r\n\r\n this.state.Filters.MSCTurnONoFF = Value;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n StatusMSCSetsChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var filters = this.state.Filters;\r\n if (Value == '1') {\r\n this.setState({ cssPoint2Class: 'd-none' })\r\n this.state.Filters.InitialTemp = '';\r\n this.state.Filters.InitialMSCDuration = '';\r\n this.state.Filters.InitialHumidity = '';\r\n this.state.Filters.MSCSetpoint1 = '';\r\n this.state.Filters.MSCHumidity1 = '';\r\n this.state.Filters.MSCDuration1 = '';\r\n this.state.Filters.MSCSetpoint2 = '';\r\n this.state.Filters.MSCHumidity2 = '';\r\n this.state.Filters.MSCDuration2 = '';\r\n }\r\n else {\r\n this.setState({ cssPoint2Class: 'd-block' })\r\n }\r\n this.state.Filters.MSCSets = parseFloat(Value);\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n MSCSetpoint1Change(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var MSCSetpoint1Val = this.state.Filters.MSCSetpoint1;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n MSCSetpoint1Val = Value;\r\n else\r\n return;\r\n this.state.Filters.MSCSetpoint1 = MSCSetpoint1Val;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n MSCHumiditySetpoint1Change(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var MSCHumidity1Val = this.state.Filters.MSCHumidity1;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n MSCHumidity1Val = Value;\r\n else\r\n return;\r\n this.state.Filters.MSCHumidity1 = MSCHumidity1Val;\r\n this.setState({ Filters: filters });\r\n }\r\n MSCHumiditySetpoint2Change(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var MSCHumidity2Val = this.state.Filters.MSCHumidity2;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n MSCHumidity2Val = Value;\r\n else\r\n return;\r\n this.state.Filters.MSCHumidity2 = MSCHumidity2Val;\r\n this.setState({ Filters: filters });\r\n }\r\n InitialTempChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var InitialTempVal = this.state.Filters.InitialTemp;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n InitialTempVal = Value;\r\n else\r\n return;\r\n this.state.Filters.InitialTemp = InitialTempVal;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n InitialHumidityChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var InitialHumidityVal = this.state.Filters.InitialHumidity;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n InitialHumidityVal = Value;\r\n else\r\n return;\r\n this.state.Filters.InitialHumidity = InitialHumidityVal;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n InitialMSCDurationChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var InitialMSCDurationVal = this.state.Filters.InitialMSCDuration;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n InitialMSCDurationVal = Value;\r\n else\r\n return;\r\n this.state.Filters.InitialMSCDuration = InitialMSCDurationVal;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n MSCDuration1Change(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var MSCDuration1Val = this.state.Filters.MSCDuration1;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n MSCDuration1Val = Value;\r\n else\r\n return;\r\n this.state.Filters.MSCDuration1 = MSCDuration1Val;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n MSCSetpoint2Change(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var MSCSetpoint2Val = this.state.Filters.MSCSetpoint2;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n MSCSetpoint2Val = Value;\r\n else\r\n return;\r\n this.state.Filters.MSCSetpoint2 = MSCSetpoint2Val;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n MSCDuration2Change(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var MSCDuration2Val = this.state.Filters.MSCDuration2;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n MSCDuration2Val = Value;\r\n else\r\n return;\r\n this.state.Filters.MSCDuration2 = MSCDuration2Val;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n\r\n\r\n setDefaultFilters() {\r\n var filters: server.MSCParams = {\r\n MSCTurnONoFF: 'ON', MSCSets: 1, InitialTemp: '', InitialMSCDuration: '', InitialHumidity: '', MSCSetpoint1: '', MSCHumidity1: '', MSCDuration1: '', MSCSetpoint2: '', MSCHumidity2: '', MSCDuration2: ''\r\n };\r\n return filters;\r\n }\r\n\r\n\r\n ValidateNumberValue(param) {\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(param))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n ValidateDecimalValue(param) {\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(param))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n submitMSCCommand() {\r\n if (this.state.Filters.MSCTurnONoFF == \"ON\") {\r\n var AlertMessage = \"\";\r\n var MSCDuration1Value = this.state.Filters.MSCDuration1.toString();\r\n var MSCDuration2Value = this.state.Filters.MSCDuration2.toString();\r\n\r\n var InitialTempValue = this.state.Filters.InitialTemp.toString();\r\n\r\n var InitialMSCDurationValue = this.state.Filters.InitialMSCDuration.toString();\r\n var MSCSetpoint1Value = this.state.Filters.MSCSetpoint1.toString();\r\n var MSCSetpoint2Value = this.state.Filters.MSCSetpoint2.toString();\r\n var MSCInitialHumidityValue = this.state.Filters.InitialHumidity.toString();\r\n var MSCHumidity1Value = this.state.Filters.MSCHumidity1.toString();\r\n var MSCHumidity2Value = this.state.Filters.MSCHumidity2.toString();\r\n if (this.props.reeferData[0].ReeferOEMTypeCd.trim() == \"C\") {\r\n if ((!InitialTempValue || InitialTempValue == undefined || InitialTempValue == \"\" || InitialTempValue.length == 0) || !this.ValidateDecimalValue(InitialTempValue))\r\n AlertMessage += \"Please enter valid Initial Temp Setpoint value.\\n\";\r\n\r\n if ((!InitialMSCDurationValue || InitialMSCDurationValue == undefined || InitialMSCDurationValue == \"\" || InitialMSCDurationValue.length == 0) || !this.ValidateNumberValue(InitialMSCDurationValue))\r\n AlertMessage += \"Please enter valid Initial MSC Duration. \\n\";\r\n if ((!MSCDuration1Value || MSCDuration1Value == undefined || MSCDuration1Value == \"\" || MSCDuration1Value.length == 0) || !this.ValidateNumberValue(MSCDuration1Value))\r\n AlertMessage += \"Please enter valid MSC Duration1. \\n\";\r\n if ((!MSCSetpoint1Value || MSCSetpoint1Value == undefined || MSCSetpoint1Value == \"\" || MSCSetpoint1Value.length == 0) || !this.ValidateDecimalValue(MSCSetpoint1Value))\r\n AlertMessage += \"Please enter valid Temp Setpoint1 value.\\n\";\r\n if (this.state.Filters.MSCSets == 2) {\r\n if ((!MSCSetpoint2Value || MSCSetpoint2Value == undefined || MSCSetpoint2Value == \"\" || MSCSetpoint2Value.length == 0) || !this.ValidateDecimalValue(MSCSetpoint2Value))\r\n AlertMessage += \"Please enter valid Temp Setpoint2 value.\\n\";\r\n if ((!MSCDuration2Value || MSCDuration2Value == undefined || MSCDuration2Value == \"\" || MSCDuration2Value.length == 0) || !this.ValidateNumberValue(MSCDuration2Value))\r\n AlertMessage += \"Please enter valid MSC Duration2. \\n\";\r\n }\r\n }\r\n else if (this.props.reeferData[0].ReeferOEMTypeCd.trim() == \"S\") {\r\n if ((!MSCInitialHumidityValue || MSCInitialHumidityValue == undefined || MSCInitialHumidityValue == \"\" || MSCInitialHumidityValue.length == 0) || !this.ValidateNumberValue(MSCInitialHumidityValue))\r\n AlertMessage += \"Please enter valid Initial humidity value.\\n\";\r\n\r\n if ((!MSCHumidity1Value || MSCHumidity1Value == undefined || MSCHumidity1Value == \"\" || MSCHumidity1Value.length == 0) || !this.ValidateNumberValue(MSCHumidity1Value))\r\n AlertMessage += \"Please enter valid Humidity Setpoint1 value.\\n\";\r\n if (this.state.Filters.MSCSets == 2) {\r\n if ((!MSCHumidity2Value || MSCHumidity2Value == undefined || MSCHumidity2Value == \"\" || MSCHumidity2Value.length == 0) || !this.ValidateNumberValue(MSCHumidity2Value))\r\n AlertMessage += \"Please enter valid Humidity Setpoint2 value.\\n\";\r\n\r\n }\r\n }\r\n\r\n //if (this.props.OEM == \"S\") {\r\n // var MSCSetpoint1Value = this.state.Filters.MSCSetpoint1.toString();\r\n // if ((!MSCSetpoint1Value || MSCSetpoint1Value == undefined || MSCSetpoint1Value == \"\" || MSCSetpoint1Value.length == 0) || !this.ValidateDecimalValue(MSCSetpoint1Value))\r\n // AlertMessage += \"Please enter valid final MSC temp value.\\n\";\r\n // else if (this.state.Filters.MSCSetpoint1 <= this.state.Filters.MSCSetpoint2)\r\n // AlertMessage += \"Final MSC temp value should be greater than MSC set Point Value.\\n\";\r\n //}\r\n\r\n if (AlertMessage == '') {\r\n try {\r\n var command = \"MultipleSetpointChange\";\r\n var refreshGrid = this.props.refreshGrid;\r\n var paramValue = this.state.Filters.MSCTurnONoFF.toString() + ',' + this.state.Filters.MSCSets.toString() + ',' + this.state.Filters.InitialTemp.toString() + ',' + this.state.Filters.InitialHumidity.toString() + ',' + this.state.Filters.InitialMSCDuration.toString() + ',' + this.state.Filters.MSCSetpoint1.toString() + ',' + this.state.Filters.MSCHumidity1.toString() + ',' + this.state.Filters.MSCDuration1.toString() + ',' + this.state.Filters.MSCSetpoint2.toString() + ',' + this.state.Filters.MSCHumidity2.toString() + ',' + this.state.Filters.MSCDuration2.toString();\r\n this.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n }\r\n catch (e) {\r\n PopupWindow.showErrorMessage('Error', '');\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n else {\r\n try {\r\n var command = \"MultipleSetpointChange\";\r\n var refreshGrid = this.props.refreshGrid;\r\n var paramValue = this.state.Filters.MSCTurnONoFF.toString();\r\n this.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n }\r\n catch (e) {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue, refreshGrid) {\r\n if (self.state.RowData.length > 0) {\r\n self.state.ForwardCommandParms.CommandName = commandName;\r\n self.state.ForwardCommandParms.SelectedReefers = self.state.RowData;\r\n self.state.ForwardCommandParms.TempValue = paramValue;\r\n var forwardCommandParams = JSON.stringify(self.state.ForwardCommandParms);\r\n ReeferCommandsGrid.submitTemperatureCommands(commandName, paramValue, refreshGrid);\r\n self.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.InitialTempChange(e)} value={this.state.Filters.InitialTemp} />
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.InitialHumidityChange(e)} value={this.state.Filters.InitialHumidity} />
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.InitialMSCDurationChange(e)} value={this.state.Filters.InitialMSCDuration} />
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.MSCSetpoint1Change(e)} value={this.state.Filters.MSCSetpoint1} />
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.MSCHumiditySetpoint1Change(e)} value={this.state.Filters.MSCHumidity1} />
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.MSCDuration1Change(e)} value={this.state.Filters.MSCDuration1} />
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.MSCSetpoint2Change(e)} value={this.state.Filters.MSCSetpoint2} />
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.MSCHumiditySetpoint2Change(e)} value={this.state.Filters.MSCHumidity2} />
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    this.MSCDuration2Change(e)} value={this.state.Filters.MSCDuration2} />
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from '../PopupWindow';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface ACTGridState {\r\n SelectedReefers: any[],\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n ForwardCommandParms: server.ForwardCommandParams;\r\n Filters: server.ACTParams,\r\n CmbStatus: string,\r\n cssClass: string,\r\n VisibleFinalTemp: string;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nvar self;\r\nvar USDACeilingText;\r\nvar ACTPostACTSetpointText;\r\nvar tempFormat; //WI26490 Celsius or Fahrenheit indication \r\nexport class AutomaticColdTreatment extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n var forwardCommandParms: server.ForwardCommandParams = { SelectedReefers: [], CommandName: null, TempValue: null, PreTripCmdFilters: null, TraditionalDownload: null, lstAutoConfigParams: null, IsCmdSendViaVC: null, VesselInfo:null };\r\n this.state = { SelectedReefers: [], RowData: [], ForwardCommandParms: forwardCommandParms, Filters: filterSet, CmbStatus: 'ON', cssClass: 'show', VisibleFinalTemp: 'hidden', VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n tempFormat = this.GetTempColumnFormatter(); //WI26490 Celsius or Fahrenheit indication \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderACTGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderACTGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderACTGrid(reeferData: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var filterSet = this.setDefaultFilters();\r\n this.setState({ Filters: filterSet });\r\n this.state.ForwardCommandParms.CommandName = \"AutomaticColdTreatment\";\r\n this.state.ForwardCommandParms.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.ForwardCommandParms);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n var reeferOEMTypeCd = reeferData[0].ReeferOEMTypeCd.trim();\r\n if (reeferOEMTypeCd == \"S\") {\r\n USDACeilingText = \"Max USDA Temp \" + tempFormat + \" :\";\r\n ACTPostACTSetpointText = \"ACT Setpoint \" + tempFormat + \" :\";\r\n this.setState({ VisibleFinalTemp: '' });\r\n\r\n\r\n } else if (reeferOEMTypeCd == \"C\") {\r\n USDACeilingText = \"Ceiling Temp. \" + tempFormat + \" :\";\r\n ACTPostACTSetpointText = \"Post ACT Setpoint \" + tempFormat + \" :\";\r\n this.setState({ VisibleFinalTemp: 'hidden' });\r\n }\r\n\r\n }\r\n\r\n StatusChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n if (Value == 'ON') {\r\n this.setState({cssClass:'show'})\r\n }\r\n else {\r\n this.setState({ cssClass: 'hidden' })\r\n }\r\n var filters = this.state.Filters;\r\n this.state.Filters.ACTTurnONoFF = Value;\r\n this.setState({ Filters: filters });\r\n this.setState({ CmbStatus: Value });\r\n }\r\n ACTDurationChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var ACTDurationVal = this.state.Filters.ACTDuration;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n ACTDurationVal = Value;\r\n else\r\n return;\r\n this.state.Filters.ACTDuration = ACTDurationVal;\r\n this.setState({ Filters: filters });\r\n }\r\n USDATempChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var USDATempVal = this.state.Filters.USDATemp;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n USDATempVal = Value;\r\n else\r\n return;\r\n this.state.Filters.USDATemp = USDATempVal;\r\n this.setState({ Filters: filters });\r\n }\r\n ACTSetpointChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var ACTSetpointVal = this.state.Filters.ACTSetpoint;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n ACTSetpointVal = Value;\r\n else\r\n return;\r\n this.state.Filters.ACTSetpoint = ACTSetpointVal;\r\n this.setState({ Filters: filters });\r\n }\r\n ACTTempChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var ACTTempVal = this.state.Filters.ACTTemp;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(Value))\r\n ACTTempVal = Value;\r\n else\r\n return;\r\n this.state.Filters.ACTTemp = ACTTempVal;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n\r\n setDefaultFilters() {\r\n var filters: server.ACTParams = {\r\n ACTTurnONoFF: 'ON',ACTDuration: '', ACTSetpoint: '', ACTTemp: '', USDATemp: '' \r\n };\r\n return filters;\r\n }\r\n\r\n ValidateNumberValue(param) {\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(param))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n ValidateDecimalValue(param) {\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(param))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n //WI26490 Celsius or Fahrenheit indication \r\n GetTempColumnFormatter() {\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (tempUnitCd.toUpperCase() == \"F\")\r\n return \"(°F)\";\r\n else\r\n return \"(°C)\";\r\n }\r\n\r\n submitACTCommand() {\r\n if (this.state.Filters.ACTTurnONoFF == \"ON\") {\r\n var AlertMessage = \"\";\r\n var ACTDurationValue = this.state.Filters.ACTDuration.toString();\r\n\r\n if ((!ACTDurationValue || ACTDurationValue == undefined || ACTDurationValue == \"\" || ACTDurationValue.length == 0) || !this.ValidateNumberValue(ACTDurationValue))\r\n AlertMessage += \"Please enter valid ACT Duration. \\n\";\r\n var USDATempValue = this.state.Filters.USDATemp.toString();\r\n var ACTSetpointValue = this.state.Filters.ACTSetpoint.toString();\r\n if (this.props.reeferData[0].ReeferOEMTypeCd.trim()== \"C\") {\r\n if ((!USDATempValue || USDATempValue == undefined || USDATempValue == \"\" || USDATempValue.length == 0) || !this.ValidateDecimalValue(USDATempValue))\r\n AlertMessage += \"Please enter valid ceiling temp value. \\n\";\r\n\r\n if ((!ACTSetpointValue || ACTSetpointValue == undefined || ACTSetpointValue == \"\" || ACTSetpointValue.length == 0) || !this.ValidateDecimalValue(ACTSetpointValue))\r\n AlertMessage += \"Please enter valid post ACT setpoint value. \\n\";\r\n }\r\n else {\r\n if ((!USDATempValue || USDATempValue == undefined || USDATempValue == \"\" || USDATempValue.length == 0) || !this.ValidateDecimalValue(USDATempValue))\r\n AlertMessage += \"Please enter valid Max USDA temp value. \\n\";\r\n\r\n if ((!ACTSetpointValue || ACTSetpointValue == undefined || ACTSetpointValue == \"\" || ACTSetpointValue.length == 0) || !this.ValidateDecimalValue(ACTSetpointValue))\r\n AlertMessage += \"Please enter valid ACT setpoint value. \\n\";\r\n }\r\n\r\n if (this.props.reeferData[0].ReeferOEMTypeCd.trim() == \"S\") {\r\n var ACTTempValue = this.state.Filters.ACTTemp.toString();\r\n if ((!ACTTempValue || ACTTempValue == undefined || ACTTempValue == \"\" || ACTTempValue.length == 0) || !this.ValidateDecimalValue(ACTTempValue))\r\n AlertMessage += \"Please enter valid Final ACT Temp value.\\n\";\r\n else if (parseFloat(this.state.Filters.ACTTemp.toString()) <= parseFloat(this.state.Filters.ACTSetpoint.toString()))\r\n AlertMessage += \"Final ACT temp value should be greater than ACT set Point Value.\\n\";\r\n\r\n //WI26374 Bug Valid range for Final ACT Temp is - 1.5°C to + 30.0°C\r\n //WI26373 Bug Valid range for ACT Setpoint is - 4.9°C to[Max USDA Temp - 0.2C]\r\n //WI26372 Bug Valid range for Max USDA Temp is - 4.7°C to + 30.0°C.\r\n if (AlertMessage == '') {\r\n var USDATemp = parseFloat(this.state.Filters.USDATemp.toString());\r\n var ACTSetpoint = parseFloat(this.state.Filters.ACTSetpoint.toString());\r\n var ACTTemp = parseFloat(this.state.Filters.ACTTemp.toString());\r\n\r\n var MinUSDATemp = -4.7; var MaxUSDATemp = 30;\r\n var MinActSetpoint = -4.9; var MaxActSetpoint = USDATemp - 0.2;\r\n var MinActTemp = -1.5; var MaxActTemp = 30;\r\n\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n MinUSDATemp = ((MinUSDATemp * 9) / 5) + 32;\r\n MinUSDATemp = parseFloat(MinUSDATemp.toString());\r\n MinUSDATemp = parseFloat(MinUSDATemp.toFixed(parseInt(tempRoundingValue)));\r\n\r\n MaxUSDATemp = ((MaxUSDATemp * 9) / 5) + 32;\r\n MaxUSDATemp = parseFloat(MaxUSDATemp.toString());\r\n MaxUSDATemp = parseFloat(MaxUSDATemp.toFixed(parseInt(tempRoundingValue)));\r\n\r\n MinActSetpoint = ((MinActSetpoint * 9) / 5) + 32;\r\n MinActSetpoint = parseFloat(MinActSetpoint.toString());\r\n MinActSetpoint = parseFloat(MinActSetpoint.toFixed(parseInt(tempRoundingValue)));\r\n\r\n MaxActSetpoint = (USDATemp - 32) * 5 / 9;;\r\n MaxActSetpoint = parseFloat(MaxActSetpoint.toString()); \r\n MaxActSetpoint = MaxActSetpoint - 0.2;\r\n MaxActSetpoint = parseFloat(MaxActSetpoint.toFixed(parseInt(tempRoundingValue)));\r\n\r\n MaxActSetpoint = ((MaxActSetpoint * 9) / 5) + 32;\r\n MaxActSetpoint = parseFloat(MaxActSetpoint.toString());\r\n MaxActSetpoint = parseFloat(MaxActSetpoint.toFixed(parseInt(tempRoundingValue)));\r\n\r\n MinActTemp = ((MinActTemp * 9) / 5) + 32;\r\n MinActTemp = parseFloat(MinActTemp.toString());\r\n MinActTemp = parseFloat(MinActTemp.toFixed(parseInt(tempRoundingValue)));\r\n\r\n MaxActTemp = ((MaxActTemp * 9) / 5) + 32;\r\n MaxActTemp = parseFloat(MaxActTemp.toString()); \r\n MaxActTemp = parseFloat(MaxActTemp.toFixed(parseInt(tempRoundingValue)));\r\n } \r\n\r\n if (USDATemp < MinUSDATemp || USDATemp > MaxUSDATemp) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Max USDA Temp value should be with in range \" + MinUSDATemp + \" to \" + MaxUSDATemp); return;\r\n }\r\n if (ACTSetpoint < MinActSetpoint || ACTSetpoint > MaxActSetpoint) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"ACT Setpoint value should be with in range \" + MinActSetpoint + \" to \" + MaxActSetpoint); return;\r\n }\r\n if (ACTTemp < MinActTemp || ACTTemp > MaxActTemp) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Final ACT Temp value should be with in range \" + MinActTemp + \" to \" + MaxActTemp); return;\r\n }\r\n }\r\n } \r\n\r\n if (AlertMessage == '') {\r\n try {\r\n var command = \"AutomaticColdTreatment\";\r\n var refreshGrid = this.props.refreshGrid;\r\n var paramValue = this.state.Filters.ACTTurnONoFF.toString() + ',' + this.state.Filters.ACTDuration.toString() + ',' + this.state.Filters.USDATemp.toString() + ',' + this.state.Filters.ACTSetpoint.toString() + ',' + this.state.Filters.ACTTemp.toString();\r\n this.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n }\r\n catch (e) {\r\n PopupWindow.showErrorMessage('Error', '');\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n else {\r\n try {\r\n var command = \"AutomaticColdTreatment\";\r\n var refreshGrid = this.props.refreshGrid;\r\n var paramValue = this.state.Filters.ACTTurnONoFF.toString();\r\n this.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n }\r\n catch (e) {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue, refreshGrid) {\r\n if (self.state.RowData.length > 0) {\r\n self.state.ForwardCommandParms.CommandName = commandName;\r\n self.state.ForwardCommandParms.SelectedReefers = self.state.RowData;\r\n self.state.ForwardCommandParms.TempValue = paramValue;\r\n var forwardCommandParams = JSON.stringify(self.state.ForwardCommandParms);\r\n ReeferCommandsGrid.submitTemperatureCommands(commandName, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n ACT Turn On/Off :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ACT Duration (Day(s)) :\r\n
    \r\n
    this.ACTDurationChange(e)} value={this.state.Filters.ACTDuration} />
    \r\n
    \r\n {USDACeilingText}\r\n
    \r\n
    this.USDATempChange(e)} value={this.state.Filters.USDATemp} />
    \r\n
    \r\n
    \r\n
    \r\n {ACTPostACTSetpointText}\r\n
    \r\n
    this.ACTSetpointChange(e)} value={this.state.Filters.ACTSetpoint} />
    \r\n
    \r\n
    \r\n Final ACT Temp {tempFormat} :\r\n
    \r\n
    this.ACTTempChange(e)} value={this.state.Filters.ACTTemp} />
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n \r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface GetFreshAirState {\r\n SelectedReefers: any[],\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.ForwardCommandParameters,\r\n ValidState: boolean;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class GetFreshAirType extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, ValidState: true, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderGetFreshAirGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitGetFreshAirTypeCommand() {\r\n if (this.state.RowData.length > 0) {\r\n if (this.state.RowData.filter(row => row.IsPending != null && row.IsPending == 'E').length > 0) {\r\n var errorDescription = this.state.RowData.filter(e =>\r\n e.IsPending != null && e.IsPending === 'E');\r\n if (errorDescription != undefined && errorDescription != null)\r\n PopupWindow.showErrorMessage(\"Alert\", errorDescription[0].Tooltip); return; //RCNG-254\r\n }\r\n }\r\n var command = \"FreshAirTypeGet\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, null, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderGetFreshAirGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderGetFreshAirGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"FreshAirTypeGet\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandDataForFreshAir', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //this.setState({ RowData: data, ValidState: data[0].IsValid }); //RCNG-254\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"FreshAirTypeGet\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n\r\n {\r\n this.state.ValidState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface SetFreshAirState {\r\n SelectedReefers: any[],\r\n SelectedValue: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.ForwardCommandParameters,\r\n ValidState: boolean;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class SetFreshAirType extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], SelectedValue: '35 cbm/h', RowData: [], Filters: filterSet, ValidState: true, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderSetFreshAirGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitSetFreshAirTypeCommand() {\r\n if (this.state.RowData.length > 0) {\r\n if (this.state.RowData.filter(row => row.IsPending != null && row.IsPending == 'E').length > 0) {\r\n var errorDescription = this.state.RowData.filter(e =>\r\n e.IsPending != null && e.IsPending === 'E');\r\n if (errorDescription != undefined && errorDescription != null)\r\n PopupWindow.showErrorMessage(\"Alert\", errorDescription[0].Tooltip); return; //RCNG-254\r\n }\r\n }\r\n var command = \"FreshAirTypeSet\";\r\n var refreshGrid = this.props.refreshGrid;\r\n var paramValue ='';\r\n //if (this.state.SelectedValue == \"35 cbm/h\")\r\n // paramValue = 35;\r\n //else\r\n // paramValue = 75;\r\n paramValue = this.state.SelectedValue.split(' ')[0];\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderSetFreshAirGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderSetFreshAirGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"FreshAirTypeSet\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandDataForFreshAir', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //this.setState({ RowData: data, ValidState: data[0].IsValid }); //RCNG-254\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"FreshAirTypeSet\", TempValue: \"35 cbm/h\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n FreshAirTypechange(event: React.FormEvent) {\r\n var SelectedValue = this.state.SelectedValue;\r\n var Value: string = event.currentTarget.value;\r\n SelectedValue = Value;\r\n this.setState({ SelectedValue: SelectedValue });\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n Fresh Air Type :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n\r\n {\r\n this.state.ValidState == true ?\r\n \r\n :\r\n \r\n }\r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface ChgZigbeeState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n SelectedSettings: string;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nexport class ChangeZigbeeSettings extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, SelectedSettings: \"\", VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData }); \r\n this.renderChangeZigbeeGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n \r\n this.renderChangeZigbeeGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n submitZigbeeCommand() { \r\n var command = \"ZigbeeSettings\";\r\n var paramValue = this.state.SelectedSettings;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n renderChangeZigbeeGrid(reeferData: any) {\r\n \r\n this.state.Filters.CommandName = \"ZigbeeSettings\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData,SelectedSettings:\"Enable\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"ZigbeeSettings\", TempValue: \"Enable\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n Zigbeechange(event: React.FormEvent) {\r\n var selectedSettingsVal = this.state.SelectedSettings;\r\n var Value: string = event.currentTarget.value;\r\n selectedSettingsVal = Value;\r\n this.setState({ SelectedSettings: selectedSettingsVal });\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../../sharedcomponents/ConfirmationWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\n\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\ninterface atmosphereState {\r\n SelectedReefers: any[];\r\n O2Value: string;\r\n CO2Value: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n isStarCoolOem: boolean;\r\n O2List: any[];\r\n Co2List: any[];\r\n activeApplicationValue: string;\r\n CAModeValue: string;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nvar self;\r\n\r\nexport class ControlledAtmosphere extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], O2Value: \"\", CO2Value: \"\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, isStarCoolOem: this.props.starCoolOem, O2List: [], Co2List: [], activeApplicationValue: '', CAModeValue: '', IsCommandIssued: false, PrevSelectedItems: [] };\r\n self = this;\r\n }\r\n\r\n loadO2CO2DefaultValues() {\r\n var o2Value = '1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,11,12,13,14,15,16,17,18,19,20,21';\r\n var co2Value = '1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,11,12,13,14,15,16,17';\r\n this.setState({ O2List: o2Value.split(','), Co2List: co2Value.split(',') });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"SetControlledAtmosphere\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderSetPointGrid(this.props.reeferData);\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n if (!this.state.isStarCoolOem)\r\n this.setState({ CAModeValue: 'OFF' }, () => this.loadO2CO2DefaultValues());\r\n else\r\n this.setState({ activeApplicationValue: 'Standard' }, () => this.loado2Co2Values(\"Standard\"));\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderSetPointGrid(reeferData);\r\n }\r\n\r\n if (!nextprops.starCoolOem)\r\n this.setState({ isStarCoolOem: nextprops.starCoolOem, CAModeValue: 'OFF' }, () => this.loadO2CO2DefaultValues());\r\n else\r\n this.setState({ isStarCoolOem: nextprops.starCoolOem, activeApplicationValue: 'Standard' }, () => this.loado2Co2Values(\"Standard\"));\r\n\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n O2Change(event: React.FormEvent) {\r\n var o2Val = this.state.O2Value;\r\n var Value: string = event.currentTarget.value.trim();\r\n //const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n //if (IsMatch.test(Value))\r\n // o2Val = Value;\r\n //else\r\n // return;\r\n this.setState({ O2Value: Value });\r\n }\r\n\r\n CO2Change(event: React.FormEvent) {\r\n var co2Val = this.state.CO2Value;\r\n var Value: string = event.currentTarget.value.trim();\r\n //const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n //if (IsMatch.test(Value))\r\n // co2Val = Value;\r\n //else\r\n // return;\r\n this.setState({ CO2Value: Value });\r\n }\r\n\r\n renderSetPointGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData, O2Value: '', CO2Value: '' });\r\n this.state.Filters.CommandName = \"SetControlledAtmosphere\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n submitCommand() {\r\n var command = \"SetControlledAtmosphere\";\r\n var paramValue = this.state.O2Value + ',' + this.state.CO2Value + ',' + this.state.activeApplicationValue;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid); \r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n submitPoints() {\r\n if (this.state.isStarCoolOem) {\r\n var messageString = \"Due to regulation of the cargo atmosphere, the oxygen level may be low and/or the carbon dioxide level high inside the container! All personnel must check gas levels and flush with fresh air before entering/unloading. Exposure to low oxygen/high carbon dioxide may cause loss of consciousness and suffocation.\";\r\n RCNGWindow.ConfirmWindow.showConfirmBoxWithWarning(messageString, this.submitCommand.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n if ((this.state.O2Value != null && this.state.O2Value != undefined && this.state.O2Value != '') && (this.state.CO2Value != null && this.state.CO2Value != undefined && this.state.CO2Value != '')) {\r\n var command = '';\r\n if (this.state.CAModeValue == 'ON')\r\n command = \"SetControlledAtmosphereMode\";\r\n else\r\n command = \"SetControlledAtmosphere\";\r\n var paramValue = this.state.O2Value + ',' + this.state.CO2Value + ',' + this.state.CAModeValue;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select O2 and CO2 values.\");\r\n }\r\n }\r\n }\r\n\r\n activeApplicationChange(event: React.FormEvent) {\r\n $('#globalLoader').show();\r\n var applicationValue = event.currentTarget.value.trim();\r\n this.setState({ activeApplicationValue: applicationValue });\r\n self.loado2Co2Values(applicationValue);\r\n }\r\n\r\n CAModeChange(event: React.FormEvent) {\r\n var CAModeValueSelected = event.currentTarget.value.trim();\r\n this.setState({ CAModeValue: CAModeValueSelected });\r\n }\r\n\r\n loado2Co2Values(applicationValue: string) {\r\n var o2Value = '';\r\n var co2Value = '';\r\n var o2DefaultValue = '';\r\n var co2DefaultValue = '';\r\n\r\n switch (applicationValue) {\r\n case \"Standard\":\r\n o2Value = '0';\r\n co2Value = '0';\r\n o2DefaultValue = '0';\r\n co2DefaultValue = '0';\r\n break;\r\n //case \"1\":\r\n // o2Value = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19';\r\n // co2Value = '0,1,2,3,4,5,6,7,8,9,10,11,12';\r\n // break;\r\n case \"AVPlus\":\r\n o2Value = '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19';\r\n co2Value = '0,1,2,3,4,5,6,7,8,9,10,11,12';\r\n o2DefaultValue = '0';\r\n co2DefaultValue = '0';\r\n break;\r\n case \"CA\":\r\n o2Value = '3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21';\r\n co2Value = '4,5,6,7,8,9,10,11,12';\r\n o2DefaultValue = '3';\r\n co2DefaultValue = '4';\r\n break;\r\n }\r\n\r\n this.setState({ O2List: o2Value.split(','), Co2List: co2Value.split(','), O2Value: o2DefaultValue, CO2Value: co2DefaultValue}, () => $('#globalLoader').hide());\r\n }\r\n\r\n //onOkClick() {\r\n // this.submitCommand(); \r\n //}\r\n\r\n //onCancelClick() {\r\n // $('#warningOxygen').hide();\r\n //}\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.isStarCoolOem ?\r\n
    \r\n
    \r\n
    \r\n Active Application :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Select O2 value :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Select CO2 value :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n :\r\n
    \r\n
    \r\n CA Mode :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Select O2 value :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Select CO2 value :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n \r\n
    \r\n {this.state.isStarCoolOem ?\r\n
    Please ensure that the temperature setpoint is a chill setpoint prior to setting the Active Application to “CA”. Otherwise, the command may fail.
    \r\n :\r\n ''\r\n }\r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","\r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport ReeferFormatters from '../../../actions/ReeferFormatter';\r\n//import { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { ReeferStatusGrid } from '../../childcomponents/ReeferStatusGrid';\r\nimport { ReeferStatusSSRMGrid } from '../../childcomponents/ReeferStatusSSRMGrid';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from '../../sharedcomponents/GridToolBarPopups';\r\nimport Select from 'react-select';\r\nimport \"react-select/dist/react-select.css\"\r\nimport ReeferStatus from '../../routecomponents/ReeferStatus';\r\nimport ReeferDetails from '../../routecomponents/ReeferDetails';\r\nimport VesselStatus from '../../routecomponents/VesselStatus';\r\nimport $ from 'jquery';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\nvar self;\r\n\r\ninterface Options {\r\n label: string;\r\n value: string;\r\n}\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage:false };\r\n\r\nexport interface TripWiseReportState {\r\n SelectedReefers: any[],\r\n EmailValue: string,\r\n CustomerId: number;\r\n removeSelected: boolean;\r\n disabled: boolean;\r\n crazy: boolean;\r\n stayOpen: boolean;\r\n value: any[];\r\n rtl: boolean;\r\n emailOptions: Options[];\r\n ModelNumber: string; \r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters; \r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nvar colDefs;\r\nexport class TripWiseReport extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = {\r\n SelectedReefers: [], EmailValue: props.userEmail, CustomerId: props.customerId,\r\n removeSelected: true,\r\n disabled: false,\r\n crazy: false,\r\n stayOpen: false,\r\n value: [],\r\n rtl: false,\r\n emailOptions: [],\r\n ModelNumber: '',\r\n RowData: [],\r\n Filters: filterSet,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n IsCommandIssued: false, PrevSelectedItems: []\r\n };\r\n\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n\r\n \r\n \r\n \r\n \r\n\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n $('#globalLoader').show(); \r\n this.renderTripWiseReportGrid(this.props.reeferData); \r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n this.setState({ value: [] });\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.reeferData != null && nextProps != undefined && nextProps.reeferData.length > 0) {\r\n $('#globalLoader').show(); \r\n this.renderTripWiseReportGrid(nextProps.reeferData); \r\n }\r\n if (nextProps.VCCheckBoxInfo != undefined && nextProps.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextProps.VCCheckBoxInfo });\r\n }\r\n this.setState({ value: [] });\r\n }\r\n\r\n refreshGrid = () => {\r\n this.setState({\r\n RowData: this.state.RowData\r\n });\r\n };\r\n\r\n renderTripWiseReportGrid(reeferData: any) { \r\n this.setState({ SelectedReefers: reeferData });\r\n this.state.Filters.CommandName = \"TripWiseReport\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData, ModelNumber: \"\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n this.getEmails(this.props.userEmail, this.props.customerId); \r\n });\r\n }\r\n\r\n submitTripWiseReport() {\r\n var emailID = this.state.value;\r\n if (emailID.toString() != \"\") {\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ValidatePreTripEmailId?emailIds=' + emailID.toString();\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"\") {\r\n var command = \"TripWiseReport\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTripWiseReportFinal(command, this.state.value, refreshGrid);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", data);\r\n }\r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter Email address.\");\r\n }\r\n }\r\n\r\n submitTripWiseReportFinal(commandName, paramValue, refreshGrid) {\r\n if (this.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0))\r\n { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n this.state.Filters.CommandName = commandName;\r\n this.state.Filters.SelectedReefers = this.state.RowData;\r\n this.state.Filters.TempValue = paramValue;\r\n this.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n this.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData; \r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response)\r\n .then(data => {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n if (refreshGrid == \"details\")\r\n ReeferDetails.refreshReeferDetailsData();\r\n else if (refreshGrid == \"home\") {\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n else {\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n }\r\n else if (refreshGrid == \"vessel\")\r\n VesselStatus.refreshVesselStatusGrid();\r\n else\r\n ReeferStatus.refreshReeferStatusGrid();\r\n \r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n \r\n emailChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n this.setState({ EmailValue: Value });\r\n }\r\n\r\n //multiselect\r\n handleSelectChange(value) {\r\n this.setState({ value });\r\n } \r\n\r\n toggleRtl(e) {\r\n let rtl = e.target.checked;\r\n this.setState({ rtl });\r\n }\r\n\r\n getEmails(useremail, customerId) {\r\n var url = Config.ApiBaseUrl + '/api/User/GetEmails?userEmail=' + useremail + '&customerId=' + customerId;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'async': 'false' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ emailOptions: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"TripWiseReport\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"Last event\", field: \"EventDescription\", cellRenderer: (params) => { return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList, self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts); }, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Ctrl s/n\", field: \"ControllerSerialNumber\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 160 },\r\n { headerName: \"Ctrl SW rev\", field: \"SoftwareRevision\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Ctrl mode\", field: \"ControlModeID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 }\r\n\r\n ];\r\n } \r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\n\r\n","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport { SpecificBookingDetails } from '../childcomponents/SpecificBookingDetails';\r\nimport { SpecificBookingReefersGridData } from '../childcomponents/SpecificBookingReefersGridData';\r\nimport DateFormat from 'dateformat';\r\nimport forEach from 'lodash/forEach';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar self;\r\n\r\ninterface WizardState {\r\n renderHtml: any;\r\n BookingDetails: server.BookingDetails;\r\n BookingReefers: server.BookingSearchDetails;\r\n //BookingDataForView: server.BookingDataForView;\r\n BookingViewData: server.BookingViewData;\r\n rowData: server.bookingReefer[];\r\n isEdit: boolean;\r\n tabFrom: number;\r\n currentTab: number;\r\n AllBooking: any[];\r\n BookingCount: number;\r\n BookingType: any;\r\n IsOpen: any;\r\n buttonState: any;\r\n isViewOnly: boolean;\r\n formname: any;\r\n}\r\n\r\nvar emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '',\r\n BKCustomer:''\r\n};\r\nvar emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [], BookingNumber: []\r\n}\r\nvar emptyBookingViewData: server.BookingViewData = {\r\n CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false\r\n};\r\n//var emptyBookingDataForView: server.BookingDataForView = {\r\n// ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n// HighValueCargo: false, CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n// CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n// O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName:''\r\n//};\r\nexport class ViewBookingDetails extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.resetAllDetails();\r\n this.state = {\r\n renderHtml: '',\r\n BookingDetails: emptyBookingDetails,\r\n BookingReefers: emptyBookingReefers,\r\n //BookingDataForView: emptyBookingDataForView,\r\n BookingViewData: emptyBookingViewData,\r\n rowData: [],\r\n isEdit: false,\r\n tabFrom: 1,\r\n currentTab: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'View Booking',\r\n IsOpen: 'View',\r\n buttonState: true,\r\n isViewOnly: true,\r\n formname: '',\r\n };\r\n\r\n self = this;\r\n }\r\n dateTypeFormatter(eventDate: Date) {\r\n //written considering parameter 'eventDate' sent is IST\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return prefDateTime;\r\n }\r\n resetAllDetails() {\r\n emptyBookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '',\r\n BKCustomer:''\r\n }\r\n emptyBookingReefers = { BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[] }\r\n }\r\n updatemyBookingDimensions() {\r\n $(\"#BookingTabsHeight\").css('min-height', $(window).height() - 280);\r\n $(\"#BookingTabsHeight\").css('max-height', $(window).height() - 280);\r\n\r\n }\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsOnly('213');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n this.updatemyBookingDimensions();\r\n window.addEventListener(\"resize\", this.updatemyBookingDimensions.bind(this));\r\n $(\"#SubscriptionMenu li\").click(function (e) {\r\n e.preventDefault();\r\n return false;\r\n });\r\n $('.deploymentWizard').find(\"ul.nav li:nth-child(0)\").attr(\"href\", \"#menu1\");\r\n //this.getdata(self.props);\r\n if (self.props.ViewBookingData != null && self.props.ViewBookingData.length > 0 && (self.props.formname == \"ReeferStatusGrid\" || self.props.formname == \"ReeferStatus\"))\r\n this.setState({ AllBooking: self.props.ViewBookingData }, () => { this.GetBookingDetails(self.props.reeferData[0].BookingNumber, self.props.formname); });\r\n else\r\n this.setState({ renderHtml: this.dynamicRendering(1) });\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n //$('.deploymentWizard').find(\"ul.nav li:nth-child(0)\").attr(\"href\", \"#menu1\");\r\n this.resetViewBookingData();\r\n if (nextprops.ViewBookingData != null && nextprops.ViewBookingData.length > 0 && (nextprops.formname == \"ReeferStatusGrid\" || nextprops.formname == \"ReeferStatus\"))\r\n this.setState({ AllBooking: nextprops.ViewBookingData }, () => { this.GetBookingDetails(nextprops.reeferData[0].BookingNumber, nextprops.formname); });\r\n else\r\n this.setState({ renderHtml: this.dynamicRendering(1) });\r\n }\r\n\r\n resetViewBookingData() {\r\n this.setState({\r\n BookingDetails: emptyBookingDetails,\r\n BookingReefers: emptyBookingReefers,\r\n //BookingDataForView: emptyBookingDataForView,\r\n BookingViewData: emptyBookingViewData,\r\n rowData: [],\r\n tabFrom: 1,\r\n currentTab: 1,\r\n AllBooking: [],\r\n buttonState: true,\r\n formname: '',\r\n });\r\n }\r\n\r\n GetBookingDetails(BookingNumber: any, FormName: any) {\r\n var isfound = this.state.AllBooking.filter(x => x.BookingNumber.toLowerCase() == BookingNumber.toLowerCase());\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = isfound[0].Shipper;\r\n BookingInfoDetails.Consignee = isfound[0].Consignee;\r\n BookingInfoDetails.ShipperCode = isfound[0].ShipperCode;\r\n BookingInfoDetails.POR = isfound[0].POR;\r\n BookingInfoDetails.POL = isfound[0].POL;\r\n BookingInfoDetails.POD = isfound[0].POD;\r\n BookingInfoDetails.VesselETD = isfound[0].VesselETD != null ? DateFormat(new Date(isfound[0].VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = isfound[0].VesselETA != null ? DateFormat(new Date(isfound[0].VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = isfound[0].BLNumber;\r\n BookingInfoDetails.ContractParty = isfound[0].ContractParty;\r\n BookingInfoDetails.Consolidation = isfound[0].Consolidation;\r\n BookingInfoDetails.Agent = isfound[0].Agent;\r\n BookingInfoDetails.VesselCode = isfound[0].VesselCode;\r\n BookingInfoDetails.VoyageNumber = isfound[0].VoyageNumber;\r\n BookingInfoDetails.Call = isfound[0].Call;\r\n BookingInfoDetails.Forwarder = isfound[0].Forwarder;\r\n BookingInfoDetails.Notify = isfound[0].Notify;\r\n BookingInfoDetails.BookingNumber = isfound[0].BookingNumber;\r\n BookingInfoDetails.DEL = isfound[0].DEL;\r\n BookingInfoDetails.BKCustomer = isfound[0].BKCustomer;\r\n if (isfound[0].LifecycleCd == 'L' || isfound[0].LifecycleCd == 'R' || isfound[0].LifecycleCd == 'D' || isfound[0].LifecycleCd == 'P') {\r\n var departingVVC = isfound[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = isfound[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n BookingInfoDetails.SelectedVoyage = depVoyage;\r\n BookingInfoDetails.SelectedCall = depCall;\r\n BookingInfoDetails.SelectedVesselCD = depVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVesselCD = arrVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVoyage = arrVoyage;\r\n BookingInfoDetails.ArrSelectedCall = arrCall;\r\n }\r\n var BookingReefersData = emptyBookingReefers;\r\n BookingReefersData.BookingReefers = this.state.AllBooking.map(x => x.ReeferID).toString();\r\n BookingReefersData.SelectedBookingReefers = this.state.AllBooking.map(x => x.ReeferID).toString();\r\n BookingReefersData.ReeferwithUnitID = this.state.AllBooking.map(x => x.ReeferwithUnitID);\r\n var gridData = [];\r\n forEach(this.state.AllBooking, function (bookingItem) {\r\n \r\n if (bookingItem != \"\" && bookingItem != null) {\r\n\r\n var item = {\r\n action: '', reeferId: bookingItem.ReeferID, cargoCare: bookingItem.CCProfileName, accessCodes: bookingItem.CustomerAccessGroupID, bookedTemperature: bookingItem.BookedTemperature,\r\n bookedTemperatureQualifier: bookingItem.BookedTemperatureQualifier, bookedTemperatureMin: bookingItem.BookedTemperatureMin, bookedTemperatureMax: bookingItem.BookedTemperatureMax,\r\n humidity: bookingItem.HumiditySetpoint, commodity: bookingItem.Commodity, STCC: bookingItem.STCC, HS: bookingItem.HSCode, gensetId: bookingItem.GensetId, ventSetting: bookingItem.VentSetting,\r\n HVFlag: bookingItem.HighValueFlag, serviceLevel: bookingItem.ServiceLevel, CAFlag: bookingItem.CAFlag, O2Setpoint: bookingItem.O2Setpoint, O2SetpointMin: bookingItem.O2SetpointMin, O2SetpointMax: bookingItem.O2SetpointMax,\r\n CO2Setpoint: bookingItem.CO2Setpoint, CO2SetpointMin: bookingItem.CO2SetpointMin, CO2SetpointMax: bookingItem.CO2SetpointMax, CTFlag: bookingItem.CTFlag,\r\n CTDays: bookingItem.CTDays, USDAMaxTemperature: bookingItem.USDAMaxTemperature, postCTTemperature: bookingItem.PostCTTemperature, postCTTemperatureDeviation: bookingItem.PostCTTemperatureDeviation, postCTVentSetting: bookingItem.PostCTVentSetting,\r\n UnitMasterId: bookingItem.UnitMasterID, CustomerAccessGroupIdsStr: '', CAGName: bookingItem.CAGName\r\n };\r\n gridData.push(item);\r\n }\r\n });\r\n this.setState({ BookingDetails: BookingInfoDetails, BookingReefers: BookingReefersData, rowData: gridData, buttonState: false, formname: FormName }, () => { this.setState({ renderHtml: this.dynamicRendering(1) }); });\r\n }\r\n dynamicRendering(tabPane: number) {\r\n if (tabPane == 1) {\r\n this.setState({ isEdit: false });\r\n return \r\n }\r\n\r\n else if (tabPane == 4)\r\n return \r\n }\r\n\r\n setActiveAndInactiveOld(TabToActive: number, TabToInactive: number) {\r\n if (TabToInactive > 0)\r\n document.getElementById(\"atab\" + TabToInactive).classList.remove(\"active\");\r\n\r\n document.getElementById(\"atab\" + TabToActive).classList.add(\"active\");\r\n }\r\n renderWizardPage(tabPane: number, tabState: any, tabPaneFrom: number) {\r\n this.setState({ tabFrom: tabPaneFrom });\r\n this.setActiveAndInactiveOld(tabPane, tabPaneFrom);\r\n switch (tabPane) {\r\n case 1:\r\n var newBookingDetails = emptyBookingDetails;\r\n newBookingDetails.Shipper = tabState.BookingDetails.Shipper;\r\n newBookingDetails.Consignee = tabState.BookingDetails.Consignee;\r\n newBookingDetails.ShipperCode = tabState.BookingDetails.ShipperCode;\r\n newBookingDetails.POR = tabState.BookingDetails.POR;\r\n newBookingDetails.POL = tabState.BookingDetails.POL;\r\n newBookingDetails.POD = tabState.BookingDetails.POD;\r\n newBookingDetails.VesselETD = tabState.BookingDetails.VesselETD;\r\n newBookingDetails.VesselETA = tabState.BookingDetails.VesselETA;\r\n newBookingDetails.BLNumber = tabState.BookingDetails.BLNumber;\r\n newBookingDetails.ContractParty = tabState.BookingDetails.ContractParty;\r\n newBookingDetails.Consolidation = tabState.BookingDetails.Consolidation;\r\n newBookingDetails.Agent = tabState.BookingDetails.Agent;\r\n newBookingDetails.VesselCode = tabState.BookingDetails.VesselCode;\r\n newBookingDetails.VoyageNumber = tabState.BookingDetails.VoyageNumber;\r\n newBookingDetails.Call = tabState.BookingDetails.Call;\r\n newBookingDetails.Forwarder = tabState.BookingDetails.Forwarder;\r\n newBookingDetails.Notify = tabState.BookingDetails.Notify;\r\n newBookingDetails.BookingNumber = tabState.BookingDetails.BookingNumber;\r\n newBookingDetails.DEL = tabState.BookingDetails.DEL;\r\n newBookingDetails.SelectedVesselCD = tabState.BookingDetails.SelectedVesselCD;\r\n newBookingDetails.SelectedCall = tabState.BookingDetails.SelectedCall;\r\n newBookingDetails.SelectedVoyage = tabState.BookingDetails.SelectedVoyage;\r\n newBookingDetails.ArrSelectedVesselCD = tabState.BookingDetails.ArrSelectedVesselCD;\r\n newBookingDetails.ArrSelectedCall = tabState.BookingDetails.ArrSelectedCall;\r\n newBookingDetails.ArrSelectedVoyage = tabState.BookingDetails.ArrSelectedVoyage;\r\n newBookingDetails.userInput = tabState.BookingDetails.userInput;\r\n newBookingDetails.BKCustomer = tabState.BookingDetails.BKCustomer;\r\n newBookingDetails.IsVVCModified = tabState.BookingDetails.IsVVCModified;\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.SelectedReefer;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.ReeferIds;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.ReeferwithUnitID;\r\n this.setState({ BookingDetails: newBookingDetails, BookingReefers: newBookingReefersDetails, rowData: tabState.rowData }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n case 4:\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.BookingReefers.BookingReefers;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.BookingReefers.SelectedBookingReefers;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.BookingReefers.ReeferwithUnitID;\r\n\r\n var emptyBookingViewData: server.BookingViewData = {\r\n CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false\r\n };\r\n var CAFlagCount = 0; var CTFlagCount = 0;\r\n forEach(tabState.rowData, function (datarow) {\r\n if (datarow != null) {\r\n if (datarow.CAFlag)\r\n CAFlagCount++;\r\n if (datarow.CTFlag)\r\n CTFlagCount++;\r\n }\r\n });\r\n if (tabState.rowData.length == CAFlagCount)\r\n emptyBookingViewData.CARequire = true;\r\n else if (tabState.rowData.length == CTFlagCount)\r\n emptyBookingViewData.CTRequire = true;\r\n else if (CAFlagCount == 0 && CTFlagCount == 0)\r\n emptyBookingViewData.CACTNotRequired = true;\r\n else\r\n emptyBookingViewData.CACTDifferByReefer = true;\r\n\r\n //emptyBookingDataForView.ReeferIds = newBookingReefersDetails.ReeferwithUnitID;\r\n this.setState({ BookingReefers: newBookingReefersDetails, BookingDetails: tabState.BookingDetails, BookingViewData: emptyBookingViewData, rowData: tabState.rowData }, () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n }\r\n }\r\n\r\n backScreen() {\r\n if (this.state.currentTab == 4) {\r\n SpecificBookingReefersGridData.BackScreen();\r\n }\r\n }\r\n\r\n nextScreen() {\r\n if (this.state.currentTab == 1) {\r\n SpecificBookingDetails.NextScreen();\r\n }\r\n }\r\n\r\n cancelWizard() {\r\n this.props.history.goBack();\r\n }\r\n\r\n static UpdateBookingType(Type: any) {\r\n self.setState({ BookingType: Type });\r\n }\r\n static UpdateButtonStyle(State: any) {\r\n self.setState({ buttonState: State });\r\n }\r\n public render() {\r\n return
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.renderHtml}\r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n \r\n {\r\n this.state.currentTab != 1 ? : ''\r\n }\r\n {\r\n this.state.currentTab != 4 ?\r\n : ''\r\n }\r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    ;\r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport GeofenceMap from '../../actions/GeofenceMap';\r\nimport GeofenceManagement from '../../components/routecomponents/GeofenceManagement';\r\nimport { ReeferMap } from '../../components/childcomponents/ReeferMap';\r\n\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface AddGeofenceState {\r\n Params: server.GeofenceParams;\r\n}\r\n\r\nvar self;\r\nexport class AddGeofence extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var inputParams: server.GeofenceParams = {\r\n FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '',\r\n GeofenceCustomerID: ''\r\n };\r\n this.state = { Params: inputParams };\r\n\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n\r\n var inputParams: server.GeofenceParams = {\r\n FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '',\r\n GeofenceCustomerID: ''\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeofenceCategoryCds');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n\r\n if (data.length === 0) {\r\n inputParams.FenceTypeCd = \"B\";\r\n if (this.props.source != \"Management\") {\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n }\r\n else if (data.includes('B') && data.includes('D')) {\r\n inputParams.FenceTypeCd = \"B\";\r\n if (this.props.source != \"Management\") {\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n }\r\n else if (data.includes('B')) {\r\n inputParams.FenceTypeCd = \"B\";\r\n if (this.props.source != \"Management\") {\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n }\r\n else if (data.includes('D')) {\r\n inputParams.FenceTypeCd = \"D\";\r\n\r\n if (this.props.source != \"Management\") {\r\n if (!$(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').addClass('active');\r\n\r\n if ($(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').removeClass('active');\r\n }\r\n }\r\n this.state = { Params: inputParams };\r\n\r\n if (this.props.source == \"Management\") {\r\n var fenceTypeCd = this.props.fenceTypeCd;\r\n if (fenceTypeCd != undefined && fenceTypeCd != null) {\r\n var params = this.state.Params;\r\n params.FenceTypeCd = fenceTypeCd;\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n }\r\n this.resetDrawingFlag();\r\n\r\n });\r\n\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n var inputParams: server.GeofenceParams = {\r\n FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '',\r\n GeofenceCustomerID: ''\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeofenceCategoryCds');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length === 0) {\r\n inputParams.FenceTypeCd = \"B\";\r\n if (this.props.source != \"Management\") {\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n }\r\n else if (data.includes('B') && data.includes('D')) {\r\n inputParams.FenceTypeCd = \"B\";\r\n if (this.props.source != \"Management\") {\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n }\r\n else if (data.includes('B')) {\r\n inputParams.FenceTypeCd = \"B\";\r\n if (this.props.source != \"Management\") {\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n }\r\n else if (data.includes('D')) {\r\n inputParams.FenceTypeCd = \"D\";\r\n if (this.props.source != \"Management\") {\r\n if (!$(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').addClass('active');\r\n\r\n if ($(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').removeClass('active');\r\n }\r\n }\r\n this.state = { Params: inputParams };\r\n\r\n if (this.props.source == \"Management\") {\r\n var fenceTypeCd = this.props.fenceTypeCd;\r\n if (fenceTypeCd != undefined && fenceTypeCd != null) {\r\n var params = this.state.Params;\r\n params.FenceTypeCd = fenceTypeCd;\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n }\r\n this.resetDrawingFlag();\r\n });\r\n }\r\n\r\n resetDrawingFlag() {\r\n if (this.props.source == \"Management\")\r\n GeofenceMap.resetFlag();\r\n else\r\n ReeferCallout.resetFlag();\r\n }\r\n\r\n continueDrawing() {\r\n if (this.props.source == \"DashBoard\")\r\n ReeferCallout.ContinueDrawing();\r\n else\r\n GeofenceMap.ContinueDrawing();\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n cancelDrawing() {\r\n if (this.props.source == \"DashBoard\")\r\n ReeferCallout.CancelDrawing();\r\n else\r\n GeofenceMap.CancelDrawing();\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n submitDrawing() {\r\n var latlonArray = [];\r\n if (this.props.source == \"Management\") {\r\n var fenceTypeCd = this.props.fenceTypeCd;\r\n if (fenceTypeCd != undefined && fenceTypeCd != null) {\r\n var params = this.state.Params;\r\n params.FenceTypeCd = fenceTypeCd;\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n }\r\n var inputParams = this.state.Params;\r\n var message = this.validateAddGeofence(inputParams);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n else {\r\n $(\"#globalLoader\").show();\r\n\r\n var latlonArray: any[] = this.props.geofenceCoordinates;\r\n //$.each(coordinates, function (index, value) {\r\n // if ((index === (coordinates.length - 1)) || !(latlonArray.indexOf(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9)) > -1))\r\n // latlonArray.push(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9));\r\n //});\r\n inputParams.Coordinates = latlonArray;\r\n inputParams.ActionTypeCd = \"A\";\r\n inputParams.GeofenceCustomerID = this.state.Params.FenceId;\r\n\r\n var geofenceParams = JSON.stringify(inputParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/SaveGeoFence', { method: 'POST', body: geofenceParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(message => {\r\n if (message == \"Geofence created successfully.\") {\r\n //$(\"#globalLoader\").hide();\r\n if (this.props.source == \"DashBoard\") {\r\n ReeferCallout.ResetDrawing();\r\n ReeferMap.refreshDashBoardMap();\r\n }\r\n else {\r\n GeofenceMap.ResetDrawing();\r\n GeofenceManagement.loadGeofences(this.state.Params.FenceTypeCd);\r\n }\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n validateAddGeofence(params: any) {\r\n if (params.FenceTypeCd === '' || params.FenceTypeCd === undefined) {\r\n return \"Please select Fence Type\";\r\n }\r\n else if (params.FenceId === '' || params.FenceId === undefined) {\r\n return \"Please enter Fence ID\"\r\n }\r\n else if (params.FenceName === '' || params.FenceName === undefined) {\r\n return \"Please enter Fence Name\"\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n FenceIdchange(event: React.FormEvent) {\r\n var params = this.state.Params;\r\n var Value: string = event.currentTarget.value;\r\n if (Value.length > 32)\r\n return false;\r\n params.FenceId = Value;\r\n\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n FenceNamechange(event: React.FormEvent) {\r\n var params = this.state.Params;\r\n var Value: string = event.currentTarget.value;\r\n if (Value.length > 100)\r\n return false;\r\n params.FenceName = Value;\r\n\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n Addresschange(event: React.FormEvent) {\r\n var params = this.state.Params;\r\n var Value: string = event.currentTarget.value;\r\n if (Value.length > 250)\r\n return false;\r\n params.Address = Value;\r\n\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n radioButtonChange(value) {\r\n var params = self.state.Params;\r\n if (value == \"B\") {\r\n params.FenceTypeCd = value;\r\n document.getElementById(\"DeviceFence\").classList.remove(\"active\");\r\n document.getElementById(\"ServerFence\").classList.add(\"active\");\r\n }\r\n else {\r\n params.FenceTypeCd = value;\r\n document.getElementById(\"ServerFence\").classList.remove(\"active\");\r\n document.getElementById(\"DeviceFence\").classList.add(\"active\");\r\n }\r\n\r\n self.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    this.FenceIdchange(e)} value={this.state.Params.FenceId} />
    \r\n
    \r\n
    \r\n
    \r\n
    this.FenceNamechange(e)} value={this.state.Params.FenceName} />
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n }\r\n}\r\n\r\ninterface EditGeofenceState {\r\n Params: server.GeofenceParams;\r\n currentFence: server.GetGeofenceCoordinates;\r\n geofencesData: server.GetGeofenceCoordinates[];\r\n}\r\n\r\nexport class EditGeofence extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var inputParams: server.GeofenceParams = { FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '', GeofenceCustomerID: '' };\r\n this.state = { Params: inputParams, currentFence: this.props.currentFence, geofencesData: this.props.geofencesData };\r\n\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n var selectedItem = this.props.currentFence;\r\n if (selectedItem != undefined && selectedItem != null) {\r\n this.setState({ currentFence: selectedItem });\r\n this.bindFenceData(selectedItem);\r\n }\r\n var geodata = this.props.geofencesData;\r\n if (geodata != undefined && geodata != null && geodata.length > 0) {\r\n this.setState({ geofencesData: geodata });\r\n }\r\n if (this.props.source == \"Management\") {\r\n var fenceTypeCd = this.props.fenceTypeCd;\r\n if (fenceTypeCd != undefined && fenceTypeCd != null) {\r\n var params = this.state.Params;\r\n params.FenceTypeCd = fenceTypeCd;\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n }\r\n this.resetDrawingFlag();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var selectedItem = nextprops.currentFence;\r\n if (selectedItem != undefined && selectedItem != null) {\r\n this.setState({ currentFence: selectedItem });\r\n this.bindFenceData(selectedItem);\r\n }\r\n var geodata = this.props.geofencesData;\r\n if (geodata != undefined && geodata != null && geodata.length > 0) {\r\n this.setState({ geofencesData: geodata });\r\n }\r\n if (this.props.source == \"Management\") {\r\n var fenceTypeCd = this.props.fenceTypeCd;\r\n if (fenceTypeCd != undefined && fenceTypeCd != null) {\r\n var params = this.state.Params;\r\n params.FenceTypeCd = fenceTypeCd;\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n }\r\n this.resetDrawingFlag();\r\n }\r\n\r\n resetDrawingFlag() {\r\n if (this.props.source == \"Management\")\r\n GeofenceMap.resetFlag();\r\n else\r\n ReeferCallout.resetFlag();\r\n }\r\n\r\n bindFenceData(fenceData: any) {\r\n var inputParams = this.state.Params;\r\n inputParams.FenceId = fenceData.Tag;\r\n inputParams.FenceName = fenceData.Name;\r\n inputParams.FenceTypeCd = fenceData.GeofenceCategoryCd;\r\n inputParams.Address = fenceData.Address;\r\n inputParams.GeofenceCustomerID = fenceData.GeofenceCustomerID;\r\n this.setState({ Params: inputParams });\r\n this.radioButtonChange(fenceData.GeofenceCategoryCd);\r\n }\r\n\r\n continueDrawing() {\r\n if (this.props.source == \"DashBoard\")\r\n ReeferCallout.ContinueDrawing();\r\n else\r\n GeofenceMap.ContinueDrawing();\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n cancelDrawing() {\r\n if (this.props.source == \"DashBoard\") {\r\n ReeferCallout.CancelDrawing();\r\n ReeferCallout.BindGeofencePolygons(this.state.geofencesData);\r\n }\r\n else {\r\n GeofenceMap.CancelDrawing();\r\n GeofenceMap.BindGeofencePolygons(this.state.geofencesData);\r\n }\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n submitDrawing() {\r\n var latlonArray = [];\r\n if (this.props.source == \"Management\") {\r\n var fenceTypeCd = this.props.fenceTypeCd;\r\n if (fenceTypeCd != undefined && fenceTypeCd != null) {\r\n var params = this.state.Params;\r\n params.FenceTypeCd = fenceTypeCd;\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n }\r\n var inputParams = this.state.Params;\r\n var message = this.validateEditGeofence(inputParams);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n else {\r\n\r\n $(\"#globalLoader\").show();\r\n\r\n var latlonArray: any[] = this.props.geofenceCoordinates;\r\n //$.each(coordinates, function (index, value) {\r\n // if ((index === (coordinates.length - 1)) || !(latlonArray.indexOf(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9)) > -1))\r\n // latlonArray.push(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9));\r\n //});\r\n inputParams.Coordinates = latlonArray;\r\n inputParams.ActionTypeCd = \"U\";\r\n\r\n var geofenceParams = JSON.stringify(inputParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/SaveGeoFence', { method: 'POST', body: geofenceParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(message => {\r\n if (message == \"Geofence updated successfully.\") {\r\n //$(\"#globalLoader\").hide();\r\n if (this.props.source == \"DashBoard\") {\r\n ReeferCallout.ResetDrawing();\r\n ReeferMap.refreshDashBoardMap();\r\n }\r\n else {\r\n GeofenceMap.ResetDrawing();\r\n GeofenceManagement.loadGeofences(this.state.Params.FenceTypeCd);\r\n }\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n validateEditGeofence(params: any) {\r\n\r\n if (params.FenceTypeCd === '' || params.FenceTypeCd === undefined) {\r\n return \"Please select Fence Type\";\r\n }\r\n else if (params.FenceId === '' || params.FenceId === undefined) {\r\n return \"Please enter Fence ID\"\r\n }\r\n else if (params.FenceName === '' || params.FenceName === undefined) {\r\n return \"Please enter Fence Name\"\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n FenceIdchange(event: React.FormEvent) {\r\n var params = this.state.Params;\r\n var Value: string = event.currentTarget.value;\r\n if (Value.length > 32)\r\n return false;\r\n params.FenceId = Value;\r\n\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n FenceNamechange(event: React.FormEvent) {\r\n var params = this.state.Params;\r\n var Value: string = event.currentTarget.value;\r\n if (Value.length > 100)\r\n return false;\r\n params.FenceName = Value;\r\n\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n Addresschange(event: React.FormEvent) {\r\n var params = this.state.Params;\r\n var Value: string = event.currentTarget.value;\r\n if (Value.length > 250)\r\n return false;\r\n params.Address = Value;\r\n\r\n this.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n radioButtonChange(value) {\r\n var params = self.state.Params;\r\n if (value == \"B\") {\r\n if ($(\"#lblradioButtonDevice\").hasClass(\"active\")) $('#lblradioButtonDevice').removeClass('active');\r\n if (!$(\"#lblradioButtonServer\").hasClass(\"active\")) $('#lblradioButtonServer').addClass('active');\r\n }\r\n else { \r\n if ($(\"#lblradioButtonServer\").hasClass(\"active\")) $('#lblradioButtonServer').removeClass('active');\r\n if (!$(\"#lblradioButtonDevice\").hasClass(\"active\")) $('#lblradioButtonDevice').addClass('active');\r\n }\r\n params.FenceTypeCd = value;\r\n self.setState({\r\n Params: params\r\n });\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    Fence ID :
    \r\n
    this.FenceIdchange(e)} value={this.state.Params.FenceId} />
    \r\n
    \r\n
    \r\n
    Fence Name :
    \r\n
    this.FenceNamechange(e)} value={this.state.Params.FenceName} />
    \r\n
    \r\n
    \r\n
    Address :
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n }\r\n}","module.exports = __webpack_public_path__ + \"static/media/BatteryIndicator.0326aea0.svg\";","module.exports = __webpack_public_path__ + \"static/media/DualColorBattery.4682ab62.svg\";","import * as React from 'react';\r\nvar self;\r\nexport interface StatusFilter {\r\n statusData: any[]\r\n AllGenset_Count: number\r\n ReportingSWOn_Count: number\r\n LastReportedSWOn_Count: number\r\n ReportingSWOff_Count: number\r\n LastReportedSWOff_Count: number \r\n gensetStatusFilters: GensetStatusFilters\r\n}\r\ninterface GensetStatusFilters {\r\n AllGenset: boolean,\r\n ReportingSWOn: boolean,\r\n LastReportedSWOn: boolean,\r\n ReportingSWOff: boolean,\r\n LastReportedSWOff: boolean \r\n}\r\nconst emptySearchFilters = {\r\n AllGenset: false, ReportingSWOn: false, LastReportedSWOn: false, ReportingSWOff: false, LastReportedSWOff: false\r\n};\r\nvar isPanelLoaded;\r\nexport class GensetToggleButtonsFilter extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n statusData: [],\r\n AllGenset_Count: 0,\r\n ReportingSWOn_Count: 0,\r\n LastReportedSWOn_Count: 0,\r\n ReportingSWOff_Count: 0,\r\n LastReportedSWOff_Count: 0, \r\n gensetStatusFilters: emptySearchFilters\r\n }\r\n\r\n self = this;\r\n isPanelLoaded = false;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n if (nextprops.gridData != undefined && nextprops.gridData != null && isPanelLoaded == true) {\r\n this.setStatusFilters(nextprops);\r\n }\r\n if (!isPanelLoaded) {\r\n isPanelLoaded = true;\r\n }\r\n }\r\n\r\n setStatusFilters(nextprops: any) {\r\n self.setState({\r\n isPanelLoaded: true,\r\n statusData: nextprops.gridData,\r\n AllGenset_Count: nextprops.gridData.length,\r\n ReportingSWOn_Count: nextprops.gridData.filter(x => x.IgnitionOn == true && x.IsReportingDelay == false).length,\r\n LastReportedSWOn_Count: nextprops.gridData.filter(x => x.IgnitionOn == true && x.IsReportingDelay == true).length,\r\n ReportingSWOff_Count: nextprops.gridData.filter(x => (x.IgnitionOn == false || x.IgnitionOn==null) && x.IsReportingDelay == false).length,\r\n LastReportedSWOff_Count: nextprops.gridData.filter(x => (x.IgnitionOn == false || x.IgnitionOn==null) && x.IsReportingDelay == true).length \r\n });\r\n }\r\n \r\n ApplyStatusFilter(param: string, event: React.FormEvent) {\r\n var searchFilter = this.state.gensetStatusFilters;\r\n var isChecked: boolean = event.currentTarget.checked;\r\n switch (param) {\r\n case \"AllGenset\":\r\n searchFilter.AllGenset = isChecked;\r\n break;\r\n case \"ReportingSWOn\":\r\n searchFilter.ReportingSWOn = isChecked;\r\n break\r\n case \"LastReportedSWOn\":\r\n searchFilter.LastReportedSWOn = isChecked;\r\n break;\r\n case \"ReportingSWOff\":\r\n searchFilter.ReportingSWOff = isChecked;\r\n break;\r\n case \"LastReportedSWOff\":\r\n searchFilter.LastReportedSWOff = isChecked;\r\n break; \r\n }\r\n \r\n this.setState({\r\n gensetStatusFilters: searchFilter\r\n });\r\n \r\n self.props.filterGensetStatusGrid(searchFilter);\r\n }\r\n\r\n static ClearToggleFilters() {\r\n if (self != undefined) {\r\n var searchFilter = self.state.gensetStatusFilters;\r\n searchFilter.AllGenset = false;\r\n searchFilter.ReportingSWOn = false;\r\n searchFilter.LastReportedSWOn = false;\r\n searchFilter.ReportingSWOff = false;\r\n searchFilter.LastReportedSWOff = false; \r\n self.setState({\r\n gensetStatusFilters: searchFilter\r\n });\r\n }\r\n }\r\n\r\n ClearGensetStatusFilters() {\r\n var searchFilter = self.state.gensetStatusFilters;\r\n searchFilter.AllGenset = false;\r\n searchFilter.ReportingSWOn = false;\r\n searchFilter.LastReportedSWOn = false;\r\n searchFilter.ReportingSWOff = false;\r\n searchFilter.LastReportedSWOff = false; \r\n self.setState({\r\n gensetStatusFilters: searchFilter\r\n });\r\n\r\n self.props.filterGensetStatusGrid(searchFilter);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n
      \r\n
    • Grid Filters
    • \r\n {/*
    • Total Gensets {this.state.AllGenset_Count}
    • */}\r\n
    • Reporting, Switched On {this.state.ReportingSWOn_Count}
    • \r\n
    • Last Reported Switched On {this.state.LastReportedSWOn_Count}
    • \r\n
    • Reporting, Switched Off {this.state.ReportingSWOff_Count}
    • \r\n
    • Last Reported Switched Off {this.state.LastReportedSWOff_Count}
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\n","/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport $ from 'jquery';\r\nimport lodashfilter from 'lodash/filter';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport uniq from 'lodash/uniq';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport { List } from 'antd';\r\nimport { NewBookingCreate } from '../routecomponents/NewBookingCreate'\r\nimport { NewBookingEdit } from '../routecomponents/NewBookingEdit'\r\nvar Config: any = require('../../Config.json');\r\nvar self;\r\nvar selReefers;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar selectedReefers = \"\";\r\nvar BookingReeferDesc = '';\r\nvar tempSelectedReefers = [];\r\nexport interface BookingReefers {\r\n ReeferIds: string;\r\n btnState: boolean;\r\n SelectedReefer: string;\r\n BookingDetails: server.BookingDetails\r\n BookingReefers: server.BookingSearchDetails;\r\n CommonBookingData: server.CommonBookingData;\r\n rowData: server.bookingReefer[];\r\n ReeeferDesc: any;\r\n CopyBookingNumber: any;\r\n ReeferwithUnitID: any[];\r\n ReeferforCreate: any;\r\n BookingNumber: any[]; // RCNG - 414 Fix Added BookingNuber\r\n}\r\nconst emptyBookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded:'', BKCustomer:''\r\n};\r\nvar emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n}\r\nvar emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n};\r\nexport class SpecificBookingReefers extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n var initBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: this.props.formState.BookingReefers.BookingReefers, SelectedBookingReefers: this.props.formState.BookingReefers.SelectedBookingReefers,\r\n ReeferwithUnitID: this.props.formState.BookingReefers.ReeferwithUnitID,\r\n BookingNumber: this.props.formState.BookingReefers.BookingNumber\r\n }\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n //if (this.props.formState.isEdit)\r\n //BookingReeferDesc = 'If the reefers associated with the booking have changed, update the reefer IDs, search, and confirm the results.';\r\n //else\r\n //BookingReeferDesc = 'Search for the reefers associated with the booking. Confirm the results.';\r\n this.state = {\r\n ReeferIds: this.props.formState.BookingReefers.SelectedBookingReefers, btnState: false, SelectedReefer: this.props.formState.BookingReefers.BookingReefers, BookingDetails: emptyBookingDetails, BookingNumber: this.props.formState.BookingReefers.BookingNumber,\r\n BookingReefers: initBookingReefers,\r\n CommonBookingData: this.props.formState.isEdit ? this.props.formState.CommonBookingData : emptyCommonBookingData,\r\n rowData: this.props.formState.rowData,\r\n ReeferwithUnitID: this.props.formState.BookingReefers.ReeferwithUnitID,\r\n ReeeferDesc: this.props.formState.isEdit ? 'If the reefers associated with the booking have changed, update the reefer IDs, search, and confirm the results.' : 'Search for the reefers associated with the booking. Confirm the results.',\r\n CopyBookingNumber: this.props.formState.CopyBookingNumber, ReeferforCreate: this.props.formState.ReeferforCreate\r\n };\r\n \r\n if (this.props.formState.BookingReefers.BookingReefers != undefined && this.props.formState.BookingReefers.BookingReefers != null && this.props.formState.BookingReefers.BookingReefers != '') {\r\n tempSelectedReefers = this.props.formState.BookingReefers.BookingReefers.split(',');\r\n }\r\n self = this;\r\n }\r\n ApplyFilter() {\r\n if (self.state.SelectedReefer == '') {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter at least one Reefer ID.\");\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetSelectedReefers?SelectedReefer=' + this.state.SelectedReefer)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n tempSelectedReefers = this.state.SelectedReefer.split(',');\r\n var updatedBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: self.state.SelectedReefer, SelectedBookingReefers: data.map(x => x.ReeferID).toString(), ReeferwithUnitID: data.map(x => x.ReeferwithUnitID), BookingNumber: data.map(x => x.BookingNumber) \r\n }\r\n //BookingReefersData.ReeferwithUnitID = this.state.BookingList.map(x => x.ReeferwithUnitID);\r\n this.setState({ ReeferIds: data.map(x => x.ReeferID).toString(), ReeferwithUnitID: data.map(x => x.ReeferwithUnitID), BookingReefers: updatedBookingReefers, btnState: true, BookingNumber: data.map(x => x.BookingNumber) });// RCNG - 414 Fix Added BookingNuber\r\n if (this.props.formState.IsOpen == 'Edit') {\r\n NewBookingEdit.UpdateButtonStyle(false);\r\n }\r\n if (this.props.formState.IsOpen == 'New') {\r\n if (self.state.ReeferforCreate != \"\") {\r\n if (data.map(x => x.ReeferID).toString().includes(self.state.ReeferforCreate)) {\r\n NewBookingCreate.UpdateButtonStyle(false);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer \" + self.state.ReeferforCreate + \" not present in the list.\");\r\n NewBookingCreate.UpdateButtonStyle(true);\r\n return;\r\n }\r\n\r\n\r\n }\r\n else {\r\n NewBookingCreate.UpdateButtonStyle(false);\r\n }\r\n }\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", 'No results found.');\r\n }\r\n });\r\n }\r\n }\r\n ReeferIdschange(event: React.FormEvent) {\r\n var commaValue: string = this.GetMultiLineCsv(event.currentTarget.value);\r\n this.ValidateButtons(commaValue);\r\n //this.setState({\r\n // SelectedReefer: commaValue\r\n //}, () => { this.ValidateButtons(commaValue) });\r\n\r\n this.setState({\r\n SelectedReefer: commaValue\r\n });\r\n //if (this.props.formState.IsOpen == 'Edit') {\r\n // NewBookingEdit.UpdateButtonStyle(true);\r\n //}\r\n //if (this.props.formState.IsOpen == 'New') {\r\n // NewBookingCreate.UpdateButtonStyle(true);\r\n //}\r\n }\r\n\r\n ValidateButtons(commaValue) {\r\n //if (this.state.SelectedReefer != undefined && this.state.SelectedReefer != null && this.state.SelectedReefer != '') {\r\n var unique = [];\r\n //tempSelectedReefers = this.state.SelectedReefer.split(',');\r\n if (tempSelectedReefers.length > 0) {\r\n var temp = tempSelectedReefers.filter(item => item);\r\n temp.forEach(element => {\r\n if (!unique.includes(element)) {\r\n unique.push(element)\r\n }\r\n\r\n })\r\n }\r\n //}\r\n var enterReefer = commaValue.split(',');\r\n var uniqueCommon = [];\r\n var tempCommon = enterReefer.filter(item => item);\r\n tempCommon.forEach(element => {\r\n if (!uniqueCommon.includes(element)) {\r\n uniqueCommon.push(element)\r\n }\r\n\r\n })\r\n var difference_a1 = [];\r\n if (unique != undefined)\r\n difference_a1 = unique.filter(x => !uniqueCommon.includes(x));\r\n\r\n var difference_a2 = [];\r\n if (unique != undefined)\r\n difference_a2 = uniqueCommon.filter(x => !unique.includes(x));\r\n else\r\n difference_a2 = uniqueCommon;\r\n if (this.state.ReeferIds == '' || difference_a1.length > 0 || difference_a2.length > 0) {\r\n if (this.props.formState.IsOpen == 'Edit') {\r\n NewBookingEdit.UpdateButtonStyle(false);//RCNG-925\r\n }\r\n if (this.props.formState.IsOpen == 'New') {\r\n NewBookingCreate.UpdateButtonStyle(false);//RCNG-925\r\n }\r\n\r\n }\r\n else {\r\n if (this.props.formState.IsOpen == 'Edit') {\r\n NewBookingEdit.UpdateButtonStyle(false);\r\n }\r\n if (this.props.formState.IsOpen == 'New') {\r\n NewBookingCreate.UpdateButtonStyle(false);\r\n }\r\n }\r\n }\r\n\r\n GetMultiLineCsv(value) {\r\n //while (value.Contains(Environment.NewLine) || value.Contains('\\r') || value.Contains('\\n'))--->environment new line pending\r\n while (value.includes('\\r') || value.includes('\\n') || value.includes(';') || value.includes(' ')) {\r\n //value = value.Replace(Environment.NewLine, \",\");\r\n value = value.replace('\\r'.toString(), \",\");\r\n value = value.replace('\\n'.toString(), \",\");\r\n value = value.replace(';'.toString(), \",\");\r\n value = value.replace(' '.toString(), \",\");\r\n }\r\n while (value.includes(\",,\")) {\r\n value = value.replace(\",,\", \",\");\r\n }\r\n //s = s.Replace(\",\", \",\" + Environment.NewLine);\r\n return value;\r\n }\r\n ClearFilter() {\r\n tempSelectedReefers = [];\r\n if (this.props.formState.IsOpen == 'Edit') {\r\n NewBookingEdit.UpdateButtonStyle(true);\r\n }\r\n if (this.props.formState.IsOpen == 'New') {\r\n NewBookingCreate.UpdateButtonStyle(true);\r\n }\r\n this.setState({\r\n ReeferIds: '', btnState: false, SelectedReefer: '', ReeferwithUnitID: []\r\n });\r\n }\r\n static BackScreen() {\r\n if (self.props.formState.IsOpen == 'Edit') {\r\n NewBookingEdit.UpdateButtonStyle(false);\r\n }\r\n if (self.props.formState.IsOpen == 'New') {\r\n NewBookingCreate.UpdateButtonStyle(false);\r\n }\r\n self.props.renderWizardPage(1, self.state, 2);\r\n }\r\n //RCNG-414 Fix\r\n BookingConfirmationWindow()\r\n {\r\n if (self.state.BookingNumber != undefined && self.state.BookingNumber.length >0 && self.state.BookingNumber.filter((item) => item !== 0).length > 0) {\r\n $('#BookingonfirmModal').show();\r\n }\r\n else {\r\n self.props.renderWizardPage(3, self.state, 2);\r\n }\r\n }\r\n closeBookingModel() {\r\n $('#BookingonfirmModal').hide();\r\n }\r\n closeAssetConfirmation() {\r\n $(\"#confirmModal\").css(\"display\", \"none\");\r\n }\r\n closeBookingConfirmation() {\r\n $(\"#BookingonfirmModal\").css(\"display\", \"none\");\r\n }\r\n performAddAssetBookingNoAction() {\r\n this.closeBookingModel();\r\n\r\n // $('#addAssetModal .btn-close').click();\r\n }\r\n performAddAssetBookingYesAction() {\r\n this.closeBookingModel();\r\n self.props.renderWizardPage(3, self.state, 2);\r\n }\r\n //RCNG-414 Fix End\r\n static NextScreen() {\r\n if (self.props.formState.IsOpen == 'New') {\r\n if (self.state.ReeferforCreate != \"\") {\r\n if (self.state.ReeferIds.includes(self.state.ReeferforCreate)) {\r\n if (self.state.ReeferIds != null && self.state.ReeferIds != '' && self.state.ReeferIds != undefined) {\r\n // self.props.renderWizardPage(3, self.state, 2);\r\n self.BookingConfirmationWindow();//RCNG-414 Fix\r\n }\r\n else {\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Please Select at least one Reefer.\");\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"No reefer(s) has been selected. Do you want to create booking without reefer(s)?\",\r\n self.YesContinueToCreate.bind(this), self.CloseConfirmation.bind(this));//RCNG-925\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefer \" + self.state.ReeferforCreate + \" not present in the list.\");\r\n NewBookingCreate.UpdateButtonStyle(true);\r\n return;\r\n }\r\n\r\n\r\n }\r\n else {\r\n if (self.state.ReeferIds != null && self.state.ReeferIds != '' && self.state.ReeferIds != undefined)\r\n {\r\n self.BookingConfirmationWindow();//RCNG-414 Fix\r\n }\r\n else {\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Please Select at least one Reefer.\");\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"No reefer(s) has been selected. Do you want to create booking without reefer(s)?\",\r\n self.YesContinueToCreate.bind(this), self.CloseConfirmation.bind(this));//RCNG-925\r\n }\r\n }\r\n }\r\n else {\r\n if (self.state.ReeferIds != null && self.state.ReeferIds != '' && self.state.ReeferIds != undefined) {\r\n self.BookingConfirmationWindow();\r\n //self.props.renderWizardPage(3, self.state, 2);\r\n }\r\n else {\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Please Select at least one Reefer.\");\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"No reefer(s) has been selected. Do you want to update booking without reefer(s)?\",\r\n self.YesContinueToUpdate.bind(this), self.CloseConfirmation.bind(this));//RCNG-925\r\n }\r\n }\r\n }\r\n\r\n YesContinueToCreate() {\r\n RCNGWindow.ConfirmWindow.close();\r\n self.props.prepareSubmitWithoutReefers();\r\n //self.props.renderWizardPage(3, self.state, 2);\r\n }\r\n\r\n YesContinueToUpdate() {\r\n RCNGWindow.ConfirmWindow.close();\r\n self.props.prepareUpdateWithoutReefers();\r\n //self.props.renderWizardPage(3, self.state, 2);\r\n }\r\n\r\n CloseConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n componentDidMount() {\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = this.props.formState.BookingDetails.Shipper;\r\n BookingInfoDetails.Consignee = this.props.formState.BookingDetails.Consignee;\r\n BookingInfoDetails.ShipperCode = this.props.formState.BookingDetails.ShipperCode;\r\n BookingInfoDetails.POR = this.props.formState.BookingDetails.POR;\r\n BookingInfoDetails.POL = this.props.formState.BookingDetails.POL;\r\n BookingInfoDetails.POD = this.props.formState.BookingDetails.POD;\r\n BookingInfoDetails.VesselETD = this.props.formState.BookingDetails.VesselETD;\r\n BookingInfoDetails.VesselETA = this.props.formState.BookingDetails.VesselETA;\r\n BookingInfoDetails.BLNumber = this.props.formState.BookingDetails.BLNumber;\r\n BookingInfoDetails.ContractParty = this.props.formState.BookingDetails.ContractParty;\r\n BookingInfoDetails.Consolidation = this.props.formState.BookingDetails.Consolidation;\r\n BookingInfoDetails.Agent = this.props.formState.BookingDetails.Agent;\r\n BookingInfoDetails.VesselCode = this.props.formState.BookingDetails.VesselCode;\r\n BookingInfoDetails.VoyageNumber = this.props.formState.BookingDetails.VoyageNumber;\r\n BookingInfoDetails.Call = this.props.formState.BookingDetails.Call;\r\n BookingInfoDetails.Forwarder = this.props.formState.BookingDetails.Forwarder;\r\n BookingInfoDetails.Notify = this.props.formState.BookingDetails.Notify;\r\n BookingInfoDetails.BookingNumber = this.props.formState.BookingDetails.BookingNumber;\r\n BookingInfoDetails.DEL = this.props.formState.BookingDetails.DEL;\r\n BookingInfoDetails.SelectedVesselCD = this.props.formState.BookingDetails.SelectedVesselCD;\r\n BookingInfoDetails.SelectedCall = this.props.formState.BookingDetails.SelectedCall;\r\n BookingInfoDetails.SelectedVoyage = this.props.formState.BookingDetails.SelectedVoyage;\r\n BookingInfoDetails.ArrSelectedVesselCD = this.props.formState.BookingDetails.ArrSelectedVesselCD;\r\n BookingInfoDetails.ArrSelectedCall = this.props.formState.BookingDetails.ArrSelectedCall;\r\n BookingInfoDetails.ArrSelectedVoyage = this.props.formState.BookingDetails.ArrSelectedVoyage;\r\n BookingInfoDetails.userInput = this.props.formState.BookingDetails.userInput;\r\n BookingInfoDetails.BKCustomer = this.props.formState.BookingDetails.BKCustomer;\r\n this.setState({ BookingDetails: BookingInfoDetails });\r\n }\r\n \r\n public render() {\r\n\r\n return
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n {this.state.ReeeferDesc}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.ReeferIds}
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Confirmation
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n One or more Reefers are already associated with Booking. Do you want to override the existing Booking association?\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport forEach from 'lodash/forEach';\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar self;\r\n\r\nexport interface Reefers {\r\n ReeferIds: [];\r\n CommonBookingData: server.CommonBookingData;\r\n BookingReefers: server.BookingSearchDetails;\r\n rowData: server.bookingReefer[];\r\n CustomerGroups: any;\r\n Thirdparty: server.ThirdParty[];\r\n RefTemperatureUnit: server.RefTemperatureUnit[];\r\n editingId: any;\r\n CargoCareProfiles: any[];\r\n}\r\n\r\nvar emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [],BookingNumber:[]\r\n}\r\n\r\n\r\nvar self;\r\n\r\n\r\nexport class SpecificBookingReeferCommonData extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n var emptyCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim(), BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: true, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var emptyCreateCommonBookingData: server.CommonBookingData = {\r\n ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim(), BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n HighValueCargo: 'none', CargoCareProfile: '', ThirdPartyAccess: this.props.formState.CommonBookingData.ThirdPartyAccess, CACTNotRequired: true, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName: ''\r\n };\r\n var propsBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: this.props.formState.BookingReefers.BookingReefers, SelectedBookingReefers: this.props.formState.BookingReefers.SelectedBookingReefers,\r\n ReeferwithUnitID: this.props.formState.BookingReefers.ReeferwithUnitID, BookingNumber: props.formState.BookingReefers.BookingNumber // RCNG-4345 Fix\r\n \r\n }\r\n\r\n var reeferstr = this.props.formState.BookingReefers.SelectedBookingReefers;\r\n var nameArr = reeferstr.split(',');\r\n this.state = {\r\n ReeferIds: reeferstr == \"\" ? [] : nameArr,\r\n CommonBookingData: this.props.formState.isEdit || this.props.formState.CopyBookingNumber != '' ? this.props.formState.CommonBookingData : emptyCommonBookingData,\r\n BookingReefers: propsBookingReefers,\r\n rowData:this.props.formState.rowData,\r\n CustomerGroups: [],\r\n Thirdparty: [],\r\n RefTemperatureUnit: [],\r\n editingId: null,\r\n CargoCareProfiles: []\r\n\r\n };\r\n this.loadCustomerGroups();\r\n this.getRefTemperatureUnit();\r\n this.getCustomerCargoCareProfiles();\r\n self = this;\r\n \r\n }\r\n getCustomerCargoCareProfiles() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetCargoCareCustomerProfiles');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CargoCareProfiles: data });\r\n });\r\n }\r\n getRefTemperatureUnit() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetRefTemperatureUnit')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefTemperatureUnit: data });\r\n });\r\n }\r\n loadCustomerGroups() {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroups');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var it = [];\r\n forEach(data, function (item) {\r\n forEach(item.children, function (iteminItem) {\r\n if (iteminItem.value != undefined && iteminItem.value != null) {\r\n var numItem = iteminItem.value;\r\n var splittednumItem = numItem.split(\":\");\r\n var displayLabel = iteminItem.label + \"- (\" + item.label + \")\";\r\n var newThirdparty: server.ThirdParty = { ThirdPartyCd: splittednumItem[1], ThirdPartyName: displayLabel };\r\n it.push(newThirdparty);\r\n }\r\n });\r\n });\r\n this.setState({ Thirdparty: it });\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(data)) }, () => $('#globalLoader').hide());\r\n });\r\n }\r\n componentDidMount() {\r\n if (this.props.formState.isEdit || this.props.formState.CopyBookingNumber != '') {\r\n var commonBookingData = this.props.formState.CommonBookingData;\r\n if (commonBookingData.CACTNotRequired == true || commonBookingData.CACTNotRequired == 'true') {\r\n this.CACTShowHide('CACTNotRequired');\r\n } else if (commonBookingData.CTRequire == true || commonBookingData.CTRequire == 'true') {\r\n this.CACTShowHide('CTRequire');\r\n }\r\n else if (commonBookingData.CARequire == true || commonBookingData.CARequire == 'true') {\r\n this.CACTShowHide('CARequire');\r\n }\r\n else if (commonBookingData.CACTDifferByReefer == true || commonBookingData.CACTDifferByReefer == 'true' ) {\r\n this.CACTShowHide('CACTDifferByReefer');\r\n }\r\n else if (!commonBookingData.CTRequire == true && !commonBookingData.CARequire== true) {\r\n if (commonBookingData.O2SetPoint == null &&\r\n commonBookingData.O2Min == null &&\r\n commonBookingData.O2Max == null &&\r\n commonBookingData.CO2SetPoint == null &&\r\n commonBookingData.CO2Min == null &&\r\n commonBookingData.CO2Max == null &&\r\n commonBookingData.CTDays == null &&\r\n commonBookingData.CTMaxTemperature == null &&\r\n commonBookingData.PostCTTemperature == null &&\r\n commonBookingData.PostCTTemperatureRange == null &&\r\n commonBookingData.PostCTVentSettings == null ) {\r\n this.CACTShowHide('CACTNotRequired');\r\n \r\n } else {\r\n this.CACTShowHide('CACTDifferByReefer');\r\n }\r\n }\r\n // var commonBookingData = this.state.CommonBookingData;\r\n commonBookingData.ReeferIds = this.props.formState.BookingReefers.ReeferwithUnitID;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n if (!(this.props.formState.isEdit)) {\r\n commonBookingData = this.props.formState.CommonBookingData;\r\n commonBookingData.ReeferIds = this.props.formState.BookingReefers.ReeferwithUnitID;\r\n if (commonBookingData.CACTNotRequired == false && commonBookingData.CACTDifferByReefer == false && commonBookingData.CTRequire == false && commonBookingData.CARequire == false && this.state.CommonBookingData.CACTDifferByReefer== false) {\r\n commonBookingData.CACTNotRequired = true;\r\n commonBookingData.BookedTemperatureUnit = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n $('#CTRequire1').hide();\r\n $('#CTRequire2').hide();\r\n $('#CARequire1').hide();\r\n $('#CARequire2').hide();\r\n } else {\r\n if (commonBookingData.CACTNotRequired) {\r\n this.CACTShowHide('CACTNotRequired');\r\n } else if (commonBookingData.CTRequire) {\r\n this.CACTShowHide('CTRequire');\r\n }\r\n else if (commonBookingData.CARequire) {\r\n this.CACTShowHide('CARequire');\r\n }\r\n else {\r\n this.CACTShowHide('CACTDifferByReefer');\r\n }\r\n }\r\n \r\n \r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n \r\n }\r\n componentWillReceiveProps(nextProps: any) {\r\n var commonBookingData = nextProps.formState.CommonBookingData;\r\n var BookingReefersDetails = emptyBookingReefers;\r\n BookingReefersDetails.BookingReefers = this.props.formState.BookingReefers.BookingReefers;\r\n BookingReefersDetails.SelectedBookingReefers = this.props.formState.BookingReefers.SelectedBookingReefers;\r\n this.setState({ CommonBookingData: commonBookingData, BookingReefers: BookingReefersDetails });\r\n }\r\n\r\n onCellValueChanged = (params) => {\r\n const colId = params.column.getId();\r\n //if (colId === 'country') {\r\n // const selectedCountry = params.data.country;\r\n // const selectedCity = params.data.city;\r\n // const allowedCities = countyToCityMap(selectedCountry);\r\n // const cityMismatch = allowedCities.indexOf(selectedCity) < 0;\r\n // if (cityMismatch) {\r\n // params.node.setDataValue('city', null);\r\n // }\r\n //}\r\n };\r\n findInBetween(val, min, max) {\r\n return (val >= min && val <= max);\r\n }\r\n HasNonPrintableASCII(Value) {\r\n const IsMatch = /[^ -~]+/;\r\n if (IsMatch.test(Value))\r\n return true;\r\n else\r\n return false;\r\n }\r\n ValidateCommonReeferData() {\r\n //const splCharRegex = new RegExp(/^[a-zA-Z0-9]+$/);//not allow spicial charectors\r\n if (self.state.CommonBookingData.BookedTemperature != '' && self.state.CommonBookingData.BookedTemperature != null && self.state.CommonBookingData.BookedTemperatureMin != '' && self.state.CommonBookingData.BookedTemperatureMin != null && self.state.CommonBookingData.BookedTemperatureMax != '' && self.state.CommonBookingData.BookedTemperatureMax != null) {\r\n if (!(self.findInBetween(parseFloat(self.state.CommonBookingData.BookedTemperature), parseFloat(self.state.CommonBookingData.BookedTemperatureMin), parseFloat(self.state.CommonBookingData.BookedTemperatureMax)))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Booking Tempature should be between Booked Temperature Min and Booked Temperature Max.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.BookedTemperature != '' && self.state.CommonBookingData.BookedTemperature != null && self.state.CommonBookingData.BookedTemperatureMin != '' && self.state.CommonBookingData.BookedTemperatureMin != null) {\r\n if ((parseFloat(self.state.CommonBookingData.BookedTemperature) < parseFloat(self.state.CommonBookingData.BookedTemperatureMin))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Booking Tempature should be greater than Booked Temperature Min.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.BookedTemperature != '' && self.state.CommonBookingData.BookedTemperature != null && self.state.CommonBookingData.BookedTemperatureMax != '' && self.state.CommonBookingData.BookedTemperatureMax != null) {\r\n if ((parseFloat(self.state.CommonBookingData.BookedTemperature) > parseFloat(self.state.CommonBookingData.BookedTemperatureMax))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Booking Tempature should be less than Booked Temperature Max.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.BookedTemperatureMin != '' && self.state.CommonBookingData.BookedTemperatureMin != null ) {\r\n if(!self.findInBetween(parseFloat(self.state.CommonBookingData.BookedTemperatureMin),-100,100)){\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Booking Tempature min should be greater than -100 and less than 100.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.BookedTemperatureMax != '' && self.state.CommonBookingData.BookedTemperatureMax != null) {\r\n if(!self.findInBetween(parseFloat(self.state.CommonBookingData.BookedTemperatureMax),-100,100)){\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Booking Tempature max should be less than 100 and greater than -100.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.BookedTemperature != '' && self.state.CommonBookingData.BookedTemperature != null) {\r\n if(!self.findInBetween(parseFloat(self.state.CommonBookingData.BookedTemperature),-100,100)){\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Booking Tempature should be between -100 to 100\");\r\n return false;\r\n }\r\n }\r\n\r\n if (self.state.CommonBookingData.CO2SetPoint != '' && self.state.CommonBookingData.CO2SetPoint != null && self.state.CommonBookingData.CO2Min != '' && self.state.CommonBookingData.CO2Min != null && self.state.CommonBookingData.CO2Max != '' && self.state.CommonBookingData.CO2Max != null) {\r\n if (!(self.findInBetween(parseFloat(self.state.CommonBookingData.CO2SetPoint), parseFloat(self.state.CommonBookingData.CO2Min), parseFloat(self.state.CommonBookingData.CO2Max)))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"CO2 Setpoint should be between Co2 Min and Co2 Max.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CO2SetPoint != '' && self.state.CommonBookingData.CO2SetPoint != null && self.state.CommonBookingData.CO2Min != '' && self.state.CommonBookingData.CO2Min != null) {\r\n if ((parseFloat(self.state.CommonBookingData.CO2SetPoint) < parseFloat(self.state.CommonBookingData.CO2Min))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"CO2 Setpoint should be greater than Co2 Min.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CO2SetPoint != '' && self.state.CommonBookingData.CO2SetPoint != null && self.state.CommonBookingData.CO2Max != '' && self.state.CommonBookingData.CO2Max != null) {\r\n if ((parseFloat(self.state.CommonBookingData.CO2SetPoint) > parseFloat(self.state.CommonBookingData.CO2Max))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"CO2 Setpoint should be less than Co2 Max.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CO2Min != '' && self.state.CommonBookingData.CO2Min != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.CO2Min), 0, 25)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Co2 Min should be greater than 0 and less than 25.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CO2Max != '' && self.state.CommonBookingData.CO2Max != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.CO2Max), 0, 25)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Co2 Max should be greater than 0 and less than 25.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CO2SetPoint != '' && self.state.CommonBookingData.CO2SetPoint != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.CO2SetPoint), 0, 25)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"CO2 Setpoint should be between 0 to 25\");\r\n return false;\r\n }\r\n }\r\n\r\n if (self.state.CommonBookingData.O2SetPoint != '' && self.state.CommonBookingData.O2SetPoint != null && self.state.CommonBookingData.O2Min != '' && self.state.CommonBookingData.O2Min != null && self.state.CommonBookingData.O2Max != '' && self.state.CommonBookingData.O2Max != null) {\r\n if (!(self.findInBetween(parseFloat(self.state.CommonBookingData.O2SetPoint), parseFloat(self.state.CommonBookingData.O2Min), parseFloat(self.state.CommonBookingData.O2Max)))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"O2 Setpoint should be between O2 Min and O2 Max.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.O2SetPoint != '' && self.state.CommonBookingData.O2SetPoint != null && self.state.CommonBookingData.O2Min != '' && self.state.CommonBookingData.O2Min != null) {\r\n if ((parseFloat(self.state.CommonBookingData.O2SetPoint) < parseFloat(self.state.CommonBookingData.O2Min))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"O2 Setpoint should be greater than O2 Min.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.O2SetPoint != '' && self.state.CommonBookingData.O2SetPoint != null && self.state.CommonBookingData.O2Max != '' && self.state.CommonBookingData.O2Max != null) {\r\n if ((parseFloat(self.state.CommonBookingData.O2SetPoint) > parseFloat(self.state.CommonBookingData.O2Max))) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"O2 Setpoint should be less than O2 Max.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.O2Min != '' && self.state.CommonBookingData.O2Min != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.O2Min), 0, 25)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"O2 Min should be greater than 0 and less than 25.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.O2Max != '' && self.state.CommonBookingData.O2Max != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.O2Max), 0, 25)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"O2 Max should be greater than 0 and less than 25.\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.O2SetPoint != '' && self.state.CommonBookingData.O2SetPoint != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.O2SetPoint), 0, 25)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"O2 Setpoint should be between 0 to 25\");\r\n return false;\r\n }\r\n }\r\n\r\n if (self.state.CommonBookingData.HumiditySetPoint != '' && self.state.CommonBookingData.HumiditySetPoint != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.HumiditySetPoint), 0, 100)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Humidity SetPoint should be between 0 to 100\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CTDays != '' && self.state.CommonBookingData.CTDays != null) {\r\n if (!self.findInBetween(parseInt(self.state.CommonBookingData.CTDays), 0, 45)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"CT Days should be between 0 to 45\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.PostCTTemperature != '' && self.state.CommonBookingData.PostCTTemperature != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.PostCTTemperature), -100, 100)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Post-CT Temp should be between -100 to 100\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CTMaxTemperature != '' && self.state.CommonBookingData.CTMaxTemperature != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.CTMaxTemperature), -100, 100)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"CT Max Temp should be between -100 to 100\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.PostCTTemperatureRange != '' && self.state.CommonBookingData.PostCTTemperatureRange != null) {\r\n if (!self.findInBetween(parseFloat(self.state.CommonBookingData.PostCTTemperatureRange), 0, 10)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Post-CT Temp Range should be between 0 to 10\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.GensetId != '' && self.state.CommonBookingData.GensetId != null ) {\r\n if (self.HasNonPrintableASCII(self.state.CommonBookingData.GensetId)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Special characters not allowed in Genset ID\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.VentSettings != '' && self.state.CommonBookingData.VentSettings != null) {\r\n if (self.HasNonPrintableASCII(self.state.CommonBookingData.VentSettings)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Special characters not allowed in Vent Settings\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CommodityName != '' && self.state.CommonBookingData.CommodityName != null) {\r\n if (self.HasNonPrintableASCII(self.state.CommonBookingData.CommodityName)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Special characters not allowed in Commodity Name\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.STCC != '' && self.state.CommonBookingData.STCC != null) {\r\n if (self.HasNonPrintableASCII(self.state.CommonBookingData.STCC)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Special characters not allowed in STCC\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.HSCode != '' && self.state.CommonBookingData.HSCode != null) {\r\n if (self.HasNonPrintableASCII(self.state.CommonBookingData.HSCode)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Special characters not allowed in HSCode\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.ServiceLevel != '' && self.state.CommonBookingData.ServiceLevel != null) {\r\n if (self.HasNonPrintableASCII(self.state.CommonBookingData.ServiceLevel)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Special characters not allowed in Service Level\");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.PostCTVentSettings != '' && self.state.CommonBookingData.PostCTVentSettings != null) {\r\n if (self.HasNonPrintableASCII(self.state.CommonBookingData.PostCTVentSettings)) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"Special characters not allowed in Post-CT Vent Settings \");\r\n return false;\r\n }\r\n }\r\n if (self.state.CommonBookingData.CommodityName != null && self.state.CommonBookingData.CommodityName != '' && self.state.CommonBookingData.CommodityName.length > 0 ) {\r\n if (self.state.CommonBookingData.CommodityName.length > 1200) {\r\n PopupWindow.showErrorMessage(\"Booking CommonData\", \"CommodityName should not exceed 1200 charectors.\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n\r\n }\r\n BookedTemperatureChange(event: React.FormEvent) {\r\n\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/);\r\n // const numregex = new RegExp(/^[+-]?[0-9]{1,9}(?:\\.[0-9]{1})?$/);\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n\r\n //if (event.currentTarget.value === '' || ((isNaN(parseFloat(event.currentTarget.value)) >= -100.0) && (100.0 >= isNaN(parseFloat(event.currentTarget.value))))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.BookedTemperature = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n BookedTemperatureUnitChange(e) {\r\n\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = e.currentTarget.value;\r\n commonBookingData.BookedTemperatureUnit = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n BookedTemperatureMinChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/);\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((isNaN(parseFloat(event.currentTarget.value)) >= -100.0) && (100.0 >= isNaN(parseFloat(event.currentTarget.value))))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.BookedTemperatureMin = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n BookedTemperatureMaxChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/);\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((isNaN(parseFloat(event.currentTarget.value)) >= -100.0) && (100.0 >= isNaN(parseFloat(event.currentTarget.value))))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.BookedTemperatureMax = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n HumiditySetPointChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^\\d*\\.?\\d{0,1}$/);//not allow decimal //^[0-9\\b]+$\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseInt(event.currentTarget.value) >= 0) && (100 >= parseInt(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.HumiditySetPoint = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n } \r\n }\r\n VentSettingsChange(event: React.FormEvent) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.VentSettings = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n GensetIdChange(event: React.FormEvent) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.GensetId = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n }); \r\n }\r\n CommodityNameChange(event: React.FormEvent) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.CommodityName = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n STCCChange(event: React.FormEvent) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.STCC = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n HSCodeChange(event: React.FormEvent) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.HSCode = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n ServiceLevelChange(event: React.FormEvent) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.ServiceLevel = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n onHighValueCargoChange(e) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n commonBookingData.HighValueCargo = e.currentTarget.value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n }); \r\n }\r\n CargoCareProfileChange(e) {\r\n\r\n var commonBookingData = this.state.CommonBookingData;\r\n commonBookingData.CargoCareProfile = e.currentTarget.value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n ThirdPartyAccessChange(e) {\r\n\r\n var commonBookingData = this.state.CommonBookingData;\r\n commonBookingData.ThirdPartyAccess = e.currentTarget.value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n\r\n O2SetPointChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/);\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (25.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.O2SetPoint = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n O2MinChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/); \r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (25.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.O2Min = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n // }\r\n }\r\n }\r\n O2MaxChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/);\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (25.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.O2Max = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n CO2SetPointChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/);\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (25.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.CO2SetPoint = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n CO2MinChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/);\r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (25.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.CO2Min = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n CO2MaxChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/); \r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (25.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.CO2Max = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n // }\r\n }\r\n }\r\n CTDaysChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[0-9\\b]+$/);//not allow decimal \r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n // if (event.currentTarget.value === '' || ((parseInt(event.currentTarget.value) >= 0) && (45 >= parseInt(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.CTDays = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n CTMaxTemperatureChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/); \r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n //if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (25.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.CTMaxTemperature = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n //}\r\n }\r\n }\r\n PostCTTemperatureChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/); \r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.PostCTTemperature = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n }\r\n PostCTTemperatureRangeChange(event: React.FormEvent) {\r\n const numregex = new RegExp(/^[+-]?\\d*\\.?\\d{0,1}$/); \r\n if (event.currentTarget.value === '' || numregex.test(event.currentTarget.value)) {\r\n // if (event.currentTarget.value === '' || ((parseFloat(event.currentTarget.value) >= 0.0) && (10.0 >= parseFloat(event.currentTarget.value)))) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.PostCTTemperatureRange = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n // }\r\n }\r\n }\r\n PostCTVentSettingsChange(event: React.FormEvent) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n var Value: string = event.currentTarget.value;\r\n commonBookingData.PostCTVentSettings = Value;\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n });\r\n }\r\n\r\n UpdateRowdataValues(value) {\r\n if (value == 'CTRequire') {\r\n var data = this.state.rowData;\r\n var modefiedRowData = data.map(cd => ({\r\n ...cd,\r\n cargoCare: cd.cargoCare,\r\n accessCodes: cd.accessCodes,\r\n bookedTemperature: cd.bookedTemperature,\r\n bookedTemperatureQualifier:cd.bookedTemperatureQualifier,\r\n bookedTemperatureMin: cd.bookedTemperatureMin,\r\n bookedTemperatureMax: cd.bookedTemperatureMax,\r\n humidity: cd.humidity,\r\n commodity: cd.commodity,\r\n STCC: cd.STCC,\r\n HS: cd.HS,\r\n gensetId: cd.gensetId,\r\n ventSetting: cd.ventSetting,\r\n HVFlag: cd.HVFlag,\r\n serviceLevel: cd.serviceLevel,\r\n CAFlag: 'false',\r\n O2Setpoint: '',\r\n O2SetpointMin: '',\r\n O2SetpointMax: '',\r\n CO2Setpoint: '',\r\n CO2SetpointMin: '',\r\n CO2SetpointMax: '',\r\n CTFlag: cd.CTFlag,\r\n CTDays: cd.CTDays,\r\n USDAMaxTemperature: cd.USDAMaxTemperature,\r\n postCTTemperature: cd.postCTTemperature,\r\n postCTTemperatureDeviation: cd.postCTTemperatureDeviation,\r\n postCTVentSetting: cd.postCTVentSetting\r\n }));\r\n \r\n this.setState({\r\n rowData: modefiedRowData});\r\n }\r\n else if(value == 'CARequire'){\r\n var data = this.state.rowData;\r\n var modefiedRowData = data.map(cd => ({\r\n ...cd,\r\n cargoCare: cd.cargoCare,\r\n accessCodes: cd.accessCodes,\r\n bookedTemperature: cd.bookedTemperature,\r\n bookedTemperatureQualifier: cd.bookedTemperatureQualifier,\r\n bookedTemperatureMin: cd.bookedTemperatureMin,\r\n bookedTemperatureMax: cd.bookedTemperatureMax,\r\n humidity: cd.humidity,\r\n commodity: cd.commodity,\r\n STCC: cd.STCC,\r\n HS: cd.HS,\r\n gensetId: cd.gensetId,\r\n ventSetting: cd.ventSetting,\r\n HVFlag: cd.HVFlag,\r\n serviceLevel: cd.serviceLevel,\r\n CAFlag: cd.CAFlag,\r\n O2Setpoint: cd.O2Setpoint,\r\n O2SetpointMin: cd.O2SetpointMin,\r\n O2SetpointMax: cd.O2SetpointMax,\r\n CO2Setpoint: cd.CO2Setpoint,\r\n CO2SetpointMin: cd.CO2SetpointMin,\r\n CO2SetpointMax: cd.CO2SetpointMax,\r\n CTFlag: 'false',\r\n CTDays: '',\r\n USDAMaxTemperature: '',\r\n postCTTemperature: '',\r\n postCTTemperatureDeviation: '',\r\n postCTVentSetting: ''\r\n }));\r\n \r\n this.setState({\r\n rowData: modefiedRowData});\r\n \r\n }\r\n else if (value == 'CACTNotRequired') {\r\n var data = this.state.rowData;\r\n var modefiedRowData = data.map(cd => ({\r\n ...cd,\r\n cargoCare: cd.cargoCare,\r\n accessCodes: cd.accessCodes,\r\n bookedTemperature: cd.bookedTemperature,\r\n bookedTemperatureQualifier: cd.bookedTemperatureQualifier,\r\n bookedTemperatureMin: cd.bookedTemperatureMin,\r\n bookedTemperatureMax: cd.bookedTemperatureMax,\r\n humidity: cd.humidity,\r\n commodity: cd.commodity,\r\n STCC: cd.STCC,\r\n HS: cd.HS,\r\n gensetId: cd.gensetId,\r\n ventSetting: cd.ventSetting,\r\n HVFlag: cd.HVFlag,\r\n serviceLevel: cd.serviceLevel,\r\n CAFlag: 'false',\r\n O2Setpoint:'',\r\n O2SetpointMin: '',\r\n O2SetpointMax: '',\r\n CO2Setpoint:'',\r\n CO2SetpointMin: '',\r\n CO2SetpointMax: '',\r\n CTFlag: 'false',\r\n CTDays: '',\r\n USDAMaxTemperature: '',\r\n postCTTemperature: '',\r\n postCTTemperatureDeviation: '',\r\n postCTVentSetting:''\r\n }));\r\n this.setState({\r\n rowData: modefiedRowData});\r\n \r\n }\r\n else if (value == 'CACTDifferByReefer') {\r\n var data = this.state.rowData;\r\n var modefiedRowData = data.map(cd => ({\r\n ...cd,\r\n cargoCare: cd.cargoCare,\r\n accessCodes: cd.accessCodes,\r\n bookedTemperature: cd.bookedTemperature,\r\n bookedTemperatureQualifier: cd.bookedTemperatureQualifier,\r\n bookedTemperatureMin: cd.bookedTemperatureMin,\r\n bookedTemperatureMax: cd.bookedTemperatureMax,\r\n humidity: cd.humidity,\r\n commodity: cd.commodity,\r\n STCC: cd.STCC,\r\n HS: cd.HS,\r\n gensetId: cd.gensetId,\r\n ventSetting: cd.ventSetting,\r\n HVFlag: cd.HVFlag,\r\n serviceLevel: cd.serviceLevel,\r\n CAFlag: cd.CAFlag,\r\n O2Setpoint: cd.O2Setpoint,\r\n O2SetpointMin: cd.O2SetpointMin,\r\n O2SetpointMax: cd.O2SetpointMax,\r\n CO2Setpoint: cd.CO2Setpoint,\r\n CO2SetpointMin: cd.CO2SetpointMin,\r\n CO2SetpointMax: cd.CO2SetpointMax,\r\n CTFlag: cd.CTFlag,\r\n CTDays: cd.CTDays,\r\n USDAMaxTemperature: cd.USDAMaxTemperature,\r\n postCTTemperature: cd.postCTTemperature,\r\n postCTTemperatureDeviation: cd.postCTTemperatureDeviation,\r\n postCTVentSetting: cd.postCTVentSetting\r\n }));\r\n this.setState({\r\n rowData: modefiedRowData});\r\n \r\n }\r\n }\r\n\r\n CACTShowHide(value) {\r\n if (value == 'CTRequire') {\r\n var commonBookingData = this.state.CommonBookingData;\r\n commonBookingData.CTRequire = true;\r\n commonBookingData.CARequire = false;\r\n commonBookingData.CACTNotRequired = false;\r\n commonBookingData.CACTDifferByReefer = false;\r\n commonBookingData.O2SetPoint = '';\r\n commonBookingData.O2Min = '';\r\n commonBookingData.O2Max = '';\r\n commonBookingData.CO2SetPoint = '';\r\n commonBookingData.CO2Min = '';\r\n commonBookingData.CO2Max = '';\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n }, () => {\r\n $('#CARequire1').hide();\r\n $('#CARequire2').hide();\r\n $('#CTRequire1').show();\r\n $('#CTRequire2').show();\r\n if (this.props.formState.isEdit || this.props.formState.CopyBookingNumber != '')\r\n { this.UpdateRowdataValues(value);}\r\n });\r\n \r\n\r\n }\r\n else if (value == 'CARequire') {\r\n var commonBookingData = this.state.CommonBookingData;\r\n commonBookingData.CTRequire = false;\r\n commonBookingData.CARequire = true;\r\n commonBookingData.CACTNotRequired = false;\r\n commonBookingData.CACTDifferByReefer = false;\r\n commonBookingData.CTDays = '';\r\n commonBookingData.CTMaxTemperature = '';\r\n commonBookingData.PostCTTemperature = '';\r\n commonBookingData.PostCTTemperatureRange = '';\r\n commonBookingData.PostCTVentSettings = '';\r\n\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n }, () => {\r\n $('#CTRequire1').hide();\r\n $('#CTRequire2').hide();\r\n $('#CARequire1').show();\r\n $('#CARequire2').show();\r\n if (this.props.formState.isEdit || this.props.formState.CopyBookingNumber != '')\r\n { this.UpdateRowdataValues(value);}\r\n });\r\n\r\n }\r\n else if ((value == 'CACTNotRequired') || (value == 'CACTDifferByReefer')) {\r\n var commonBookingData = this.state.CommonBookingData;\r\n if ((value == 'CACTNotRequired')) {\r\n if(this.props.formState.isEdit)\r\n { this.UpdateRowdataValues(value);}\r\n commonBookingData.CTRequire = false;\r\n commonBookingData.CARequire = false;\r\n commonBookingData.CACTNotRequired = true;\r\n commonBookingData.CACTDifferByReefer = false;\r\n commonBookingData.O2SetPoint = '';\r\n commonBookingData.O2Min = '';\r\n commonBookingData.O2Max = '';\r\n commonBookingData.CO2SetPoint = '';\r\n commonBookingData.CO2Min = '';\r\n commonBookingData.CO2Max = '';\r\n commonBookingData.CTDays = '';\r\n commonBookingData.CTMaxTemperature = '';\r\n commonBookingData.PostCTTemperature = '';\r\n commonBookingData.PostCTTemperatureRange = '';\r\n commonBookingData.PostCTVentSettings = '';\r\n }\r\n else if (value == 'CACTDifferByReefer') {\r\n if (this.props.formState.isEdit || this.props.formState.CopyBookingNumber != '')\r\n { this.UpdateRowdataValues(value);}\r\n commonBookingData.CTRequire = false;\r\n commonBookingData.CARequire = false;\r\n commonBookingData.CACTNotRequired = false;\r\n commonBookingData.CACTDifferByReefer = true;\r\n commonBookingData.O2SetPoint = '';\r\n commonBookingData.O2Min = '';\r\n commonBookingData.O2Max = '';\r\n commonBookingData.CO2SetPoint = '';\r\n commonBookingData.CO2Min = '';\r\n commonBookingData.CO2Max = '';\r\n commonBookingData.CTDays = '';\r\n commonBookingData.CTMaxTemperature = '';\r\n commonBookingData.PostCTTemperature = '';\r\n commonBookingData.PostCTTemperatureRange = '';\r\n commonBookingData.PostCTVentSettings = '';\r\n }\r\n this.setState({\r\n CommonBookingData: commonBookingData\r\n }, () => {\r\n $('#CTRequire1').hide();\r\n $('#CTRequire2').hide();\r\n $('#CARequire1').hide();\r\n $('#CARequire2').hide();\r\n });\r\n\r\n }\r\n }\r\n static BackScreen() {\r\n self.props.renderWizardPage(2, self.props.formState, 3);\r\n }\r\n static NextScreen() {\r\n\r\n //if (self.state.ReeferIds != null && self.state.ReeferIds != '' && self.state.ReeferIds != undefined)\r\n if (self.ValidateCommonReeferData()) {\r\n self.props.renderWizardPage(4, self.state, 3);\r\n }\r\n\r\n //else\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Please Select at least one Reefer.\");\r\n }\r\n public render() { \r\n return
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n Enter values that apply to all reefers associated with the booking. These values can be changed for each individual reefer in the next step.\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n Reefer IDs:\r\n
    \r\n
    \r\n
    \r\n\r\n {this.state.ReeferIds != undefined && this.state.ReeferIds != null && this.state.ReeferIds.length > 0 ? \r\n this.state.ReeferIds.map(f => {f}) : '-NA-'}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.BookedTemperatureChange(e)} className='form-control' />\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n this.BookedTemperatureMinChange(e)} className='form-control' />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {/*
    */}\r\n {/* this.CommodityNameChange(e)} className='form-control' title={this.state.CommonBookingData.CommodityName} />*/}\r\n {/*
    */}\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.BookedTemperatureMaxChange(e)} className='form-control' />\r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n this.GensetIdChange(e)} className='form-control' />\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.HumiditySetPointChange(e)} className='form-control' /> \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n this.VentSettingsChange(e)} className='form-control' />\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.HSCodeChange(e)} className='form-control' />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n this.STCCChange(e)} className='form-control' />\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.ServiceLevelChange(e)} className='form-control' />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n CA or CT not required :\r\n
    \r\n
    \r\n this.CACTShowHide('CACTNotRequired')} />\r\n
    \r\n\r\n
    \r\n Requires CT :\r\n
    \r\n
    \r\n this.CACTShowHide('CTRequire')} />\r\n
    \r\n\r\n\r\n
    \r\n Requires CA :\r\n
    \r\n
    \r\n this.CACTShowHide('CARequire')} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n CA and CT differ by reefer :\r\n
    \r\n
    \r\n this.CACTShowHide('CACTDifferByReefer')} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.O2SetPointChange(e)} className='form-control' />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n this.O2MinChange(e)} className='form-control' />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.O2MaxChange(e)} className='form-control' />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.CO2SetPointChange(e)} className='form-control' />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.CO2MinChange(e)} className='form-control' />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.CO2MaxChange(e)} className='form-control' />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n this.CTDaysChange(e)} className='form-control' />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n this.CTMaxTemperatureChange(e)} className='form-control' />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n this.PostCTTemperatureChange(e)} className='form-control' />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n this.PostCTTemperatureRangeChange(e)} className='form-control' />\r\n
    \r\n
    \r\n Post-CT Vent Settings : \r\n
    \r\n
    \r\n this.PostCTVentSettingsChange(e)} className='form-control' />\r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    ;\r\n\r\n }\r\n}\r\n\r\n\r\n","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport $ from 'jquery';\r\nimport forEach from 'lodash/forEach';\r\nimport { PopupWindow } from '../src/components/sharedcomponents/PopupWindow';\r\nimport UserRights from '../src/actions/UserRights';\r\nexport class RCUtils extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n //static FetchRequest(url: string): Request {\r\n // var myInit = {};\r\n // return new Request(url, myInit);\r\n //}\r\n\r\n static CheckAssesRightsForChassis(rightId: string) {\r\n var hasReefers: boolean = false;\r\n var hasGensets: boolean = false;\r\n var hasDrys: boolean = false;\r\n var hasChassis: boolean = false;\r\n var customerDetails: any = sessionStorage.getItem('customerDetails');\r\n var customer = JSON.parse(customerDetails);\r\n if (customer != null && customer != undefined) {\r\n if (customer.HasReefer)\r\n hasReefers = true;\r\n if (customer.HasGenset)\r\n hasGensets = true;\r\n if (customer.HasDry)\r\n hasDrys = true;\r\n if (customer.HasChassis)\r\n hasChassis = true;\r\n }\r\n if (UserRights.checkVisibility(rightId) == \"show\" && hasChassis == true) {\r\n return true;\r\n }\r\n else {\r\n\r\n return false;\r\n\r\n }\r\n }\r\n\r\n static HighlightCurrentGridRow(params, keyCode, selectedItems) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n if (keyCode === \"ReeferID\") {\r\n var reeferid = selectedrowNode.data.ReeferID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.ReeferID === reeferid)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(selectedItems, (index, item) => {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n }\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n }\r\n\r\n static CheckAssesRightsForDrys(rightId: string) {\r\n var hasReefers: boolean = false;\r\n var hasGensets: boolean = false;\r\n var hasDrys: boolean = false;\r\n var hasChassis: boolean = false;\r\n var customerDetails: any = sessionStorage.getItem('customerDetails');\r\n var customer = JSON.parse(customerDetails);\r\n if (customer != null && customer != undefined) {\r\n if (customer.HasReefer)\r\n hasReefers = true;\r\n if (customer.HasGenset)\r\n hasGensets = true;\r\n if (customer.HasDry)\r\n hasDrys = true;\r\n if (customer.HasChassis)\r\n hasChassis = true;\r\n }\r\n if (UserRights.checkVisibility(rightId) == \"show\" && hasDrys == true) {\r\n return true;\r\n }\r\n else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n static CheckAssesRightsForReefers(rightId: string) {\r\n var hasReefers: boolean = false;\r\n var hasGensets: boolean = false;\r\n var hasDrys: boolean = false;\r\n var hasChassis: boolean = false;\r\n var customerDetails: any = sessionStorage.getItem('customerDetails');\r\n var customer = JSON.parse(customerDetails);\r\n if (customer != null && customer != undefined) {\r\n if (customer.HasReefer)\r\n hasReefers = true;\r\n if (customer.HasGenset)\r\n hasGensets = true;\r\n if (customer.HasDry)\r\n hasDrys = true;\r\n if (customer.HasChassis)\r\n hasChassis = true;\r\n }\r\n if (UserRights.checkVisibility(rightId) == \"show\" && hasReefers == true) {\r\n return true;\r\n }\r\n else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n static CheckAssesRightsForGensets(rightId: string) {\r\n var hasReefers: boolean = false;\r\n var hasGensets: boolean = false;\r\n var hasDrys: boolean = false;\r\n var hasChassis: boolean = false;\r\n var customerDetails: any = sessionStorage.getItem('customerDetails');\r\n var customer = JSON.parse(customerDetails);\r\n if (customer != null && customer != undefined) {\r\n if (customer.HasReefer)\r\n hasReefers = true;\r\n if (customer.HasGenset)\r\n hasGensets = true;\r\n if (customer.HasDry)\r\n hasDrys = true;\r\n if (customer.HasChassis)\r\n hasChassis = true;\r\n }\r\n if (UserRights.checkVisibility(rightId) == \"show\" && hasGensets == true) {\r\n return true;\r\n }\r\n else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n static CheckAssesRightsOnly(rightId: string) {\r\n\r\n if (UserRights.checkVisibility(rightId) == \"show\") {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n\r\n }\r\n static FetchRequest(url: string, options?: any) {\r\n var myInit = {};\r\n var requestHeaders = new Headers();\r\n requestHeaders.append('pragma', 'no-cache');\r\n requestHeaders.append('cache-control', 'no-cache');\r\n\r\n var JWTToken = sessionStorage.getItem('JWTToken');\r\n if (JWTToken != undefined && JWTToken != null) {\r\n requestHeaders.append(\"Authorization\", \"baerer \" + JWTToken);\r\n }\r\n\r\n myInit = {\r\n headers: requestHeaders\r\n };\r\n if (options != undefined && options != null) {\r\n if (options.headers != undefined) {\r\n //requestHeaders = options.headers;\r\n forEach(options.headers, function (value, key) {\r\n requestHeaders.append(key, value);\r\n });\r\n }\r\n\r\n myInit = {\r\n method: options.method,\r\n headers: requestHeaders,\r\n body: options.body\r\n };\r\n }\r\n return new Request(url, myInit);\r\n }\r\n static handleError(response, request?: Request): Promise {\r\n if (parseInt(response.status) != 200) {\r\n $('.loader-global').hide();\r\n }\r\n\r\n if (response.status == \"401\") {\r\n //response.text().then(function (text) {\r\n // PopupWindow.showErrorMessage('Error', text);\r\n //});\r\n window.location.href = \"unauthorized\";\r\n }\r\n //if (!response.ok) throw new Error(response.statusText);\r\n\r\n if (response.status == \"500\") {\r\n var responsetext = '';\r\n response.text().then(function (text) {\r\n PopupWindow.showErrorMessage('Error', 'Error occurred. Please try again.');\r\n //responsetext = text;\r\n //var responsejson = JSON.parse(text);\r\n //if (responsejson.FaultCanRetry == true) {\r\n\r\n //}\r\n });\r\n //throw new Error(response.statusText) \r\n }\r\n\r\n return response;\r\n }\r\n static handleOktaError(response, request?: Request): Promise {\r\n if (parseInt(response.status) != 200) {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n }\r\n\r\n if (response.status == \"401\") {\r\n //response.text().then(function (text) {\r\n // PopupWindow.showErrorMessage('Error', text);\r\n //});\r\n window.location.href = \"unauthorized\";\r\n }\r\n\r\n if (response.status == \"500\") {\r\n var responsetext = '';\r\n response.text().then(function (text) {\r\n PopupWindow.showErrorMessage('Login Error', 'Error occurred. Please try again.');\r\n });\r\n }\r\n\r\n return response;\r\n }\r\n static handleResponse(response): Promise {\r\n return response;\r\n }\r\n static retryError(response, request?: Request): Promise {\r\n if (response.status == \"401\") {\r\n //response.text().then(function (text) {\r\n // PopupWindow.showErrorMessage('Error', text);\r\n //});\r\n window.location.href = \"unauthorized\";\r\n }\r\n //if (!response.ok) throw new Error(response.statusText);\r\n\r\n if (response.status == \"500\") {\r\n throw new Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n static readresponse(response) {\r\n var deferred = $.Deferred();\r\n var test_data = \"Hello World!\"\r\n\r\n // SIMULATE SOME TIME TO PROCESS FUNCTION\r\n setTimeout(function () {\r\n // This line is what resolves the deferred object\r\n // and it triggers the .done to execute\r\n deferred.resolve(test_data);\r\n }, 2000) // AFTER 2 SECONDS IT WILL RETURN\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static fetchRetry(request: Request, delay = 1000, limit = 3) {\r\n return new Promise((resolve, reject) => {\r\n function success(response) {\r\n resolve(response);\r\n }\r\n function failure(error) {\r\n limit--;\r\n if (limit) {\r\n setTimeout(fetchUrl, delay)\r\n }\r\n else {\r\n // this time it failed for real\r\n reject(error);\r\n }\r\n }\r\n function finalHandler(finalError) {\r\n throw finalError;\r\n }\r\n function fetchUrl() {\r\n var newrequest = new Request(request.clone());\r\n return fetch(newrequest)\r\n .then(RCUtils.retryError)\r\n .then(success)\r\n .catch(failure)\r\n .catch(finalHandler);\r\n }\r\n fetchUrl();\r\n });\r\n\r\n }\r\n static faultretryResponse1(response) {\r\n return new Promise((resolve, reject) => {\r\n function success(response) {\r\n resolve(response);\r\n }\r\n function failure(error) {\r\n reject(error);\r\n }\r\n function finalHandler(finalError) {\r\n throw finalError;\r\n }\r\n function fetchResponse() {\r\n response.clone().text().then(function (text) {\r\n var responsejson = JSON.parse(text);\r\n if (responsejson.FaultCanRetry == true) {\r\n throw new Error(response.statusText);\r\n }\r\n })\r\n .then(success)\r\n .catch(failure)\r\n .catch(finalHandler);\r\n }\r\n fetchResponse();\r\n })\r\n }\r\n static faultretryResponse(fresponse) {\r\n return new Promise((resolve, reject) => {\r\n function success(response) {\r\n resolve(fresponse);\r\n //resolve({\r\n // data: fresponse.json(),\r\n // status: response.status\r\n //});\r\n }\r\n function failure(error) {\r\n reject(error);\r\n }\r\n fresponse.clone().text().then(function (text) {\r\n var responsejson = JSON.parse(text);\r\n if (responsejson.FaultCanRetry == true) {\r\n throw new Error(fresponse.statusText);\r\n }\r\n })\r\n .then(success)\r\n .catch(failure)\r\n });\r\n }\r\n static fetchFaultRetry(request: Request) {\r\n var delay = 1000, retrycount = 0;\r\n return new Promise((resolve, reject) => {\r\n function success(response) {\r\n resolve(response);\r\n }\r\n function failure(error) {\r\n retrycount++;\r\n setTimeout(fetchUrl, delay);\r\n\r\n }\r\n function finalHandler(finalError) {\r\n throw finalError;\r\n }\r\n function fetchUrl() {\r\n var newrequest = new Request(request.clone());\r\n //newrequest.headers.append('retrycount', retrycount.toString());\r\n return fetch(newrequest)\r\n .then(RCUtils.faultretryResponse)\r\n .then(success)\r\n .catch(failure)\r\n .catch(finalHandler);\r\n }\r\n fetchUrl();\r\n });\r\n\r\n }\r\n\r\n static RenderChildComponent(elementid, reactelement: React.ComponentElement, delay: number = 500) {\r\n //setTimeout(function () {\r\n // $(document).ready(function () { \r\n // ReactDom.render(reactelement, document.getElementById(elementid));\r\n // })\r\n //}, delay);\r\n var selector = '#' + elementid;\r\n var waitForEl = function (selector, callback) {\r\n if ($(selector).length) {\r\n callback();\r\n } else {\r\n setTimeout(function () {\r\n waitForEl(selector, callback);\r\n }, delay);\r\n }\r\n };\r\n waitForEl(selector, function () {\r\n ReactDom.render(reactelement, document.getElementById(elementid));\r\n });\r\n }\r\n}\r\n\r\n\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { Home } from './routecomponents/Home';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport \"../../node_modules/react-toggle-switch/dist/css/switch.min.css\";\r\nimport { PopupWindow } from './sharedcomponents/PopupWindow';\r\nimport UserRights from '../actions/UserRights';\r\nimport { RCUtils } from './../RCUtils';\r\nimport { LicenseManager } from \"ag-grid-enterprise\";\r\n//import OrbcommLogo from './../images/ORBCOMMLOGOR.svg';\r\nconst OrbcommLogo = require(\"./../images/ORBCOMMLOGOR.svg\");\r\n\r\nLicenseManager.setLicenseKey(\"Using_this_{AG_Grid}_Enterprise_key_{AG-058318}_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_legal@ag-grid.com___For_help_with_changing_this_key_please_contact_info@ag-grid.com___{Orbcomm_Inc.}_is_granted_a_{Single_Application}_Developer_License_for_the_application_{ReeferConnect}_only_for_{6}_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_working_on_{ReeferConnect}_need_to_be_licensed___{ReeferConnect}_has_been_granted_a_Deployment_License_Add-on_for_{1}_Production_Environment___This_key_works_with_{AG_Grid}_Enterprise_versions_released_before_{14_June_2025}____[v3]_[01]_MTc0OTg1NTYwMDAwMA==18c5b72d085c0d63ea61892cabbf30ac\");//RCNG-1849\r\nvar Config: any = require('../Config.json');\r\n\r\n\r\ninterface MenuState {\r\n isSwitched: boolean;\r\n hasLoggedUrl: boolean;\r\n userLoginState: boolean;\r\n StickyClass: string;\r\n //IsDefaultDashboard: boolean;\r\n IsReadOnly: boolean;\r\n DashboardName: string;\r\n LayoutTypeUser: boolean;\r\n LayoutTypeCustomer: boolean;\r\n LayoutState: string;\r\n DashboardPreferenceId: any;\r\n LayoutTitle: any;\r\n RevisionNum: any;\r\n}\r\n\r\nvar isCustomAttributesEnable: boolean;\r\nvar self;\r\nexport class NavMenu extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isSwitched: false,\r\n hasLoggedUrl: true,\r\n userLoginState: true,\r\n StickyClass: '',\r\n //IsDefaultDashboard: false,\r\n IsReadOnly: false,\r\n DashboardName: '',\r\n LayoutTypeUser: true,\r\n LayoutTypeCustomer: false,\r\n LayoutState: '',\r\n DashboardPreferenceId: 0,\r\n LayoutTitle: '',\r\n RevisionNum: 0\r\n };\r\n\r\n isCustomAttributesEnable = JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable;\r\n self = this;\r\n }\r\n\r\n\r\n\r\n toggleSwitch = () => {\r\n this.setState(prevState => {\r\n return {\r\n isSwitched: !prevState.isSwitched\r\n };\r\n });\r\n };\r\n\r\n logoutUser() {\r\n var userName = JSON.parse(sessionStorage.getItem('UserInfo')).Username;\r\n localStorage.setItem('login_status', 'logged_out' + '&' + userName);\r\n if (sessionStorage.getItem('okta-token-storage') != null || sessionStorage.getItem(\"azureInit\") != null) {\r\n //this.props.history.push('/OktaLogout');\r\n }\r\n else if (sessionStorage.getItem(\"region\") == \"US\") {\r\n //this.setState({ userLoginState: false });\r\n \r\n //sessionStorage.removeItem(\"UserInfo\");\r\n //sessionStorage.removeItem(\"root\");\r\n //sessionStorage.removeItem('QueryTag');\r\n //sessionStorage.removeItem('DashboardPreferenceId');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n window.location.href = \"/US\";\r\n \r\n }\r\n else if (sessionStorage.getItem(\"region\") == \"AU\") {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n sessionStorage.removeItem('DashboardPreferenceId');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n //this.setState({ userLoginState: false });\r\n window.location.href = \"/AU\";\r\n } else if (sessionStorage.getItem(\"region\") == \"EU\") {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n sessionStorage.removeItem('DashboardPreferenceId');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n //this.setState({ userLoginState: false });\r\n window.location.href = \"/EU\";\r\n } else if (sessionStorage.getItem(\"region\") == \"UK\") {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n sessionStorage.removeItem('DashboardPreferenceId');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n //this.setState({ userLoginState: false });\r\n window.location.href = \"/UK\";\r\n } else if (sessionStorage.getItem(\"region\") == \"JP\") {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n sessionStorage.removeItem('DashboardPreferenceId');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n //this.setState({ userLoginState: false });\r\n window.location.href = \"/JP\";\r\n }\r\n else {\r\n sessionStorage.removeItem(\"UserInfo\");\r\n sessionStorage.removeItem(\"root\");\r\n sessionStorage.removeItem('QueryTag');\r\n sessionStorage.removeItem('DashboardPreferenceId');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n this.setState({ userLoginState: false });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n var uri = JSON.parse(sessionStorage.getItem('UserInfo')).LogonUri;\r\n if (uri == null) this.setState({ hasLoggedUrl: false });\r\n\r\n }\r\n\r\n fnCancelLayout() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n //onDefaultCheck(event: React.FormEvent) {\r\n //var DefaultCheckBoxState: any = event.currentTarget.checked;\r\n //this.setState({ IsDefaultDashboard: DefaultCheckBoxState });\r\n //}\r\n\r\n onReadOnlyCheck(event: React.FormEvent) {\r\n var ReadOnlyCheckBoxState: any = event.currentTarget.checked;\r\n this.setState({ IsReadOnly: ReadOnlyCheckBoxState });\r\n }\r\n DashboardNamechange(event: React.FormEvent) {\r\n //var params = this.state.Params;\r\n var Value: string = event.currentTarget.value;\r\n if (Value.length > 100)\r\n return false;\r\n //params.FenceName = Value;\r\n\r\n this.setState({\r\n DashboardName: Value\r\n });\r\n }\r\n\r\n LayoutTypeChange(value: any) {\r\n if (value == \"User\")\r\n this.setState({\r\n LayoutTypeUser: true,\r\n LayoutTypeCustomer: false,\r\n //IsReadOnly: false\r\n });\r\n else\r\n this.setState({\r\n LayoutTypeCustomer: true,\r\n LayoutTypeUser: false,\r\n });\r\n }\r\n\r\n static setEditLayout(layoutPreferences: any, dashboardPreferenceId: any, layoutState: any) {\r\n self.setState({\r\n LayoutTitle: 'Edit Dashboard', LayoutState: layoutState, DashboardName: layoutPreferences[0].PreferenceName, LayoutTypeCustomer: layoutPreferences[0].IsCustomerDashboard == true ? true : false,\r\n LayoutTypeUser: layoutPreferences[0].IsCustomerDashboard == false ? true : false,\r\n //IsDefaultDashboard: layoutPreferences[0].IsDefault,\r\n IsReadOnly: layoutPreferences[0].IsReadOnly,\r\n DashboardPreferenceId: dashboardPreferenceId, RevisionNum: layoutPreferences[0].RevisionNum\r\n }, () => $('#btnTriggerLayoutPopup').click());\r\n }\r\n\r\n static setNewLayout(layoutState: any) {\r\n self.setState({\r\n LayoutTitle: 'Create New Dashboard', LayoutState: layoutState, DashboardName: '', LayoutTypeCustomer: false, LayoutTypeUser: true,\r\n //IsDefaultDashboard: false, \r\n IsReadOnly: false, DashboardPreferenceId: 0, RevisionNum: 0\r\n }, () => $('#btnTriggerLayoutPopup').click());\r\n\r\n }\r\n\r\n saveLayout() {\r\n if (this.state.LayoutState == \"New\") {\r\n var layoutType: any = this.state.LayoutTypeCustomer == true ? true : false;\r\n var layoutName: any = this.state.DashboardName;\r\n //var defaultLayout: any = this.state.IsDefaultDashboard;\r\n var readOnlyLayout: any = this.state.IsReadOnly;\r\n\r\n Home.SaveUserDashboardLayout(layoutType, layoutName, readOnlyLayout);\r\n }\r\n else if (this.state.LayoutState == \"Edit\") {\r\n var layoutType: any = this.state.LayoutTypeCustomer == true ? true : false;\r\n var layoutName: any = this.state.DashboardName;\r\n //var defaultLayout: any = this.state.IsDefaultDashboard;\r\n var readOnlyLayout: any = this.state.IsReadOnly;\r\n var dashboardPreferenceId: any = this.state.DashboardPreferenceId;\r\n var revisionNum: any = this.state.RevisionNum;\r\n\r\n Home.UpdateUserDashboardLayout(layoutType, layoutName, readOnlyLayout, dashboardPreferenceId, revisionNum);\r\n }\r\n\r\n }\r\n /* RCNG-3190 Fix*/\r\n navigateDeviceFirmware()\r\n {\r\n window.location.href = '/rcdfirmwaredistribute';\r\n }\r\n navigateReeferSoftware() {\r\n window.location.href = '/reefersoftwaredistribute';\r\n }\r\n navigateGeofences() {\r\n window.location.href = '/geofencedistribute';\r\n }\r\n\r\n\r\n public render() {\r\n var hasReefers: boolean = false;\r\n var hasGensets: boolean = false;\r\n var hasDrys: boolean = false;\r\n var hasChassis: boolean = false;\r\n\r\n var customer = JSON.parse(sessionStorage.getItem('customerDetails'));\r\n if (customer != null && customer != undefined) {\r\n if (customer.HasReefer)\r\n hasReefers = true\r\n if (customer.HasGenset)\r\n hasGensets = true;\r\n if (customer.HasDry)\r\n hasDrys = true;\r\n if (customer.HasChassis)\r\n hasChassis = true;\r\n }\r\n if (!this.state.userLoginState)\r\n window.location.href = window.location.hostname;\r\n\r\n //var disableReadOnly: any = false;\r\n var disabledLayoutName: any = false;\r\n if (this.state.LayoutState == \"Edit\")\r\n disabledLayoutName = true;\r\n\r\n //if (this.state.LayoutTypeUser == true)\r\n // disableReadOnly = true;\r\n\r\n return
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.LayoutTitle}
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    Dashboard Type :
    \r\n
    \r\n
    \r\n this.LayoutTypeChange('User')} />\r\n \r\n
    \r\n
    \r\n this.LayoutTypeChange('Customer')} />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    this.DashboardNamechange(e)} value={this.state.DashboardName} />
    \r\n
    \r\n {/*
    */}\r\n {/*
    My Default :
    */}\r\n {/*
    this.onDefaultCheck(e)} checked={this.state.IsDefaultDashboard} />
    */}\r\n {/*
    */}\r\n
    \r\n
    Read Only :
    \r\n
    this.onReadOnlyCheck(e)} checked={this.state.IsReadOnly} />
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAFEmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0wMy0yMVQxMjo0MTowNiswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDMtMjFUMTI6NDI6NTIrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMDMtMjFUMTI6NDI6NTIrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NGMxMGJhNTktYjUwNy01YTQwLTk4YjUtNjgxZjhkODc4MGQ2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjRjMTBiYTU5LWI1MDctNWE0MC05OGI1LTY4MWY4ZDg3ODBkNiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjRjMTBiYTU5LWI1MDctNWE0MC05OGI1LTY4MWY4ZDg3ODBkNiI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NGMxMGJhNTktYjUwNy01YTQwLTk4YjUtNjgxZjhkODc4MGQ2IiBzdEV2dDp3aGVuPSIyMDE4LTAzLTIxVDEyOjQxOjA2KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkB2GXIAAAIGSURBVDiNtdXPSxZRFMbxz4w/QIKgCIIg4kUw2kmtlCwRdWNElEHRoj9Agxd6V/0LuoisZctykYVEm1ICM3SRmbgrEIkgCFpU0MaiaTFncJzecBEduDDz3Od8uXfuuWeSCU1jD07iFHrRE/oylvACL/G9kWU7ElubwLpxE6fj/RPexPMx9OMGFlDHWjk5rcDqWAnYLYzE6spjJOZOY2UySeplQFLa8hhu4y2uYa7J6ssxhCkcxXgjy+6UgcfxGu8wjPe7wIo4gmfowolGlq2m6ECx0LGApWFuawJpi7k0vGOhT0wmSUcq/8gDsfz5mDyEddxHSwnWEtp6eDSybD5yB9Cfoi/Mj0uJ3wI+ipmSPhPafHiKKHL7WuUn9xkbFeBl3AvAw9DPBfQKtkr+jWD0pPLC3cCmnbGFiwE4H2MmtDJMI8s2g9FbrcN/jlR+lTpRq8y144F8y49ijIbWXjZOJkktGEup/H4eCKGIvZgOwCwuxJgNbTo8RXQGYznFYohnK8BB26daRHHqgxVgkbuYTOSF/UReR0PykkhxGB/xo/Ip2uQ1+AG/Aj6H5zjzX64erGI8Jp7GSneLofB2yZvDKrQMbxte4Ssu4Sr2y7f+E1/CU5PX7bi8M+3D9UaWTRWQpEnH7vZngy2KvoaD8byAeiPL1srJzTr2mryJ/u0XcFfpF1BN/g2YBI1QAINmeQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFEmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0wMy0xNVQxNjoyMzo1MyswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDMtMjFUMTI6MTI6MDUrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMDMtMjFUMTI6MTI6MDUrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjRmNmE4YjYtYWRmOC1mNjQ4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\"","import * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport ReeferStatus from '../routecomponents/ReeferStatus';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\n\r\nimport VesselStatus from '../routecomponents/VesselStatus';\r\nimport ReeferDetails from '../routecomponents/ReeferDetails';\r\nimport RcdStatus from '../routecomponents/RcdStatus';\r\nimport { ReeferStatusGrid } from '../childcomponents/ReeferStatusGrid';\r\nimport { ReeferStatusSSRMGrid } from '../childcomponents/ReeferStatusSSRMGrid';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from '../sharedcomponents/GridToolBarPopups';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../Config.json');\r\n\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface ReeferCommandsGridState {\r\n rowData: server.USP_UnitCurrentConditionUI_Model[];\r\n columnDefs: any[];\r\n Filters: ForwardCommandParams;\r\n TraditionalDownload: server.TraditionalDownload;\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n GridToolBarHtml: any;\r\n OtherValue: any;\r\n}\r\n\r\nvar colDefs;\r\nvar self;\r\n\r\n\r\nexport class ReeferCommandsGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ForwardCommandParams();\r\n var overlayTemplate = 'Loading...';\r\n this.state = {\r\n rowData: [], columnDefs: [], Filters: filterSet, TraditionalDownload: null,\r\n overlayLoadingTemplate: overlayTemplate, pageSize: 25, gridApiParams: [],\r\n VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml: '', OtherValue: null\r\n };\r\n\r\n self = this;\r\n }\r\n\r\n static submitTemperatureCommands(commandName, paramValue, refreshGrid) {\r\n if (self.state.rowData.length > 0) {\r\n var selectedData = self.state.VCCheckBoxInfo.selectedVCData;\r\n if (self.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0)) { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.rowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = self.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = self.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n }\r\n\r\n if ($('#confirmPopUpModel') != undefined) {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n\r\n $(\"#contextMenuModel .btn-close\").click();\r\n\r\n if (refreshGrid == \"details\")\r\n ReeferDetails.refreshReeferDetailsData();\r\n else if (refreshGrid == \"home\") {\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n else {\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n }\r\n else if (refreshGrid == \"vessel\")\r\n VesselStatus.refreshVesselStatusGrid();\r\n else if (refreshGrid == \"Devicestatus\")\r\n RcdStatus.refreshDeviceStatusGrid();\r\n else\r\n ReeferStatus.refreshReeferStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\"); \r\n }\r\n\r\n static submitCommands(commandName, paramValue, refreshGrid) {\r\n if (self.state.rowData.length > 0) {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.rowData;\r\n self.state.Filters.TraditionalDownload = paramValue;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result); \r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n }\r\n $(\"#contextMenuModel .btn-close\").click();\r\n if (refreshGrid == \"details\")\r\n ReeferDetails.refreshReeferDetailsData();\r\n else if (refreshGrid == \"home\") {\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n ReeferStatusSSRMGrid.refreshDashboardGrid();\r\n }\r\n else {\r\n ReeferStatusGrid.refreshDashboardGrid();\r\n }\r\n }\r\n else if (refreshGrid == \"vessel\")\r\n VesselStatus.refreshVesselStatusGrid();\r\n else\r\n ReeferStatus.refreshReeferStatusGrid();\r\n });\r\n\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n var changeReportingIntervalAction = nextprops.changeReportingIntervalAction;\r\n var ChangeO2andCo2Action = nextprops.ChangeO2andCo2Action;\r\n var changeAssetConfigAction = nextprops.assetConfigAction;\r\n var GetFreshAirType = nextprops.GetFreshAirType;\r\n var autoConfig = nextprops.autoConfig;\r\n if (changeReportingIntervalAction == true) {\r\n colDefs = this.createColumnDefsForCRI();\r\n }\r\n else if (ChangeO2andCo2Action == true) {\r\n colDefs = this.createColumnDefsForO2andCo2();\r\n }\r\n else if (changeAssetConfigAction == true) {\r\n colDefs = this.createColumnDefsForAssetConfig();\r\n }\r\n else if (GetFreshAirType == true) {\r\n colDefs = this.createColumnDefsForGetFreshAirType();\r\n }\r\n else {\r\n colDefs = this.createColumnDefs(autoConfig);\r\n }\r\n\r\n var reeferData = nextprops.selectedReefers;\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ rowData: reeferData }, () => this.renderGridToolBar());\r\n }\r\n\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n componentDidMount() { \r\n var changeReportingIntervalAction = this.props.changeReportingIntervalAction;\r\n var ChangeO2andCo2Action = this.props.ChangeO2andCo2Action;\r\n var changeAssetConfigAction = this.props.assetConfigAction;\r\n var GetFreshAirType = this.props.GetFreshAirType;\r\n var autoConfig = this.props.autoConfig;\r\n if (changeReportingIntervalAction == true) {\r\n colDefs = this.createColumnDefsForCRI();\r\n }\r\n else if (ChangeO2andCo2Action == true) {\r\n colDefs = this.createColumnDefsForO2andCo2();\r\n }\r\n else if (changeAssetConfigAction == true) {\r\n colDefs = this.createColumnDefsForAssetConfig();\r\n }\r\n else if (GetFreshAirType == true) {\r\n colDefs = this.createColumnDefsForGetFreshAirType();\r\n }\r\n else {\r\n colDefs = this.createColumnDefs(autoConfig);\r\n }\r\n\r\n \r\n \r\n \r\n \r\n\r\n if (this.props.formName != null && this.props.formName != undefined && this.props.formName != '') {\r\n if (this.props.formName == 'MultipleSetPoints') {\r\n var containerHeight = $('.containerstyle_commands').height();\r\n $('.containerstyle_commands').height(containerHeight - 100);\r\n }\r\n } \r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n refreshGrid = () => {\r\n /* if (this.props.From == \"Device\") {\r\n var selectedRcds = \"\";\r\n if (this.state.rowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.rowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var rcdSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null, SelectedAssetType: null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(rcdSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ rowData: data }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n }\r\n else { } */\r\n var selectedReefers = \"\";\r\n if (this.state.rowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.rowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.ReeferID != null) {\r\n selectedReefers = selectedReefers == \"\" ? selectedValue.ReeferID : selectedReefers + \",\" + selectedValue.ReeferID;\r\n }\r\n });\r\n var reeferSearchFilters: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedReefer: selectedReefers, SelectedGeofence: '', SelectedInterval: '', SelectedGeofenceInside: '', SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n }, () => {\r\n this.renderGridToolBar();\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: data, CommandName: this.props.commandName, TempValue: \"\", OtherValue: self.state.OtherValue, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n var forwardCommandParams = JSON.stringify(filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ rowData: data }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n\r\n });\r\n });\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n \r\n };\r\n\r\n reeferTypeFormatter(params: any) {\r\n if (params.data.UnitTypeCd != null && params.data.UnitTypeCd != \"\") {\r\n var reeferType = this.props.reeferFormatter.UnitTypesList.filter(e => e.UnitTypeCd === params.data.UnitTypeCd);\r\n return reeferType[0].Description.toString();\r\n }\r\n } \r\n \r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n static UpdateOtherValue(value: any) {\r\n self.setState({ OtherValue: value });\r\n }\r\n //26724 - added missing parameter\r\n createColumnDefsForAssetConfig() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Device config\", field: \"DeviceConfig\", cellRenderer: Formatters.GuestReeferModeFormatter, width: 120 },\r\n { headerName: \"Device type\", field: \"DeviceType\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 120 },\r\n { headerName: \"Reefer type\", field: \"UnitTypeCd\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, valueGetter: (params) => { return this.reeferTypeFormatter(params); }, width: 150 },\r\n { headerName: \"T set\", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n {\r\n headerName: \"Last event\", field: \"EventDescription\",\r\n cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList,\r\n self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts);\r\n }, width: 150\r\n },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Assigned to\", field: \"CustomerName\", cellRenderer: ReeferCellRenderer.StringTypeFormatterFor3P, width: 130 }\r\n ];\r\n }\r\n //26724 - added missing parameter\r\n createColumnDefs(autoConfig: any) {\r\n if (autoConfig)\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n { headerName: \"Last event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 },\r\n ];\r\n else\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n {\r\n headerName: \"Last event\", field: \"EventDescription\",\r\n cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList,\r\n self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts);\r\n }, width: 150\r\n },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 },\r\n ];\r\n }\r\n //26724 - added missing parameter\r\n createColumnDefsForCRI() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"T set\", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n {\r\n headerName: \"Last event\", field: \"EventDescription\",\r\n cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList,\r\n self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts\r\n );\r\n }, width: 150\r\n },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 }\r\n ];\r\n }\r\n //26724 - added missing parameter\r\n createColumnDefsForO2andCo2() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"CO2 set \", field: \"CO2Setpoint\", width: 90, cellRenderer: Formatters.sensorDataFormatter },\r\n { headerName: \"O2 set \", field: \"O2Setpoint\", width: 90, cellRenderer: Formatters.sensorDataFormatter },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n {\r\n headerName: \"Last event\", field: \"EventDescription\",\r\n cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList,\r\n self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts);\r\n }, width: 150\r\n },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 },\r\n ];\r\n }\r\n //26724 - added missing parameter\r\n createColumnDefsForGetFreshAirType() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 80, cellRenderer: ReeferCellRenderer.CommandValidator, tooltipField: \"Tooltip\" },\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.statusIndicatorforALM },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"T set \", field: \"SetPoint\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T sup 1 \", field: \"SupplyTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n { headerName: \"T rtn 1 \", field: \"ReturnTemp1\", width: 90, cellRenderer: Formatters.TemperatureFormatter, headerValueGetter: Formatters.TempHeaderFormatter },\r\n {\r\n headerName: \"Last event\", field: \"EventDescription\",\r\n cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList,\r\n self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts);\r\n }, width: 150\r\n },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmListFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n //alert(this.state.pageSize);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml} \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ForwardCommandParams {\r\n SelectedReefers: server.USP_UnitCurrentConditionUI_Model[];\r\n CommandName: string;\r\n TempValue: any;\r\n TraditionalDownload: server.TraditionalDownload;\r\n IsCmdSendViaVC?: Boolean\r\n VesselInfo: server.VesselInformation; \r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF3WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0wMy0xNVQxNjoyMzo1MyswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDMtMjFUMTI6MTk6NTkrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMDMtMjFUMTI6MTk6NTkrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MmMyOTNjNDctNjNiNi03MzQ1LTlkYTgtMWNjNzdiMjY0ZjQxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOmQxNDIwNTQ3LTI5MDktZTQ0OC1hNjQ5LTkyYzU0ZTNkZGZlZCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmQxNDIwNTQ3LTI5MDktZTQ0OC1hNjQ5LTkyYzU0ZTNkZGZlZCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZDE0MjA1NDctMjkwOS1lNDQ4LWE2NDktOTJjNTRlM2RkZmVkIiBzdEV2dDp3aGVuPSIyMDE4LTAzLTE1VDE2OjIzOjUzKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyYzI5M2M0Ny02M2I2LTczNDUtOWRhOC0xY2M3N2IyNjRmNDEiIHN0RXZ0OndoZW49IjIwMTgtMDMtMjFUMTI6MTk6NTkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+tYjNMQAAAXpJREFUOI2t1D9IlVEYx/HPDTWyREEkImmQRAwSDJocXUJaGmxpc4gQDfyDlA4lutnWFE4O7gatDdJk4V3NSWrKRCgEwa55G8559XT1Sr75g5f3vM97zu98z/Occwrlctl5qgY6X13IO74ed3ADn9fGD4q5naIGsYg+NB0S5tQoxtGAr9iEvISjGMNVbOELfuQl7McztMTvWmG5l/IQ3saLxAya0Y32sxpewRxuVcQ38TMjPGnJ9biIXezFWA0eogeFGNvHGl4LlS5VI3yMBdxLYs2YipSZVoVtMx8nL1US3sUw7uMyvuFtbA+gNem7jEl8rKTJDJ/gKToS6i60CfkZQV2MFzGDFfyuNMwGr0ea7eTfTWGvDTiq6nfMRsJjZinhhzjzCobQK+TtEXZin194iXdCQU5URrgfl7aEifguo9FR7t7Ep1TNLDVMVRROwlIS+4RpHJxmRvWjtx5Jr+Manvs7v2c2hA2hKA/w/l/MoHDeN/b/XrDH9Ad6RE3+PkTpTAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAXCAYAAAARIY8tAAAACXBIWXMAAC4jAAAuIwF4pT92AAAJc2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMTEtMTZUMTQ6NTc6MTkrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMTEtMjZUMTU6MzY6MTgrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTExLTI2VDE1OjM2OjE4KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiZDQ4YWZjMi1hMGM2LTIxNGEtOWViYy1lMWI1N2Q4ZWI3MTkiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4NDQ5MWQ3Zi1hMjIzLWVlNDMtODc2Yy03MmQ5MjRlZDA4ODkiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxNzUyNjgzYS0zOGE5LWRiNDUtOTQ4Ny0zOTg0Njc4OTYxNTUiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MTc1MjY4M2EtMzhhOS1kYjQ1LTk0ODctMzk4NDY3ODk2MTU1IiBzdEV2dDp3aGVuPSIyMDE4LTExLTE2VDE0OjU3OjE5KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphYTEyYjExNC03MmE5LTNjNDEtOWNmOC1mYzIwYTYyYzcyMzAiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTZUMTQ6NTk6MDIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjczNWNkY2RjLTNlZDctMTM0Yi1iZGQ2LTUyMWE5M2QyNzFlZiIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNlQxNDo1OTowMiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YmQ0OGFmYzItYTBjNi0yMTRhLTllYmMtZTFiNTdkOGViNzE5IiBzdEV2dDp3aGVuPSIyMDE4LTExLTI2VDE1OjM2OjE4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphYTEyYjExNC03MmE5LTNjNDEtOWNmOC1mYzIwYTYyYzcyMzAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTc1MjY4M2EtMzhhOS1kYjQ1LTk0ODctMzk4NDY3ODk2MTU1IiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MTc1MjY4M2EtMzhhOS1kYjQ1LTk0ODctMzk4NDY3ODk2MTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VjNTGgAAAzBJREFUSIm1lb9vE2ccxj/vvXfOHbUtGjs4MTgYMjRKFKRY2EMUKVU2EIIFJFRVrKgIJBATQ9UfQ1vxBzBXndqhQ6fGLgOpSaUoaQRRgxQrQ4jDYCVUTaPc+c72vQzngEMScKrmO70nfd/neZ/vj+eEUorDDO1Q0QGUUhxARRb4AjjdLvZBCCTwNVADPjsMgmFgAVDA78CJ/5NAB74zLasRi8WUYRh12lChlGq7yf3A5ZOplHbp4kXi8bgErgHd77vYDsEHwDVN09KDg4OMjo4yNDQEkAGuAqF3XdZbzsea31GgC+gFjgMDwIXjyaTMZDIIIchkMszNzYXW19fvNtUtAatAGVgD/gXqwLrYrr8Q4nsgJ4TQhRCWr9QRs6PDskzTikSjfDw2xsjICLVaDSklxcePKRaLbG5u4jiOXa/XHSGE7fu+o5RqAD8ppb5qJbgDfAOY6XSabDZLOBwmEg6TTCaJRCI0Go2gcZqGlJKNjQ1erK5i2zaVtTVmZ2epVCoAL4HrSqmfW0v0APgb+LZarfZ8ePQo2WwWIQSu6+L7/utp830fgGg0StfwMJoQ/PbwIfbWFkAJuA0UAFoVQLBMV4D7lmWlzp87x/j4OAC1eh3R8hqlFIZhAFAoFMjn81Rd9y/gFvBoO+ftKWoAPwK3HMdZ/HViQj15+hQpJZoQOxJ1XUcIwdTUFBP5fKPqun8C17fBt2O/Mf0F+NK27ZelUgnP85BSvl5KpRRSShzHYX5+Htd1nwN3gT/eBtJ3Qb+JNaCqaRq+7xMKhTBNEyklNc+j0eyJHpTpn2b+rngXwYCmaYnu7m7i8Ti2bVNaXMSuVonFYvSmUnR2dnKsqwuCnekHnh2EIBkyDONkby/llRUmi0Wmp6fZsm2SPT1kz54ll8vR19eHMTnZWfO8PS18P4IOIBGORJiZmWFpaYnnKysARWBqeXn5fLlcPrOwsEAikcAwDK3meYk9kfZx0zRQME1T6bqumtJvAn0EozwE3APKuq4rKaUCfiDwrR3Y+xGMETStAtwATu3xNkngU58DNvCEoA9tEfQDnwIf8X7H1YEc8AmBOe4gEG3+zf5zvAIz42G9CpBzdAAAAABJRU5ErkJggg==\"","import * as React from 'react';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport $ from 'jquery';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Select from 'react-select';\r\nimport forEach from 'lodash/forEach';\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n selectedheaderName: string;\r\n isClearable: boolean;\r\n AllColumns: any[];\r\n PrevGroupId: number;\r\n PrevColId: string;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridGensetStatusToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData,\r\n selectedheaderName: null, isClearable: true, AllColumns: [], PrevGroupId: -1, PrevColId: null, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderGridPreferenceHtml: '', renderExportToExcelHTML: ''\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n this.props.validateRevisionNum(dashboardPreferenceId);\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n return ;\r\n //return ;\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n \r\n modelDialogEmailHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderEmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n modelDialogGridPreferenceHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Grid Preference
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderGridPreferenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogExportToExcelHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Export To Excel
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderExportToExcelHTML}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardStatus_' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"GensetStatusGrid\" || this.props.formName == \"GensetHistoryGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName, this.props.parentchild,\r\n functionId, widgetId, this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"GensetStatusGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"GensetStatusGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId,this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadGensetStatus').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#GensetQucikFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n\r\n ColumnChange(event: any) {\r\n if (event != null) {\r\n var name: string = event.value;\r\n this.setState({\r\n selectedheaderName: name\r\n });\r\n var defaultKeys = this.state.AllColumns.filter(x => x.colDef.headerName == name);\r\n var colId = defaultKeys[0].colId;\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n if (defaultKeys.length > 0 && defaultKeys[0].colDef.columnGroupShow == \"open\") {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(defaultKeys[0].parent.groupId, true);\r\n //this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.onGroupExpandedOrCollapsed();\r\n setTimeout(() => {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n }, 200);\r\n this.setState({ PrevGroupId: defaultKeys[0].parent.groupId, PrevColId: colId });\r\n }\r\n else {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n this.setState({ PrevGroupId: -1, PrevColId: colId });\r\n }\r\n }\r\n else {\r\n this.setState({\r\n selectedheaderName: null\r\n });\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n }\r\n }\r\n\r\n static GetColumns(params: any) {\r\n var newColumns = [];\r\n var Displayedcolumns = params.columnApi.getAllDisplayedColumnGroups();\r\n forEach(Displayedcolumns, function (value, key) {\r\n forEach(value.children, function (bv, bk) {\r\n newColumns.push(bv);\r\n });\r\n });\r\n self.setState({ AllColumns: newColumns })\r\n }\r\n\r\n public render() {\r\n if (this.props.formName == \"GensetStatusGrid\") {\r\n if (this.state.AllColumns != null && this.state.AllColumns.length > 0) {\r\n var Alldisplayedcolumns = this.state.AllColumns;\r\n\r\n if (Alldisplayedcolumns != undefined && Alldisplayedcolumns != null && Alldisplayedcolumns.length > 0) {\r\n var Selectedcolumns = Alldisplayedcolumns.map(function (Columns) {\r\n return (\r\n { value: Columns.colDef.headerName, label: Columns.colDef.headerName }\r\n );\r\n });\r\n }\r\n }\r\n }\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.props.formName == \"GensetStatusGrid\" ?\r\n : \"\"}\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n
    \r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
    \r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n}","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAtCAYAAADP5GkqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAN6WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTExLTI0VDE2OjUwOjU5KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0xMS0yNlQxMTozNjowMSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0xMS0yNlQxMTozNjowMSswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpjZmMzZmFkYi03YzlkLTgzNGMtYTRhYi1jOTk1OWNmMmM3OGIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDphM2VmYmY0Yi0zZmIyLTQ4NGUtYjE4ZS02YTEwMmY3ZTRkYTgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyZDRjNDU4Yy04MjJhLTY5NDEtYWEzOS1kN2I1NWIxZGZhNTciIHRpZmY6T3JpZW50YXRpb249IjEiIHRpZmY6WFJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpZUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiBleGlmOkNvbG9yU3BhY2U9IjEiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIyMCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0Ij4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjBjMTE5MmM3LTQ2NzctMWY0NS05MzhmLTY0MDVmZmUxZjljZjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDozMWIyNTNjNy1hYzY2LWU2NDYtOWQ3NS1hY2ZlNDFiODhlODU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NDgyZWVjNDctNDBlMy0wZDQxLWE2OTAtYTIxODdmNjcwMmQ4PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmI2OTAyMmFhLTcyMDQtMGY0Yi1iN2MyLTZhMTVhMDBjMGM5NDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkZjQ1NTU1NS1mNDdiLWU1NGEtOGI2OS05YTYwYTQ0NmRjZjQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ1ZWNhNjNmLTJlNmMtM2E0Ny04MDRjLTUxZjZiYzRkZTZkMjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjJkNGM0NThjLTgyMmEtNjk0MS1hYTM5LWQ3YjU1YjFkZmE1NyIgc3RFdnQ6d2hlbj0iMjAyMC0xMS0yNFQxNjo1MDo1OSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gaW1hZ2UvcG5nIHRvIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQwYzNjNjAyLTM3NDYtNDk0MC05MzE3LWQzMWE3NWRlYjUzMCIgc3RFdnQ6d2hlbj0iMjAyMC0xMS0yNFQxNjo1NToxNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OWJlYWUxYy1hMmRmLTQwNGUtYmRkYy02ZGNhYjAwZTQxY2QiIHN0RXZ0OndoZW49IjIwMjAtMTEtMjVUMTE6NTA6MTcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MzIwNWMzZDYtMWFmMC0xYjRiLWEyYzktZDMwZDhkYjFiNDQwIiBzdEV2dDp3aGVuPSIyMDIwLTExLTI1VDExOjUwOjE3KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmNmYzNmYWRiLTdjOWQtODM0Yy1hNGFiLWM5OTU5Y2YyYzc4YiIgc3RFdnQ6d2hlbj0iMjAyMC0xMS0yNlQxMTozNjowMSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OWJlYWUxYy1hMmRmLTQwNGUtYmRkYy02ZGNhYjAwZTQxY2QiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0ODJlZWM0Ny00MGUzLTBkNDEtYTY5MC1hMjE4N2Y2NzAyZDgiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyZDRjNDU4Yy04MjJhLTY5NDEtYWEzOS1kN2I1NWIxZGZhNTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1l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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAtCAYAAADP5GkqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAN6WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTExLTI0VDE2OjUwOjU5KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0xMS0yNlQxMTozNTozMyswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0xMS0yNlQxMTozNTozMyswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNmRjYTk3Zi05ZWMwLTJiNGYtYTMxMi1kMWYxY2UxNzJlZjMiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyZmRkNWQwMC1mZDcxLTA2NDItOWJlMC01MWJjNWZlMWRkMTMiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyZDRjNDU4Yy04MjJhLTY5NDEtYWEzOS1kN2I1NWIxZGZhNTciIHRpZmY6T3JpZW50YXRpb249IjEiIHRpZmY6WFJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpZUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiBleGlmOkNvbG9yU3BhY2U9IjEiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIyMCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0Ij4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjBjMTE5MmM3LTQ2NzctMWY0NS05MzhmLTY0MDVmZmUxZjljZjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDozMWIyNTNjNy1hYzY2LWU2NDYtOWQ3NS1hY2ZlNDFiODhlODU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NDgyZWVjNDctNDBlMy0wZDQxLWE2OTAtYTIxODdmNjcwMmQ4PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmI2OTAyMmFhLTcyMDQtMGY0Yi1iN2MyLTZhMTVhMDBjMGM5NDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkZjQ1NTU1NS1mNDdiLWU1NGEtOGI2OS05YTYwYTQ0NmRjZjQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ1ZWNhNjNmLTJlNmMtM2E0Ny04MDRjLTUxZjZiYzRkZTZkMjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjJkNGM0NThjLTgyMmEtNjk0MS1hYTM5LWQ3YjU1YjFkZmE1NyIgc3RFdnQ6d2hlbj0iMjAyMC0xMS0yNFQxNjo1MDo1OSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gaW1hZ2UvcG5nIHRvIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQwYzNjNjAyLTM3NDYtNDk0MC05MzE3LWQzMWE3NWRlYjUzMCIgc3RFdnQ6d2hlbj0iMjAyMC0xMS0yNFQxNjo1NToxNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OWJlYWUxYy1hMmRmLTQwNGUtYmRkYy02ZGNhYjAwZTQxY2QiIHN0RXZ0OndoZW49IjIwMjAtMTEtMjVUMTE6NTA6MTcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MzIwNWMzZDYtMWFmMC0xYjRiLWEyYzktZDMwZDhkYjFiNDQwIiBzdEV2dDp3aGVuPSIyMDIwLTExLTI1VDExOjUwOjE3KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2ZGNhOTdmLTllYzAtMmI0Zi1hMzEyLWQxZjFjZTE3MmVmMyIgc3RFdnQ6d2hlbj0iMjAyMC0xMS0yNlQxMTozNTozMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OWJlYWUxYy1hMmRmLTQwNGUtYmRkYy02ZGNhYjAwZTQxY2QiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0ODJlZWM0Ny00MGUzLTBkNDEtYTY5MC1hMjE4N2Y2NzAyZDgiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyZDRjNDU4Yy04MjJhLTY5NDEtYWEzOS1kN2I1NWIxZGZhNTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz68YHUwAAAMkElEQVRYhbWYaYxd5XnHf2e5+4xnuddjj+3xzHjBGzZesQnO2K1CjBPcqoGmQaItWAUqS6nSQlvaBiVSIkWKIiVSVdRSRMgClFRRFFQCDqTBS4wxmMUbXsez3Zm5c/ftnHuW93374dxhxs7Y8KWPdD/co/ec//953uf/PM/7avod/8UcpgE66CZoETQjjqa3oZkdaKFOdLMTTW8FLRIsVw5KVpF+EeUVUH4BJSsoUQflgPQBCajrgcw5wHXQTNBjaOY8dHM+eqQHI7IMI7xSN6Mr9VC8TzfDCzXdbAFQ0q9L352UnjWkfOeSEs4lhHMF6Ywi/SzKr4C0QU0TmfH0ugjooIfRjFY0sws92ocZu1ULxbabsc6BSEt7Mp5IkIibxGM6IUMDwBMKu6Go1T2seh23Xi54Vv6I8uzj+PYZZOMqyp9CiSpIdzaJ2QR00CNoZht6aAlGfJ0WStxpJlL3JNrndyeTLSxK6izphIXt0JmAaCh4seFBoQ6ZMowVIJ2T5At16sXslG/l/ke59aMI6yzSHUX5ZZCNaRLmtZ6bbejhXszEZj3SujfStnhfakGKFYtNblsKty6BlQsh1QKxMIT04GVPgu1CrgZXMnBqVOf0aCuXx+Nd2cmW/Y3SWLd0tAQ+BpIhlK9AOoA0tJ77NNBCwX6Hl2K2bNWj7V9KpPr39val+Mxqg3s2whc3wsZe6GqFeBjCBhh68AsbwbNUC6xYEJCc3wq6oWNrCWw/ttLznISSsoQStWY+uIA0m97H0MwujPhaPdK6N5Hs/dyyvg4G1sDdG+DWxTPhzk5l7HffOZ47fuxIoVarCoB4PGFsv2Nnx9ZtO1ILuxfFu9vgc+ugux3a43DIaOcK7KplhS2VrKOEFSjHFyboRuB9tE8LJXZG2hbv6+lpZ2AN/PHmIOwa4DqO+Ma/PH7qx889PSlX/d0SvWt3CjNhACBs8cyRY0X9/P1n73/goQXf/s73N0RjMXNzb7BVQaK2M+gtudsu+BNKejmELINsBDrXzRRmbJ2ZSH0xtSDFlmXax55rwFRm0tp224rD7pone82v1O/WtWb6z5bP4r2L2fjNdc+f+sGFn/Wl3jh8/NSdff3LW9d0g7MBShZU60nGG7V9nu9eRrnjCL+sB0UmvEQLxW6Pt6UWLV9kMrAK1i0GTYOJ8bS1eX3/YW/Tv95i3voPa5gDfEbUhmaue2y1v/25tXduW3v02NFDGYA1i2BgFaxcbJDomJ/Sw7Ed6JEeNCOho+nzMCLLzFjnzmSylfU9sLUfYiFwXVfs2LzqsNz6H6uMFQ8uuyHwdWb03reUuw5v+8q9X3jfti0/YsKWPljfA6lkAjPW+VmMyHI0vc3Qeh9YTrh1d7xj0R8uX5rg8+thUy/oGnz9H7926qR3T9JcfWDlbICB1fD392h8/881vrpHY/UijVoDhnOzghFfHPeJiKlTz4/t2buvOx6BagOuZDWyJaKeVb6KcC7oaGanboSXxxJxlnQGMjJ1KBTyzk9+/Mykue6xVbPBHxyA1544xP7dj7Ik2ceSZB/7dz/Ka08c4sGBayNhrv3aLS+98KNMemy0rmuwoguWJiHeEkcLRVeimUkdzWjXQ/HeeDzMgrZA5wAffnAy7/c/shDN1Gd7/tT+QygeR/E0MAwMo3gaxeM8tf8QA6uvzQm55p+WnnzneA4g2QoL2iARD6GbsX50s1NHM1o0I9wVjeh0JGZkc+bUB2U9ublttkdf3qEBLwIn59j5k8CLzTUzpnfd0XH8raNFgHgoKOHxmI4einaj6a06mhbRDLMlZGpEQ0H4AQr5nKdFOkOzP3bXelAcnAM8MMVB7lp/3UMzYVYrZR/ANJol3ABdN6JoelSf4zv/b6ZpQXJrGgQVBk1HKUcJv+75ioYHfrNRtnd0hpRb8mZ/4PXToLHnxgDs4fXT1z30Lb+lpdWE4NuOD0KAkkKglKujRE0JN9NwJMV60NUANty2qU3mTpZnf+tnxxVwP7BlDvgtwP3NNTMm8yfLm7dtbwNwPKjYYLsKKdwsStZ0lChJzxq2LJdMOWipALdt3NJpDP77RNA6Azt8Hg48uwuN76HxCNAL9KLxCBrf48Czuzh8fha6Eko/882hrdt2JAFqDkxVoG75SM8eQflFE+UXpXCv2HWL8WKMyxlY1Q2dyVT0L/7y4e7n3vvBBXPd4x+L67nDMDi1iy/v2P1xwr1+OojONeCAGHxh6E++9GepnqV9LQAjeRgvglV3kL59BekXTJRfxHeuOPXy1ESho+tsWuf2ZbCwDb7xre+uf74v9bpIbWvXF+xaODsSh8//3nx5janChwX93UcvfP2ZywOmaep1B86PQ7oAjXoV5buXUX5BR8kKwhn07cLv8vkaZ8bgg5EgYaKxmPHLV9/cym/vfl/m38vfFHE2eOVSWR3c/vZPX3p5w/yuBVGA4TycGYNM3sW1Cu8jnMsoUdJRwkK5Y8qzT9RLudyVccFbl2fq+qbN21Iv/vcrG+VrO06gxM3dDuCV//LaY//53Eu37tixc4FpmnrJgrcuw7k0lAslhFN9C+EMg6gZWs+fNpWp6Uop01XRjb4RJxaGvlRQOHr7lrVqaN7RI4em9IW7u24G75/+zkeP3rsxsf/hAyvCkYjhSzh+BV79EM5dtanlxt5WjfKvkNY5lJ83tJ57ARQoidKUFLLTVq1LpR6iIxE0D0OHz+zcNf+VZ//2XLYelnrnpo65wGX61fTSzHeHf/TCL7abZlBTz6bh5ffh7YuC7MR4xa9nX8SvnUB5YyDqOiBB2ig/i7DOiEb5V5XcxMSZYZ/ffgQXJmcAXvr5q9vV249eQMk5t8I//9TID3/6803T4OMleOMsnLgMmYkcXjXzEl79HZQ3FgynCEPrua8ZAQQoD5QjpfRdEd7haC3EI9A/HxIRSLS0hMbTY9XTl6ZsPbm58xrvM4cyn20/VDjw1cdugUDzvzkHB0/DxcEy9dzVXyin+grSPofyp0A0ADndCyRIByVKSGcQt3bEKadfHhuvcWIQTo2Cavr8z09+e606ceDi9VEQF54efuLJb90y/f/CBBy7BJdGXWr59AfKrb6GsM6ivAxK2IHDMLsZSRANpJdHWBekU/tNrTg1dXlc8s5VmKwEi1Lzu6J3f+GPOmX+5Iws3bK70Dta2bzl9hQEA+jJITgzCsVsDmEXf4lffw/lpoPQK68Zda7vhtP5kMG3TvtW/te5XI2PxuHirFx4+K//pldcembk45emfpfds3dfcvr/aKGp+VwDtzb1a7z6SaQ3FpwNZ8DnIqBA+ShRQ7mjyrffs6tldywfhLTaCBatv21Tpzb4w8z0Nvjn/23kob860AdBAbs4GdSRWrmCdOvvNA+nlevB5yLQJCFdlF/Ab1zx7dK7hZLHUA6KVrCgtXVeeElPb0S5RQflKzP3v6X+/uXzAMo2XM1CtiTx7MoIwrmEEvnmqfj31HOjgUSipI3yJqVvX7SsBpMlmCjNLLjjzoE2Vf6orJxCo7e3PxqJRg2AQi1YV615CKfyEdIdn5bcXEA3IjAdhaIS3qhr2xTrQSudtj1793XJ9MEpmX5t8v4HHvq4UWUqkK1Cw26ghHcV5eeaJ+E5a8fNRjKJknWknxWe41dtyNeCuwCA7kWLY6o6aKvy+dqKlataAKSCbAXKFvhuAyW8cZSogJrT+08ioEDaSL8gfWfMakjyNbCbBNrbO0LKnvRUbche2L0oBsE0lalAxVL4rl1FeVmUrHPdtcynJQBKeShRlp6dthuCXHVGCbFY3FSZN8vKKfrxeMIEqDSCbapZAuk1hpAi37wNuWEX/YSpWPkoUZHCSduWQ6Y806bjiUSotXWeQSPjzpvXFgZIF5sTj+UhvfoIyi+hlHczhE8iIEBUlfBGHdtiohTUg0Id4vGE2du/LNrfacm29vZw2Q76fboIdr2OFN4QSpSbN2M3tLmu6WYTkChRRbjDnl0Znip09p4aNVmxADb0hPSDb763C4JtOZeGD0dgMu/jWpUMwm0WH3nDBPwUBJpKEM6I3ygeK+baek+PpEhENKYqwRUMwGQ5AP9gGAq5Mr5dOIpwhlCyyk0S8NMQAKSFctPKtU40ypM9o6PmTs9vY3BKpz0ezFIlC9J5xeREGbs08bbyrONIdxSkxU0S8NMQUCjpIv0swj4rGuV4vSC9UWf+H+Ry8wiFg6Oj53o06lXcWu6IcCpv4NunUX4WdXMFfNoIeCDKSGcIHyltv9jw7HNuNbxcM8JJNA3lOwUp3EH8xjlE4wLSGUb5pWbzuan9HwzhsLOy+nwyAAAAAElFTkSuQmCC\"","import * as React from 'react';\r\nimport differenceWith from 'lodash/differenceWith';\r\nimport difference from 'lodash/difference';\r\nimport isEqual from 'lodash/isEqual';\r\nimport Transfer from '../../../node_modules/antd/lib/transfer';\r\nimport ReactDragListView from 'react-drag-listview';\r\nimport 'antd/lib/transfer/style/index.css';\r\nimport 'antd/lib/style/index.css';\r\n// style dependencies\r\nimport 'antd/lib/checkbox/style/index.css';\r\nimport 'antd/lib/button/style/index.css';\r\nimport 'antd/lib/input/style/index.css';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport $ from 'jquery';\r\nimport { GridReeferStatusToolBar } from '../sharedcomponents/GridReeferStatusToolBar';\r\nimport { GridReeferHistoryToolBar } from '../sharedcomponents/GridReeferHistoryToolBar';\r\nimport { GridToolBarExcel } from './../sharedcomponents/GridToolBarExcel';\r\nimport { GridApi } from 'ag-grid-community';\r\n/* Start WI 27261*/\r\nimport { GensetHistoryGrid } from '../childcomponents/GensetHistoryGrid';\r\nimport { ReeferHistoryGrid } from '../childcomponents/ReeferHistoryGrid';\r\nimport { DryHistoryGrid } from '../childcomponents/DryHistoryGrid';\r\nimport { ChassisHistoryGrid } from '../childcomponents/ChassisHistoryGrid';\r\n/* End WI 27261*/\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface GridColumnPreference {\r\n targetKeys: any[];\r\n selectedKeys: any[];\r\n exportColumns: any[];\r\n disabled: any;\r\n saveRowGroups: boolean;\r\n copyToHistory: boolean;\r\n}\r\nvar self;\r\nvar prefChanged: boolean = false;\r\n\r\nexport class GridPreferenceControl extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n targetKeys: [],\r\n selectedKeys: [],\r\n exportColumns: [],\r\n disabled: false,\r\n saveRowGroups: this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false,\r\n copyToHistory:true\r\n };\r\n\r\n self = this;\r\n\r\n this.LoadDefaultGridColumns(this.props.functionId);\r\n }\r\n\r\n LoadDefaultGridColumns(functionId: any) {\r\n prefChanged = false;\r\n this.setState({ targetKeys: [], exportColumns: [], selectedKeys: [] });\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //this.setState({ exportColumns: data });\r\n this.BindSavedPreferenceData(functionId, data);\r\n });\r\n }\r\n\r\n BindSavedPreferenceData(functionId: any, exportCols: any[]) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n if (preferenceData.SelectedColumnIds != null && preferenceData.SelectedColumnIds != undefined )\r\n this.setState({ exportColumns: exportCols, targetKeys: preferenceData.SelectedColumnIds });\r\n else {\r\n var defaultKeys = exportCols.map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, targetKeys: defaultKeys });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n else {\r\n //var defaultKeys = exportCols.filter(item => item.IsRequired == true).map(item => item.InterfaceExportColumnId);\r\n if (functionId == 66) {\r\n var defaultKeys = exportCols.filter(x => x.ColumnNm != \"TWState\" && x.ColumnNm != \"TWTime\").map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, targetKeys: defaultKeys });\r\n }\r\n else {\r\n var defaultKeys = exportCols.map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, targetKeys: defaultKeys });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n }); \r\n }\r\n\r\n componentDidMount() {\r\n var functionId = this.props.functionId;\r\n $(\"#btnArrowUp\").attr('disabled', 'disabled');\r\n $(\"#btnArrowDown\").attr('disabled', 'disabled');\r\n //this.LoadDefaultGridColumns(this.props.interfaceId);\r\n if (functionId == 41 || functionId == 46 || functionId == 48 || functionId == 61) { //WI 26721\r\n if ($(\"#divCopyToHistory\").hasClass(\"hidden\")) $('#divCopyToHistory').removeClass('hidden');\r\n }\r\n else {\r\n if (!$(\"#divCopyToHistory\").hasClass(\"hidden\")) $('#divCopyToHistory').addClass('hidden');\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ copyToHistory: true });\r\n var functionId = nextprops.functionId;\r\n if (functionId != undefined && functionId != null && functionId != \"\") {\r\n $(\"#btnArrowUp\").attr('disabled', 'disabled');\r\n $(\"#btnArrowDown\").attr('disabled', 'disabled');\r\n if (functionId == 41 || functionId == 46 || functionId == 48 || functionId == 61) { //WI 26721\r\n if ($(\"#divCopyToHistory\").hasClass(\"hidden\")) $('#divCopyToHistory').removeClass('hidden');\r\n }\r\n else {\r\n if (!$(\"#divCopyToHistory\").hasClass(\"hidden\")) $('#divCopyToHistory').addClass('hidden');\r\n }\r\n this.LoadDefaultGridColumns(functionId);\r\n }\r\n }\r\n\r\n HideAllGridColumns() {\r\n //var defaultColumns = this.state.ExportColumns;\r\n //var allColumnsNames = defaultColumns.map(({ ColumnNm }) => ColumnNm); \r\n var defaultColumns = self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //var allColumnsNames = defaultColumns.filter(x => x.getId());\r\n self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n }\r\n\r\n ShowHideGridColumns(columnNames: any) {\r\n self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n //$.each(columnNames, function (index, value) {\r\n // self.props.gridApiParams.gridOptionsWrapper.columnApi.moveColumn(value, index);\r\n //});\r\n self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n }\r\n\r\n static StatusGridPreferenceColumns(functionId: any, gridApiParams: any, formName: any) {\r\n //$('#globalLoader').show();\r\n var dbPreID: any = 0; //RCNG 5353 Fix\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerPreferenceData?FunctionId=' + functionId + '&DashboardPreferenceId=' + dbPreID;;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var columnNames = null;\r\n if (data.UserPreference != null) {\r\n var preferenceData = JSON.parse(data.UserPreference);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== customerSelectedColumns.indexOf(value));\r\n }\r\n else {\r\n if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n //columnNames = preferenceData.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors).concat(data.CustomerAttributes);//WI 26721\r\n columnNames = userColumnNames.filter(value => -1 !== defaultCustomerColumns.indexOf(value));\r\n }\r\n else\r\n columnNames = preferenceData.SelectedColumnValues;\r\n }\r\n\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //var allColumnsNames = defaultColumns.map(function (v, i) { return v.colId });\r\n //var customColumns = differenceWith(columnNames, allColumnsNames, isEqual);\r\n //if (customColumns.length > 0) {\r\n // var selectedColumns = difference(columnNames, customColumns);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(selectedColumns, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(selectedColumns, true);\r\n //}\r\n //else {\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //}\r\n }\r\n else if (preferenceData.SelectedRowGroups != null && preferenceData.SelectedRowGroups.length >= 0) {\r\n //var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(customerSelectedColumns, true);\r\n }\r\n else if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors).concat(data.CustomerAttributes);//WI 26721\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n }\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n }\r\n } else if (data.CustomerPreference != null) {\r\n var preferenceData = JSON.parse(data.CustomerPreference);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n columnNames = preferenceData.SelectedColumnValues;\r\n\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n\r\n //var allColumnsNames = defaultColumns.map(function (v, i) { return v.colId });\r\n //var customColumns = differenceWith(columnNames, allColumnsNames, isEqual);\r\n //if (customColumns.length > 0) {\r\n // var selectedColumns = difference(columnNames, customColumns);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(selectedColumns, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(selectedColumns, true);\r\n //}\r\n //else {\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //}\r\n }\r\n }\r\n else {\r\n if (functionId == 66) {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n var reqColumns = defaultColumns.filter(x => x.colId != \"TWState\" && x.colId != \"TWTime\");\r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(reqColumns, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(reqColumns, true);\r\n }\r\n else {\r\n //var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true); \r\n if (data.DefaultCustomerPreference != null) {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors).concat(data.CustomerAttributes);//WI 26721\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n }\r\n }\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n }\r\n if (formName == \"ReeferStatusGrid\") {\r\n setTimeout(() => {\r\n GridReeferStatusToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions)\r\n }, 500);\r\n }\r\n else if (formName == \"ReeferGrid\") {\r\n setTimeout(() => {\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions)\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n static HistoryGridPreferenceColumns(functionId: any, gridApiParams: any, formName: any) {\r\n //$('#globalLoader').show();\r\n var dbPreID: any = 0;\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerPreferenceData?FunctionId=' + functionId + '&DashboardPreferenceId=' + dbPreID;;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var columnNames = null;\r\n if (data.UserPreference != null) {\r\n var preferenceData = JSON.parse(data.UserPreference);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== customerSelectedColumns.indexOf(value));\r\n }\r\n else {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n //columnNames = preferenceData.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors);\r\n columnNames = userColumnNames.filter(value => -1 !== defaultCustomerColumns.indexOf(value));\r\n }\r\n\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //var allColumnsNames = defaultColumns.filter(x => x.getId());\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n //$.each(columnNames, function (index, value) {\r\n // gridApiParams.gridOptionsWrapper.columnApi.moveColumn(value, index);\r\n //});\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //$('#globalLoader').hide();\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(customerSelectedColumns, true);\r\n }\r\n else if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n }\r\n }\r\n }\r\n else if (data.CustomerPreference != null) {\r\n var preferenceData = JSON.parse(data.CustomerPreference);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n\r\n columnNames = preferenceData.SelectedColumnValues;\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //var allColumnsNames = defaultColumns.filter(x => x.getId());\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n //$.each(columnNames, function (index, value) {\r\n // gridApiParams.gridOptionsWrapper.columnApi.moveColumn(value, index);\r\n //});\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //$('#globalLoader').hide();\r\n }\r\n }\r\n else {\r\n //var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n ////$('#globalLoader').hide();\r\n\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors);\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n /*var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();*/\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n }\r\n\r\n if (formName == \"ReeferHistoryGrid\") {\r\n setTimeout(() => {\r\n GridReeferHistoryToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions)\r\n }, 200);\r\n }\r\n else if (formName == \"ReeferHistory\") {\r\n setTimeout(() => {\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions)\r\n }, 200);\r\n }\r\n });\r\n }\r\n ResetGridPreferences() {\r\n var data = this.state.exportColumns;\r\n //var defaultKeys = data.filter(item => item.IsRequired == true).map(item => item.InterfaceExportColumnId);\r\n var defaultKeys = data.map(item => item.InterfaceExportColumnId);\r\n this.setState({ targetKeys: defaultKeys, exportColumns: data, selectedKeys: [] });\r\n }\r\n\r\n static ResetGridColumns(functionId: any, gridApiParams: any, formName: any) {\r\n $('#globalLoader').show();\r\n var exportColumns = null;\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n var exportColumns = data;\r\n var selectedColumns = [];\r\n var selectedColumnsIds = [];\r\n var saveRowGroups = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0\r\n $.each(exportColumns, function (index, value) {\r\n if (data.length > 0) {\r\n var preferenceColumnNames = data[index].ColumnNm;\r\n var preferenceColumnIds = data[index].InterfaceExportColumnId;\r\n selectedColumnsIds.push(preferenceColumnIds);\r\n selectedColumns.push(preferenceColumnNames);\r\n }\r\n });\r\n\r\n var rowGroupedArray = [];\r\n if (saveRowGroups) {\r\n if (gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns() != null && gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0) {\r\n for (var i = 0; i < gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length; i++) {\r\n // Validation \r\n if (selectedColumns.indexOf(gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId) !== -1) {\r\n rowGroupedArray.push(gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId)\r\n }\r\n }\r\n }\r\n }\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var data1 = { SelectedColumnIds: selectedColumnsIds, SelectedColumnValues: selectedColumns, SelectedRowGroups: rowGroupedArray };\r\n //var data = { SelectedColumnIds: self.state.targetKeys, SelectedColumnValues: selectedColumns };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(data1), CopyToHistory: false };//WI 26721\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(selectedColumns, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(selectedColumns, true);\r\n\r\n if (formName == \"ReeferStatusGrid\")\r\n GridReeferStatusToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"ReeferGrid\")\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"ReeferHistoryGrid\")\r\n GridReeferHistoryToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"ReeferHistory\")\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n\r\n $('#globalLoader').hide();\r\n });\r\n });\r\n }\r\n\r\n SaveGridPreferences() {\r\n if (self.state.targetKeys.length == 0)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one column to save grid preference.\");\r\n else {\r\n var selectedCols = this.state.selectedKeys;\r\n if (selectedCols.length > 0 && prefChanged) {\r\n RCNGWindow.ConfirmWindow.showConfirmBox('Columns are selected. Do you want to save the changes?', this.onOKSubmit.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else if (selectedCols.length > 0 && !prefChanged) {\r\n RCNGWindow.ConfirmWindow.showConfirmBox('Columns are selected. Do you want to save without any changes?', this.onOKSubmit.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n this.onOKSubmit();\r\n }\r\n }\r\n }\r\n\r\n onOKSubmit() {\r\n if (self.state.targetKeys.length > 0) {\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n this.HideAllGridColumns();\r\n\r\n var defaultColumns = this.state.exportColumns;\r\n var selectedColumnIds = self.state.targetKeys;\r\n var selectedColumns = [];\r\n //var rows = this.props.gridApiParams.gridOptionsWrapper.columnApi.getRowGroupColumns().slice();\r\n $.each(selectedColumnIds, function (index, value) {\r\n var data = defaultColumns.filter(x => x.InterfaceExportColumnId == parseInt(value));\r\n if (data.length > 0) {\r\n var preferenceColumns = data[0].ColumnNm;\r\n selectedColumns.push(preferenceColumns);\r\n }\r\n });\r\n var rowGroupedArray = [];\r\n if (this.state.saveRowGroups) {\r\n if (this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns() != null && this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0) {\r\n for (var i = 0; i < this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length; i++) {\r\n // Validation \r\n if (selectedColumns.indexOf(this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId) !== -1) {\r\n rowGroupedArray.push(this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId)\r\n }\r\n }\r\n }\r\n }\r\n\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var data = { SelectedColumnIds: self.state.targetKeys, SelectedColumnValues: selectedColumns, SelectedRowGroups: rowGroupedArray };\r\n //var data = { SelectedColumnIds: self.state.targetKeys, SelectedColumnValues: selectedColumns };\r\n var preferencedata = { UserId: 0, FunctionId: this.props.functionId, PreferenceData: JSON.stringify(data), CopyToHistory: self.state.copyToHistory }; //WI 26721\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n this.ShowHideGridColumns(selectedColumns);\r\n this.props.closeModelDialog();\r\n if (self.props.formname == \"ReeferStatusGrid\") {\r\n GridReeferStatusToolBar.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n //ReeferHistoryGrid.GetReeferHistoryGridPrefColumns(preferencedata); //WI 26721\r\n }\r\n else if (self.props.formname == \"ReeferGrid\")\r\n GridToolBarExcel.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (self.props.formname == \"ReeferHistoryGrid\")\r\n GridReeferHistoryToolBar.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (self.props.formname == \"ReeferHistory\")\r\n GridToolBarExcel.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n //else if (self.props.formname == \"GensetStatusGrid\") //WI 26721\r\n // //GensetHistoryGrid.GetGensetHistoryGridPrefColumns(preferencedata);\r\n //else if (self.props.formname == \"DryStatusGrid\") //WI 26721\r\n // //DryHistoryGrid.GetDryHistoryGridPrefColumns(preferencedata);\r\n //else if (self.props.formname == \"ChassisStatusGrid\") //WI 26721\r\n // ChassisHistoryGrid.GetChassisHistoryGridPrefColumns(preferencedata);\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one column to save grid preference.\");\r\n }\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n CancelAction() {\r\n this.props.closeModelDialog();\r\n }\r\n\r\n handleChange(nextTargetKeys) {\r\n this.setState({ targetKeys: nextTargetKeys });\r\n }\r\n\r\n\r\n handleSelectChange(sourceSelectedKeys, targetSelectedKeys) {\r\n this.setState({\r\n selectedKeys: [...sourceSelectedKeys, ...targetSelectedKeys]\r\n });\r\n\r\n var targetSelected = [...targetSelectedKeys];\r\n var sourceSelected = [...sourceSelectedKeys];\r\n\r\n if (targetSelected.length == 1 && sourceSelected.length == 0) {\r\n $(\"#btnArrowUp\").removeAttr('disabled');\r\n $(\"#btnArrowDown\").removeAttr('disabled');\r\n }\r\n else {\r\n $(\"#btnArrowUp\").attr('disabled', 'disabled');\r\n $(\"#btnArrowDown\").attr('disabled', 'disabled');\r\n }\r\n\r\n }\r\n\r\n arrowMoveUp() {\r\n var selectedKeys = self.state.selectedKeys;\r\n var targetKeys = [...self.state.targetKeys];\r\n var fromIndex: number;\r\n var toIndex: number;\r\n for (var i = 0; i < targetKeys.length; i++) {\r\n if (targetKeys[i] == selectedKeys[0]) {\r\n if (i > 0) {\r\n prefChanged = true;\r\n fromIndex = i;\r\n toIndex = i - 1;\r\n break;\r\n }\r\n else\r\n return;\r\n }\r\n }\r\n\r\n var item = targetKeys.splice(fromIndex, 1)[0];\r\n targetKeys.splice(toIndex, 0, item);\r\n\r\n self.handleChange(targetKeys);\r\n }\r\n\r\n SaveRowGroupsChange = () => {\r\n this.setState({\r\n saveRowGroups: !this.state.saveRowGroups,\r\n });\r\n }\r\n\r\n\r\n arrowMoveDown() {\r\n var selectedKeys = self.state.selectedKeys;\r\n var targetKeys = [...self.state.targetKeys];\r\n var fromIndex: number;\r\n var toIndex: number;\r\n for (var i = 0; i < targetKeys.length; i++) {\r\n if (targetKeys[i] == selectedKeys[0]) {\r\n if (i == (targetKeys.length - 1))\r\n return;\r\n else {\r\n prefChanged = true;\r\n fromIndex = i;\r\n toIndex = i + 1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n var item = targetKeys.splice(fromIndex, 1)[0];\r\n targetKeys.splice(toIndex, 0, item);\r\n\r\n self.handleChange(targetKeys);\r\n }\r\n\r\n onCopyToHistoryCheck(event: React.FormEvent) { //WI 26721 \r\n this.setState({ copyToHistory: event.currentTarget.checked });\r\n }\r\n\r\n public render() {\r\n var { targetKeys, selectedKeys, disabled} = this.state;\r\n //var rowGroupLength = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length;\r\n var chkboxCss: any = { 'margin-left': '35px', 'position': 'relative', 'font-size': '15px', 'font-weight': 'bold' };\r\n var defaultColumns = this.state.exportColumns;\r\n var dataSource = [];\r\n if (defaultColumns != undefined && defaultColumns != null && defaultColumns.length > 0) {\r\n dataSource = defaultColumns.map(function (col) {\r\n return (\r\n { key: col.InterfaceExportColumnId, title: col.ColumnDisplayNm, disabled: col.IsRequired }\r\n );\r\n });\r\n }\r\n // Code for drag functionality, this will work once you press ctrl+F5.\r\n var getDragProps = () => ({\r\n onDragEnd: (fromIndex, toIndex) => {\r\n var targetKeys = [...self.state.targetKeys];\r\n var item = targetKeys.splice(fromIndex, 1)[0];\r\n targetKeys.splice(toIndex, 0, item);\r\n\r\n self.handleChange(targetKeys);\r\n },\r\n nodeSelector: \".ant-transfer-list:last-child .ant-transfer-list-content > div\"\r\n });\r\n\r\n var filterOption = (inputValue, option) => option.title.toUpperCase().indexOf(inputValue.toUpperCase()) > -1;\r\n\r\n return
    \r\n
    \r\n \r\n item.title}\r\n listStyle={{ height: 430 }}\r\n >\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    {/*WI 26721*/}\r\n Copy To History\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\ninterface InterfaceExportColumns {\r\n InterfaceExportColumnId: number;\r\n ColumnNm: string;\r\n ColumnDisplayNm: string;\r\n FunctionId: number;\r\n}\r\n","/* eslint eqeqeq: 0 */\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Formatters from '../../actions/Formatters';\r\nimport Excel from '../../actions/ExportToExcel.js';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow';\r\nimport DateFormat from 'dateformat';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface SendEmailState {\r\n EmailFilters: EmailFields;\r\n okMethod: Function;\r\n cancelMethod: Function;\r\n confirmationMsg: string;\r\n dateTime: any;\r\n confirmOk: boolean;\r\n gridApiParams: any;\r\n}\r\n\r\nvar currentDateTime;\r\nvar self;\r\nvar ProcessfirstCellOnlyRowIndex = -1;\r\n\r\nexport class SendEmailControl extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.clearEmailFiltersGenset();\r\n this.state = { EmailFilters: filterSet, okMethod: Function, cancelMethod: Function, confirmationMsg: '', dateTime: currentDateTime, confirmOk: false, gridApiParams: this.props.gridApiParams };\r\n self = this;\r\n\r\n this.getGroupDisplayValueName = this.getGroupDisplayValueName.bind(this);\r\n }\r\n\r\n FromEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedFrom = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Subjectchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedSubject = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n ToEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedTo = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Messagechange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedMessage = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n dateTypeFormatter(eventDate: Date) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n\r\n clearEmailFiltersGenset() {\r\n currentDateTime = this.dateTypeFormatter((new Date()));\r\n var filters: EmailFields = {\r\n SelectedTo: \"\", SelectedFrom: Config.DefaultEmailAddress, SelectedSubject: \"\", SelectedAttachment: \"\", SelectedMessage: \"\", SelectedForm: \"\"\r\n };\r\n this.setState({\r\n EmailFilters: filters, confirmOk: false, dateTime: currentDateTime\r\n });\r\n return filters;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.clearEmailFiltersGenset();\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n closeConfirmation() {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n SendEmailExportAPI() {\r\n this.setState({ gridApiParams: this.props.gridApiParams });\r\n var IsGroupsExist = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false;\r\n if (IsGroupsExist) {\r\n var uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: false,\r\n allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName()),\r\n\r\n });\r\n } else {\r\n var allColumns = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n for (var i = allColumns.length - 1; i >= 0; i--) {\r\n if (allColumns[i].colDef.headerName === 'Group') {\r\n allColumns.splice(i, 1);\r\n }\r\n }\r\n var uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: true,\r\n columnKeys: allColumns,\r\n skipGroups: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName()),\r\n\r\n });\r\n } \r\n //var uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsExcel(\r\n // {\r\n // columnGroups: false,\r\n // allColumns: true,\r\n // processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n // processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n // //fileName: this.getFileName(this.GetExportFileName()),\r\n\r\n // });\r\n\r\n return uri;\r\n }\r\n SendEmailExportAPIForAction() {\r\n\r\n this.setState({ gridApiParams: this.props.gridApiParams });\r\n var IsGroupsExist = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false;\r\n if (IsGroupsExist) {\r\n var uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: false,\r\n allColumns: true,\r\n onlySelected: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName()),\r\n\r\n });\r\n } else {\r\n var allColumns = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n for (var i = allColumns.length - 1; i >= 0; i--) {\r\n if (allColumns[i].colDef.headerName === 'Group') {\r\n allColumns.splice(i, 1);\r\n }\r\n }\r\n var uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: true,\r\n columnKeys: allColumns,\r\n skipGroups: true,\r\n onlySelected: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName()),\r\n\r\n });\r\n }\r\n\r\n return uri;\r\n }\r\n getGroupDisplayValueName(params) {\r\n\r\n if (params !== undefined && params !== null) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId === fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue.toString().trim() === \"-999\" && (fieldName === 'BatteryVoltage' || fieldName === 'DoorSensorBatteryVoltage'))\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue === \"-NA-\" || fieldValue === \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() === \"-999\")\r\n return \"OOR\";\r\n\r\n switch (fieldName) {\r\n case \"IgnitionOn\":\r\n return Formatters.GensetSwitchFormatterGroupingExcel(fieldValue);\r\n case \"GensetRunning\":\r\n return Formatters.EngineSortingFormatterGroupingExcel(fieldValue);\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM': case 'DLEventDTTM': case 'InsertedDttm': case 'UpdatedDttm': case 'DoorEventDtm':\r\n return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n case 'DeviceTemp':\r\n {\r\n return Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n }\r\n case 'IsInsideGeofence': case 'IsActive': case 'StateCd':\r\n {\r\n return Formatters.YesNoConverterforExcel(fieldValue);\r\n }\r\n\r\n case \"DevicePowerSourceCd\":\r\n return Formatters.PowerStateFormatterGroupingForExcel(fieldValue);//done\r\n\r\n case 'BatteryVoltage':\r\n {\r\n return (fieldValue === \"\" || fieldValue === null || fieldValue === '-NA-' || fieldValue === '-999') ? '-NA-' : Formatters.BattVoltageSortingGrouping(fieldValue);\r\n }\r\n case 'DoorSensorBatteryVoltage':\r\n { \r\n var AssetType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n AssetType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].AssetType;\r\n }\r\n if(AssetType != null && AssetType != undefined && AssetType.toString().toUpperCase().trim() == \"D\")\r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-1') ? '-NA-' : Formatters.DoorBattPctSortingGrouping(fieldValue);\r\n }\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n\r\n return Formatters.GuestReeferModeFormatterForExcel(fieldValue);\r\n }\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value !== undefined && params.value !== null) return Formatters.rcdPowerSourceFormatterforExcel(fieldValue);\r\n\r\n case \"CustomerName\":\r\n {\r\n if (columnDisplayName === 'Assigned To')\r\n return fieldValue === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"-NA-\" : fieldValue;\r\n else\r\n return fieldValue;\r\n }\r\n case \"ReeferOEMTypeCd\": case \"OEMTypeCD\":// WI-26787\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return Formatters.RSSIFormatterGroupingForExcel(fieldValue);\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n\r\n case \"AssetType\":\r\n return Formatters.AssetTypeGrouping(fieldValue);\r\n case \"GeofenceCategoryCd\":\r\n return Formatters.GeofenceTypeGrouping(fieldValue);\r\n case \"FilerepositoryActionCD\":\r\n return Formatters.FileStatusGrouping(fieldValue);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterForExcel(fieldValue, params);\r\n case \"CCSeverityLevel\":\r\n return Formatters.CargoCareFormatterGroupingForExcel(fieldValue); //RCNG-241 Renamed Normal to Assigned\r\n case \"DoorOpen\":\r\n return Formatters.DeviceDoorFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n myCellCallback(params) {\r\n var returnValue;\r\n\r\n if (params.node.group && ProcessfirstCellOnlyRowIndex !== params.node.rowGroupIndex) {\r\n ProcessfirstCellOnlyRowIndex = params.node.rowGroupIndex\r\n if (params.node.key !== null && params.node.key !== undefined)\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (params.node.group && params.column.colId === \"0\") {\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (!params.node.group) {\r\n switch (params.column.colId) {\r\n\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID': case 'DeviceNumber':\r\n {\r\n if (params.value === undefined || params.value === \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = '\\t' + params.value;\r\n }\r\n break;\r\n case 'Name': case 'Tag': case 'Address': case 'ProfileCode': case 'ProfileCodeDescription': case 'InsertedBy': case 'UpdatedBy':\r\n {\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.stringTypeFormatterChildFormsNew(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'Coordinates':\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.GeofenceCoordinatesFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n break;\r\n case 'DeviceTemp':\r\n {\r\n if (params !== undefined && params !== null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM': case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'TTL': case 'ExpirationTime': case 'PTRDateTime': case 'DLEventDTTM': case 'InsertedDttm': case 'UpdatedDttm': case 'DoorEventDtm':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.dateTypeFormatterforExcel(params.value);\r\n }\r\n break\r\n\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasFuelSensor': case 'HasOilPressureSwitch': case 'HasDoorSensor': case 'IsDeployed': case 'DCXDownloads': case 'StateCd':\r\n {\r\n //if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n\r\n case 'BatteryVoltage':\r\n {\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'DoorSensorBatteryVoltage':\r\n {\r\n if (params.node.data.AssetType != undefined && params.node.data.AssetType != null && params.node.data.AssetType.toString().toUpperCase().trim() == \"D\") {\r\n if (params.node.data.DoorSensorBatteryVoltage != undefined && params.node.data.DoorSensorBatteryVoltage != null)\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.DoorSensorBatteryVoltage);\r\n }\r\n else {\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value !== undefined && params.value !== null) returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n case 'GeofenceCategoryCd': if (params.value !== undefined && params.value !== null) returnValue = Formatters.fenceTypeFormatterForExcel(params.value);\r\n break;\r\n\r\n case 'GPSLastLock': if (params.value !== undefined && params.value !== null) returnValue = Formatters.secondsToTimeConverterForExcel(params.node.data.GPSLastLock); break;\r\n\r\n case 'IgnitionOn': if (params.value !== undefined && params.value !== null) returnValue = Formatters.gensetSwitchFormatterForExcel(params.value); break;\r\n\r\n case 'CustomerName':\r\n {\r\n if (params.column.colDef.headerName === 'Assigned To')\r\n returnValue = Formatters.stringTypeFormatterFor3PExcel(params.value);\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n\r\n case \"RSSI\": if (params.value !== undefined && params.value !== null) returnValue = params.node.data.RSSI; break;\r\n\r\n case \"GetFileRepositoryActionDesc\":\r\n {\r\n returnValue = Formatters.GetFileRepositoryActionDesc(params.value);\r\n }\r\n break;\r\n\r\n case \"RunState\": returnValue = Formatters.runStateFormatterforExcel(params.node.data.RunState.toUpperCase().trim()); break;\r\n\r\n case 'Status':\r\n {\r\n if (params.node.data.Status != undefined || params.node.data.Status != \"-NA-\" && params.node.data.Status != null)\r\n returnValue = params.node.data.Status.trim();\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n\r\n case \"RcdPowerSourceCd\": returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value); break;\r\n\r\n case 'ManufacturedDate':\r\n {\r\n returnValue = Formatters.YearFromdateTypeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = Formatters.AssetTypeFormatterForExcel(params.value);\r\n break;\r\n\r\n case 'GensetRunning': {\r\n if (params.value !== undefined && params.value !== null) {\r\n // Start WI-26787\r\n //var HasOilPressureSwitch;\r\n //if (params.node.rowIndex !== undefined && params.node.rowIndex !== null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] !== undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] !== null) {\r\n // HasOilPressureSwitch = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasOilPressureSwitch;\r\n //}\r\n //else {\r\n // HasOilPressureSwitch = false;\r\n //}\r\n // End WI-26787\r\n //if (HasOilPressureSwitch !== undefined && HasOilPressureSwitch !== null)\r\n var isGensetRunning = {\r\n GensetRunning: params.node.data.GensetRunning,\r\n HasOilPressureSwitch: params.node.data.HasOilPressureSwitch,\r\n OEMTypeCD: params.node.data.OEMTypeCD\r\n };\r\n returnValue = Formatters.EngFormatterforExcel(isGensetRunning);\r\n }\r\n }\r\n break;\r\n\r\n case 'DevicePowerSourceCd': {\r\n if (params.value !== undefined && params.value !== null) {\r\n var DeviceConfig;\r\n if (params.node.rowIndex !== undefined && params.node.rowIndex !== null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] !== undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] !== null) {\r\n DeviceConfig = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceConfig;\r\n }\r\n else {\r\n DeviceConfig = false;\r\n }\r\n\r\n var DeviceType;\r\n if (params.node.rowIndex !== undefined && params.node.rowIndex !== null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] !== undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] !== null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n else {\r\n DeviceType = \"\";\r\n }\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: params.node.data.DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: params.node.data.DeviceType\r\n };\r\n \r\n //if (DeviceType != undefined && DeviceType != null && DeviceConfig != undefined && DeviceConfig != null)\r\n returnValue = Formatters.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'LineFrequency':\r\n {\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorTemp': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n {\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.TemperatureFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp': \r\n {\r\n if (params !== undefined && params !== null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'TemperatureUnit':\r\n {\r\n if (params.value !== undefined && params.value !== null)\r\n returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value !== undefined && params.value !== null) {\r\n\r\n var IsCargoCare = {\r\n isCargocare: params.node.data.IsCargoCare,\r\n CCSeverityLevel: params.node.data.CCSeverityLevel\r\n };\r\n returnValue = Formatters.CargoCareFormatterforExcel(IsCargoCare);\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlarmsList': returnValue = Formatters.AlarmListFormatterforExcel(params.value); break;\r\n case 'Humidity':\r\n {\r\n var isHumidity = {\r\n Humidity: params.node.data.Humidity,\r\n HumiditySetpointStatus: params.node.data.HumiditySetpointStatus\r\n };\r\n returnValue = Formatters.HumiditySettingFormatterforExcel(isHumidity);\r\n }\r\n break;\r\n case 'CondenserPressure':\r\n {\r\n var CondenserPressureData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n CondenserPressure: params.node.data.CondenserPressure\r\n };\r\n returnValue = Formatters.sensorDataPCondFormatterExcel(CondenserPressureData);\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening':\r\n {\r\n var EEVData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.node.data.EvaporatorExpansionValveOpening\r\n };\r\n returnValue = Formatters.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening':\r\n {\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: params.node.data.SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.node.data.SuctionModulationValveOpening\r\n };\r\n returnValue = Formatters.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n break;\r\n case \"ThreePhaseCurrent\": returnValue = Formatters.Current3PhaseFormatterforExcel(params.value); break;\r\n case \"FilerepositoryActionCD\":\r\n {\r\n if (params.value !== null && params.value !== undefined && params.value !== '' && params.value !== \"null\")\r\n returnValue = Formatters.GetFileRepositoryActionDesc(params.node.data.FilerepositoryActionCD);\r\n else\r\n return \"-NA-\";\r\n }\r\n break;\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGroupingForExcel(params);\r\n case 'HumiditySetpoint':\r\n {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\")\r\n returnValue = Formatters.HumiditySetpointForExcel(params.value, params.node.data.HumiditySetpointStatus);\r\n else\r\n return \"-NA-\";\r\n\r\n //returnValue = Formatters.HumiditySetpointForExcel(params.value);\r\n }\r\n break;\r\n case 'DoorOpen':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.DeviceDoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Auth0_OrgId':\r\n {\r\n returnValue = Formatters.Auth0MigratedYesNoConverterForExcel(params.value);\r\n\r\n }\r\n break;\r\n default: {\r\n if (params.value !== null && params.value !== undefined && params.value !== '' && params.value !== \"null\") {\r\n returnValue = params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n }\r\n\r\n myRowGroupCallback(params) {\r\n\r\n var indent = '--';\r\n var node = params.node;\r\n //var label = node.key.toUpperCase();\r\n\r\n var label = self.getGroupDisplayValueName(params);\r\n if (!node.parent.parent) {\r\n return label; // top level node, parent is root node\r\n }\r\n label = '> ' + label;\r\n // indent once per level in the row group hierarchy\r\n while (node.parent.parent) {\r\n label = indent + label;\r\n node = node.parent;\r\n }\r\n return label;\r\n\r\n } \r\n\r\n myHeaderCallback(params) {\r\n\r\n var headerDisplayName = params.column.getColDef().headerName;\r\n switch (headerDisplayName) {\r\n case \"Event Time\": case \"Reported Time\": case \"Created On\": case \"Last Modified On\": case \"Last Updated On\": case \"Updated On\": case \"Created Time\": case \"Modified Time\":\r\n case 'StatusDate': case 'Submitted Dt': case 'Expiration Dt': case 'Status Time': case 'Submitted Time': case 'Expiration Time': case 'Created on': case 'Updated on': case \"Door time\":\r\n case \"Event time\": case \"Receipt time\"://RCNG-1143\r\n return Formatters.TimeZoneFormatter(headerDisplayName);\r\n case \"Device temp. \": case \"Device temp \"://RCNG-1143\r\n return Formatters.TemperatureHeaderFormatter(headerDisplayName); \r\n default:\r\n return headerDisplayName;\r\n }\r\n }\r\n\r\n myGroupHeaderCallback(params) {\r\n\r\n var displayName = params.columnApi.getDisplayNameForColumnGroup(\r\n params.columnGroup\r\n );\r\n return displayName;\r\n }\r\n\r\n SendEmailToUser() {\r\n var uri;\r\n var isLimitNumberOfEmailsReached: boolean = false;\r\n if (this.state.EmailFilters.SelectedTo !== undefined || this.state.EmailFilters.SelectedTo !== \"\") { // WI-26789\r\n var SendTo = this.state.EmailFilters.SelectedTo;\r\n var SendFrom = this.state.EmailFilters.SelectedForm;\r\n var SendToArray = SendTo.split(\",\");\r\n var validemail = true;\r\n var myEmailVLD = /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9\\-\\.])+\\.([A-Za-z]{2,4})$/;\r\n if (SendToArray !== null && SendToArray !== undefined && SendToArray.length < Config.SendEmailLimit) {\r\n if (SendToArray !== null && SendToArray !== undefined && SendToArray.length > 0) {\r\n for (var i = 0; i < SendToArray.length; i++) {\r\n var valid = myEmailVLD.test(SendToArray[i]);\r\n if (!valid) {\r\n validemail = false;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n isLimitNumberOfEmailsReached = true;\r\n validemail = false;\r\n }\r\n\r\n if (validemail) {\r\n if ((this.state.confirmOk === false) && (this.state.EmailFilters.SelectedSubject === \"\" || this.state.EmailFilters.SelectedMessage === \"\")) {\r\n this.setState({\r\n confirmOk: true\r\n });\r\n if (this.state.EmailFilters.SelectedSubject === \"\" && !(this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject\";\r\n else if (!(this.state.EmailFilters.SelectedSubject === \"\") && (this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Message?\";\r\n else if (this.state.EmailFilters.SelectedSubject === \"\" && (this.state.EmailFilters.SelectedMessage === \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject and Message?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.SendEmailToUser.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n\r\n if (this.props.parentchild === \"P\") {\r\n //uri = Excel.SendmailExportParent(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n uri = this.SendEmailExportAPI();\r\n }\r\n else if (this.props.parentchild === \"S\") {\r\n //uri = Excel.SendmailExportParent(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n uri = this.SendEmailExportAPIForAction();\r\n }\r\n else {\r\n //uri = Excel.SendmailExport(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n uri = this.SendEmailExportAPI();\r\n }\r\n this.state.EmailFilters.SelectedForm = this.props.formname;\r\n this.state.EmailFilters.SelectedAttachment = uri; //JSON.stringify(uri);\r\n var filterParams = JSON.stringify(this.state.EmailFilters);\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Email/SendEmailWithGroup', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n //fetch(request)\r\n // .then(response => response)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //$('#sendEmail .close').click();\r\n $('#sendEmail .btn-close').click();\r\n $('#globalLoader').hide();\r\n if (this.props.formname === undefined || this.props.formname === null || this.props.formname === undefined || this.props.formname === 'undefined') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n $(\"#EmailGroupModal .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"ReeferFileRepositoryGrid\")) {\r\n $(\"#ReeferFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"GeofenceFileRepositoryGrid\")) {\r\n $(\"#GeofenceFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() === \"RCDFileRepositoryGrid\")) {\r\n $(\"#RCDFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formname.trim() !== \"ReeferCommands\") && (this.props.formname.trim() !== \"TripStatus\") && (this.props.formname.trim() !== \"LastPreTrip\") && (this.props.formname.trim() !== \"PreTrip\") && (this.props.formname.trim() !== \"SchedulePreTrip\") && (this.props.formname.trim() !== \"StopPTI\")) {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n $(\"#EmailGroupModal .btn-close\").click();\r\n }\r\n\r\n $('#' + this.props.formname + ' .close').click();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#' + this.props.formname).hide();\r\n PopupWindow.showErrorMessage(\"Information\", data);// \"Email Sent Successfully.\");\r\n })\r\n .catch(err => {\r\n $('#globalLoader').hide();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#' + this.props.formname).hide();\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n }\r\n }\r\n else {\r\n if (isLimitNumberOfEmailsReached) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please check the recipient email id. The recipients email should not be more than \" + Config.SendEmailLimit + \".\");\r\n isLimitNumberOfEmailsReached = false;\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", \"Please verify entered email addresse(s).\");\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter email address.\");\r\n }\r\n }\r\n\r\n static ClearFiltersGenset() {\r\n self.clearEmailFiltersGenset();\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    Note: Enter multiple email addresses separated by comma(,)
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.ToEmailchange(e)} value={this.state.EmailFilters.SelectedTo} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.Subjectchange(e)} value={this.state.EmailFilters.SelectedSubject} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n Attachment:
    \r\n
    \r\n {this.props.formname} {this.state.dateTime}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass EmailFields {\r\n SelectedTo: string;\r\n SelectedFrom: string;\r\n SelectedSubject: string;\r\n SelectedAttachment: string;\r\n SelectedMessage: string;\r\n SelectedForm: string;\r\n}","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAYAAACyCenrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAB+SURBVFhH7ZgxDsAgDAP9Zp7B3JFndEX8qmsY22ZAChJShhtYETps4yB7urFeBgLGXxAAcQ4BCEDWmYlCUAgKCdWKFJYZdzVJoYOfqgspgLSrAOR7wwBxyQ4QgKyfOhSCQlBIqFPQQxJ/SqUoZqda586+AGHaZdoNBTyWcZaZy19ti276DbkAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAYAAACyCenrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAC6SURBVFhHY/j/WvP/KEaEAcNoYKAmiNEAQcshowEyGiD4y8zRFDKaQkZTCEnNigHPMidmMvxnYEDgglAGkjxA7WbDoAgQHUVoIJxW/i8myPAfFEjU9iix5g2uAAEWcBGuDP839YwGCCRFnOYGp5B7q0Z4gCCXIbPKBi4wQJEy6LIMsXmdVupGA2SwNcxANQq8lhkEQxEDnkJolfTJNXc0QAZbliE3JmmlbzSFjKaQ0d4uSf2i0SyDlmUAW1ecTMo4JXUAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAYAAACyCenrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACw0AAAsNAe0HwCwAAACESURBVFhH7dPLCYBAEATRCcxszMU8jcQPuDBInXuF8vAOll62Wav2On4NRjOMZhjNMJphNMNohjGtHvQuDWPaGGRtbRaMSdtljPGFW4Ixqd+Mf5BLH6GPMwvGlPG7vNG3KRhT7sMv0PpzGsYUOjyNlITRDKMZRjOMZhjNMJphNMOoVccJ1fRge6xZVSoAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/AwaitingPrerequisites.b9a4053b.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAYAAACyCenrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAC2SURBVFhH7dYxDoJQEIThvYE34ByEG1hRWlF5BhJPwjVsOBnYaDM6GCNOXs2aMMXXPF71Z/OWuJ0B+3IQ4SDCQYSDCAcRDiLSg8wnYIgBEbHo44K5K9/dQmoQxqiiwjVGTO377HF8ne81CCeDE1H6liU1CKfjfih/y5IahG+Gg6w4iOD74TdkhZuFU8Itw43D7bLrLUMMwCn5/IfU0SxxSne3kB7k3ziIcBDhIMJBhIMIB/kBPAHT7TkbDGVmDwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAIAAAA9a368AAAACXBIWXMAAAsTAAALEwEAmpwYAAAHOWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wMi0wN1QxNDozNDoyNiswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDMtMjdUMTE6MTE6NDcrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDMtMjdUMTE6MTE6NDcrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzZiMzg0ZGUtNjg1MS04ODRlLTg5NzAtMWQxN2MxNDQzNDQ0IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MGFhN2Q3YjgtZTkwZS00YjQ5LTg0YjctMGYyMWFlNTU2N2QyIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YzY0ZDZhN2YtZDVlOC0yYzQwLTlmNzUtNjIwMWQzMWViYTI0Ij4gPHBob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8cmRmOkJhZz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSJ2YyIgcGhvdG9zaG9wOkxheWVyVGV4dD0idmMiLz4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT54bXAuZGlkOjQ4MjBhMDljLTYzZDItYTE0NS04Zjc1LTY4ZGM0NmE3YzI5MDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6N2E4ZDg2YWYtZDc0My1kYzQwLWFmZTMtYzFjMmU3YjVkOGQ4PC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzY0ZDZhN2YtZDVlOC0yYzQwLTlmNzUtNjIwMWQzMWViYTI0IiBzdEV2dDp3aGVuPSIyMDE5LTAyLTA3VDE0OjM0OjI2KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NmIzODRkZS02ODUxLTg4NGUtODk3MC0xZDE3YzE0NDM0NDQiIHN0RXZ0OndoZW49IjIwMTktMDMtMjdUMTE6MTE6NDcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DhxvbwAAAdJJREFUWIVj5IssYxgugGmgHUBNMOqZwQpGPTNYwbDyDDO7rjUVjYsz1cx0tXjz9v2TT98gIor83B0R7kJszBefvVHk5672s8/xtPY1UNcWFzx0+zEVrWZgYGChrnEMDAyR7raSIoL+vYsh3PIAx0h322PX7iryc2+qy5STFH30/DUDA4OPrYmGnFT09NVUtJrKnll0+nr9h0/m2qpwEVdz/TcfPi06fX1jcaycpGjP0k3NW48yMDD4aMpfffaGurZTP8+s23+Sk4O91tuagYEhz8FIRIBv3f6TDAwM5tqqj56/hviEgYFhy/WH9z9+pa7V1PfMtF3Hv//46W1lyMDA4Gdj/P3Hz2m7jjMwMHBysH/98YPq1iED6nvm/sevJ6/e1lSUjTPVNNVSOXn1NiQGvv/4SXW70ABNiubZ2w4xMDB0ZUbC2QwMDFfuPdZUlPXRlIdwLWREFfm5qWsvlYtmCLj15mO0lYGIIN+j568Ll26Hin7/7mVp4GWupyLAHWmlXxXjqysrvuL4JSraSxPPMDAwsP76ISnEv3D7oZMPnkNELj57c+XabT0lGQsdNV4uziv3HhXMWffh528qWso42p8ZpGDUM4MVjHpmsIJh5RkAfQWTQ9j1S5MAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAIAAAA9a368AAAACXBIWXMAAC4jAAAuIwF4pT92AAAHsGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTA5LTE4VDE2OjA4OjU0KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTA5LTE4VDE2OjA4OjU0KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0wOS0xOFQxNjowODo1NCswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2NjkwNzZiOC1lN2ViLWQ4NDItYTI2Zi1mYjkyMGVmNThlYjUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5M2RmMzA1Zi0yMWJlLThkNDYtYmYzZi0xOGUyZTMwMDNjYzYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpmMzUxODc5Mi0yNWNlLTlkNGUtYjljMS1lOTM4Mzc5MGNhZjQiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmYzNTE4NzkyLTI1Y2UtOWQ0ZS1iOWMxLWU5MzgzNzkwY2FmNCIgc3RFdnQ6d2hlbj0iMjAxOS0wOS0xOFQxNjowODo1NCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2NjkwNzZiOC1lN2ViLWQ4NDItYTI2Zi1mYjkyMGVmNThlYjUiIHN0RXZ0OndoZW49IjIwMTktMDktMThUMTY6MDg6NTQrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHBob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8cmRmOkJhZz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSJMb3JlbSBJcHN1bSIgcGhvdG9zaG9wOkxheWVyVGV4dD0iTG9yZW0gSXBzdW0iLz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSJ2IiBwaG90b3Nob3A6TGF5ZXJUZXh0PSJ2Ii8+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6VGV4dExheWVycz4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjRjNTg1MDJiLWZlNDgtMTFlNi1iOWU2LWZlMGFjMzNiMWU3NzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1M2E2YmZiMi1mZTRhLTExZTYtYjllNi1mZTBhYzMzYjFlNzc8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4gkvc5AAAA60lEQVRYhe2XuwrCQBBF7/oZahlBFJMQEMVHoYhg5wv8NMFvELEWrKISCKhJsDJl8g0p10a0tfDiInuqZZq7B3aWGXHwBf6F3K8v8E20jKpoGVXRMp+xWsrFRGbZu+Kd0KnL+M5KJMqYlkgTBJd35eBK24FRYiUSZZotFIoIA/mq+B7aXV4guWfGM+x3z3MYIE1QbxAHDq5MtSbSBGEAALeI+8bAljEt2A5ukQRwdDGdc+dA+tc8HOHoIr7jeka5ws2iy1Sq4nrGdiN7A+QL3Cy6jFGC7WC7Rq9P3zWE3mcURcuoipZRlb+SeQDxozoILR1/NAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAAXCAIAAAA9a368AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKdGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMC0xMC0wMVQxOToxMjoxOSswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMjAtMTAtMDVUMTM6MjE6MDkrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjAtMTAtMDVUMTM6MjE6MDkrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZWJmMTc4ZjktN2I4OC03YzQ5LTk4NjktOGE4ZTE5NDc2MTlmIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MDVjNzU2M2ItNWEzMi1mODRlLWIxNjEtNTNhODlmMzgxODk4IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6M2NlMWQ0ZjYtZjIyOC0wZjQzLWE1MjEtMDQ3NTRhM2RlZWNmIj4gPHBob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8cmRmOkJhZz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSJVRCIgcGhvdG9zaG9wOkxheWVyVGV4dD0iVUQiLz4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNjZTFkNGY2LWYyMjgtMGY0My1hNTIxLTA0NzU0YTNkZWVjZiIgc3RFdnQ6d2hlbj0iMjAyMC0xMC0wMVQxOToxMjoxOSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gaW1hZ2UvcG5nIHRvIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjdiZTI4NTg1LWYwYWYtODA0NC05MzAwLTgwYWYzZjMyNjM0MyIgc3RFdnQ6d2hlbj0iMjAyMC0xMC0wNVQxMzoxOTo1MCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4ZjlhZmNhNC0wNmVlLTdiNDEtYjg2MS05ZjM2ZjU2NzFmOGIiIHN0RXZ0OndoZW49IjIwMjAtMTAtMDVUMTM6MjE6MDkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZWJmMTc4ZjktN2I4OC03YzQ5LTk4NjktOGE4ZTE5NDc2MTlmIiBzdEV2dDp3aGVuPSIyMDIwLTEwLTA1VDEzOjIxOjA5KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhmOWFmY2E0LTA2ZWUtN2I0MS1iODYxLTlmMzZmNTY3MWY4YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozY2UxZDRmNi1mMjI4LTBmNDMtYTUyMS0wNDc1NGEzZGVlY2YiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozY2UxZDRmNi1mMjI4LTBmNDMtYTUyMS0wNDc1NGEzZGVlY2YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4F6VFQAAABDElEQVRYhe2XMWsCMRSAv7iIHCItVHATBDsWurZTD0fnVu8HOHiL/QkOBQenTl2OdrihS+cWQboVOrXdrhTBReo5HejgpItwIHV7NEHykeWFx3v5SAKJWoXsDRndC5DEypiKlTEVK7Oblw/cbhrGCcojTgCUlw4/YDSV7Qz/vDOfN6xC5gGHDpVreR8Nx8zJ0r2k7XL/KlxZ252pn/L4JlxTm0zpgO+ZcE1tMtGEi2PhmsIy+RzDiMVyE/78AhQLf2Q+vdM8l20uLXNSpnrE3QBgseT2mX5jOydO8APihKsz2eYo8S/A15jOA8MIoO3S83CyAMpLc/oNWrXNvCDyMhqxzxlTsTKmYmVMZQ14zzqg1dgMHQAAAABJRU5ErkJggg==\"","// @ts-nocheck\r\n/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport uniq from 'lodash/uniq';\r\nimport * as MapCallouts from './../components/childcomponents/BingMapCallouts';\r\nimport { RCUtils } from './../RCUtils';\r\nimport { ReeferStatusGrid } from '../components/childcomponents/ReeferStatusGrid';\r\nimport { ReeferMap } from '../components/childcomponents/ReeferMap';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../components/sharedcomponents/ConfirmationWindow';\r\nimport { GensetStatusGrid } from '../components/childcomponents/GensetStatusGrid';\r\n//import { DryStatusGrid } from '../components/childcomponents/DryStatusGrid'; \r\nimport { DryStatusSSRMGrid } from '../components/childcomponents/DryStatusSSRMGrid';\r\n\r\nimport { ChassisStatusGrid } from '../components/childcomponents/ChassisStatusGrid';\r\nimport { isNullOrUndefined } from 'util';\r\nimport polygonImageblue from '../images/MapPushPins/polygonImage_blue.png';\r\nimport pushpingray from '../images/MapPushPins/pushpin_gray.png';\r\nimport pushpinyellow from '../images/MapPushPins/pushpin_yellow.png';\r\nimport pushpinblue from '../images/MapPushPins/pushpin_blue.png';\r\nimport pushpingreen from '../images/MapPushPins/pushpin_green.png';\r\nimport pushpinred from '../images/MapPushPins/pushpin_red.png';\r\nimport reeferrunning from '../images/MapPushPins/reefer_running.png';\r\nimport reeferstandby from '../images/MapPushPins/reefer_standby.png';\r\nimport reefershutdown from '../images/MapPushPins/reefer_shutdown.png';\r\nimport reeferoffline from '../images/MapPushPins/reefer_offline.png';\r\nimport reefernormal from '../images/MapPushPins/reefer_normal.png';\r\nimport gensetnormal from '../images/MapPushPins/genset_normal.png';\r\nimport drypurple from '../images/MapPushPins/dry_purple.png';\r\nimport historynormal from '../images/MapPushPins/history_normal.png';\r\nimport chassisorange from '../images/MapPushPins/chassis_orange.png';\r\nimport pushpin_green_yellow from '../images/MapPushPins/pushpin_green_yellow.png';\r\nimport pushpin_blue_yellow from '../images/MapPushPins/pushpin_blue_yellow.png';\r\n//import { loadBingApi, Microsoft } from \"../actions/BingMapLoader\";\r\nimport { initialize, whenLoaded } from \"bing-maps-loader\";\r\n\r\nvar Config: any = require('../Config.json');\r\nvar pinInfobox = null;\r\nvar toolTip = null;\r\nvar reeferMap = null;\r\nvar layer = null;\r\nvar traceLayer = null;\r\nvar fenceLayer = null;\r\nvar pinsLayer = null;\r\nvar geoZonesLayer = null;\r\nvar PushpinsData = [];\r\nvar gridName = null;\r\nvar calloutState = true;\r\nvar GensetPushpinData = [];\r\nvar ReeferPushpinData = [];\r\nvar DryPushpinData = [];\r\nvar ChassisPushpinData = [];\r\n//var checkPinsWithRunState = false;\r\nvar fenceAssets = false;\r\n\r\nvar drawingFinishedEventHandler = null;\r\n\r\nvar GeofencesData = [];\r\nvar drawingTools = null;\r\n//var drawingManager = null;\r\nvar currentShape;\r\nvar currentMode = null;\r\nvar currentFence = null;\r\nvar events = [];\r\nvar autoSuggestManager = null;\r\nvar reeferMasterData = null;\r\nvar flag = false;\r\n\r\n\r\nclass ReeferCallout {\r\n static InitializeMap(params: any) {\r\n whenLoaded.then(() => {\r\n reeferMap = new Microsoft.Maps.Map(document.getElementById(params), {\r\n credentials: Config.BingMapsKey,\r\n mapTypeId: Microsoft.Maps.MapTypeId.road,\r\n zoom: 4,\r\n showMapTypeSelector: true,\r\n disableKeyboardInput: true,\r\n liteMode: true\r\n });\r\n\r\n //var bounds = Microsoft.Maps.LocationRect.fromCorners(new Microsoft.Maps.Location(40.5, -123.5), new Microsoft.Maps.Location(40, -123));\r\n //var overlay = new PanningOverlay(bounds);\r\n //reeferMap.layers.insert(overlay);\r\n\r\n //Load the AutoSuggest module.\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', function () {\r\n var options = {\r\n maxResults: 4,\r\n map: reeferMap,\r\n businessSuggestions: true,\r\n autoDetectLocation: false\r\n };\r\n autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n autoSuggestManager.attachAutosuggest('#txtSearchBox', '#searchBoxContainer', selectedSuggestion);\r\n });\r\n\r\n //Load the DrawingTools and SpatialMath modules.\r\n Microsoft.Maps.loadModule(['Microsoft.Maps.DrawingTools', 'Microsoft.Maps.SpatialMath'], function () {\r\n\r\n drawingFinishedEventHandler = Microsoft.Maps.Events.addHandler(reeferMap, 'dblclick', function (args) { drawingFinished(args); });\r\n\r\n //Create an instance of the DrawingTools class and bind it to the map.\r\n drawingTools = new Microsoft.Maps.DrawingTools(reeferMap);\r\n\r\n });\r\n\r\n Microsoft.Maps.Events.addHandler(reeferMap, 'maptypechanged', function (args) {\r\n mapTypeChanged(args);\r\n });\r\n\r\n });\r\n }\r\n\r\n static pointInPolygon(polygon) {\r\n var inside = false;\r\n var center = Microsoft.Maps.SpatialMath.Geometry.centroid(polygon);\r\n //var intersects = Microsoft.Maps.SpatialMath.Geometry.intersects(center, polygon);\r\n var x = center.latitude, y = center.longitude;\r\n\r\n for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n var xi = polygon[i].latitude, yi = polygon[i].longitude;\r\n var xj = polygon[j].latitude, yj = polygon[j].longitude;\r\n\r\n var intersect = ((yi > y) != (yj > y))\r\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n if (intersect) inside = !inside;\r\n }\r\n\r\n return inside;\r\n }\r\n\r\n\r\n static InitializeDrawingManager() {\r\n if (drawingTools != null && drawingTools != undefined) {\r\n //Load the DrawingTools and SpatialMath modules.\r\n Microsoft.Maps.loadModule(['Microsoft.Maps.DrawingTools', 'Microsoft.Maps.SpatialMath'], function () {\r\n\r\n drawingFinishedEventHandler = Microsoft.Maps.Events.addHandler(reeferMap, 'dblclick', function (args) { drawingFinished(args); });\r\n\r\n //Create an instance of the DrawingTools class and bind it to the map.\r\n drawingTools = new Microsoft.Maps.DrawingTools(reeferMap);\r\n\r\n });\r\n } \r\n }\r\n\r\n static BindGeoZonesLayer() {\r\n if(geoZonesLayer != null)\r\n geoZonesLayer.clear();\r\n\r\n var DryAssetsData: any = DryPushpinData;\r\n if(DryAssetsData.length > 0)\r\n {\r\n geoZonesLayer = new Microsoft.Maps.Layer();\r\n geoZonesLayer.setZIndex(10400);\r\n \r\n $.each(DryAssetsData, function (index, value) {\r\n if(value.Latitude != null && value.Longitude != null && (value.PositionAccuracy !=null && value.PositionAccuracy >0)) {\r\n var loc = new Microsoft.Maps.Location(value.Latitude, value.Longitude);\r\n var paths = Microsoft.Maps.SpatialMath.getRegularPolygon(loc, value.PositionAccuracy, 36, Microsoft.Maps.SpatialMath.DistanceUnits.Meters);\r\n var polygon = new Microsoft.Maps.Polygon(paths, null);\r\n\r\n geoZonesLayer.add(polygon);\r\n }\r\n }); \r\n\r\n reeferMap.layers.insert(geoZonesLayer);\r\n } \r\n }\r\n\r\n static BindGeofencePolygons(fences) {\r\n if (fenceLayer != null) {\r\n fenceLayer.clear();\r\n pinsLayer.clear();\r\n }\r\n GeofencesData = fences;\r\n\r\n //Create a layer for the drawn shapes.\r\n fenceLayer = new Microsoft.Maps.Layer();\r\n pinsLayer = new Microsoft.Maps.Layer();\r\n\r\n fenceLayer.setZIndex(10200);\r\n pinsLayer.setZIndex(10300);\r\n //Clear map infobox\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n\r\n //Create an infobox at the center of the map but don't show it.\r\n pinInfobox = new Microsoft.Maps.Infobox(reeferMap.getCenter(), {\r\n visible: false\r\n });\r\n //Assign the infobox to a map instance.\r\n pinInfobox.setMap(reeferMap);\r\n\r\n $.each(fences, function (selectedIndex, selectedValue) {\r\n var exteriorRing = selectedValue.FormatedCoordinates;\r\n var selectedFence = selectedValue;\r\n //var historyId = selectedValue.GeofenceHistoryID;\r\n var polygon;\r\n if (selectedValue.GeofenceCategoryCd == \"B\")\r\n polygon = new Microsoft.Maps.Polygon(exteriorRing, { strokeDashArray: [1, 3] });\r\n else\r\n polygon = new Microsoft.Maps.Polygon(exteriorRing, null);\r\n\r\n fenceLayer.add(polygon);\r\n\r\n var center = Microsoft.Maps.SpatialMath.Geometry.centroid(polygon);\r\n\r\n var imageSource = polygonImageblue;\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n\r\n pinsLayer.add(pushpin);\r\n\r\n Microsoft.Maps.Events.addHandler(polygon, 'mousedown', function (args) { displayFenceInfoboxOnClick(args, selectedFence, polygon); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mousedown', function (args) { displayFenceInfoboxOnClick(args, selectedFence, polygon); });\r\n\r\n });\r\n\r\n reeferMap.layers.insert(fenceLayer);\r\n reeferMap.layers.insert(pinsLayer);\r\n }\r\n\r\n static CancelDrawing() {\r\n if (!flag) {\r\n //fenceLayer.remove(currentShape);\r\n if (drawingTools != null && drawingTools != undefined) {\r\n drawingTools.dispose();\r\n drawingTools = new Microsoft.Maps.DrawingTools(reeferMap);\r\n currentMode = null;\r\n currentShape = null;\r\n clearSelection('DrawingModes', 'btn btn-outline-secondary');\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n }\r\n }\r\n }\r\n\r\n static ContinueDrawing() {\r\n flag = true;\r\n currentMode = 'edit';\r\n document.getElementById(\"DrawPolygonMode\").className = 'btn btn-outline-secondary';\r\n document.getElementById(\"EditPolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").show();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n }\r\n static resetFlag() {\r\n flag = false;\r\n }\r\n\r\n static refreshDashboardMap(geofenceData) {\r\n addFenceToLayer(geofenceData);\r\n resetDrawing();\r\n //ReeferMap.refreshDashBoardMap();\r\n }\r\n\r\n static SetDrawingMode(mode, elm) {\r\n clearSelection('DrawingModes', 'btn btn-outline-secondary');\r\n //elm.className = 'btn btn-secondary editButton active';\r\n currentFence = null;\r\n if (mode == \"polygon\") {\r\n if (currentMode != mode) {\r\n document.getElementById(\"DrawPolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").show();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n drawPolygon();\r\n }\r\n else {\r\n document.getElementById(\"DrawPolygonMode\").className = 'btn btn-outline-secondary';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n drawPolygon();\r\n }\r\n }\r\n else if (mode == \"edit\") {\r\n if (currentMode != mode) {\r\n document.getElementById(\"EditPolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").show();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n edit();\r\n }\r\n else {\r\n document.getElementById(\"EditPolygonMode\").className = 'btn btn-outline-secondary';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n edit();\r\n }\r\n }\r\n else if (mode == \"erase\") {\r\n if (currentMode != mode) {\r\n document.getElementById(\"DeletePolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").show();\r\n erase();\r\n }\r\n else {\r\n document.getElementById(\"DeletePolygonMode\").className = 'btn btn-outline-secondary';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n erase();\r\n }\r\n }\r\n\r\n }\r\n\r\n static ResetDrawing() {\r\n resetDrawing();\r\n }\r\n\r\n static EraseMode() {\r\n eraseMode();\r\n }\r\n \r\n static DisposeGeozonesLayer() {\r\n if (geoZonesLayer != null)\r\n geoZonesLayer.clear();\r\n }\r\n\r\n static DisposeDrawingManager() {\r\n if (fenceLayer != null) {\r\n fenceLayer.clear();\r\n pinsLayer.clear();\r\n\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n }\r\n if (drawingTools != null && drawingTools != undefined) {\r\n drawingTools.dispose();\r\n //Remove event handlers. \r\n Microsoft.Maps.Events.removeHandler(drawingFinishedEventHandler);\r\n setMode(null);\r\n }\r\n\r\n if (autoSuggestManager != null && autoSuggestManager != undefined) {\r\n // autoSuggestManager.dispose();\r\n $(\"#txtSearchBox\").val(null);\r\n }\r\n }\r\n\r\n static ResetMapPushpins() {\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n\r\n ClearMapLayers();\r\n\r\n calloutState = true;\r\n\r\n ReeferMap.UpdateIsLocationEstimated(false);\r\n \r\n }\r\n static ResetMapInfobox() {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n calloutState = true;\r\n }\r\n static ResetCalloutState() {\r\n calloutState = true;\r\n }\r\n static ResetAllPushpins() {\r\n GensetPushpinData = [];\r\n ReeferPushpinData = [];\r\n DryPushpinData = [];\r\n ChassisPushpinData = [];\r\n PushpinsData = [];\r\n }\r\n\r\n static BindClusterMapAllAssetsPushpins(selectedRows: any, gridType: string, formatterData: any, isFenceAssets: any) {\r\n \r\n if (reeferMap != null) { \r\n fenceAssets = isFenceAssets;\r\n reeferMasterData = formatterData;\r\n if (selectedRows.Dry.length > 0)\r\n DryPushpinData = selectedRows.Dry;\r\n if (selectedRows.Genset.length > 0)\r\n GensetPushpinData = selectedRows.Genset;\r\n if (selectedRows.Reefers.length > 0)\r\n ReeferPushpinData = selectedRows.Reefers;\r\n if (selectedRows.Chassis.length > 0)\r\n ChassisPushpinData = selectedRows.Chassis;\r\n\r\n PushpinsData = GensetPushpinData.concat(ReeferPushpinData).concat(DryPushpinData).concat(ChassisPushpinData);\r\n\r\n Microsoft.Maps.loadModule('Microsoft.Maps.Clustering', { callback: clusterReeferModuleLoaded });\r\n }\r\n }\r\n\r\n static BindClusterMapPushpins(selectedRows: any, gridType: string, formatterData: any) {\r\n //PushpinsData = [];\r\n //PushpinsData = selectedRows;\r\n //gridName = gridType;\r\n //WI-23853\r\n GensetPushpinData = [];\r\n ReeferPushpinData = [];\r\n DryPushpinData = [];\r\n ChassisPushpinData = [];\r\n\r\n if (reeferMap != null) {\r\n reeferMasterData = formatterData;\r\n if (gridType === 'genset')\r\n GensetPushpinData = selectedRows;\r\n else if (gridType === 'status')\r\n ReeferPushpinData = selectedRows;\r\n else if (gridType === 'dry')\r\n DryPushpinData = selectedRows;\r\n else if (gridType === 'chassis')\r\n ChassisPushpinData = selectedRows;\r\n\r\n if (GensetPushpinData == null)\r\n GensetPushpinData = [];\r\n if (ReeferPushpinData == null)\r\n ReeferPushpinData = [];\r\n if (DryPushpinData == null)\r\n DryPushpinData = [];\r\n if (ChassisPushpinData == null)\r\n ChassisPushpinData = [];\r\n\r\n PushpinsData = GensetPushpinData.concat(ReeferPushpinData).concat(DryPushpinData).concat(ChassisPushpinData);\r\n\r\n Microsoft.Maps.loadModule('Microsoft.Maps.Clustering', { callback: clusterReeferModuleLoaded });\r\n\r\n ReeferMap.UpdateIsLocationEstimated(false);\r\n }\r\n }\r\n static BindTracePushpins(selectedRows: any, gridType: string) {\r\n gridName = gridType;\r\n PushpinsData = [];\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n }\r\n\r\n ClearMapLayers();\r\n\r\n layer = new Microsoft.Maps.Layer();\r\n //layer.setZIndex(20100);\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.GPSLatitude != null && selectedValue.GPSLongitude != null) {\r\n var latitude = selectedValue.GPSLatitude;\r\n var longitude = selectedValue.GPSLongitude;\r\n\r\n var assetId;\r\n \r\n var imageSource = '';\r\n if (selectedValue.GPSLatitude != 0 && selectedValue.GPSLongitude != 0 && ((selectedValue.GPSLockState == null || selectedValue.GPSLockState == \"\") || selectedValue.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n imageSource = pushpingray;\r\n else if (selectedIndex == 0) {\r\n //imageSource = pushpinyellow;\r\n if (selectedValue.EventMasterID.toString() == \"52\" && selectedValue.DeviceConfig == true)\r\n imageSource = pushpin_green_yellow;\r\n else if (selectedValue.EventMasterID.toString() == \"53\" && selectedValue.DeviceConfig == true)\r\n imageSource = pushpin_blue_yellow;\r\n else\r\n imageSource = pushpinyellow;\r\n }\r\n //else if (selectedIndex == parseInt(selectedRows.length) - 1)\r\n // imageSource = pushpinblue;\r\n //else if (selectedValue.EventMasterID.toString() == \"57\" || (selectedValue.DeviceType != null && selectedValue.DeviceType.trim() == \"CT3100\" && selectedValue.EventMasterID.toString() == \"52\"))\r\n // imageSource = pushpingreen;\r\n //else if (selectedValue.EventMasterID.toString() == \"58\" || (selectedValue.DeviceType != null && selectedValue.DeviceType.trim() == \"CT3100\" && selectedValue.EventMasterID.toString() == \"53\"))\r\n // imageSource = pushpinred;\r\n else if (selectedValue.EventMasterID.toString() == \"52\" && selectedValue.DeviceConfig == true) \r\n imageSource = pushpingreen;\r\n else if (selectedValue.EventMasterID.toString() == \"53\" && selectedValue.DeviceConfig == true)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude); //reeferMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n if (gridType == \"status\")\r\n assetId = selectedValue.UnitMasterID;\r\n //pushpin.setOptions({ color: selectedValue.UnitMasterID });\r\n else\r\n assetId = selectedValue.ParentEventID;\r\n\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n //pushpin.setOptions({ color: selectedValue.ParentEventID });\r\n /* InfoBox Code Starts */\r\n //pushpin.Description = '
    ';\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferMap);\r\n // Add handler for the pushpin click event.\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayReeferInfobox(args, gridType, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfoboxOnClick(args, gridName, assetId, false); });\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfobox(args) });\r\n // Hide the infobox when the map is moved.\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', function (args) { hideReeferInfobox(args) });\r\n /* InfoBox Code end */\r\n layer.add(pushpin); \r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferMap.layers.insert(layer);\r\n reeferMap.setView({ zoom: 12 });\r\n $('#globalLoader').hide();\r\n //reeferMap.entities.push(pushpin);\r\n }\r\n static DisplaySelectedPushpin(selectedRow: any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n\r\n calloutState = false;\r\n if (selectedRow.GPSLatitude != null && selectedRow.GPSLongitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.GPSLatitude;\r\n var longitude = selectedRow.GPSLongitude;\r\n\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.ParentEventID == selectedRow.ParentEventID) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n });\r\n\r\n var imageSource = '';\r\n var assetId;\r\n if (selectedRow.GPSLatitude != 0 && selectedRow.GPSLongitude != 0 && ((selectedRow.GPSLockState == null || selectedRow.GPSLockState == \"\") || selectedRow.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n imageSource = pushpingray;\r\n else if (rowIndex == 0) {\r\n //imageSource = pushpinyellow;\r\n if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpin_green_yellow;\r\n else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpin_blue_yellow;\r\n else\r\n imageSource = pushpinyellow;\r\n }\r\n //else if (rowIndex == PushpinsData.length - 1)\r\n // imageSource = pushpinblue;\r\n //else if (selectedRow.EventMasterID.toString() == \"57\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"52\"))\r\n // imageSource = pushpingreen;\r\n //else if (selectedRow.EventMasterID.toString() == \"58\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"53\"))\r\n // imageSource = pushpinred;\r\n else if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpingreen;\r\n else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var pushpinImage = imageSource;\r\n var popOffset = new Microsoft.Maps.Point(-4, 160);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n if (gridName == \"status\")\r\n assetId = selectedRow.UnitMasterID;\r\n //pushpin.setOptions({ color: selectedRow.UnitMasterID });\r\n else\r\n assetId = selectedRow.ParentEventID;\r\n //pushpin.setOptions({ color: selectedRow.ParentEventID });\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    '; \r\n var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode, mapName: gridName, reeferFormatters: reeferMasterData });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferMap.setView({\r\n center: latLong\r\n });\r\n\r\n pinInfobox.setMap(reeferMap);\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayReeferInfobox(args, gridName, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfoboxOnClick(args, gridName, assetId, false); });\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0\r\n reeferMap.layers.insert(traceLayer);\r\n\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n \r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    '; \r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n\r\n reeferMap.setView({\r\n center: center\r\n });\r\n\r\n toolTip.setMap(reeferMap);\r\n \r\n }\r\n }\r\n\r\n //26535 - start\r\n static DisplaySelectedPushpinByPassingFormatter(selectedRow: any, formatterData: any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n\r\n calloutState = false;\r\n if (selectedRow.GPSLatitude != null && selectedRow.GPSLongitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.GPSLatitude;\r\n var longitude = selectedRow.GPSLongitude;\r\n\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.ParentEventID == selectedRow.ParentEventID) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n });\r\n\r\n var imageSource = '';\r\n var assetId;\r\n if (selectedRow.GPSLatitude != 0 && selectedRow.GPSLongitude != 0 && ((selectedRow.GPSLockState == null || selectedRow.GPSLockState == \"\") || selectedRow.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n imageSource = pushpingray;\r\n else if (rowIndex == 0) {\r\n //imageSource = pushpinyellow;\r\n if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpin_green_yellow;\r\n else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpin_blue_yellow;\r\n else\r\n imageSource = pushpinyellow;\r\n }\r\n //else if (rowIndex == PushpinsData.length - 1)\r\n // imageSource = pushpinblue;\r\n //else if (selectedRow.EventMasterID.toString() == \"57\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"52\"))\r\n // imageSource = pushpingreen;\r\n //else if (selectedRow.EventMasterID.toString() == \"58\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"53\"))\r\n // imageSource = pushpinred;\r\n else if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpingreen;\r\n else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var pushpinImage = imageSource;\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n if (gridName == \"status\")\r\n assetId = selectedRow.UnitMasterID;\r\n //pushpin.setOptions({ color: selectedRow.UnitMasterID });\r\n else\r\n assetId = selectedRow.ParentEventID;\r\n //pushpin.setOptions({ color: selectedRow.ParentEventID });\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n \r\n var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode, mapName: gridName, reeferFormatters: formatterData });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferMap.setView({\r\n center: latLong\r\n });\r\n\r\n pinInfobox.setMap(reeferMap);\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayReeferInfobox(args, gridName, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfoboxOnClick(args, gridName, assetId, false); });\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0\r\n reeferMap.layers.insert(traceLayer);\r\n\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n \r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n\r\n reeferMap.setView({\r\n center: center\r\n });\r\n\r\n toolTip.setMap(reeferMap);\r\n\r\n }\r\n }\r\n //26535 - end\r\n static BindGensetTracePushpins(selectedRows: any, gridType: string) {\r\n gridName = gridType;\r\n PushpinsData = [];\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n }\r\n\r\n ClearMapLayers();\r\n\r\n layer = new Microsoft.Maps.Layer();\r\n //layer.setZIndex(20100);\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.Latitude != null && selectedValue.Longitude != null) {\r\n var latitude = selectedValue.Latitude;\r\n var longitude = selectedValue.Longitude;\r\n //var imageSource = 'genset_normal.png';\r\n var imageSource = '';\r\n if (selectedIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (selectedIndex == parseInt(selectedRows.length) - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var assetId;\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude); //reeferMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n\r\n //pushpin.setOptions({ color: selectedValue.GensetConditionLogID });\r\n assetId = selectedValue.GensetHistoryID;\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n /* InfoBox Code Starts */\r\n //pushpin.Description = '
    ';\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferMap);\r\n // Add handler for the pushpin click event.\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayGensetInfobox(args, gridType, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayGensetInfoboxOnClick(args, gridType, assetId, false); });\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfobox(args) });\r\n // Hide the infobox when the map is moved.\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', function (args) { hideReeferInfobox(args) });\r\n /* InfoBox Code end */\r\n layer.add(pushpin); \r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferMap.layers.insert(layer);\r\n reeferMap.setView({ zoom: 12 });\r\n $('#globalLoader').hide();\r\n //reeferMap.entities.push(pushpin);\r\n }\r\n\r\n static BindDryTracePushpins(selectedRows: any, gridType: string) {\r\n gridName = gridType;\r\n PushpinsData = [];\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n }\r\n\r\n ClearMapLayers();\r\n\r\n layer = new Microsoft.Maps.Layer();\r\n //layer.setZIndex(20100);\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.Latitude != null && selectedValue.Longitude != null) {\r\n var latitude = selectedValue.Latitude;\r\n var longitude = selectedValue.Longitude;\r\n\r\n //var imageSource = 'purple_pushpin.png';\r\n var imageSource = '';\r\n if (selectedIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (selectedIndex == parseInt(selectedRows.length) - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var assetId;\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude); //reeferMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n\r\n //pushpin.setOptions({ color: selectedValue.DCConditionLogID });\r\n assetId = selectedValue.DCHistoryID;\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n /* InfoBox Code Starts */\r\n //pushpin.Description = '
    ';\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferMap);\r\n // Add handler for the pushpin click event.\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayDryInfobox(args, gridType, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayDryInfoboxOnClick(args, gridType, assetId, false); });\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfobox(args) });\r\n // Hide the infobox when the map is moved.\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', function (args) { hideReeferInfobox(args) });\r\n /* InfoBox Code end */\r\n layer.add(pushpin); \r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferMap.layers.insert(layer);\r\n reeferMap.setView({ zoom: 12 });\r\n $('#globalLoader').hide();\r\n //reeferMap.entities.push(pushpin);\r\n }\r\n\r\n static BindChassisTracePushpins(selectedRows: any, gridType: string) {\r\n gridName = gridType;\r\n PushpinsData = [];\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n }\r\n\r\n ClearMapLayers();\r\n\r\n layer = new Microsoft.Maps.Layer();\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.Latitude != null && selectedValue.Longitude != null) {\r\n var latitude = selectedValue.Latitude;\r\n var longitude = selectedValue.Longitude;\r\n\r\n //var imageSource = 'purple_pushpin.png';\r\n var imageSource = ''; \r\n if (selectedIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (selectedIndex == parseInt(selectedRows.length) - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var assetId;\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude); //reeferMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n\r\n //pushpin.setOptions({ color: selectedValue.DCConditionLogID });\r\n assetId = selectedValue.ChassisHistoryID;\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n /* InfoBox Code Starts */\r\n //pushpin.Description = '
    ';\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferMap);\r\n // Add handler for the pushpin click event.\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayChassisInfobox(args, gridType, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayChassisInfoboxOnClick(args, gridType, assetId, false); });\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfobox(args) });\r\n // Hide the infobox when the map is moved.\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', function (args) { hideReeferInfobox(args) });\r\n /* InfoBox Code end */\r\n layer.add(pushpin); \r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferMap.layers.insert(layer);\r\n reeferMap.setView({ zoom: 12 });\r\n $('#globalLoader').hide();\r\n //reeferMap.entities.push(pushpin);\r\n }\r\n\r\n static DisplayGensetSelectedPushpin(selectedRow: any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n\r\n calloutState = false;\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.Latitude;\r\n var longitude = selectedRow.Longitude;\r\n\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.GensetHistoryID == selectedRow.GensetHistoryID) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n });\r\n //var imageSource = 'genset_normal.png';\r\n var imageSource = '';\r\n if (rowIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (rowIndex == PushpinsData.length - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var assetId;\r\n var pushpinImage = imageSource;\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n //if (gridName == \"status\")\r\n // pushpin.setOptions({ color: selectedRow.UnitMasterID });\r\n //else\r\n // pushpin.setOptions({ color: selectedRow.ParentEventID });\r\n\r\n //pushpin.setOptions({ color: selectedRow.GensetConditionLogID });\r\n assetId = selectedRow.GensetHistoryID;\r\n\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferMap.setView({\r\n center: latLong\r\n });\r\n\r\n pinInfobox.setMap(reeferMap);\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayGensetInfobox(args, gridName, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayGensetInfoboxOnClick(args, gridName, assetId, false); });\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0\r\n reeferMap.layers.insert(traceLayer);\r\n\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n reeferMap.setView({\r\n center: center\r\n });\r\n toolTip.setMap(reeferMap);\r\n\r\n }\r\n }\r\n\r\n static DisplayDrySelectedPushpin(selectedRow: any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n\r\n calloutState = false;\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.Latitude;\r\n var longitude = selectedRow.Longitude;\r\n\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.DCHistoryID == selectedRow.DCHistoryID) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n });\r\n //var imageSource = 'purple_pushpin.png';\r\n var imageSource = '';\r\n if (rowIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (rowIndex == PushpinsData.length - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var assetId;\r\n var pushpinImage = imageSource;\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n //if (gridName == \"status\")\r\n // pushpin.setOptions({ color: selectedRow.UnitMasterID });\r\n //else\r\n // pushpin.setOptions({ color: selectedRow.ParentEventID });\r\n\r\n //pushpin.setOptions({ color: selectedRow.DCConditionLogID });\r\n assetId = selectedRow.DCHistoryID;\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferMap.setView({\r\n center: latLong\r\n });\r\n\r\n pinInfobox.setMap(reeferMap);\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayDryInfobox(args, gridName, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayDryInfoboxOnClick(args, gridName, assetId, false); });\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0\r\n reeferMap.layers.insert(traceLayer);\r\n\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n reeferMap.setView({\r\n center: center\r\n });\r\n toolTip.setMap(reeferMap);\r\n\r\n }\r\n }\r\n\r\n static DisplayChassisSelectedPushpin(selectedRow: any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n\r\n calloutState = false;\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.Latitude;\r\n var longitude = selectedRow.Longitude;\r\n\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.ChassisHistoryID == selectedRow.ChassisHistoryID) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n });\r\n //var imageSource = 'purple_pushpin.png';\r\n var imageSource = '';\r\n if (rowIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (rowIndex == PushpinsData.length - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n\r\n var assetId;\r\n var pushpinImage = imageSource;\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n //if (gridName == \"status\")\r\n // pushpin.setOptions({ color: selectedRow.UnitMasterID });\r\n //else\r\n // pushpin.setOptions({ color: selectedRow.ParentEventID });\r\n\r\n //pushpin.setOptions({ color: selectedRow.DCConditionLogID });\r\n assetId = selectedRow.ChassisHistoryID;\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferMap.setView({\r\n center: latLong\r\n });\r\n\r\n pinInfobox.setMap(reeferMap);\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayChassisInfobox(args, gridName, assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayChassisInfoboxOnClick(args, gridName, assetId, false); });\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0\r\n reeferMap.layers.insert(traceLayer);\r\n\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n reeferMap.setView({\r\n center: center\r\n });\r\n toolTip.setMap(reeferMap);\r\n\r\n }\r\n }\r\n}\r\n\r\nfunction displayGensetInfobox(event, source, assetId) {\r\n //if (calloutState) {\r\n // calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target.metadata.assetId;\r\n // var eventId = assetId;\r\n var dataItem = null;\r\n if (source == 'status') {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetCurrentConditionId) {\r\n if (PushpinsData[i].GensetCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetHistoryID) {\r\n if (PushpinsData[i].GensetHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n //if (source) {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //} else {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].GensetConditionLogID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //}\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n //}\r\n}\r\n\r\nfunction displayGensetInfoboxOnClick(event, source, assetId, enableHistory) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n //var eventId = assetId;\r\n var eventId = event.target.metadata.assetId;\r\n\r\n var dataItem = null;\r\n if (source == 'status') {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetCurrentConditionId) {\r\n if (PushpinsData[i].GensetCurrentConditionId.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (enableHistory)\r\n GensetStatusGrid.SelectCurrentGenset(dataItem);\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetHistoryID) {\r\n if (PushpinsData[i].GensetHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n //if (source) {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //} else {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].GensetConditionLogID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //}\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction displayDryInfobox(event, source, assetId) {\r\n //if (calloutState) {\r\n // calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target.metadata.assetId;\r\n // var eventId = assetId;\r\n var dataItem = null;\r\n if (source == \"status\") {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DCCurrentConditionID) {\r\n if (PushpinsData[i].DCCurrentConditionID == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DCHistoryID) {\r\n if (PushpinsData[i].DCHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n //if (source) {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //} else {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].GensetConditionLogID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //}\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n //}\r\n}\r\n\r\nfunction displayDryInfoboxOnClick(event, source, assetId, enableHistory) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n //var eventId = assetId;\r\n var eventId = event.target.metadata.assetId;\r\n var dataItem = null;\r\n\r\n if (source == \"status\") {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DCCurrentConditionID) {\r\n if (PushpinsData[i].DCCurrentConditionID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (enableHistory)\r\n DryStatusSSRMGrid.SelectCurrentDry(dataItem);\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DCHistoryID) {\r\n if (PushpinsData[i].DCHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n //if (source) {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //} else {\r\n // for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].GensetConditionLogID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n // }\r\n //}\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction displayChassisInfobox(event, source, assetId) {\r\n //if (calloutState) {\r\n // calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target.metadata.assetId;\r\n // var eventId = assetId; \r\n var dataItem = null;\r\n if (source == \"status\") {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisCurrentConditionID) {\r\n if (PushpinsData[i].ChassisCurrentConditionID == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisHistoryID) {\r\n if (PushpinsData[i].ChassisHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n \r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n //}\r\n}\r\n\r\nfunction displayChassisInfoboxOnClick(event, source, assetId, enableHistory) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n //var eventId = assetId;\r\n var eventId = event.target.metadata.assetId;\r\n var dataItem = null; \r\n if (source == \"status\") {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisCurrentConditionID) {\r\n if (PushpinsData[i].ChassisCurrentConditionID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (enableHistory)\r\n ChassisStatusGrid.SelectCurrentChassis(dataItem);\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisHistoryID) {\r\n if (PushpinsData[i].ChassisHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n \r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\n//class PanningOverlay extends Microsoft.Maps.CustomOverlay {\r\n// bounds: Microsoft.Maps.LocationRect;\r\n// private panUpBtn: HTMLInputElement;\r\n// private panDownBtn: HTMLInputElement;\r\n// private panLeftBtn: HTMLInputElement;\r\n// private panRightBtn: HTMLInputElement;\r\n\r\n// constructor(bounds: Microsoft.Maps.LocationRect) {\r\n// super({ beneathLabels: false });\r\n// this.bounds = bounds;\r\n\r\n// this.panUpBtn = document.createElement('input');\r\n// this.panUpBtn.type = 'button';\r\n// this.panUpBtn.value = '˄';\r\n// this.panUpBtn.onclick = () => {\r\n// this.panMap('up');\r\n// };\r\n// this.panDownBtn = document.createElement('input');\r\n// this.panDownBtn.type = 'button';\r\n// this.panDownBtn.value = '˅';\r\n// this.panDownBtn.onclick = () => {\r\n// this.panMap('down');\r\n// };\r\n// this.panLeftBtn = document.createElement('input');\r\n// this.panLeftBtn.type = 'button';\r\n// this.panLeftBtn.value = '<';\r\n// this.panLeftBtn.onclick = () => {\r\n// this.panMap('left');\r\n// };\r\n// this.panRightBtn = document.createElement('input');\r\n// this.panRightBtn.type = 'button';\r\n// this.panRightBtn.value = '>';\r\n// this.panRightBtn.onclick = () => {\r\n// this.panMap('right');\r\n// };\r\n\r\n// }\r\n// onAdd() {\r\n// var container = document.createElement('div');\r\n// container.appendChild(this.panUpBtn);\r\n// container.appendChild(this.panDownBtn);\r\n// container.appendChild(this.panLeftBtn);\r\n// container.appendChild(this.panRightBtn);\r\n// container.style.position = 'absolute';\r\n// container.style.top = '10px';\r\n// container.style.left = '10px';\r\n// this.setHtmlElement(container);\r\n// }\r\n// panMap(dir: any) {\r\n// var dx = 0, dy = 0;\r\n// switch (dir) {\r\n// case 'up':\r\n// dy = -30;\r\n// break;\r\n// case 'down':\r\n// dy = 30;\r\n// break;\r\n// case 'left':\r\n// dx = -30;\r\n// break;\r\n// case 'right':\r\n// dx = 30;\r\n// break;\r\n// }\r\n// var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter());\r\n// cp.x += dx;\r\n// cp.y += dy;\r\n// reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp) });\r\n// }\r\n//}\r\nfunction clusterReeferModuleLoaded() {\r\n //Clear map infobox\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n\r\n //Create an infobox at the center of the map but don't show it.\r\n pinInfobox = new Microsoft.Maps.Infobox(reeferMap.getCenter(), {\r\n visible: false\r\n });\r\n //Assign the infobox to a map instance.\r\n pinInfobox.setMap(reeferMap);\r\n ClearMapLayers();\r\n\r\n //checkPinsWithRunState = JSON.parse(sessionStorage.getItem('UserInfo')).ShowMapPinsWithRunState;\r\n\r\n var reeferPushpins = [];\r\n var firstLatitude;\r\n var firstLongitude;\r\n var count = 0; \r\n\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n var assetTypeCd;\r\n var latitude;\r\n var longitude;\r\n var IsReefer = false;\r\n var IsGenset = false;\r\n var IsDry = false;\r\n var IsChassis = false;\r\n if (PushpinsData[i].GensetCurrentConditionId != undefined) {\r\n latitude = PushpinsData[i].Latitude;\r\n longitude = PushpinsData[i].Longitude;\r\n IsReefer = false;\r\n IsGenset = true;\r\n IsDry = false;\r\n IsChassis = false;\r\n }\r\n else if (PushpinsData[i].DCCurrentConditionID != undefined) {\r\n latitude = PushpinsData[i].Latitude;\r\n longitude = PushpinsData[i].Longitude;\r\n IsReefer = false;\r\n IsGenset = false;\r\n IsDry = true;\r\n IsChassis = false;\r\n }\r\n else if (PushpinsData[i].ChassisCurrentConditionID != undefined) {\r\n latitude = PushpinsData[i].Latitude;\r\n longitude = PushpinsData[i].Longitude;\r\n IsReefer = false;\r\n IsGenset = false;\r\n IsDry = false;\r\n IsChassis = true;\r\n } \r\n else {\r\n latitude = PushpinsData[i].GPSLatitude;\r\n longitude = PushpinsData[i].GPSLongitude;\r\n IsReefer = true;\r\n IsGenset = false;\r\n IsDry = false;\r\n IsChassis = false;\r\n }\r\n //if (gridName == \"genset\") {\r\n // latitude = PushpinsData[i].Latitude;\r\n // longitude = PushpinsData[i].Longitude;\r\n //}\r\n //else {\r\n // latitude = PushpinsData[i].GPSLatitude;\r\n // longitude = PushpinsData[i].GPSLongitude;\r\n //}\r\n if (latitude != null && longitude != null) {\r\n var pushpinImage;\r\n var assetId;\r\n if (IsReefer) {\r\n if (!isNullOrUndefined(PushpinsData[i].RunState)) {\r\n if ((PushpinsData[i].RunState.toString().toUpperCase().trim()) == 'I')\r\n pushpinImage = reeferrunning;\r\n else if ((PushpinsData[i].RunState.toString().toUpperCase().trim()) == 'S')\r\n pushpinImage = reeferstandby;\r\n else if ((PushpinsData[i].RunState.toString().toUpperCase().trim()) == 'X')\r\n pushpinImage = reefershutdown;\r\n else if ((PushpinsData[i].RunState.toString().toUpperCase().trim()) == 'O')\r\n pushpinImage = reeferoffline;\r\n else\r\n pushpinImage = reefernormal;\r\n }\r\n else\r\n pushpinImage = reefernormal;\r\n //if (checkPinsWithRunState) {\r\n // if (PushpinsData[i].RunState == 1)\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/ReeferGreen.png';\r\n // else if (PushpinsData[i].RunState == 2)\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/ReeferOrange.png';\r\n // else if (PushpinsData[i].RunState == 3)\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/ReeferBlue.png';\r\n // else if (PushpinsData[i].RunState == 4)\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/ReeferGrey.png';\r\n // else if (PushpinsData[i].RunState == 5)\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/ReeferGrey.png';\r\n // else\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/reefer_normal.png';\r\n //}\r\n //else\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/reefer_normal.png';\r\n\r\n assetId = PushpinsData[i].UnitMasterID;\r\n assetTypeCd = \"R\";\r\n }\r\n else if (IsGenset) {\r\n //if (checkPinsWithRunState) {\r\n // if (PushpinsData[i].EventCD != \"MSE\" && (PushpinsData[i].IgnitionOn != null && PushpinsData[i].IgnitionOn.toString().toUpperCase().trim() == \"TRUE\"))\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/GensetGreen.png';\r\n // else if (PushpinsData[i].EventCD == \"MSE\" && (PushpinsData[i].IgnitionOn != null && PushpinsData[i].IgnitionOn.toString().toUpperCase().trim() == \"TRUE\"))\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/GensetOrange.png';\r\n // else if (PushpinsData[i].EventCD != \"MSE\" && (PushpinsData[i].IgnitionOn != null && PushpinsData[i].IgnitionOn.toString().toUpperCase().trim() == \"FALSE\"))\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/GensetBlue.png';\r\n // else if (PushpinsData[i].EventCD == \"MSE\" && (PushpinsData[i].IgnitionOn != null && PushpinsData[i].IgnitionOn.toString().toUpperCase().trim() == \"FALSE\"))\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/GensetGrey.png';\r\n // else\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/genset_normal.png';\r\n //}\r\n //else\r\n pushpinImage = gensetnormal;\r\n\r\n assetId = PushpinsData[i].GensetCurrentConditionId;\r\n assetTypeCd = \"G\";\r\n }\r\n else if (IsDry) {\r\n $('#geoZones').show();\r\n //if (checkPinsWithRunState) {\r\n // if (PushpinsData[i].EventCD != \"MSE\")\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/DryGreen.png';\r\n // else if (PushpinsData[i].EventCD == \"MSE\")\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/DryBlue.png';\r\n // else\r\n // pushpinImage = process.env.PUBLIC_URL + '/images/MapPushPins/dry_purple.png';\r\n //}\r\n //else\r\n pushpinImage = drypurple;\r\n\r\n assetId = PushpinsData[i].DCCurrentConditionID;\r\n assetTypeCd = \"D\";\r\n }\r\n else if (IsChassis) { \r\n pushpinImage = chassisorange;\r\n\r\n assetId = PushpinsData[i].ChassisCurrentConditionID;\r\n assetTypeCd = \"C\";\r\n }\r\n else {\r\n pushpinImage = historynormal;\r\n assetId = PushpinsData[i].ParentEventID;\r\n }\r\n if (IsReefer && count == 0) {\r\n firstLatitude = PushpinsData[i].GPSLatitude;\r\n firstLongitude = PushpinsData[i].GPSLongitude;\r\n }\r\n else if (IsGenset && count == 0) {\r\n firstLatitude = PushpinsData[i].Latitude;\r\n firstLongitude = PushpinsData[i].Longitude;\r\n }\r\n else if (IsDry && count == 0) {\r\n firstLatitude = PushpinsData[i].Latitude;\r\n firstLongitude = PushpinsData[i].Longitude;\r\n }\r\n else if (IsChassis && count == 0) {\r\n firstLatitude = PushpinsData[i].Latitude;\r\n firstLongitude = PushpinsData[i].Longitude;\r\n }\r\n //if ((!IsReefer)) {\r\n // if (count == 0) {\r\n // firstLatitude = PushpinsData[i].Latitude;\r\n // firstLongitude = PushpinsData[i].Longitude;\r\n // }\r\n //}\r\n //else {\r\n // if (count == 0) {\r\n // firstLatitude = PushpinsData[i].GPSLatitude;\r\n // firstLongitude = PushpinsData[i].GPSLongitude;\r\n // }\r\n //}\r\n //if ((!IsReefer)) {\r\n // if (count == 0) {\r\n // firstLatitude = PushpinsData[i].Latitude;\r\n // firstLongitude = PushpinsData[i].Longitude;\r\n // }\r\n //}\r\n //else {\r\n // if (count == 0) {\r\n // firstLatitude = PushpinsData[i].GPSLatitude;\r\n // firstLongitude = PushpinsData[i].GPSLongitude;\r\n // }\r\n //}\r\n\r\n count++;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n\r\n var latLon = new Microsoft.Maps.Location(latitude, longitude);\r\n\r\n var pushpin = new Microsoft.Maps.Pushpin(latLon, pushpinOptions);\r\n pushpin.metadata = {\r\n assetId: assetId\r\n };\r\n\r\n pushpin.setOptions({ color: assetTypeCd });\r\n if (IsReefer) {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayReeferInfobox(args, 'status', assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfoboxOnClick(args, 'status', assetId, true); });\r\n\r\n }\r\n else if (IsGenset) {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayGensetInfobox(args, 'status', assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayGensetInfoboxOnClick(args, 'status', assetId, true); });\r\n\r\n }\r\n else if (IsDry) {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayDryInfobox(args, 'status', assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayDryInfoboxOnClick(args, 'status', assetId, true); });\r\n\r\n }\r\n else if (IsChassis) {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayChassisInfobox(args, 'status', assetId); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayChassisInfoboxOnClick(args, 'status', assetId, true); });\r\n\r\n }\r\n\r\n\r\n reeferPushpins.push(pushpin);\r\n\r\n }\r\n }\r\n\r\n layer = new Microsoft.Maps.ClusterLayer(reeferPushpins, {\r\n clusteredPinCallback: function (cluster) {\r\n //Customize clustered pushpin.\r\n var minRadius = 8;\r\n var outlineWidth = 1;\r\n var assetTypes: any = cluster.containedPushpins.map(function (v, i) { return v.getColor() });\r\n var assetCd = uniq(assetTypes);\r\n\r\n var fillColor;\r\n if (assetCd.length > 1)\r\n fillColor = 'rgba(0, 0, 0, 1)';\r\n else {\r\n if (assetCd == \"R\")\r\n fillColor = 'rgba(0, 176, 70, 1)';\r\n else if (assetCd == \"G\")\r\n fillColor = 'rgba(26, 62, 150, 1)';\r\n else if (assetCd == \"C\")\r\n fillColor = 'rgba(229, 144, 3, 1)';\r\n else\r\n fillColor = 'rgba(128, 0, 128, 1)';\r\n }\r\n\r\n //if (gridName == \"status\")\r\n // fillColor = 'rgba(0, 176, 70, 1)';//'rgba(0, 0, 0, 1)';\r\n //else if (gridName == \"genset\")\r\n // fillColor = 'rgba(26, 62, 150, 1)'; \r\n //else\r\n // fillColor = 'rgba(253, 120, 0, 1)';\r\n\r\n var fillColorDefault = 'rgba(255, 255, 255, 1)';\r\n //var lstClusterPins = [];\r\n\r\n //var strPinCount = cluster.containedPushpins.length.toString();\r\n //var strlen = strPinCount.length > 4 ? 4 : strPinCount.length;\r\n //for (var i = 0; i < cluster.containedPushpins.length; i++) {\r\n // var eventId = cluster.containedPushpins[i].getColor(); \r\n // var clusterItem = {\r\n // EventId: eventId\r\n // };\r\n // lstClusterPins.push(clusterItem);\r\n //}\r\n var clusterSize = cluster.containedPushpins.length;\r\n var radius = Math.log(clusterSize) / Math.log(10) * 3 + minRadius;\r\n\r\n //Create an SVG string of two circles, one on top of the other, with the specified radius and color.\r\n var svg = ['',\r\n '',\r\n '',\r\n ''];\r\n //Customize the clustered pushpin using the generated SVG and anchor on its center.\r\n cluster.setOptions({\r\n icon: svg.join(''),\r\n anchor: new Microsoft.Maps.Point(radius, radius),\r\n textOffset: new Microsoft.Maps.Point(0, radius - 8), //Subtract 8 to compensate for height of text.\r\n //anchor: new Microsoft.Maps.Point(14, 14)\r\n });\r\n Microsoft.Maps.Events.addHandler(cluster, 'click', function (args) { clusterPushpinClicked(args); });\r\n //var clusterlink = \"ShowDeviceClusterPinsData('\" + JSON.stringify(lstClusterPins) + \"')\";\r\n //cluster.Description = \"\";\r\n\r\n //Microsoft.Maps.Events.addHandler(cluster, 'click', function (args) { ReeferClusterPinsDisplayInfobox(args, clusterlink); });\r\n },\r\n gridSize: 80,\r\n zIndex: 20100\r\n });\r\n\r\n reeferMap.layers.insert(layer);\r\n if (!fenceAssets) {\r\n if (firstLatitude != undefined && firstLongitude != undefined) {\r\n reeferMap.setView({\r\n center: new Microsoft.Maps.Location(firstLatitude, firstLongitude),\r\n zoom: 4\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction clusterPushpinClicked(e) {\r\n //Check to see if the clicked pushpin has any contained pushpins (this would be a cluster).\r\n if (e.target.containedPushpins) {\r\n var locs = [];\r\n for (var i = 0, len = e.target.containedPushpins.length; i < len; i++) {\r\n //Get the location of each pushpin.\r\n locs.push(e.target.containedPushpins[i].getLocation());\r\n }\r\n //Create a bounding box for the pushpins.\r\n var bounds = Microsoft.Maps.LocationRect.fromLocations(locs);\r\n //Zoom into the bounding box of the cluster. \r\n //Add a padding to compensate for the pixel area of the pushpins.\r\n reeferMap.setView({ bounds: bounds, padding: 100 });\r\n }\r\n}\r\n\r\nfunction ReeferClusterPinsDisplayInfobox(event, clusterlink) {\r\n window.event.cancelBubble = true\r\n if (!event) var e = window.event\r\n e.cancelBubble = true;\r\n if (e.stopPropagation)\r\n e.stopPropagation();\r\n\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n var description = \"\";\r\n pinInfobox.setOptions({\r\n location: event.target.getLocation(),\r\n showPointer: true,\r\n description: description,\r\n showCloseButton: true,\r\n visible: true,\r\n offset: new Microsoft.Maps.Point(3, 10),\r\n maxHeight: 50,\r\n maxWidth: 150\r\n });\r\n\r\n Microsoft.Maps.Events.addHandler(pinInfobox, 'click', hideReeferInfobox);\r\n\r\n } catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction displayReeferInfoboxOnClick(event, source, assetId, enableHistory) {\r\n if (event.targetType == 'pushpin') {\r\n try { \r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target.metadata.assetId;\r\n //var eventId = assetId;\r\n var dataItem = null;\r\n if (source == \"status\") {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].UnitMasterID) {\r\n if (PushpinsData[i].UnitMasterID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (enableHistory)\r\n ReeferStatusGrid.SelectCurrentReefer(dataItem);\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ParentEventID) {\r\n if (PushpinsData[i].ParentEventID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    '; \r\n var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: dataItem, divid: identityCode, mapName: gridName, reeferFormatters: reeferMasterData });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\nfunction displayReeferInfobox(event, source, assetId) {\r\n //if (calloutState) {\r\n // calloutState = false;\r\n\r\n if (event.targetType == 'pushpin') {\r\n try { \r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n // var eventId = assetId;\r\n var eventId = event.target.metadata.assetId;\r\n var dataItem = null;\r\n if (source == \"status\") {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].UnitMasterID) {\r\n if (PushpinsData[i].UnitMasterID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ParentEventID) {\r\n if (PushpinsData[i].ParentEventID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n } \r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    '; \r\n var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: dataItem, divid: identityCode, mapName: gridName, reeferFormatters: reeferMasterData });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferMap.tryLocationToPixel(reeferMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferMap.setView({ center: reeferMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n //}\r\n}\r\n\r\n\r\n//Removes the selected state for the style options.\r\nfunction clearSelection(parentId, className) {\r\n var parent = document.getElementById(parentId);\r\n for (var i = 0; i < parent.children.length; i++) {\r\n parent.children[i].className = className;\r\n }\r\n}\r\n\r\nvar style = {\r\n color: 'purple',\r\n fillColor: 'rgba(0,255,0,0.5)',\r\n strokeColor: 'blue',\r\n strokeThickness: 1\r\n};\r\n\r\nfunction addFenceToLayer(fenceData) {\r\n var coordinatesList = [];\r\n if (fenceData.Coordinates.length > 0) {\r\n fenceData.Coordinates.forEach(function (point) {\r\n var latLong = point.split(\",\");\r\n var coordinates = new Microsoft.Maps.Location(latLong[0], latLong[1]);\r\n coordinatesList.push(coordinates);\r\n });\r\n }\r\n\r\n var newFence = { GeofenceHistoryID: null, GeofenceRevisionNum: null, GeofenceCategoryCd: fenceData.FenceTypeCd, Tag: fenceData.FenceId, Name: fenceData.FenceName, Address: fenceData.Address, FormatedCoordinates: coordinatesList };\r\n\r\n GeofencesData.push(newFence);\r\n\r\n if (fenceLayer != null) {\r\n fenceLayer.clear();\r\n pinsLayer.clear();\r\n }\r\n //fenceLayer = new Microsoft.Maps.Layer();\r\n\r\n //Clear map infobox\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n\r\n //Create an infobox at the center of the map but don't show it.\r\n pinInfobox = new Microsoft.Maps.Infobox(reeferMap.getCenter(), {\r\n visible: false\r\n });\r\n //Assign the infobox to a map instance.\r\n pinInfobox.setMap(reeferMap);\r\n\r\n $.each(GeofencesData, function (selectedIndex, selectedValue) {\r\n var exteriorRing = selectedValue.FormatedCoordinates;\r\n var selectedFence = selectedValue;\r\n\r\n var polygon;\r\n if (selectedValue.GeofenceCategoryCd == \"B\")\r\n polygon = new Microsoft.Maps.Polygon(exteriorRing, { strokeDashArray: [1, 3] });\r\n else\r\n polygon = new Microsoft.Maps.Polygon(exteriorRing, null);\r\n fenceLayer.add(polygon);\r\n\r\n var center = Microsoft.Maps.SpatialMath.Geometry.centroid(polygon);\r\n\r\n var imageSource = polygonImageblue;\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n\r\n pinsLayer.add(pushpin);\r\n\r\n Microsoft.Maps.Events.addHandler(polygon, 'mousedown', function (args) { displayFenceInfoboxOnClick(args, selectedFence, polygon); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mousedown', function (args) { displayFenceInfoboxOnClick(args, selectedFence, polygon); });\r\n });\r\n\r\n reeferMap.layers.insert(fenceLayer);\r\n reeferMap.layers.insert(pinsLayer);\r\n\r\n $(\"#globalLoader\").hide();\r\n}\r\n\r\nfunction drawPolygon() {\r\n if (setMode('polygon')) {\r\n //Create a new polygon.\r\n drawingTools.create(Microsoft.Maps.DrawingTools.ShapeType.polygon, function (s) {\r\n s.setOptions(style);\r\n currentShape = s;\r\n });\r\n }\r\n}\r\n\r\nfunction edit() {\r\n if (setMode('edit')) {\r\n //Enable pushpin dragging in layer.\r\n setPushpinDraggability(true);\r\n events.push(Microsoft.Maps.Events.addHandler(fenceLayer, 'click', function (e) {\r\n resetDrawingState();\r\n currentShape = e.primitive;\r\n //if (e.primitive.metadata && e.primitive.metadata.type === 'circle') {\r\n // editCircle(e);\r\n //} else if (e.primitive.metadata && e.primitive.metadata.type === 'rectangle') {\r\n // editRectangle(e);\r\n //}\r\n if (e.primitive instanceof Microsoft.Maps.Polygon) {\r\n //Remove the shape from the map as the drawing tools will display it in the drawing layer.\r\n fenceLayer.remove(e.primitive);\r\n //Pass the shape to the drawing tools to be edited.\r\n drawingTools.edit(e.primitive);\r\n }\r\n }));\r\n } else {\r\n //Disable pushpin dragging in layer.\r\n setPushpinDraggability(false);\r\n }\r\n}\r\n\r\nfunction erase() {\r\n var IsReprocess = false;\r\n if (setMode('erase')) {\r\n events.push(Microsoft.Maps.Events.addHandler(fenceLayer, 'click', function (e) {\r\n var selectedfence = e.primitive;\r\n var message = '';\r\n if (currentFence == null)\r\n message = 'The geofence will be permanently deleted. Continue?';\r\n else\r\n message = \"Fence ID '\" + currentFence.Tag + \"' will be permanently deleted. Continue?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(message, function (e) {\r\n if (!IsReprocess) {\r\n if (currentFence == null) {\r\n fenceLayer.remove(selectedfence);//remove from layer\r\n //resetDrawing();\r\n eraseMode();\r\n }\r\n else {\r\n ReeferMap.DeleteCustomerGeofence(currentFence, fenceLayer, selectedfence);\r\n //resetDrawing();\r\n }\r\n IsReprocess = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n }, function (e) {\r\n RCNGWindow.ConfirmWindow.close();\r\n });\r\n\r\n }));\r\n //events.push(Microsoft.Maps.Events.addHandler(fenceLayer, 'mousedown', function (e) { confirmDeleteGeofence(); }));\r\n }\r\n}\r\n\r\nfunction eraseMode() {\r\n currentFence = null;\r\n currentMode = null;\r\n if (!$(\"#DeletePolygonMode\").hasClass(\"active\")) $('#DeletePolygonMode').addClass('active');\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").show();\r\n erase();\r\n}\r\n\r\nfunction resetDrawing() {\r\n drawingTools.dispose();\r\n drawingTools = new Microsoft.Maps.DrawingTools(reeferMap);\r\n setMode(null);\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n}\r\n\r\nfunction setPushpinDraggability(draggable) {\r\n var shapes = fenceLayer.getPrimitives();\r\n for (var i = 0, len = shapes.length; i < len; i++) {\r\n if (shapes[i] instanceof Microsoft.Maps.Pushpin) {\r\n shapes[i].setOptions({ draggable: draggable });\r\n }\r\n }\r\n}\r\n\r\n\r\n//Sets the drawing mode, or toggles out of a mode if it is already set. \r\n//Returns true if the specified mode is new.\r\nfunction setMode(mode) {\r\n //Remove all attached events.\r\n for (var i = 0; i < events.length; i++) {\r\n Microsoft.Maps.Events.removeHandler(events[i]);\r\n }\r\n events = [];\r\n //Unlock map so incase it has been locked previously.\r\n //reeferMap.setOptions({ disablePanning: true });\r\n var state = false;\r\n if (currentMode === mode || mode == null) {\r\n //Toggle out of currentMode mode.\r\n currentMode = null;\r\n clearSelection('DrawingModes', 'btn btn-outline-secondary');\r\n } else {\r\n currentMode = mode;\r\n state = true;\r\n }\r\n resetDrawingState();\r\n return state;\r\n}\r\n\r\nfunction resetDrawingState() {\r\n //Stop any current drawing.\r\n if (currentShape != null && currentShape != undefined) {\r\n var locs = currentShape.getLocations();\r\n if (locs.length > 0) {\r\n drawingTools.finish(function (s) {\r\n //Add the completed shape to the drawing layer.\r\n fenceLayer.add(s);\r\n });\r\n }\r\n currentShape = null;\r\n }\r\n if (currentMode !== 'edit') {\r\n //Disable pushpin dragging in layer.\r\n setPushpinDraggability(false);\r\n }\r\n}\r\n\r\n\r\nfunction mapTypeChanged(params) {\r\n var mapType = reeferMap.getImageryId();\r\n if (mapType == \"Aerial\") {\r\n $(\"#mapFences\").removeClass('map-Geofence');\r\n $(\"#mapFences\").addClass('mapGeofenceAerial');\r\n $(\"#geoZones\").removeClass('map-Geofence');\r\n $(\"#geoZones\").addClass('mapGeofenceAerial');\r\n ReeferMap.UpdateFenceImage('A');\r\n }\r\n else {\r\n $(\"#mapFences\").removeClass('mapGeofenceAerial');\r\n $(\"#mapFences\").addClass('map-Geofence');\r\n $(\"#geoZones\").removeClass('mapGeofenceAerial');\r\n $(\"#geoZones\").addClass('map-Geofence'); \r\n ReeferMap.UpdateFenceImage('R');\r\n }\r\n}\r\n\r\nfunction validateGeofencePolygon(locs, currentMode, currentFence, GeofencesData) {\r\n //Api call\r\n ReeferMap.ValidatePolygonGeofenceDashboard(locs, currentMode, currentFence, GeofencesData); \r\n}\r\n\r\nfunction drawingFinished(params) {\r\n if (currentShape != null && currentShape != undefined) {\r\n var locs = currentShape.getLocations();\r\n //var dt = Microsoft.Maps.DrawingTools;\r\n //var da = dt.DrawingMode;\r\n if (locs != null && locs != undefined) {\r\n var latlonArray = [];\r\n $.each(locs, function (index, value) {\r\n if (!(latlonArray.indexOf(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9)) > -1))\r\n latlonArray.push(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9));\r\n });\r\n if (latlonArray.length > 12) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Maximum of 12 points is allowed.\");\r\n }\r\n else if (latlonArray.length < 3) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Minimum of 3 points is required.\");\r\n }\r\n else \r\n validateGeofencePolygon(locs, currentMode, currentFence, GeofencesData); \r\n }\r\n }\r\n}\r\n\r\n//function drawingEnded(params) {\r\n// if (drawingManager != null && drawingManager != undefined) {\r\n// var dt = Microsoft.Maps.DrawingTools;\r\n// var da = dt.DrawingMode;\r\n// var shapes = drawingManager.getPrimitives();\r\n// if (shapes != null && shapes != undefined && shapes.length > 0) {\r\n// if (shapes.length > 1) {\r\n// drawingManager.setDrawingMode(da.erase);\r\n// alert(\"Multiple geofences cannot be added.\");\r\n// return false;\r\n// }\r\n// var locs = shapes[0].getLocations();\r\n// if (locs.length > 12) {\r\n// drawingManager.setDrawingMode(da.edit);\r\n// alert(\"A maximum of 12 points is allowed.\");\r\n// return false;\r\n// }\r\n// else { \r\n// var isPolygon = pointInPolygon(locs);\r\n// if (isPolygon) {\r\n// drawingManager.setDrawingMode(da.none);\r\n// //var polygon = new Microsoft.Maps.Polygon(locs);\r\n// //Microsoft.Maps.Events.addHandler(polygon, 'click', function () { alert('polygonClick'); });\r\n// alert(\"Popup form to collect geofence information\");\r\n// }\r\n// else {\r\n// alert(\"A self-intersecting polygon cannot be used to define a geofence. Please change the polygon accordingly.\");\r\n// }\r\n// }\r\n// }\r\n// }\r\n//}\r\n\r\nfunction displayFenceInfoboxOnClick(event, selectedFence, polygon) { \r\n currentFence = selectedFence;\r\n if ((event.targetType == \"polygon\" || event.targetType == \"pushpin\") && (currentMode == 'polygon' || currentMode == null)) {\r\n try {\r\n var dataItem = null;\r\n\r\n for (var i = 0; i < GeofencesData.length; i++) {\r\n if (GeofencesData[i].GeofenceHistoryID.toString() == selectedFence.GeofenceHistoryID.toString()) {\r\n dataItem = GeofencesData[i];\r\n break;\r\n }\r\n }\r\n\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n var center = Microsoft.Maps.SpatialMath.Geometry.centroid(polygon);\r\n var popOffset = new Microsoft.Maps.Point(-4, 155);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.PinInfoboxFenceLocation, { selectedPin: dataItem, divid: identityCode, source: \"Dashboard\" });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 130,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: new Microsoft.Maps.Location(center.latitude, center.longitude),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n var exteriorRing = dataItem.FormatedCoordinates;\r\n var bound = Microsoft.Maps.LocationRect.fromLocations(exteriorRing);\r\n reeferMap.setView({ bounds: bound, center: center, padding: 100 });//RCNG-2840\r\n\r\n pinInfobox.setMap(reeferMap);\r\n \r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction selectedSuggestion(suggestionResult) {\r\n reeferMap.entities.clear();\r\n\r\n reeferMap.setView({ bounds: suggestionResult.bestView });\r\n}\r\n\r\nfunction ClearMapLayers() {\r\n if (layer != null)\r\n layer.clear();\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n if(geoZonesLayer != null) {\r\n ReeferMap.RestoreGeoZonesLayer();\r\n geoZonesLayer.clear();\r\n }\r\n $('#geoZones').hide();\r\n}\r\n\r\nfunction hideReeferInfobox(e) {\r\n if (pinInfobox != null)\r\n pinInfobox.setOptions({ visible: false });\r\n}\r\n\r\nfunction GenerateAlphaNumericCode(length) {\r\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\r\n result = \"\"\r\n for (var i = length; i > 0; --i)\r\n result += chars[Math.round(Math.random() * (chars.length - 1))]\r\n return result\r\n}\r\n\r\nfunction clearInfoboxPopup() {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n}\r\n\r\nexport default ReeferCallout;\r\n","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface manageControllerSetting { \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\n\r\nexport class PopupConfirm extends React.Component{\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = { IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n \r\n confirmSubmit() {\r\n \r\n var filters = this.props.ForwardCommandUnits();\r\n\r\n if (filters != null) {\r\n var unitMasterId = filters[0].UnitMasterID; \r\n var filterParams = JSON.stringify(unitMasterId);\r\n //var request = RCUtils.FetchRequest('http://localhost:18362/api/reeferstatus/ManageControllerFlag', {\r\n\r\n // method: 'POST', body: filterParams, headers: {\r\n // 'Accept': 'application/json', 'Content-Type': 'application/json'\r\n // }\r\n //});\r\n //fetch(request).then(response => response.json() as Promise)\r\n // .then(data => { \r\n // $(\"#Hide_swap\").click();\r\n // this.props.refreshStatusGrid();\r\n // }); var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ManageControllerFlag', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $(\"#Hide_swap\").click();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n this.props.refreshStatusGrid(); \r\n });\r\n\r\n }\r\n }\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    Please click ok if you like to confirm controller swap
    \r\n
    Note: Users will be able to issue Forward Command once you confirm controller swap
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n} \r\n","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport forEach from 'lodash/forEach';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport DateFormat from 'dateformat';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface CreateTripSettingsState {\r\n SelectedReefers: any[];\r\n TripGeofencesDetails: server.TripGeofencesDetails;\r\n refTripDefinition: server.RefTripDefinition[];\r\n tripGeofencesByTrip: server.TripGeofencesByTrip[];\r\n DepartureChecked: boolean;\r\n ArrivalChecked: boolean;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nvar newTripGeofencesDetails: server.TripGeofencesDetails = {\r\n reeferID: null, TripDefinitionSelectedValue: '-1', unitMasetrId: null, OriginGeofence: '', DestinationGeofence: '', TripName: null,\r\n SFrmDate: DateFormat(new Date(moment(new Date(DateFormat(new Date(Date.now()), 'mm/dd/yyyy'))).startOf('day').toString()), 'mm/dd/yyyy HH:MM:ss'),\r\n SToDate: DateFormat(new Date(moment(new Date(DateFormat(new Date(Date.now()), 'mm/dd/yyyy'))).endOf('day').toString()), 'mm/dd/yyyy HH:MM:ss'), CommandUnits: []\r\n};\r\n\r\nexport class CreateTrip extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { SelectedReefers: [], TripGeofencesDetails: newTripGeofencesDetails, refTripDefinition: [], tripGeofencesByTrip: [], DepartureChecked: false, ArrivalChecked: false, IsCommandIssued: false, PrevSelectedItems: []};\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/RefTripDefinitionLst')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ refTripDefinition: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n DepartureCheckedtoggleChange = () => {\r\n this.setState({\r\n DepartureChecked: !this.state.DepartureChecked,\r\n });\r\n }\r\n\r\n ArrivalCheckedtoggleChange = () => {\r\n this.setState({\r\n ArrivalChecked: !this.state.ArrivalChecked,\r\n });\r\n }\r\n\r\n public handleOnChange(event: any): void {\r\n const name = event.target.name;\r\n const value = event.target.value;\r\n //this.setState({ [name]: value });\r\n }\r\n\r\n TripNameOnChange(event: any): void {\r\n var Value: string = event.currentTarget.value;\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.TripName = Value;\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }\r\n\r\n toDateOnChange(date) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.SToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }\r\n\r\n fromDateOnChange(date) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.SFrmDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }\r\n\r\n handleSubmit() {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n var fCommends = this.setForwardCommandUnits();\r\n tripGeofencesDetails.unitMasetrId = this.state.SelectedReefers[0].UnitMasterID;\r\n tripGeofencesDetails.CommandUnits = fCommends;\r\n if (!this.state.ArrivalChecked) {\r\n tripGeofencesDetails.SToDate = null;\r\n }\r\n if (!this.state.DepartureChecked) {\r\n tripGeofencesDetails.SFrmDate = null;\r\n }\r\n if (this.state.ArrivalChecked && this.state.DepartureChecked) {\r\n if ((moment(new Date(tripGeofencesDetails.SFrmDate)) == moment(new Date(tripGeofencesDetails.SToDate))) || (moment(new Date(tripGeofencesDetails.SFrmDate)) > moment(new Date(tripGeofencesDetails.SToDate)))) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"Arrival date/time must be later than Earliest Departure date/time.\");\r\n return;\r\n }\r\n }\r\n if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.TripName == null)) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"Please enter valid Trip Name.\");\r\n return;\r\n }\r\n else if ((this.state.TripGeofencesDetails.TripName != null && this.state.TripGeofencesDetails.TripName.trim() == \"\")) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"Please enter valid Trip Name.\");\r\n return;\r\n }\r\n else if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.TripDefinitionSelectedValue == \"-1\")) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"Please select Trip Definition.\");\r\n return;\r\n }\r\n else if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.DestinationGeofence.trim() == \"\") && (!this.state.ArrivalChecked || !this.state.DepartureChecked)) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"A trip should have either Origin and Destination Geofence or Earliest Departure and Arrival or Both.\");\r\n return;\r\n }\r\n else if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.OriginGeofence.trim() == \"\") && (!this.state.ArrivalChecked || !this.state.DepartureChecked)) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"A trip should have either Origin and Destination Geofence or Earliest Departure and Arrival or Both.\");\r\n return;\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/Trip/SaveTripDefDetails';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(tripGeofencesDetails), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Create Trip\", data);\r\n if (data == \"Trip created successfully.\") {\r\n this.setState({ TripGeofencesDetails: newTripGeofencesDetails, IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n $('#contextMenuModel .btn-close').click();\r\n this.closePopUp();\r\n this.props.refreshStatusGrid();\r\n //this.setState({ TripGeofencesDetails: newTripGeofencesDetails });\r\n \r\n }\r\n\r\n });\r\n // $('#CreateTrip').hide();\r\n //this.setState({ TripGeofencesDetails: newTripGeofencesDetails }); \r\n }\r\n }\r\n\r\n setForwardCommandUnits() {\r\n var userId = 0;\r\n var commandUnits = [];\r\n if (this.state.SelectedReefers.length > 0) {\r\n forEach(this.state.SelectedReefers, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userId,\r\n \"TripId\": value.TripId\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n if (reeferData[0].ReeferID != null && reeferData[0].ReeferID != \"\") {\r\n tripGeofencesDetails.reeferID = reeferData[0].ReeferID;\r\n this.setState({ SelectedReefers: reeferData, TripGeofencesDetails: tripGeofencesDetails, ArrivalChecked: false, DepartureChecked: false });//WI-21781 QA - IE - Route Deviation - Issues with Trip Creation\r\n }\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var tripGeofencedtls = this.state.TripGeofencesDetails;\r\n tripGeofencedtls.TripDefinitionSelectedValue = \"-1\";\r\n tripGeofencedtls.OriginGeofence = '';\r\n tripGeofencedtls.DestinationGeofence = '';\r\n tripGeofencedtls.TripName = null;\r\n tripGeofencedtls.TripName = \"\";\r\n this.setState({ TripGeofencesDetails: tripGeofencedtls, ArrivalChecked: false, DepartureChecked: false });//WI-21781 QA - IE - Route Deviation - Issues with Trip Creation\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n if (reeferData[0].ReeferID != null && reeferData[0].ReeferID != \"\") {\r\n tripGeofencesDetails.reeferID = reeferData[0].ReeferID;\r\n this.setState({ SelectedReefers: reeferData, TripGeofencesDetails: tripGeofencesDetails });\r\n }\r\n }\r\n }\r\n\r\n GetTripDefination(value: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/GetGeofencesByTripId', { method: 'POST', body: value, headers: { 'Accept': 'applicatio/json', 'Content-Type': 'application/json' } })\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ tripGeofencesByTrip: data });\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.OriginGeofence = this.state.tripGeofencesByTrip[0].SourceGofenceAddress;\r\n tripGeofencesDetails.DestinationGeofence = this.state.tripGeofencesByTrip[0].DestGofenceAddress;\r\n tripGeofencesDetails.TripDefinitionSelectedValue = value;\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n public handleOnChangeDropDown(event: any): void {\r\n //this.setState({ [event.target.name]: event.target.value })\r\n this.GetTripDefination(event.target.value);\r\n }\r\n\r\n closePopUp() {\r\n //document.getElementById(\"hidePopUpBtn\").click();\r\n $(\"#hidePopUpBtn .btn-close\").click();\r\n }\r\n\r\n public render() {\r\n return (\r\n
    \r\n {this.LoadTripDetailsData(this.state.refTripDefinition)}\r\n
    \r\n );\r\n }\r\n\r\n LoadTripDetailsData(data: any) {\r\n const Arrivalhidden = this.state.ArrivalChecked ? '' : 'hidden';\r\n const Departurehidden = this.state.DepartureChecked ? '' : 'hidden';\r\n var tripDefinitions = this.state.refTripDefinition;\r\n var TripDefinationOptions = tripDefinitions.map(function (trip) {\r\n return (\r\n \r\n );\r\n });\r\n return (
    \r\n
    \r\n
    \r\n Reefer ID :\r\n
    \r\n
    \r\n \r\n {(this.state.TripGeofencesDetails != undefined) ? this.state.TripGeofencesDetails.reeferID : ''}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Origin Geofence :\r\n
    \r\n
    \r\n {this.state.TripGeofencesDetails.OriginGeofence} \r\n
    \r\n
    \r\n
    \r\n
    \r\n Destination Geofence :\r\n
    \r\n
    \r\n {this.state.TripGeofencesDetails.DestinationGeofence} \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.TripNameOnChange(e)} value={this.state.TripGeofencesDetails.TripName}/>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Earliest Departure :
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    Arrival :
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    )\r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport forEach from 'lodash/forEach';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface CreateTripSettingsState {\r\n SelectedReefers: any[];\r\n commandUnits: server.ReeferCommandUnits[];\r\n ClearDeviationTripParameters: server.ClearDeviationTripParameters;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nvar newClearDeviationTripParameters: server.ClearDeviationTripParameters = { TripId: 0, CommandUnits: [] };\r\nexport class TripDeviation extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { SelectedReefers: [], commandUnits: [], ClearDeviationTripParameters: newClearDeviationTripParameters, IsCommandIssued: false, PrevSelectedItems: [] };\r\n\r\n }\r\n\r\n setForwardCommandUnits() {\r\n var userId = 0;\r\n var commandUnits = [];\r\n if (this.state.SelectedReefers.length > 0) {\r\n forEach(this.state.SelectedReefers, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userId,\r\n \"TripId\": value.TripId\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n\r\n //this.setState({ commandUnits: commandUnits });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n if (reeferData != undefined && reeferData != null) {\r\n this.setState({ SelectedReefers: reeferData });\r\n }\r\n }\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var tripGeofencesDetails: server.ClearDeviationTripParameters = JSON.parse(JSON.stringify(this.state.ClearDeviationTripParameters));\r\n tripGeofencesDetails.TripId = reeferData[0].TripId;\r\n this.setState({ SelectedReefers: reeferData, ClearDeviationTripParameters: tripGeofencesDetails });\r\n // this.setForwardCommandUnits();\r\n }\r\n }\r\n\r\n closePopUp() {\r\n // document.getElementById(\"hidePopUpBtn\").click();\r\n $(\"#hidePopUpBtn .close\").click();\r\n }\r\n performYesAction() {\r\n var fCommends = this.setForwardCommandUnits();\r\n var tripGeofencesDetails: server.ClearDeviationTripParameters = JSON.parse(JSON.stringify(this.state.ClearDeviationTripParameters));\r\n tripGeofencesDetails.TripId = this.state.SelectedReefers[0].TripId;\r\n tripGeofencesDetails.CommandUnits = fCommends;\r\n this.setState({ ClearDeviationTripParameters: tripGeofencesDetails });\r\n // setTimeout(() => {\r\n //this.setState({ ClearDeviationTripParameters: tripGeofencesDetails });\r\n // }, 30);\r\n var edittripGeofencesDetails: server.EditTripGeofencesDetails = JSON.parse(JSON.stringify(this.state.ClearDeviationTripParameters));\r\n $('#contextMenuModel .close').click();\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/Trip/ClearDeviation';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(tripGeofencesDetails), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n this.setState({ ClearDeviationTripParameters: newClearDeviationTripParameters, IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n this.props.refreshStatusGrid();\r\n PopupWindow.showErrorMessage(\"Clear Trip Deviation\", data);\r\n });\r\n this.closePopUp();\r\n //this.setState({ ClearDeviationTripParameters: newClearDeviationTripParameters });\r\n \r\n // this.props.refreshStatusGrid();\r\n // $('#TripDeviation').hide();\r\n }\r\n\r\n public render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    Are you sure you want to clear deviation
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface ReeferGetAssetIdState {\r\n SelectedReefers: any[],\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n Filters: server.ForwardCommandParameters,\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class ReeferGetAssetId extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderGetAssetIdGrid(this.props.reeferData);\r\n }\r\n\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitGetAssetIdCommand() {\r\n var command = \"GetAssetId\";\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, null, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderGetAssetIdGrid(reeferData);\r\n }\r\n\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderGetAssetIdGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"GetAssetId\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"GetAssetId\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface EnableDoorSensorState {\r\n SelectedReefers: any[];\r\n SelectedParamValue: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class EnableDoorSensor extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], SelectedParamValue: \"Enable\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderChangeReeferClockGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitChangeDoorSensor() {\r\n var command = \"EnableDoorSensor\";\r\n var paramValue = this.state.SelectedParamValue;\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderChangeReeferClockGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderChangeReeferClockGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"EnableDoorSensor\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n DoorSensorChange(event: React.FormEvent) {\r\n var ParamValue: string = event.currentTarget.value;\r\n this.setState({ SelectedParamValue: ParamValue });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"EnableDoorSensor\", TempValue: \"Enable\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow'; \r\nimport bookingView from '../../images/bookingView.svg';\r\nimport bookingSlashView from '../../images/bookingSlashView.svg';\r\nimport bookingfileSlashView from '../../images/bookingfileSlashView.svg';\r\nimport lodashfilter from 'lodash/filter';\r\nimport uniq from 'lodash/uniq';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar methodResult = true;\r\nvar selReefers;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar selectedReefers = \"\";\r\nvar selectedUnits = \"\";\r\nvar IsTriggered = false;\r\nvar self;\r\n\r\nexport interface BookingSystemState {\r\n SelectedReefers: any[];\r\n BookingSystem: server.BookingSystem_UIModel;\r\n RefTemperatureUnit: server.RefTemperatureUnit[];\r\n isLoading: boolean;\r\n collapsed: boolean;\r\n checked: any;\r\n expanded: any;\r\n CustomerGroups: Customers[]; \r\n CustomerGroupsList: Customers[]; \r\n IsCustomerAccessHide: boolean;\r\n UnassignOption: string;\r\n lbl3rdPartyDisabled: boolean;\r\n lblBookingDisabled: boolean;\r\n lblBothDisabled: boolean;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n RefVessels: server.vesselsList[];\r\n suggestionsVesselId: any[],\r\n suggestionsVoyage: any[],\r\n suggestionsCalls: any[],\r\n ArrsuggestionsVesselId: any[],\r\n ArrsuggestionsVoyage: any[],\r\n ArrsuggestionsCalls: any[],\r\n UnassignOptionMode: string;\r\n}\r\nvar newBookingSystem: server.BookingSystem_UIModel = {\r\n BookedTemperature: '', BookedTemperatureUnit: '', BookingNumber: '', CustomerId: 0, eventmasteridForAssign: 0,\r\n eventmasteridforupdate: 0, RcdmasterId: 0, reeferID: '', Unitmasterid: 0, UserId: 0,\r\n RCDReportingInterval: '', SetPoint: '', EventDtm: '', SelectedUnits: [], Groups: [], IsEdit: false, UnassignMode: '', IsBookingModified: false, IsCustomerAccessModified: false,\r\n IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0,\r\n OperationalLevel: 'SelectedReefer', BookingInfo: []\r\n};\r\nexport class NewBookingUnAssign extends React.Component { \r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n SelectedReefers: [], BookingSystem: newBookingSystem, RefTemperatureUnit: [], isLoading: true, collapsed: false, CustomerGroups: [], checked: [], expanded: [], CustomerGroupsList: [], IsCustomerAccessHide: true, UnassignOption: '', lbl3rdPartyDisabled: false, lblBookingDisabled: false, lblBothDisabled: false, IsCommandIssued: false, PrevSelectedItems: []\r\n , RefVessels: [], suggestionsVesselId: [], suggestionsVoyage: [], suggestionsCalls: [], ArrsuggestionsVesselId: [], ArrsuggestionsVoyage: [], ArrsuggestionsCalls: [],UnassignOptionMode:'' };\r\n lastCheckedNodes = [];\r\n selReefers = this.props.reeferData;\r\n }\r\n\r\n getRefTemperatureUnit() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetRefTemperatureUnit')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefTemperatureUnit: data });\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n var EventMasterList = this.props.reeferFormatter.EventMasterList;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === reeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n var EventCd = eventDescription[0].EventCd;\r\n }\r\n var IsAssignTo3P;\r\n if (reeferData != null && reeferData != undefined) {\r\n \r\n if (reeferData[0].CustomerName != \"\" && reeferData[0].BookingNumber == null && reeferData[0].BookingNumber == '') {\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n else if (reeferData[0].BookingNumber == null){\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n }\r\n this.setState({ SelectedReefers: reeferData }, () => { this.bindUnassignData(this.props.CustomerAccessData,EventCd,IsAssignTo3P); });\r\n this.getRefTemperatureUnit();\r\n var TemperatureUnitCd = \"\";\r\n var unassignMode = \"\"; \r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(this.state.BookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].BookingNumber != null && reeferData[0].BookingNumber != \"\" && !this.ValidateBookingID(reeferData)) {\r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var BookedTemperature = parseFloat(_lststrValue[0]);\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n if (temperatureCd == \"F\")\r\n TemperatureUnitCd = \"Fahrenheit\";\r\n else if (temperatureCd == \"C\")\r\n TemperatureUnitCd = \"Celsius\";\r\n\r\n bookingSystem.BookedTemperatureUnit = TemperatureUnitCd;\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = BookedTemperature != undefined ? BookedTemperature.toString() : ''; \r\n } \r\n this.setState({ BookingSystem: bookingSystem });\r\n }\r\n } \r\n\r\n onExpand(expanded) {\r\n this.setState({ expanded: expanded });\r\n }\r\n\r\n submitUnAssignCommand() {\r\n $('#globalLoader').show();\r\n this.state.BookingSystem.RcdmasterId = this.state.SelectedReefers[0].RCDMasterID;\r\n this.state.BookingSystem.Unitmasterid = this.state.SelectedReefers[0].UnitMasterID;\r\n this.state.BookingSystem.CustomerId = this.state.SelectedReefers[0].CustomerID;\r\n this.state.BookingSystem.UserId = this.props.UserID;\r\n this.state.BookingSystem.eventmasteridForAssign = 0;\r\n this.state.BookingSystem.eventmasteridforupdate = 0;\r\n this.state.BookingSystem.EventDtm = this.state.SelectedReefers[0].EventDTTM;\r\n this.state.BookingSystem.RCDReportingInterval = this.state.SelectedReefers[0].RCDReportingInterval;\r\n this.state.BookingSystem.SetPoint = this.state.SelectedReefers[0].SetPoint;\r\n\r\n var checkedGroupIds = [];\r\n var selUnits = [];\r\n var checkedList = this.state.checked;\r\n\r\n if (this.state.SelectedReefers.length > 1) {\r\n $.each(this.state.SelectedReefers, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = this.state.SelectedReefers[0].UnitMasterID.toString();\r\n }\r\n\r\n $.each(selectedUnits.split(','), function (index, value) {\r\n selUnits.push(parseInt(value));\r\n });\r\n\r\n $.each(checkedList, function (index, value) { \r\n checkedGroupIds.push(parseInt(value.split(':')[1].split('_')[0]));\r\n });\r\n\r\n this.state.BookingSystem.SelectedUnits = selUnits;\r\n this.state.BookingSystem.Groups = checkedGroupIds;\r\n this.state.BookingSystem.UnassignMode = this.state.UnassignOption;\r\n var reefersCount = this.state.SelectedReefers.length; // RCNG 361\r\n var bookingSystem = JSON.stringify(this.state.BookingSystem);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/UnAssignBookingdetails';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: bookingSystem, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data == 'Reefer unassigned successfully.') { \r\n $(\"#contextMenuModel .btn-close\").click(); \r\n if (this.state.BookingSystem.UnassignMode == \"UnassignBooking\")\r\n data = (reefersCount == 1) ? 'Reefer unassigned from Booking successfully.': reefersCount + ' Reefers unassigned from Booking successfully.';\r\n if (this.state.BookingSystem.UnassignMode == \"Unassign3rdParty\")\r\n data = (reefersCount == 1) ? 'Reefer unassigned from Customer Access successfully.': reefersCount + ' Reefers unassigned from Customer Access successfully.';\r\n if (this.state.BookingSystem.UnassignMode == \"UnassignBoth\")\r\n data = (reefersCount == 1) ? 'Reefer unassigned from both Booking and Customer Access successfully.': reefersCount + ' Reefers unassigned from both Booking and Customer Access successfully.';\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n this.props.refreshStatusGrid();\r\n PopupWindow.showErrorMessage(\"Booking and Access\", data);\r\n \r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Booking and Access\", data);\r\n }\r\n });\r\n\r\n }\r\n\r\n bindUnassignData(customerAccessData: any, EventCd: string, IsAssignTo3P:boolean) {\r\n if (customerAccessData != undefined) {\r\n this.setState({ CustomerGroups: JSON.parse(JSON.stringify(customerAccessData)), CustomerGroupsList: customerAccessData });\r\n if (customerAccessData.length > 0) {\r\n var defaultChecked = [];\r\n var defaultExpand = [];\r\n $.each(customerAccessData, function (index, value) {\r\n if (value.isSelected == true) {\r\n defaultExpand.push(value.value);\r\n }\r\n $.each(value.children, function (ind, val) {\r\n if (val.isSelected == true) {\r\n defaultChecked.push(val.value);\r\n }\r\n });\r\n });\r\n this.setState({ isLoading: false, IsCustomerAccessHide: false, checked: defaultChecked, expanded: defaultExpand }, () => { return lastCheckedNodes = this.state.checked, this.updateUnassginModel(EventCd, IsAssignTo3P) });\r\n\r\n }\r\n else {\r\n lastCheckedNodes = [];\r\n this.setState({ isLoading: false, checked: [], expanded: [], CustomerGroups: [], CustomerGroupsList: [], IsCustomerAccessHide: true }, () => this.updateUnassginModel(EventCd, IsAssignTo3P));\r\n }\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n var reeferData = nextprops.reeferData; \r\n var EventMasterList = nextprops.reeferFormatter.EventMasterList;\r\n\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === reeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n var EventCd = eventDescription[0].EventCd;\r\n }\r\n var IsAssignTo3P;\r\n if (reeferData != null && reeferData != undefined) {\r\n \r\n if (reeferData[0].CustomerName != \"\" && reeferData[0].BookingNumber == null && reeferData[0].BookingNumber == '') {\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n else if (reeferData[0].BookingNumber == null) {\r\n if (reeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n IsAssignTo3P = false;\r\n } else {\r\n IsAssignTo3P = true;\r\n }\r\n }\r\n }\r\n\r\n this.setState({ SelectedReefers: reeferData }, () => { this.bindUnassignData(nextprops.CustomerAccessData, EventCd, IsAssignTo3P); });\r\n this.getRefTemperatureUnit();\r\n var TemperatureUnitCd = \"\";\r\n var unassignMode = \"\"; \r\n var bookingSystem: server.BookingSystem_UIModel = JSON.parse(JSON.stringify(newBookingSystem));\r\n bookingSystem.reeferID = reeferData[0].ReeferID;\r\n if (reeferData[0].BookingNumber != null && reeferData[0].BookingNumber != \"\" && !this.ValidateBookingID(reeferData)) {\r\n if (reeferData[0].TemperatureUnit != null) {\r\n var _lststrValue = reeferData[0].TemperatureUnit.toString().trim().split('@');\r\n var BookedTemperature = parseFloat(_lststrValue[0]);\r\n var temperatureCd = _lststrValue[1];\r\n }\r\n if (temperatureCd == \"F\")\r\n TemperatureUnitCd = \"Fahrenheit\";\r\n else if (temperatureCd == \"C\")\r\n TemperatureUnitCd = \"Celsius\";\r\n bookingSystem.BookedTemperatureUnit = TemperatureUnitCd;\r\n bookingSystem.BookingNumber = reeferData[0].BookingNumber;\r\n bookingSystem.BookedTemperature = BookedTemperature != undefined ? BookedTemperature.toString() : '';\r\n }\r\n\r\n this.setState({ BookingSystem: bookingSystem }); \r\n } \r\n }\r\n\r\n\r\n CloseModal() {\r\n lastCheckedNodes = [];\r\n this.setState({ checked: lastCheckedNodes });\r\n } \r\n\r\n updateUnassginModel(EventCd: string, IsAssignTo3P: boolean) {\r\n \r\n if (EventCd === \"BDR\" || IsAssignTo3P) {\r\n this.setState({ lbl3rdPartyDisabled: false, lblBookingDisabled: true, lblBothDisabled: true, UnassignOption: \"Unassign3rdParty\",UnassignOptionMode:\"Unassign3rdParty\" },\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n }\r\n else if (this.state.SelectedReefers[0].BookingNumber != null && this.state.SelectedReefers[0].BookingNumber != '' && !this.ValidateBookingID(this.state.SelectedReefers) && this.state.checked.length > 0)\r\n this.setState({ lbl3rdPartyDisabled: false, lblBookingDisabled: false, lblBothDisabled: false, UnassignOption: \"UnassignBoth\" ,UnassignOptionMode:\"UnassignBoth\"},\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n else if (this.state.BookingSystem.BookingNumber != null && this.state.BookingSystem.BookingNumber != '' && !this.ValidateBookingID(this.state.SelectedReefers))\r\n this.setState({ lbl3rdPartyDisabled: true, lblBookingDisabled: false, lblBothDisabled: true, UnassignOption: \"UnassignBooking\",UnassignOptionMode:\"UnassignBooking\" },\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n else\r\n this.setState({ lbl3rdPartyDisabled: false, lblBookingDisabled: true, lblBothDisabled: true, UnassignOption: \"Unassign3rdParty\",UnassignOptionMode:\"Unassign3rdParty\" },\r\n () => { this.UnassignModeChange(this.state.UnassignOption) });\r\n }\r\n\r\n UnassignModeChange(value) { \r\n //if (!this.state.lbl3rdPartyDisabled && this.state.lblBookingDisabled && this.state.lblBothDisabled) {\r\n // if ($(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').removeClass('active');\r\n // if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active');\r\n // if (!$(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').addClass('active');\r\n //}\r\n //if (!this.state.lblBookingDisabled && this.state.lbl3rdPartyDisabled && this.state.lblBothDisabled) {\r\n // if (!$(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').addClass('active');\r\n // if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active');\r\n // if ($(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').removeClass('active');\r\n //}\r\n\r\n //if (value == \"UnassignBooking\" && !this.state.lblBookingDisabled) {\r\n // if (!$(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').addClass('active'); \r\n // if ($(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').removeClass('active');\r\n // if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active'); \r\n // this.setState({ UnassignOption: value });\r\n //}\r\n //if (value == \"Unassign3rdParty\" && !this.state.lbl3rdPartyDisabled) {\r\n // if (!$(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').addClass('active');\r\n // if ($(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').removeClass('active');\r\n // if ($(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').removeClass('active'); \r\n // this.setState({ UnassignOption: value });\r\n //}\r\n //if (value == \"UnassignBoth\" && !this.state.lblBothDisabled) {\r\n // if (!$(\"#lblUnassignBoth\").hasClass(\"active\")) $('#lblUnassignBoth').addClass('active');\r\n // if ($(\"#lblUnassign3rdParty\").hasClass(\"active\")) $('#lblUnassign3rdParty').removeClass('active');\r\n // if ($(\"#lblUnassignBooking\").hasClass(\"active\")) $('#lblUnassignBooking').removeClass('active');\r\n // this.setState({ UnassignOption: value });\r\n //} \r\n this.setState({ UnassignOption: value });\r\n } \r\n\r\n ValidateBookingID(reeferData: any) {\r\n if (reeferData.length > 0 && reeferData[0].LastBookingEventMasterId != null && reeferData[0].LastBookingEventMasterId.length > 0) {\r\n for (var lastBookingID in reeferData[0].LastBookingEventMasterId) {\r\n if (reeferData[0].EventMasterID == parseInt(reeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public render() {\r\n var cssBooking: any;\r\n var css3rdParty: any;\r\n var cssBoth: any;\r\n if (this.state.UnassignOptionMode == \"UnassignBooking\") {\r\n css3rdParty = true;\r\n cssBoth = true;\r\n cssBooking = false;\r\n }\r\n else if (this.state.UnassignOptionMode == \"Unassign3rdParty\") {\r\n cssBoth = true;\r\n cssBooking = true;\r\n css3rdParty = false;\r\n }\r\n else if (this.state.UnassignOptionMode == \"UnassignBoth\") {\r\n cssBoth = false;\r\n cssBooking = false;\r\n css3rdParty = false;\r\n }\r\n const { checked, expanded } = this.state;\r\n return
    \r\n \r\n
    \r\n }\r\n}\r\nclass Customers {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n children: CustomerAccessGroups[]\r\n}\r\nclass CustomerAccessGroups {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n}","/// \r\nimport * as React from 'react';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport uniq from 'lodash/uniq';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow';\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar self;\r\nvar methodResult = true;\r\nvar selReefers;\r\nvar selectedUnits = \"\";\r\n\r\nexport interface EditVesselVVCState {\r\n VoyageEdit: server.VoyageEdit;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n RefVessels: server.vesselsList[];\r\n SelectedReefers: any[];\r\n suggestionsVesselId: any[],\r\n suggestionsVoyage: any[],\r\n suggestionsCalls: any[],\r\n ArrsuggestionsVesselId: any[],\r\n ArrsuggestionsVoyage: any[],\r\n ArrsuggestionsCalls: any[],\r\n}\r\nvar newVoyage: server.VoyageEdit = {\r\n SelectedReefers: [],\r\n Unitmasterid: 0,\r\n ReeferId: '',\r\n IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0\r\n};\r\nexport class EditVoyageVVC extends React.Component {\r\n constructor(props: any) {\r\n\r\n super(props);\r\n this.state = {\r\n IsCommandIssued: false, PrevSelectedItems: [], SelectedReefers: [], VoyageEdit: newVoyage, RefVessels: [], suggestionsVesselId: [], suggestionsVoyage: [], suggestionsCalls: [], ArrsuggestionsVesselId: [], ArrsuggestionsVoyage: [], ArrsuggestionsCalls: []\r\n };\r\n\r\n this.getVVCInfo();\r\n self = this;\r\n }\r\n getVVCInfo() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/Getvessels')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n this.setState({ RefVessels: data });\r\n }\r\n });\r\n }\r\n\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n this.setState({ SelectedReefers: reeferData }, () => { this.getVVCInfo(); });\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n var VoyageEdit: server.VoyageEdit = JSON.parse(JSON.stringify(newVoyage));\r\n var reeferLst = [];\r\n var reeferDisplayStr = \"\";\r\n if (reeferData.length > 1) {\r\n $.each(reeferData, function (ind, val) {\r\n if (val.ReeferID != \"\") {\r\n reeferLst.push(val.ReeferID);\r\n }\r\n });\r\n reeferDisplayStr = reeferLst.join(', ');\r\n VoyageEdit.ReeferId = this.FormatReeferStringWithDotDot(reeferDisplayStr, 100);\r\n }\r\n else { VoyageEdit.ReeferId = reeferData[0].ReeferID; }\r\n\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n if (reeferData[0].LifecycleCd == 'L' || reeferData[0].LifecycleCd == 'R' || reeferData[0].LifecycleCd == 'D' || reeferData[0].LifecycleCd == 'P') {\r\n var departingVVC = reeferData[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = reeferData[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n VoyageEdit.SelectedVoyage = depVoyage;\r\n VoyageEdit.SelectedCall = depCall;\r\n VoyageEdit.SelectedVesselCD = depVoyage != '' ? reeferData[0].VoyageVesselCd != null ? reeferData[0].VoyageVesselCd : '' : '';\r\n VoyageEdit.ArrSelectedVesselCD = arrVoyage != '' ? reeferData[0].VoyageVesselCd != null ? reeferData[0].VoyageVesselCd : '' : '';\r\n VoyageEdit.ArrSelectedVoyage = arrVoyage;\r\n VoyageEdit.ArrSelectedCall = arrCall;\r\n }\r\n this.setState({ VoyageEdit });\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n this.setState({ SelectedReefers: reeferData });\r\n var VoyageEdit: server.VoyageEdit = JSON.parse(JSON.stringify(newVoyage));\r\n var reeferLst = [];\r\n var reeferDisplayStr = \"\";\r\n if (reeferData.length > 1) {\r\n $.each(reeferData, function (ind, val) {\r\n if (val.ReeferID != \"\") {\r\n reeferLst.push(val.ReeferID);\r\n }\r\n });\r\n reeferDisplayStr = reeferLst.join(', ');\r\n VoyageEdit.ReeferId = this.FormatReeferStringWithDotDot(reeferDisplayStr, 100);\r\n }\r\n else { VoyageEdit.ReeferId = reeferData[0].ReeferID; }\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n if (reeferData[0].LifecycleCd == 'L' || reeferData[0].LifecycleCd == 'R' || reeferData[0].LifecycleCd == 'D' || reeferData[0].LifecycleCd == 'P') {\r\n var departingVVC = reeferData[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = reeferData[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n VoyageEdit.SelectedVoyage = depVoyage;\r\n VoyageEdit.SelectedCall = depCall;\r\n VoyageEdit.SelectedVesselCD = depVoyage != '' ? reeferData[0].VoyageVesselCd != null ? reeferData[0].VoyageVesselCd : '' : '';\r\n VoyageEdit.ArrSelectedVesselCD = arrVoyage != '' ? reeferData[0].VoyageVesselCd != null ? reeferData[0].VoyageVesselCd : '' : '';\r\n VoyageEdit.ArrSelectedVoyage = arrVoyage;\r\n VoyageEdit.ArrSelectedCall = arrCall;\r\n }\r\n this.setState({ VoyageEdit });\r\n }\r\n }\r\n\r\n FormatReeferStringWithDotDot(str, length) {\r\n if (str.length > length) {\r\n return str.substring(0, length) + ' ...';\r\n } else {\r\n return str;\r\n }\r\n }\r\n onSuggestionsFetchRequestedforvessel = ({ value }) => {\r\n this.setState({\r\n suggestionsVesselId: this.getvesselNameSuggestions(value)\r\n });\r\n };\r\n getvesselNameSuggestions(value) {\r\n\r\n var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var vessels = uniq(VesselData);\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : vessels.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequestedforvessel = () => {\r\n this.setState({\r\n suggestionsVesselId: []\r\n });\r\n };\r\n onChangeVesselId = (event, { newValue }) => {\r\n var filters = this.state.VoyageEdit;\r\n filters.SelectedVesselCD = newValue;\r\n filters.SelectedVoyage = '';\r\n filters.SelectedCall = '';\r\n\r\n\r\n this.setState({\r\n VoyageEdit: filters\r\n });\r\n this.setState({\r\n suggestionsVoyage: this.getvoyageNameSuggestions(newValue)\r\n });\r\n };\r\n onChangcall = (event, { newValue }) => {\r\n var filters = this.state.VoyageEdit;\r\n filters.SelectedCall = newValue;\r\n\r\n\r\n this.setState({\r\n VoyageEdit: filters\r\n });\r\n };\r\n renderSuggestionVesselvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionVesselValue(suggestion) {\r\n return suggestion;\r\n }\r\n onSuggestionsFetchRequestedforvoyage = ({ value }) => {\r\n this.setState({\r\n suggestionsVoyage: this.voyageNameSuggestions(value)\r\n });\r\n };\r\n onSuggestionsFetchRequestedforcall = ({ value }) => {\r\n this.setState({\r\n suggestionsCalls: this.callSuggestions(value)\r\n });\r\n };\r\n callSuggestions(value) {\r\n if (this.state.VoyageEdit.SelectedVesselCD != \"\" && this.state.VoyageEdit.SelectedVesselCD != null && this.state.VoyageEdit.SelectedVoyage != \"\" && this.state.VoyageEdit.SelectedVoyage != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.VoyageEdit.SelectedVesselCD\r\n && tag.VoyageNum === this.state.VoyageEdit.SelectedVoyage && tag.CallNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n\r\n return uniq(test.map(fence => fence.CallNum));\r\n }\r\n else\r\n return [];\r\n };\r\n voyageNameSuggestions(value) {\r\n if (this.state.VoyageEdit.SelectedVesselCD != \"\" && this.state.VoyageEdit.SelectedVesselCD != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.VoyageEdit.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n }\r\n else\r\n return [];\r\n };\r\n getvoyageNameSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag =>\r\n tag.VesselCd.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n };\r\n getcallSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.VoyageEdit.SelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.CallNum));\r\n };\r\n onSuggestionsClearRequestedforvoyage = () => {\r\n this.setState({\r\n suggestionsVoyage: []\r\n });\r\n };\r\n onSuggestionsClearRequestedforcall = () => {\r\n this.setState({\r\n suggestionsCalls: []\r\n });\r\n };\r\n onChangevoyage = (event, { newValue }) => {\r\n var filters = this.state.VoyageEdit;\r\n filters.SelectedVoyage = newValue;\r\n\r\n filters.SelectedCall = '';\r\n this.setState({\r\n VoyageEdit: filters\r\n });\r\n this.setState({\r\n suggestionsCalls: this.getcallSuggestions(newValue)\r\n });\r\n };\r\n renderSuggestionvoyagevalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionvoyageValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestioncallvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestioncallValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n onSuggestionsFetchRequestedforArrvessel = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsVesselId: this.getArrvesselNameSuggestions(value)\r\n });\r\n };\r\n getArrvesselNameSuggestions(value) {\r\n\r\n var VesselData = this.state.RefVessels.map(fence => fence.VesselCd);\r\n var vessels = uniq(VesselData);\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : vessels.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequestedforArrvessel = () => {\r\n this.setState({\r\n ArrsuggestionsVesselId: []\r\n });\r\n };\r\n onChangeArrVesselId = (event, { newValue }) => {\r\n var filters = this.state.VoyageEdit;\r\n filters.ArrSelectedVesselCD = newValue;\r\n filters.ArrSelectedVoyage = '';\r\n filters.ArrSelectedCall = '';\r\n\r\n this.setState({\r\n VoyageEdit: filters\r\n });\r\n this.setState({\r\n ArrsuggestionsVoyage: this.getArrvoyageNameSuggestions(newValue)\r\n });\r\n };\r\n onChangArrcall = (event, { newValue }) => {\r\n var filters = this.state.VoyageEdit;\r\n filters.ArrSelectedCall = newValue;\r\n\r\n this.setState({\r\n VoyageEdit: filters\r\n });\r\n };\r\n renderSuggestionArrVesselvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrVesselValue(suggestion) {\r\n return suggestion;\r\n }\r\n onSuggestionsFetchRequestedforArrvoyage = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsVoyage: this.ArrvoyageNameSuggestions(value)\r\n });\r\n };\r\n onSuggestionsFetchRequestedforArrcall = ({ value }) => {\r\n this.setState({\r\n ArrsuggestionsCalls: this.ArrcallSuggestions(value)\r\n });\r\n };\r\n ArrcallSuggestions(value) {\r\n if (this.state.VoyageEdit.ArrSelectedVesselCD != \"\" && this.state.VoyageEdit.ArrSelectedVesselCD != null && this.state.VoyageEdit.ArrSelectedVoyage != \"\" && this.state.VoyageEdit.ArrSelectedVoyage != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.VoyageEdit.ArrSelectedVesselCD\r\n && tag.VoyageNum === this.state.VoyageEdit.ArrSelectedVoyage && tag.CallNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n\r\n return uniq(test.map(fence => fence.CallNum));\r\n }\r\n else\r\n return [];\r\n };\r\n ArrvoyageNameSuggestions(value) {\r\n if (this.state.VoyageEdit.ArrSelectedVesselCD != \"\" && this.state.VoyageEdit.ArrSelectedVesselCD != null) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.VoyageEdit.ArrSelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n }\r\n else\r\n return [];\r\n };\r\n getArrvoyageNameSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag =>\r\n tag.VesselCd.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.VoyageNum));\r\n };\r\n getArrcallSuggestions(value) {\r\n var VesselData = this.state.RefVessels;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n var test = inputLength === 0 ? [] : VesselData.filter(tag => tag.VesselCd === this.state.VoyageEdit.ArrSelectedVesselCD\r\n && tag.VoyageNum.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n return uniq(test.map(fence => fence.CallNum));\r\n };\r\n onSuggestionsClearRequestedforArrvoyage = () => {\r\n this.setState({\r\n ArrsuggestionsVoyage: []\r\n });\r\n };\r\n onSuggestionsClearRequestedforArrcall = () => {\r\n this.setState({\r\n ArrsuggestionsCalls: []\r\n });\r\n };\r\n onChangeArrvoyage = (event, { newValue }) => {\r\n var filters = this.state.VoyageEdit;\r\n filters.ArrSelectedVoyage = newValue;\r\n filters.ArrSelectedCall = '';\r\n this.setState({\r\n VoyageEdit: filters\r\n });\r\n this.setState({\r\n ArrsuggestionsCalls: this.getArrcallSuggestions(newValue)\r\n });\r\n };\r\n renderSuggestionArrvoyagevalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrvoyageValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestionArrcallvalue(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionArrcallValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n\r\n\r\n\r\n submitVVCEditDetails() {\r\n //$('#globalLoader').show();\r\n var VoyageEdit: server.VoyageEdit = JSON.parse(JSON.stringify(this.state.VoyageEdit));\r\n const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.VoyageEdit;\r\n const { VoyageDepartingVVC, ArrivingVVC, VoyageVesselCd, LifecycleCd } = this.state.SelectedReefers[0];\r\n var PrevDepartingVoyage = VoyageDepartingVVC.split('-')[0].trim();\r\n var PrevDepartingCall = VoyageDepartingVVC.split('-')[1].trim();\r\n var PrevArrivalVoyage = ArrivingVVC.split('-')[0].trim();\r\n var PrevArrivalCall = ArrivingVVC.split('-')[1].trim();\r\n\r\n var currentdepartingVVC = VoyageVesselCd + ',' + PrevDepartingVoyage + ',' + PrevDepartingCall;\r\n var currentarrivalVVC = (PrevArrivalVoyage != '' ? VoyageVesselCd : '') + ',' + PrevArrivalVoyage + ',' + PrevArrivalCall;\r\n var chosenDepartingVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n var chosenArrivalVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n\r\n if (LifecycleCd == 'C' || LifecycleCd == null)\r\n currentdepartingVVC = ',,';\r\n\r\n if (LifecycleCd == 'C' || LifecycleCd == null)\r\n currentarrivalVVC = ',,';\r\n\r\n if (currentdepartingVVC != chosenDepartingVVC || currentarrivalVVC != chosenArrivalVVC)\r\n this.state.VoyageEdit.IsVVCModified = true;\r\n else\r\n this.state.VoyageEdit.IsVVCModified = false;\r\n if (!this.state.VoyageEdit.IsVVCModified) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please modify VVC details\");\r\n return;\r\n }\r\n this.ValidateVVCandSubmit();\r\n }\r\n ValidateVVCandSubmit() {\r\n const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.VoyageEdit;\r\n var vesselHasVoyageCalls;\r\n\r\n if (SelectedVesselCD != '' && SelectedVesselCD != null) {\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n }\r\n\r\n if (SelectedVesselCD != null && SelectedVesselCD != '' && ArrSelectedVesselCD != null && ArrSelectedVesselCD != '') {\r\n if (SelectedVesselCD != ArrSelectedVesselCD) {\r\n PopupWindow.showErrorMessage('Alert', 'Departing and Arriving VVC should be same');\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (((SelectedVesselCD == '' && SelectedVoyage == '' && SelectedCall == '') || (SelectedVesselCD != '' && SelectedVoyage != '' && (!vesselHasVoyageCalls || (vesselHasVoyageCalls && SelectedCall != '')))) &&\r\n ((ArrSelectedVesselCD == '' && ArrSelectedVoyage == '' && ArrSelectedCall == '') || (ArrSelectedVesselCD != '' && ArrSelectedVoyage != '' && (!vesselHasVoyageCalls || (vesselHasVoyageCalls && ArrSelectedCall != ''))))) {\r\n var DepVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n var ArrVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ValidateVVCEntered?DepVVC=' + DepVVC + '&ArrVVC=' + ArrVVC;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != '') {\r\n if (data == 'DNE')\r\n PopupWindow.showErrorMessage(\"Error\", 'The Departing VVC, ' + SelectedVesselCD + ' ' + SelectedVoyage + ' ' + SelectedCall + ', does not exist. A VVC cannot be created here.');\r\n else if (data == 'ANE')\r\n PopupWindow.showErrorMessage(\"Error\", 'The Arriving VVC, ' + ArrSelectedVesselCD + ' ' + ArrSelectedVoyage + ' ' + ArrSelectedCall + ', does not exist. A VVC cannot be created here.');\r\n return false;\r\n }\r\n else {\r\n this.OnSubmitVVCValidations();\r\n }\r\n });\r\n }\r\n else {\r\n if (SelectedVesselCD != null && SelectedVesselCD != '' && ArrSelectedVesselCD != null && ArrSelectedVesselCD != '') {\r\n if (SelectedVesselCD != ArrSelectedVesselCD) {\r\n PopupWindow.showErrorMessage('Alert', 'Departing and Arriving VVC should be same');\r\n return false;\r\n }\r\n }\r\n\r\n var voyagesHaveCalls;\r\n if (SelectedVesselCD != '' && SelectedVesselCD != null) {\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n voyagesHaveCalls = selectedVessel[0].VoyagesHaveCalls;\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Alert', 'Departing VVC not exists');\r\n return false;\r\n }\r\n }\r\n\r\n if (SelectedVesselCD == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A vessel code must be specified for the Departing VVC.');\r\n return false;\r\n }\r\n else if (ArrSelectedVesselCD == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A vessel code must be specified for the Arriving VVC.');\r\n return false;\r\n }\r\n else if (SelectedVesselCD != '' && SelectedVoyage == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A voyage number must be specified for the Departing VVC.');\r\n return false;\r\n }\r\n else if (SelectedVesselCD != '' && voyagesHaveCalls && SelectedCall == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A call must be specified for the Departing VVC.');\r\n return false;\r\n }\r\n else if (ArrSelectedVesselCD != '' && ArrSelectedVoyage == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A voyage number must be specified for the Arriving VVC.');\r\n return false;\r\n }\r\n else if (ArrSelectedVesselCD != '' && voyagesHaveCalls && ArrSelectedCall == '') {\r\n PopupWindow.showErrorMessage('Alert', 'A call must be specified for the Arriving VVC.');\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n closeUserConfirmation() {\r\n methodResult = false;\r\n RCNGWindow.ConfirmWindow.close();\r\n return false;\r\n }\r\n\r\n SaveUserInputToState(userInput: number) {\r\n $('#globalLoader').show();\r\n var VoyageEdit: server.VoyageEdit = JSON.parse(JSON.stringify(this.state.VoyageEdit));\r\n VoyageEdit.userInput = userInput;\r\n\r\n methodResult = true;\r\n this.setState({ VoyageEdit }, () => {\r\n RCNGWindow.ConfirmWindow.close();\r\n this.submitEditVoyageAfterPrompt();\r\n });\r\n }\r\n submitEditVoyageAfterPrompt() {\r\n\r\n this.state.VoyageEdit.Unitmasterid = this.state.SelectedReefers[0].UnitMasterID;\r\n var selUnits = [];\r\n\r\n if (this.state.SelectedReefers.length > 1) {\r\n $.each(this.state.SelectedReefers, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = this.state.SelectedReefers[0].UnitMasterID.toString();\r\n }\r\n\r\n $.each(selectedUnits.split(','), function (index, value) {\r\n selUnits.push(parseInt(value));\r\n });\r\n\r\n this.state.VoyageEdit.SelectedReefers = selUnits;\r\n //$('#globalLoader').show();\r\n var voyageEdit = JSON.stringify(this.state.VoyageEdit);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/EditVoyage';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: voyageEdit, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data == 'Voyage edited successfully') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n this.props.refreshStatusGrid();\r\n\r\n PopupWindow.showErrorMessage(\"Edit Voyage\", \"Voyage edited successfully\");\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Edit Voyage\", data);\r\n }\r\n });\r\n }\r\n\r\n OnSubmitVVCValidations() {\r\n methodResult = false;\r\n const { SelectedVesselCD, SelectedVoyage, SelectedCall, ArrSelectedVesselCD, ArrSelectedVoyage, ArrSelectedCall } = this.state.VoyageEdit;\r\n const { VoyageDepartingVVC, ArrivingVVC, VoyageVesselCd, LifecycleCd } = this.state.SelectedReefers[0];\r\n var PrevDepartingVoyage = VoyageDepartingVVC.split('-')[0].trim();\r\n var PrevDepartingCall = VoyageDepartingVVC.split('-')[1].trim();\r\n var PrevArrivalVoyage = ArrivingVVC.split('-')[0].trim();\r\n var PrevArrivalCall = ArrivingVVC.split('-')[1].trim();\r\n\r\n var currentdepartingVVC = (VoyageVesselCd == null ? '' : VoyageVesselCd) + ',' + PrevDepartingVoyage + ',' + PrevDepartingCall;\r\n var currentarrivalVVC = (PrevArrivalVoyage != '' ? VoyageVesselCd : '') + ',' + PrevArrivalVoyage + ',' + PrevArrivalCall;\r\n var chosenDepartingVVC = SelectedVesselCD + ',' + SelectedVoyage + ',' + SelectedCall;\r\n var chosenArrivalVVC = ArrSelectedVesselCD + ',' + ArrSelectedVoyage + ',' + ArrSelectedCall;\r\n\r\n var submitVVCInputData: server.SubmitVVCInputData = {\r\n CurrentDepVVC: (LifecycleCd == 'C' || LifecycleCd == null) ? ',,' : currentdepartingVVC,\r\n CurrentArrVVC: (LifecycleCd == 'C' || LifecycleCd == null) ? ',,' : currentarrivalVVC,\r\n ChosenDepVVC: chosenDepartingVVC,\r\n ChosenArrVVC: chosenArrivalVVC,\r\n LifecycleCd: LifecycleCd\r\n }\r\n var inputBody = JSON.stringify(submitVVCInputData);\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/SubmitVVC';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: inputBody, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.IsPromptMessage) {\r\n $('#globalLoader').hide();\r\n RCNGWindow.ConfirmWindow.showConfirmBox(data.ResultMessage, this.SaveUserInputToState.bind(this, data.PromptId), this.closeUserConfirmation.bind(this));\r\n }\r\n else if (!data.IsPromptMessage && data.ResultMessage != null && data.ResultMessage != '') {\r\n PopupWindow.showErrorMessage('Error', data.ResultMessage);\r\n methodResult = false;\r\n return methodResult;\r\n }\r\n else {\r\n this.SaveUserInputToState(data.PromptId);\r\n return methodResult;\r\n }\r\n });\r\n }\r\n public render() {\r\n var Voyagedisabled: any;\r\n var Calldisabled: any;\r\n if (this.state.VoyageEdit.SelectedVesselCD != \"\" && this.state.VoyageEdit.SelectedVesselCD != null) {\r\n Voyagedisabled = false;\r\n Calldisabled = true;\r\n }\r\n else {\r\n Voyagedisabled = true;\r\n Calldisabled = true;\r\n }\r\n if (this.state.VoyageEdit.SelectedVoyage != \"\" && this.state.VoyageEdit.SelectedVoyage != null) {\r\n\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == this.state.VoyageEdit.SelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n var vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n if (vesselHasVoyageCalls)\r\n Calldisabled = false;\r\n else\r\n Calldisabled = true;\r\n }\r\n }\r\n else {\r\n Calldisabled = true;\r\n }\r\n var ArrVoyagedisabled: any;\r\n var ArrCalldisabled: any;\r\n if (this.state.VoyageEdit.ArrSelectedVesselCD != \"\" && this.state.VoyageEdit.ArrSelectedVesselCD != null) {\r\n ArrVoyagedisabled = false;\r\n ArrCalldisabled = true;\r\n }\r\n else {\r\n ArrVoyagedisabled = true;\r\n ArrCalldisabled = true;\r\n }\r\n if (this.state.VoyageEdit.ArrSelectedVoyage != \"\" && this.state.VoyageEdit.ArrSelectedVoyage != null) {\r\n\r\n var selectedVessel = this.state.RefVessels.filter(x => x.VesselCd.toUpperCase() == this.state.VoyageEdit.ArrSelectedVesselCD.toUpperCase());\r\n if (selectedVessel != null && selectedVessel != undefined && selectedVessel.length > 0) {\r\n var vesselHasVoyageCalls = selectedVessel[0].VoyagesHaveCalls;\r\n if (vesselHasVoyageCalls)\r\n ArrCalldisabled = false;\r\n else\r\n ArrCalldisabled = true;\r\n }\r\n }\r\n else {\r\n ArrCalldisabled = true;\r\n }\r\n const { suggestionsVesselId, suggestionsVoyage, suggestionsCalls, ArrsuggestionsVesselId, ArrsuggestionsVoyage, ArrsuggestionsCalls } = this.state;\r\n\r\n const FenceIdListinputPropsforvessel = {\r\n id: 'vesselID',\r\n placeholder: 'Vessel',\r\n value: this.state.VoyageEdit.SelectedVesselCD,\r\n onChange: this.onChangeVesselId.bind(this),\r\n };\r\n const FenceIdListinputPropsforvoyage = {\r\n id: 'voyageNum',\r\n placeholder: 'Voyage',\r\n value: this.state.VoyageEdit.SelectedVoyage,\r\n onChange: this.onChangevoyage.bind(this),\r\n disabled: Voyagedisabled,\r\n };\r\n const FenceIdListinputPropsforcall = {\r\n id: 'CallNum',\r\n placeholder: 'Call',\r\n value: this.state.VoyageEdit.SelectedCall,\r\n onChange: this.onChangcall.bind(this),\r\n disabled: Calldisabled,\r\n };\r\n const FenceIdListinputPropsforArrvessel = {\r\n id: 'vesselID',\r\n placeholder: 'Vessel',\r\n value: this.state.VoyageEdit.ArrSelectedVesselCD,\r\n onChange: this.onChangeArrVesselId.bind(this),\r\n };\r\n const FenceIdListinputPropsforArrvoyage = {\r\n id: 'voyageNum',\r\n placeholder: 'Voyage',\r\n value: this.state.VoyageEdit.ArrSelectedVoyage,\r\n onChange: this.onChangeArrvoyage.bind(this),\r\n disabled: ArrVoyagedisabled,\r\n };\r\n const FenceIdListinputPropsforArrcall = {\r\n id: 'CallNum',\r\n placeholder: 'Call',\r\n value: this.state.VoyageEdit.ArrSelectedCall,\r\n onChange: this.onChangArrcall.bind(this),\r\n disabled: ArrCalldisabled,\r\n };\r\n return
    \r\n
    \r\n
    \r\n
    \r\n Reefer ID:\r\n
    \r\n
    \r\n
    \r\n {(this.state.VoyageEdit != undefined) ? this.state.VoyageEdit.ReeferId : ''}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\n","import * as React from 'react';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from '../PopupWindow';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface DimiSettingGridState {\r\n SelectedReefers: any[],\r\n RowData: server.USP_UnitCurrentConditionUI_Model[],\r\n ForwardCommandParms: server.ForwardCommandParams;\r\n Filters: server.DimiSettingsParams\r\n VisibleDimiSetting: string;\r\n VisibleDimiValidity: string;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nvar self;\r\n\r\nexport class DimiSetting extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n var forwardCommandParms: server.ForwardCommandParams = { SelectedReefers: [], CommandName: null, TempValue: null, PreTripCmdFilters: null, TraditionalDownload: null, lstAutoConfigParams: null, IsCmdSendViaVC: null, VesselInfo: null };\r\n this.state = { SelectedReefers: [], RowData: [], ForwardCommandParms: forwardCommandParms, Filters: filterSet, VisibleDimiSetting: 'row', VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [], VisibleDimiValidity:'row' };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderDimiSettingsGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedReefers: reeferData, VisibleDimiSetting: 'row' });\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderDimiSettingsGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderDimiSettingsGrid(reeferData: any) {\r\n this.setState({ SelectedReefers: reeferData });\r\n this.SetDefaultDimiValidity(reeferData);\r\n var filterSet = this.setDefaultFilters();\r\n this.setState({ Filters: filterSet });\r\n this.state.ForwardCommandParms.CommandName = \"DIMISettings\";\r\n this.state.ForwardCommandParms.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData });\r\n var forwardCommandParams = JSON.stringify(this.state.ForwardCommandParms);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n /* Updated method for RCNG - 5517OMP shall allow the user to disable DIMI Term*/\r\n DimiModeStatusChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n if (Value == 'On') {\r\n this.setState({ VisibleDimiSetting: 'row' });\r\n var filters = this.state.Filters;\r\n this.state.Filters.DimiMode = Value;\r\n this.setState({ Filters: filters });\r\n }\r\n else {\r\n\r\n if (this.state.SelectedReefers != null && this.state.SelectedReefers.length > 0) {\r\n var isDimiPriorFlag: boolean = false;\r\n if (this.state.SelectedReefers[0].UnitTypeCd.trim().toUpperCase() == 'DA' || this.state.SelectedReefers[0].UnitTypeCd.trim().toUpperCase() == 'DB') {\r\n var softRevision = this.state.SelectedReefers[0].SoftwareRevision;\r\n if (this.ValidateNumberValue(softRevision)) {\r\n\r\n if (softRevision < '3106') {\r\n isDimiPriorFlag = true;\r\n }\r\n }\r\n else {\r\n var strFirstTwo = softRevision.substring(0, 2);\r\n var strSoftwarehex = softRevision.substring(2, 4);\r\n var number = Number(\"0x\" + strSoftwarehex)\r\n if (parseInt(strFirstTwo) <= 30 && parseInt(number.toString()) < 77) {\r\n isDimiPriorFlag = true;\r\n }\r\n }\r\n }\r\n\r\n if (isDimiPriorFlag) {\r\n var filters = this.state.Filters;\r\n var DimiModeValue = 'On';\r\n this.state.Filters.DimiMode = DimiModeValue;\r\n this.setState({ Filters: filters });\r\n\r\n var warningMessage = 'DIMI Term can only be disabled for Va reefers running controller software version 304D or later and Vb reefers running controller software version 3106 or later.';\r\n PopupWindow.showDIMIMessage('Alert', warningMessage);\r\n event.currentTarget.value = 'On';\r\n this.DimiModeStatusChange(event);\r\n }\r\n else {\r\n var filters = this.state.Filters;\r\n var DimiModeValue = 'Off';\r\n this.state.Filters.DimiMode = DimiModeValue;\r\n this.setState({ Filters: filters });\r\n this.setState({ VisibleDimiSetting: 'disabled row' });\r\n }\r\n\r\n }\r\n else\r\n this.setState({ VisibleDimiSetting: 'disabled row' });\r\n }\r\n\r\n }\r\n DimiTypeStatusChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var filters = this.state.Filters;\r\n this.state.Filters.DimiType = Value;\r\n this.setState({ Filters: filters });\r\n }\r\n DimiTermChange(event: React.FormEvent) {\r\n $('#cmbDimiModeStatus').focus();\r\n $('#txtDIMITerm').focus();\r\n var filters = this.state.Filters;\r\n var DimiTermValue = this.state.Filters.DimiTerm;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n DimiTermValue = Value;\r\n else\r\n return;\r\n\r\n this.state.Filters.DimiTerm = DimiTermValue;\r\n this.setState({ Filters: filters });\r\n }\r\n handleFocus() {\r\n $('#cmbDimiModeStatus').focus();\r\n $('#txtDIMITerm').focus();\r\n\r\n };\r\n DimidurationChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var filters = this.state.Filters;\r\n this.state.Filters.DimiDuration = Value;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.DimiSettingsParams = {\r\n DimiMode: 'On', DimiType: 'Short PTI', DimiTerm: '12', DimiDuration: 'Off'\r\n };\r\n return filters;\r\n }\r\n SetDefaultDimiValidity(reeferData: any) {\r\n var IsValidCount = 0;\r\n if (reeferData[0].UnitTypeCd != null && reeferData[0].UnitTypeCd.trim().toUpperCase() == 'DA') {\r\n var strFirstTwo = reeferData[0].SoftwareRevision.substring(0, 2);\r\n var strSoftwarehex = reeferData[0].SoftwareRevision.substring(2, 4);\r\n var number = Number(\"0x\" + strSoftwarehex)\r\n if (parseInt(strFirstTwo) == 30 && 77 <= parseInt(number.toString()))\r\n IsValidCount++\r\n }\r\n else if (reeferData[0].UnitTypeCd != null && reeferData[0].UnitTypeCd.trim().toUpperCase() == 'DB') {\r\n var strFirstTwo = reeferData[0].SoftwareRevision.substring(0, 2);\r\n var strSoftwarehex = reeferData[0].SoftwareRevision.substring(2, 4);\r\n var number = Number(\"0x\" + strSoftwarehex)\r\n if (parseInt(strFirstTwo) == 31 && 6 <= parseInt(number.toString()))\r\n IsValidCount++\r\n }\r\n //if (reeferData[0].UnitTypeCd != null && reeferData[0].UnitTypeCd.trim().toUpperCase() == 'DV') {\r\n // IsValidCount++\r\n //}\r\n if (IsValidCount >= 1)\r\n this.setState({ VisibleDimiValidity: 'show' })\r\n else\r\n this.setState({ VisibleDimiValidity: 'hidden' })\r\n }\r\n ValidateNumberValue(param) {\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(param))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n submitDimiSettingCommand() {\r\n if (this.state.Filters.DimiMode == \"On\") {\r\n var AlertMessage = \"\";\r\n if (this.state.Filters.DimiTerm == undefined || this.state.Filters.DimiTerm == \"\")\r\n AlertMessage = \"Please enter DIMI Term value.\";\r\n else if (!this.ValidateNumberValue(this.state.Filters.DimiTerm) || !(parseInt(this.state.Filters.DimiTerm) >= 1 && parseInt(this.state.Filters.DimiTerm) <= 48))\r\n AlertMessage += \"Please enter DIMI Term value between 1 and 48.\";\r\n if (AlertMessage == '') {\r\n try {\r\n var command = \"DIMISettings\";\r\n var refreshGrid = this.props.refreshGrid;\r\n var paramValue = this.state.Filters.DimiMode.toString() + ',' + this.state.Filters.DimiType.toString() + ',' + parseInt(this.state.Filters.DimiTerm).toString() + ',' + this.state.Filters.DimiDuration.toString();\r\n this.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n }\r\n catch (e) {\r\n PopupWindow.showErrorMessage('Error', '');\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n else {\r\n try {\r\n var command = \"DIMISettings\";\r\n var refreshGrid = this.props.refreshGrid;\r\n var paramValue = this.state.Filters.DimiMode.toString() + ',' + null + ',' + null + ',' + null;\r\n this.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n }\r\n catch (e) {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n }\r\n\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue, refreshGrid) {\r\n if (self.state.RowData.length > 0) {\r\n self.state.ForwardCommandParms.CommandName = commandName;\r\n self.state.ForwardCommandParms.SelectedReefers = self.state.RowData;\r\n self.state.ForwardCommandParms.TempValue = paramValue;\r\n var forwardCommandParams = JSON.stringify(self.state.ForwardCommandParms);\r\n ReeferCommandsGrid.submitTemperatureCommands(commandName, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n this.DimiTermChange(e)} value={this.state.Filters.DimiTerm} onClick={this.handleFocus}\r\n />\r\n\r\n {/*
    */}\r\n {/* this.DimiTermChange(e)} value={this.state.Filters.DimiTerm} />*/}\r\n {/* */}\r\n {/*
    */}\r\n\r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n }\r\n\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface IntelligentPTIFunctionGridState {\r\n SelectedReefers: any[];\r\n TempValue: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nexport class IntelligentPTIFunction extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n var selectReefer = [];\r\n this.state = { SelectedReefers: selectReefer, TempValue: \"Off\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderIntelligentPTIFunctionGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitIntelligentPTIFunction() {\r\n var command = \"IntelligentPTIFunction\";\r\n var paramValue = this.state.TempValue;\r\n // if (paramValue != \"\" && paramValue != null) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n //}\r\n //else\r\n // PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderIntelligentPTIFunctionGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderIntelligentPTIFunctionGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"IntelligentPTIFunction\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData, TempValue: \"Off\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n IntelligentPTIFunctionChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var filters = this.state.Filters;\r\n this.setState({ TempValue: Value });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"IntelligentPTIFunction\", TempValue: \"Off\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { ReeferCommandsGrid } from '../../childcomponents/ReeferCommandsGrid';\r\nimport { PopupWindow } from '../../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from '../../../RCUtils';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface FanSpeedGridState {\r\n SelectedReefers: any[];\r\n TempValue: string;\r\n RowData: server.USP_UnitCurrentConditionUI_Model[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData; \r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\nexport class FanSpeed extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n var selectReefer = [];\r\n this.state = { SelectedReefers: selectReefer, TempValue: \"Auto\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderFanSpeedGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitFanSpeed() {\r\n var command = \"FanSpeed\";\r\n var paramValue = this.state.TempValue;\r\n // if (paramValue != \"\" && paramValue != null) {\r\n var refreshGrid = this.props.refreshGrid;\r\n ReeferCommandsGrid.submitTemperatureCommands(command, paramValue, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n //}\r\n //else\r\n // PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Setpoint value.\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderFanSpeedGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderFanSpeedGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"FanSpeed\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData, TempValue: \"Auto\" });\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetForwardCommandData', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n FanSpeedChange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value.trim();\r\n var filters = this.state.Filters;\r\n this.setState({ TempValue: Value });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"FanSpeed\", TempValue: \"Auto\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","export default __webpack_public_path__ + \"static/media/login_bg1.26381c40.jpg\";","import * as React from 'react';\r\n\r\nconst FileNotFound = (props) => {\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n const RedirectToHome = () => {\r\n props.history.push('/home');\r\n };\r\n return (\r\n
    \r\n\r\n
    \r\n
    404!
    \r\n
    Sorry, page not found
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default FileNotFound;\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nconst Unauthorized = (props) => {\r\n var redirectPath = sessionStorage.getItem(\"UrlPath\");\r\n var isOIN = sessionStorage.getItem(\"OIN\");\r\n var preloader = document.getElementById(\"preloader\");\r\n preloader.classList.add(\"hidden\");\r\n useEffect(() => {\r\n redirectPath = sessionStorage.getItem(\"UrlPath\");\r\n if (sessionStorage.getItem('azureInit') != null) {\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n }\r\n }, []); \r\n const RedirectToLogin = () => {\r\n if (sessionStorage.getItem(\"UrlPath\")) {\r\n //var redirectPath = sessionStorage.getItem(\"UrlPath\");\r\n //props.history.push('/matson');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n if (isOIN) {\r\n sessionStorage.setItem('OIN', 'True');\r\n }\r\n window.location.href = redirectPath;\r\n } \r\n else\r\n {\r\n //props.history.push('/home');\r\n if (localStorage.length > 0) {\r\n localStorage.clear();\r\n }\r\n if (sessionStorage.length > 0) {\r\n sessionStorage.clear();\r\n }\r\n sessionStorage.removeItem(\"UserInfo\");\r\n window.location.href = '/';\r\n }\r\n };\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n
    Session expired. Please sign in again.
    \r\n\r\n
    {sessionStorage.getItem('AZRD') != null ? '' : }
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default Unauthorized;\r\n","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport DateFormat from 'dateformat';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface EditTripSettingsState {\r\n SelectedReefers: any[];\r\n TripGeofencesDetails: server.TripGeofencesDetails;\r\n refTripDefinition: server.RefTripDefinition[];\r\n tripGeofencesByTrip: server.TripGeofencesByTrip[];\r\n DepartureChecked: boolean;\r\n ArrivalChecked: boolean;\r\n}\r\nvar newTripGeofencesDetails: server.TripGeofencesDetails = {\r\n reeferID: null, TripDefinitionSelectedValue: null, unitMasetrId: null, OriginGeofence: '', DestinationGeofence: '', TripName: '',\r\n SFrmDate: DateFormat(new Date(moment(new Date(DateFormat(new Date(Date.now()), 'mm/dd/yyyy'))).startOf('day').toString()), 'mm/dd/yyyy HH:MM:ss'),\r\n SToDate: DateFormat(new Date(moment(new Date(DateFormat(new Date(Date.now()), 'mm/dd/yyyy'))).endOf('day').toString()), 'mm/dd/yyyy HH:MM:ss'), CommandUnits: []\r\n};\r\n\r\nvar self;\r\n\r\nexport class EditTrip extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n this.state = { SelectedReefers: [], TripGeofencesDetails: newTripGeofencesDetails, refTripDefinition: [], tripGeofencesByTrip: [], DepartureChecked: false, ArrivalChecked: false };\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/RefTripDefinitionLst')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ refTripDefinition: data });\r\n });\r\n }\r\n DepartureCheckedtoggleChange = () => {\r\n this.setState({\r\n DepartureChecked: !this.state.DepartureChecked,\r\n });\r\n }\r\n ArrivalCheckedtoggleChange = () => {\r\n this.setState({\r\n ArrivalChecked: !this.state.ArrivalChecked,\r\n });\r\n }\r\n\r\n public handleOnChange(event: any): void {\r\n const name = event.target.name;\r\n const value = event.target.value;\r\n //this.setState({ [name]: value });\r\n }\r\n TripNameOnChange(event: any): void {\r\n var Value: string = event.currentTarget.value;\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.TripName = Value;\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }\r\n toDateOnChange(date) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.SToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }\r\n fromDateOnChange(date) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.SFrmDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }\r\n handleSubmit(): void {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n if (!this.state.ArrivalChecked)\r\n tripGeofencesDetails.SToDate = null;\r\n if (!this.state.DepartureChecked)\r\n tripGeofencesDetails.SFrmDate = null;\r\n if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.TripName == null)) {\r\n PopupWindow.showErrorMessage(\"Edit Trip\", \"Please enter valid Trip Name.\");\r\n return;\r\n }\r\n else if ((this.state.TripGeofencesDetails.TripName != null && this.state.TripGeofencesDetails.TripName.trim() == \"\")) {\r\n PopupWindow.showErrorMessage(\"Edit Trip\", \"Please enter valid Trip Name.\");\r\n return;\r\n\r\n }\r\n else if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.TripDefinitionSelectedValue == \"-1\")) {\r\n PopupWindow.showErrorMessage(\"Edit Trip\", \"Please select Trip Definition.\");\r\n return;\r\n }\r\n else if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.DestinationGeofence.trim() == \"\") && (!this.state.ArrivalChecked || !this.state.DepartureChecked)) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"A trip should have either Origin and Destination Geofence or Earliest Departure and Arrival or Both.\");\r\n return;\r\n }\r\n else if ((this.state.TripGeofencesDetails != null && this.state.TripGeofencesDetails.OriginGeofence.trim() == \"\") && (!this.state.ArrivalChecked || !this.state.DepartureChecked)) {\r\n PopupWindow.showErrorMessage(\"Create Trip\", \"A trip should have either Origin and Destination Geofence or Earliest Departure and Arrival or Both.\");\r\n return;\r\n }\r\n else {\r\n //tripGeofencesDetails.unitMasetrId = this.state.SelectedReefers[0].UnitMasterID;\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/Trip/EditTripDefDetails';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(tripGeofencesDetails), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Edit Trip\", data);\r\n if (data == \"Trip updated successfully.\")\r\n self.props.refreshTripGrid();\r\n });\r\n this.closeModel();\r\n }\r\n }\r\n componentDidMount() {\r\n var reeferData = this.props.refData;\r\n if (reeferData != undefined && reeferData != null) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.TripName = reeferData.TripName;\r\n tripGeofencesDetails.TripDefinitionSelectedValue = reeferData.TripDefinitionSelectedValue;\r\n tripGeofencesDetails.SToDate = DateFormat(new Date(reeferData.SToDate), 'mm/dd/yyyy HH:MM');//reeferData.SToDate;\r\n tripGeofencesDetails.SFrmDate = DateFormat(new Date(reeferData.SFrmDate), 'mm/dd/yyyy HH:MM');//reeferData.SFrmDate;\r\n tripGeofencesDetails.OriginGeofence = reeferData.OriginGeofence;\r\n tripGeofencesDetails.DestinationGeofence = reeferData.DestinationGeofence;\r\n tripGeofencesDetails.reeferID = reeferData.reeferID;\r\n tripGeofencesDetails.unitMasetrId = reeferData.unitMasetrId;\r\n tripGeofencesDetails.CommandUnits = reeferData.CommandUnits;\r\n tripGeofencesDetails.TripId = reeferData.TripId;\r\n setTimeout(() => {\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }, 20);\r\n if (reeferData.SToDate != null) {\r\n this.setState({ ArrivalChecked: true });\r\n }\r\n else {\r\n this.setState({ ArrivalChecked: false });\r\n }\r\n if (reeferData.SFrmDate != null) {\r\n this.setState({ DepartureChecked: true });\r\n } else {\r\n this.setState({ DepartureChecked: false });\r\n }\r\n }\r\n // To make the Modal popups draggable.\r\n Excel.draggableModalPopup(document.getElementById(\"EditTrip\"));\r\n }\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.refData;\r\n if (reeferData != undefined && reeferData != null) {\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.TripName = reeferData.TripName;\r\n tripGeofencesDetails.TripDefinitionSelectedValue = reeferData.TripDefinitionSelectedValue;\r\n if (reeferData.SToDate != null)\r\n tripGeofencesDetails.SToDate = reeferData.SToDate;\r\n else\r\n tripGeofencesDetails.SToDate = DateFormat(new Date(moment(new Date(DateFormat(new Date(Date.now()), 'mm/dd/yyyy'))).endOf('day').toString()), 'mm/dd/yyyy HH:MM:ss');\r\n if (reeferData.SFrmDate != null)\r\n tripGeofencesDetails.SFrmDate = reeferData.SFrmDate;\r\n else\r\n tripGeofencesDetails.SFrmDate = DateFormat(new Date(moment(new Date(DateFormat(new Date(Date.now()), 'mm/dd/yyyy'))).startOf('day').toString()), 'mm/dd/yyyy HH:MM:ss');\r\n tripGeofencesDetails.OriginGeofence = reeferData.OriginGeofence;\r\n tripGeofencesDetails.DestinationGeofence = reeferData.DestinationGeofence;\r\n tripGeofencesDetails.reeferID = reeferData.reeferID;\r\n tripGeofencesDetails.unitMasetrId = reeferData.unitMasetrId;\r\n tripGeofencesDetails.CommandUnits = reeferData.CommandUnits;\r\n tripGeofencesDetails.TripId = reeferData.TripId;\r\n setTimeout(() => {\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }, 20);\r\n if (reeferData.SToDate != null) {\r\n this.setState({ ArrivalChecked: true });\r\n }\r\n else {\r\n this.setState({ ArrivalChecked: false });\r\n }\r\n if (reeferData.SFrmDate != null) {\r\n this.setState({ DepartureChecked: true });\r\n } else {\r\n this.setState({ DepartureChecked: false });\r\n }\r\n }\r\n }\r\n\r\n GetTripDefination(value: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/GetGeofencesByTripId', { method: 'POST', body: value, headers: { 'Accept': 'applicatio/json', 'Content-Type': 'application/json' } })\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n this.setState({ tripGeofencesByTrip: data });\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.OriginGeofence = this.state.tripGeofencesByTrip[0].SourceGofenceAddress;\r\n tripGeofencesDetails.DestinationGeofence = this.state.tripGeofencesByTrip[0].DestGofenceAddress;\r\n tripGeofencesDetails.TripDefinitionSelectedValue = value;\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n });\r\n }\r\n public handleOnChangeDropDown(event: any): void {\r\n //this.setState({ [event.target.name]: event.target.value })\r\n this.GetTripDefination(event.target.value);\r\n }\r\n\r\n closeModel() {\r\n $('#EditTrip').hide();\r\n $('#TripStatus').css('opacity', 1);\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.TripName = '';\r\n tripGeofencesDetails.TripDefinitionSelectedValue = '-1';\r\n tripGeofencesDetails.SToDate = null;\r\n tripGeofencesDetails.SFrmDate = null;\r\n tripGeofencesDetails.OriginGeofence = '';\r\n tripGeofencesDetails.DestinationGeofence = '';\r\n tripGeofencesDetails.reeferID = '';\r\n tripGeofencesDetails.unitMasetrId = null;\r\n tripGeofencesDetails.CommandUnits = [];\r\n tripGeofencesDetails.TripId = null;\r\n setTimeout(() => {\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n }, 20);\r\n }\r\n\r\n public render() {\r\n return (\r\n
    \r\n {this.LoadTripDetailsData(this.state.refTripDefinition)}\r\n
    \r\n );\r\n }\r\n LoadTripDetailsData(data: any) {\r\n const Arrivalhidden = this.state.ArrivalChecked ? 'col-md-5' : 'hidden';\r\n const Departurehidden = this.state.DepartureChecked ? 'col-md-5' : 'hidden';\r\n var tripDefinitions = this.state.refTripDefinition;\r\n var TripDefinationOptions = tripDefinitions.map(function (trip) {\r\n return (\r\n \r\n );\r\n });\r\n return (
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Trip Details
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Reefer ID :\r\n
    \r\n
    \r\n
    \r\n {(this.state.TripGeofencesDetails != undefined) ? this.state.TripGeofencesDetails.reeferID : ''}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Trip Definition :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Origin Geofence :\r\n
    \r\n
    \r\n {this.state.TripGeofencesDetails.OriginGeofence} \r\n
    \r\n
    \r\n
    \r\n
    \r\n Destination Geofence :\r\n
    \r\n
    \r\n {this.state.TripGeofencesDetails.DestinationGeofence} \r\n
    \r\n
    \r\n
    \r\n
    \r\n Trip Name :\r\n
    \r\n
    \r\n this.TripNameOnChange(e)} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Earliest Departure :
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Arrival :
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    )\r\n }\r\n\r\n}","export default __webpack_public_path__ + \"static/media/edit_18_dis.3e6ca16e.png\";","// @ts-nocheck\r\n/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport forEach from 'lodash/forEach';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from '../sharedcomponents/GridToolBarPopups';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport DateFormat from 'dateformat';\r\nimport Formatters from '../../actions/Formatters';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport './../../../node_modules/react-datepicker/dist/react-datepicker.css';\r\nimport { EditTrip } from '../childcomponents/EditTrip';\r\nimport animatedloader from '../../images/animated-loader.gif';\r\nimport deletepng from '../../images/delete.png';\r\nimport edit18 from '../../images/Status/RouteDeviation/edit_18_dis.png';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\n\r\ninterface TripStatusSettingsState {\r\n SelectedReefers: any[];\r\n SelectedOption: string;\r\n refTripDefinition: server.RefTripDefinition[];\r\n refTripStatus: server.RefTripStatus[];\r\n ModelNumber: string;\r\n RowData: server.SearchTripDetails_Result[];\r\n Filters: server.SearchTripParameters;\r\n SelectedReefer: string;\r\n TripGeofencesDetails: server.TripGeofencesDetails;\r\n DeleteMessage: string;\r\n DeleteParams: any;\r\n DeleteYes: boolean;\r\n EditTripGeofencesDetails: server.EditTripGeofencesDetails;\r\n DeleteTripParameters: server.DeleteTripParameters;\r\n pageSize: any;\r\n gridApiParams: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n suggestionsFenceId: any[];\r\n destSuggestionsFenceId: any[]\r\n RefGeofences: string[];\r\n targetId: string\r\n}\r\nvar newTripGeofencesDetails: server.TripGeofencesDetails = {\r\n reeferID: null, TripDefinitionSelectedValue: null, unitMasetrId: null, OriginGeofence: '', DestinationGeofence: '', TripName: '',\r\n SFrmDate: new Date(), SToDate: new Date(), CommandUnits: []\r\n};\r\nvar newEditTripGeofencesDetails: server.EditTripGeofencesDetails = {\r\n reeferID: null, TripDefinitionSelectedValue: null, unitMasetrId: null, OriginGeofence: '', DestinationGeofence: '', TripName: '',\r\n SFrmDate: new Date(), SToDate: new Date(), CommandUnits: [], TripId: 0, TripStatusCd: '', TripStatusDsc: ''\r\n};\r\nvar newDeleteTripParameters: server.DeleteTripParameters = { TripId: 0, TripStatusDsc: '', CommandUnits: [] };\r\nvar colDefs;\r\nvar self;\r\nvar deleteYes;\r\nvar deleteEvent;\r\nvar ExcelcolDefs;\r\nexport class TripStatus extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n colDefs = this.createColumnDefs();\r\n ExcelcolDefs = this.createExcelColumnDefs();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = {\r\n SelectedReefers: [], refTripDefinition: [], refTripStatus: [], ModelNumber: \"\", RowData: [], Filters: filterSet, SelectedOption: 'show', SelectedReefer: '', TripGeofencesDetails: newTripGeofencesDetails, DeleteMessage: 'Do you want to delete the trip?', DeleteParams: null, DeleteYes: false, EditTripGeofencesDetails: newEditTripGeofencesDetails, DeleteTripParameters: newDeleteTripParameters\r\n , pageSize: 25\r\n , gridApiParams: []\r\n , IsCommandIssued: false, PrevSelectedItems: [], suggestionsFenceId: [], destSuggestionsFenceId: [], RefGeofences: [], targetId: ''\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/GetGeofencesForTrip')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var fenceData = data.map(fence => fence.Address);\r\n this.setState({ RefGeofences: fenceData.filter((x, i, a) => a.indexOf(x) == i) });\r\n }\r\n });\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.SearchTripParameters = {\r\n UnitMasetrId: null, TripDefId: \"-1\", TripName: null, SFrmDate: DateFormat(new Date(), 'mm/dd/yyyy HH:MM'), SToDate: DateFormat(new Date(), 'mm/dd/yyyy HH:MM'), TripStatusDsc: null, SearchType: 'show', SourceGofenceAddress: '', DestGofenceAddress: ''\r\n };\r\n return filters;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.reeferData != undefined && this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ SelectedReefers: this.props.reeferData, SelectedReefer: this.props.reeferData[0].ReeferID });\r\n // this.bindTripData(this.state.SelectedOption, this.props.reeferData);\r\n this.setState({ SelectedOption: 'show' });\r\n this.GetTripsData(\"show\", this.props.reeferData);\r\n }\r\n $(\"#inlineRadio1\").prop(\"checked\", true);\r\n this.HideGeofenceAndTrip('TripDefiniton');\r\n $('#tripLoader').hide();\r\n $('#ShowPending').addClass('active');\r\n $('#ShowAll').removeClass('active');\r\n $('#ShowSpecific').removeClass('active');\r\n\r\n\r\n\r\n\r\n\r\n // To make the Modal popups draggable.\r\n Excel.draggableModalPopup(document.getElementById(\"deleteModal\"));\r\n }\r\n\r\n onGridReady(params: any) {\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n //this.gridApi.sizeColumnsToFit();\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Edit\", field: \"TripId\", width: 50, cellRenderer: this.EditIndicator, onCellClicked: this.onCellClickedEdit.bind(this) },\r\n { headerName: \"Remove\", field: \"TripId\", width: 50, cellRenderer: this.DeleteIndicator, onCellClicked: this.onCellClickedDelete.bind(this) },\r\n { headerName: \"Trip\", field: \"TripStatusCdAndDFlag\", tooltipField: \"TripStatusDsc\", width: 50, cellRenderer: ReeferCellRenderer.TripstatusIndicator },\r\n { headerName: \"Trip name\", field: \"TripNm\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"Earliest departure\", field: \"EarliestDepartureDtm\", width: 150, cellRenderer: Formatters.dateTypeFormatter12H },\r\n { headerName: \"Arrival\", field: \"ArrivalDtm\", width: 150, cellRenderer: Formatters.dateTypeFormatter12H },\r\n { headerName: \"Trip Definition\", field: \"TripDefNm\", width: 150, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"Origin\", field: \"SourceGofenceAddress\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 100 },\r\n { headerName: \"Destination\", field: \"DestGofenceAddress\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n createExcelColumnDefs() {\r\n return [\r\n { headerName: \"Trip\", field: \"TripStatusCdAndDFlag\", tooltipField: \"TripStatusDsc\", width: 50, cellRenderer: ReeferCellRenderer.TripstatusIndicator },\r\n { headerName: \"Trip name\", field: \"TripNm\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"Earliest departure\", field: \"EarliestDepartureDtm\", width: 150, cellRenderer: Formatters.dateTypeFormatterforExcel },\r\n { headerName: \"Arrival\", field: \"ArrivalDtm\", width: 150, cellRenderer: Formatters.dateTypeFormatterforExcel },\r\n { headerName: \"Trip definition\", field: \"TripDefNm\", width: 150, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"Origin\", field: \"SourceGofenceAddress\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 100 },\r\n { headerName: \"Destination\", field: \"DestGofenceAddress\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n this.setState({ RowData: [], SelectedReefers: reeferData, SelectedReefer: reeferData[0].ReeferID });\r\n //this.bindTripData(this.state.SelectedOption, reeferData);\r\n this.setState({ SelectedOption: 'show' });\r\n this.GetTripsData(\"show\", reeferData);\r\n $('#ShowPending').addClass('active');\r\n $('#ShowAll').removeClass('active');\r\n $('#ShowSpecific').removeClass('active');\r\n }\r\n }\r\n\r\n setForwardCommandUnits() {\r\n var userId = 0;\r\n var commandUnits = [];\r\n if (this.state.SelectedReefers.length > 0) {\r\n forEach(this.state.SelectedReefers, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userId,\r\n \"TripId\": value.TripId\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n DateTypeFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n }\r\n\r\n onCellClickedEdit(event) {\r\n if (event.data.TripStatusCd.toUpperCase().trim() == \"P\") {\r\n var fCommends = this.setForwardCommandUnits();\r\n var tripGeofencesDetails: server.TripGeofencesDetails = JSON.parse(JSON.stringify(this.state.TripGeofencesDetails));\r\n tripGeofencesDetails.TripName = event.data.TripNm;\r\n tripGeofencesDetails.TripDefinitionSelectedValue = event.data.TripDefId;\r\n tripGeofencesDetails.SFrmDate = (event.data.EarliestDepartureDtm != null) ? this.DateTypeFormatter(event.data.EarliestDepartureDtm) : null;\r\n tripGeofencesDetails.SToDate = (event.data.ArrivalDtm != null) ? this.DateTypeFormatter(event.data.ArrivalDtm) : null;\r\n tripGeofencesDetails.OriginGeofence = event.data.SourceGofenceAddress;\r\n tripGeofencesDetails.DestinationGeofence = event.data.DestGofenceAddress;\r\n tripGeofencesDetails.reeferID = event.data.ReeferId;\r\n tripGeofencesDetails.unitMasetrId = this.state.SelectedReefers[0].UnitMasterID;\r\n tripGeofencesDetails.CommandUnits = fCommends;\r\n tripGeofencesDetails.TripId = event.data.TripId;\r\n this.setState({ TripGeofencesDetails: tripGeofencesDetails });\r\n $('#TripStatus').css('opacity', .5);\r\n $('#EditTrip').show();\r\n this.onRefreshData.bind(this)\r\n // this.props.refreshStatusGrid();\r\n }\r\n }\r\n\r\n onCellClickedDelete(event) {\r\n if (event.data.TripStatusCd.toUpperCase().trim() == \"A\" || event.data.TripStatusCd.toUpperCase().trim() == \"P\" || event.data.TripStatusCd.toUpperCase().trim() == \"D\") {\r\n deleteEvent = null;\r\n this.setState({ DeleteParams: event });\r\n deleteEvent = event;\r\n $('#TripStatus').css('opacity', .5);\r\n $(\"#deleteModal\").css(\"padding-top\", \"100px\");\r\n self.setDeleteMessage(event);\r\n $('#deleteModal').show();\r\n //this.props.refreshStatusGrid();\r\n }\r\n }\r\n\r\n onRefreshData() {\r\n $('#globalLoader').show();\r\n this.GetTripsData(this.state.SelectedOption, this.state.SelectedReefers);\r\n $('#globalLoader').hide();\r\n }\r\n DeleteIndicator(params: any) {\r\n if (params.data.TripStatusCd.toUpperCase().trim() == \"A\" || params.data.TripStatusCd.toUpperCase().trim() == \"P\" || params.data.TripStatusCd.toUpperCase().trim() == \"D\")\r\n return ;\r\n else\r\n return ;\r\n }\r\n //DeleteIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // if (params.data.TripStatusCd.toUpperCase().trim() == \"A\" || params.data.TripStatusCd.toUpperCase().trim() == \"P\" || params.data.TripStatusCd.toUpperCase().trim() == \"D\")\r\n // element.className = \"Trip-delete\";\r\n // else\r\n // element.className = \"Trip-delete disabled\";\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Delete Trip\";\r\n // element.appendChild(imageElement);\r\n // return element;\r\n //}\r\n EditIndicator(params: any) {\r\n if (params.data.TripStatusCd.toUpperCase().trim() == \"P\")\r\n return ;\r\n else\r\n return ;\r\n }\r\n //EditIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // if (params.data.TripStatusCd.toUpperCase().trim() == \"P\")\r\n // element.className = \"Trip-edit\";\r\n // else\r\n // element.className = \"Trip-edit disabled\";\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = edit18;\r\n // imageElement.title = \"Edit Trip\";\r\n // element.appendChild(imageElement);\r\n // return element;\r\n //}\r\n\r\n setDeleteMessage(tripCode: any) {\r\n this.setState({ DeleteParams: tripCode });\r\n if (tripCode.data.TripStatusCd == 'P') {\r\n //setTimeout(() => {\r\n this.setState({ DeleteMessage: 'Do you want to delete the trip?' });\r\n // }, 50);\r\n } else {\r\n //setTimeout(() => {\r\n this.setState({ DeleteMessage: 'Do you want to cancel the trip?' });\r\n // }, 50);\r\n }\r\n }\r\n\r\n fromDateOnChange(date) {\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.SFrmDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n toDateOnChange(date) {\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.SToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n TripNameOnChange(event: any): void {\r\n var Value: string = event.currentTarget.value;\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.TripName = Value;\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n OriginGeofenceOnChange(event: any): void {\r\n var Value: string = event.currentTarget.value;\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.SourceGofenceAddress = Value;\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n DestinationGeofenceOnChange(event: any): void {\r\n var Value: string = event.currentTarget.value;\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.DestGofenceAddress = Value;\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n TripDefinationchange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.TripDefId = Value;\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n TripStatuschange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.TripStatusDsc = Value;\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n handleSubmit(): void {\r\n var fromDttm = this.state.Filters.SFrmDate;\r\n var toDttm = this.state.Filters.SToDate;\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm))) {\r\n PopupWindow.showErrorMessage(\"TripStatus\", \"Departure Date should not be greater than Arrival Date.\");\r\n return;\r\n }\r\n if (fromDttm != \"Invalid date\" && fromDttm != null && fromDttm != \"\")\r\n this.state.Filters.SFrmDate = DateFormat(new Date(fromDttm), 'mm/dd/yyyy HH:MM');\r\n if (toDttm != \"Invalid date\" && toDttm != null && toDttm != \"\")\r\n this.state.Filters.SToDate = DateFormat(new Date(toDttm), 'mm/dd/yyyy HH:MM');\r\n //if (fromDttm.toString() > toDttm.toString() ) {\r\n // PopupWindow.showErrorMessage(\"TripStatus\", \"Departure Date should not be greater than Arrival Date.\");\r\n // return;\r\n //}\r\n //else if (fromDttm.toString() == \"Invalid date\" || fromDttm.toString() == null || fromDttm.toString()==\"\") {\r\n // PopupWindow.showErrorMessage(\"TripStatus\", \"Invalid From Date.\");\r\n // return;\r\n //}\r\n //else if (toDttm.toString() == \"Invalid date\" || toDttm.toString() == null || toDttm.toString() == \"\") {\r\n // PopupWindow.showErrorMessage(\"TripStatus\", \"Invalid To Date.\");\r\n // return;\r\n //}\r\n //else{\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/GetTripStatusSearchData', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n });\r\n //}\r\n }\r\n\r\n //ValidateHistoryDates() {\r\n // var fromDttm = this.state.Filters.SFrmDate;\r\n // var toDttm = this.state.Filters.SToDate;\r\n // if (fromDttm.toString() == \"Invalid date\" || fromDttm == null || fromDttm.toString() == \"\")\r\n // return \"Invalid From Date.\";\r\n\r\n // if (toDttm.toString() == \"Invalid date\" || toDttm == null || toDttm.toString() == \"\")\r\n // return \"Invalid To Date.\";\r\n\r\n // return \"\";\r\n //}\r\n handleClear(): void {\r\n var searchTripParameters: server.SearchTripParameters = JSON.parse(JSON.stringify(this.state.Filters));\r\n searchTripParameters.TripName = \"\";\r\n var modifiedDttm = DateFormat(new Date(Date.now()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(modifiedDttm)).startOf('day').toString();\r\n var toDate = moment(new Date(modifiedDttm)).endOf('day').toString();\r\n searchTripParameters.SFrmDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n searchTripParameters.SToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n searchTripParameters.DestGofenceAddress = \"\";\r\n searchTripParameters.SourceGofenceAddress = \"\";\r\n searchTripParameters.TripDefId = \"-1\";\r\n searchTripParameters.TripStatusDsc = \"-1\";\r\n this.setState({ Filters: searchTripParameters });\r\n }\r\n\r\n closeModel() {\r\n $('#deleteModal').hide();\r\n $('#TripStatus').css('opacity', 1);\r\n }\r\n\r\n refreshTripGrid() {\r\n\r\n this.GetTripsData(this.state.SelectedOption, this.state.SelectedReefers);\r\n this.props.refreshStatusGrid();\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.reeferData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.reeferData) });\r\n }\r\n\r\n performYesAction() {\r\n deleteYes = true;\r\n var updatedDeleteEvent = deleteEvent;\r\n this.setState({ DeleteYes: true });\r\n var par = this.state.DeleteParams;\r\n this.updateTripStatus(updatedDeleteEvent);\r\n //par.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n //par.api.setRowData(par.api.gridOptionsWrapper.gridOptions.rowData); \r\n this.closeModel();\r\n }\r\n\r\n updateTripStatus(params: any) {\r\n $('#globalLoader').show();\r\n var fCommends = this.setForwardCommandUnits();\r\n var deleteTripGeofencesDetails: server.DeleteTripParameters = JSON.parse(JSON.stringify(this.state.DeleteTripParameters));\r\n deleteTripGeofencesDetails.TripId = params.data.TripId;\r\n deleteTripGeofencesDetails.TripStatusDsc = params.data.TripStatusDsc;\r\n deleteTripGeofencesDetails.CommandUnits = fCommends;\r\n this.setState({ DeleteTripParameters: deleteTripGeofencesDetails });\r\n var deletetripGeofencesDetails: server.DeleteTripParameters = JSON.parse(JSON.stringify(this.state.DeleteTripParameters));\r\n var url = Config.ApiBaseUrl + '/api/Trip/EditTripStatus';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(deleteTripGeofencesDetails), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n this.refreshTripGrid();\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Delete Trip\", data);\r\n });\r\n }\r\n\r\n performNoAction() {\r\n this.setState({ DeleteYes: false });\r\n this.closeModel();\r\n }\r\n\r\n ShowPending() {\r\n $('#ShowPending').addClass('active');\r\n $('#ShowAll').removeClass('active');\r\n $('#ShowSpecific').removeClass('active');\r\n this.setState({ SelectedOption: 'show' });\r\n this.GetTripsData(\"show\", this.state.SelectedReefers);\r\n $(\"#displayShowSpecific\").removeClass('trip_status_grid_200');\r\n $(\"#displayShowSpecific\").addClass('trip_status_grid');\r\n }\r\n\r\n ShowAll() {\r\n $('#ShowPending').removeClass('active');\r\n $('#ShowAll').addClass('active');\r\n $('#ShowSpecific').removeClass('active');\r\n this.setState({ SelectedOption: 'showall' });\r\n this.GetTripsData(\"showall\", this.state.SelectedReefers);\r\n $(\"#displayShowSpecific\").removeClass('trip_status_grid_200');\r\n $(\"#displayShowSpecific\").addClass('trip_status_grid');\r\n }\r\n\r\n public GetTripsData(tripType: any, reeferData: any): void {\r\n $('#tripLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/RefTripDefinitionLst')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ refTripDefinition: data });\r\n });\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/RefTripStatus')\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ refTripStatus: data });\r\n });\r\n this.state.Filters.UnitMasetrId = reeferData[0].UnitMasterID;\r\n this.state.Filters.TripDefId = \"-1\";\r\n this.state.Filters.TripName = null;\r\n var modifiedDttm = DateFormat(new Date(Date.now()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(modifiedDttm)).startOf('day').toString();\r\n var toDate = moment(new Date(modifiedDttm)).endOf('day').toString();\r\n this.state.Filters.SFrmDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.SToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.TripStatusDsc = \"-1\";\r\n this.state.Filters.SearchType = tripType;\r\n this.state.Filters.SourceGofenceAddress = \"\";\r\n this.state.Filters.DestGofenceAddress = \"\";\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Trip/GetTripStatusSearchData', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n $('#tripLoader').hide();\r\n });\r\n }\r\n\r\n ShowSpecific() {\r\n $('#ShowPending').removeClass('active');\r\n $('#ShowAll').removeClass('active');\r\n $('#ShowSpecific').addClass('active');\r\n this.setState({ SelectedOption: 'showspecific' });\r\n this.GetTripsData(\"showspecific\", this.state.SelectedReefers);\r\n $(\"#displayShowSpecific\").removeClass('trip_status_grid');\r\n $(\"#displayShowSpecific\").addClass('trip_status_grid_200');\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n HideGeofenceAndTrip(value) {\r\n\r\n if (value == 'Geofence') {\r\n $('#rdoTripDefination').hide();\r\n $('#rdoGeofence').show();\r\n }\r\n else if (value == 'TripDefiniton') {\r\n $('#rdoGeofence').hide();\r\n $('#rdoTripDefination').show();\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n
    \r\n {this.LoadTripDetailsData()}\r\n
    \r\n );\r\n }\r\n\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n suggestionsFenceId: this.getFenceNameSuggestions(value)\r\n });\r\n };\r\n\r\n getFenceNameSuggestions(value) {\r\n var geofences = this.state.RefGeofences;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : geofences.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n\r\n onDestSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n destSuggestionsFenceId: this.getDestFenceNameSuggestions(value)\r\n });\r\n };\r\n\r\n getDestFenceNameSuggestions(value) {\r\n var geofences = this.state.RefGeofences;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : geofences.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n suggestionsFenceId: []\r\n });\r\n };\r\n\r\n onDestSuggestionsClearRequested = () => {\r\n this.setState({\r\n destSuggestionsFenceId: []\r\n });\r\n };\r\n\r\n\r\n onChangeFenceId = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SourceGofenceAddress = newValue;\r\n $('#geofenceID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n };\r\n\r\n onDestChangeFenceId = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.DestGofenceAddress = newValue;\r\n $('#geofenceID').addClass(\"fw-semibold\");\r\n\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n };\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n\r\n LoadTripDetailsData() {\r\n const { suggestionsFenceId } = this.state;\r\n const { destSuggestionsFenceId } = this.state;\r\n\r\n const FenceIdListinputProps = {\r\n id: 'Address',\r\n placeholder: 'Enter Origin Geofence',\r\n value: this.state.Filters.SourceGofenceAddress,\r\n onChange: this.onChangeFenceId.bind(this)\r\n };\r\n const DestFenceIdListinputProps = {\r\n id: 'Address',\r\n placeholder: 'Enter Destination Geofence',\r\n value: this.state.Filters.DestGofenceAddress,\r\n onChange: this.onDestChangeFenceId.bind(this)\r\n };\r\n var tripDefinitions = this.state.refTripDefinition;\r\n var TripDefinationOptions = tripDefinitions.map(function (trip) {\r\n return (\r\n \r\n );\r\n });\r\n var tripStatus = this.state.refTripStatus;\r\n var TripStatusOptions = tripStatus.map(function (tripstatus) {\r\n return (\r\n \r\n );\r\n });\r\n const Specifichidden = this.state.SelectedOption === 'showspecific' ? '' : 'hidden';\r\n return (
    \r\n
    Loading
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Search By:\r\n
    \r\n
    \r\n
    \r\n this.HideGeofenceAndTrip('TripDefiniton')} />\r\n \r\n
    \r\n
    \r\n this.HideGeofenceAndTrip('Geofence')} />\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.TripNameOnChange(e)} />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Trip Details
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {this.state.DeleteMessage}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    )\r\n }\r\n}","import * as React from 'react';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Select from 'react-select';\r\nimport forEach from 'lodash/forEach';\r\nimport Workbook from 'react-excel-workbook';\r\nvar Excel = Exceljs.default;\r\n\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any;\r\n selectedheaderName: string;\r\n AllColumns: any[];\r\n PrevGroupId: number;\r\n PrevColId: string;\r\n isClearable: boolean;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridGensetHistoryToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', renderGridPreferenceHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false,\r\n excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderExportToExcelHTML: '',\r\n selectedheaderName: null, AllColumns: [], PrevGroupId: -1, PrevColId: null, isClearable: true\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n return ;\r\n //return ;\r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderEmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogGridPreferenceHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Grid Preference
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderGridPreferenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogExportToExcelHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Export To Excel
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderExportToExcelHTML}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardHistory_' + this.props.formName).hide();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"GensetStatusGrid\" || this.props.formName == \"GensetHistoryGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName,\r\n this.props.parentchild, functionId, widgetId, this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"GensetHistoryGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardHistory_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"GensetHistoryGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadGensetHistory').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n OpenGensetMonitoringChart() {\r\n this.props.openGensetMonitorGraph();\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#GensetHistoryQuickFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n ColumnChange(event: any) {\r\n if (event != null) {\r\n var name: string = event.value;\r\n this.setState({\r\n selectedheaderName: name\r\n });\r\n var defaultKeys = this.state.AllColumns.filter(x => x.colDef.headerName == name);\r\n var colId = defaultKeys[0].colId;\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n if (defaultKeys.length > 0 && defaultKeys[0].colDef.columnGroupShow == \"open\") {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(defaultKeys[0].parent.groupId, true);\r\n //this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.onGroupExpandedOrCollapsed();\r\n setTimeout(() => {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n }, 200);\r\n this.setState({ PrevGroupId: defaultKeys[0].parent.groupId, PrevColId: colId });\r\n }\r\n else {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n this.setState({ PrevGroupId: -1, PrevColId: colId });\r\n }\r\n }\r\n else {\r\n this.setState({\r\n selectedheaderName: null\r\n });\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n }\r\n }\r\n static GetColumns(params: any) {\r\n var newColumns = [];\r\n var Displayedcolumns = params.columnApi.getAllDisplayedColumnGroups();\r\n forEach(Displayedcolumns, function (value, key) {\r\n forEach(value.children, function (bv, bk) {\r\n newColumns.push(bv);\r\n });\r\n });\r\n self.setState({ AllColumns: newColumns })\r\n }\r\n\r\n\r\n public render() {\r\n if (this.props.formName == \"GensetHistoryGrid\") {\r\n if (this.state.AllColumns != null && this.state.AllColumns.length > 0) {\r\n var Alldisplayedcolumns = this.state.AllColumns;\r\n\r\n if (Alldisplayedcolumns != undefined && Alldisplayedcolumns != null && Alldisplayedcolumns.length > 0) {\r\n var Selectedcolumns = Alldisplayedcolumns.map(function (Columns) {\r\n return (\r\n { value: Columns.colDef.headerName, label: Columns.colDef.headerName }\r\n );\r\n });\r\n }\r\n }\r\n }\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n\r\n {this.props.formName == \"GensetHistoryGrid\" ?\r\n : \"\"}\r\n {\r\n this.props.formName == 'GensetHistoryGrid' ? : ''\r\n }\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n
    \r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n\r\n
    \r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\n\r\nimport moment from 'moment';\r\nimport DateFormat from 'dateformat';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as Highcharts from 'highcharts';\r\nimport HC_Exporting from 'highcharts/modules/exporting';\r\nimport HC_Exporting_offline from 'highcharts/modules/offline-exporting';\r\nimport forEach from 'lodash/forEach';\r\nvar Config: any = require('../../Config.json');\r\n\r\n\r\ninterface TemperatureGraphState {\r\n graphData: ReeferUnitHistoryUI[];\r\n Filters: ReeferHistoryGraphFilters;\r\n PreferenceDTTM: any;\r\n buttonState: boolean;\r\n}\r\n\r\nvar self;\r\nvar contextMenu;\r\n\r\nexport class ReeferTemperatureGraph extends React.Component {\r\n chartTemperature: Highcharts.ChartObject;\r\n constructor(props: any) {\r\n super(props);\r\n HC_Exporting(Highcharts);\r\n HC_Exporting_offline(Highcharts);\r\n var filterSet = this.initTemperatureGraphFilters();//new ReeferHistoryGraphFilters();\r\n var graphData: any = [];\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n this.state = { \r\n Filters: filterSet,\r\n graphData: graphData,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n buttonState: false\r\n };\r\n self = this;\r\n } \r\n\r\n initTemperatureGraphFilters() {\r\n var objHistoryGraphFilters = new ReeferHistoryGraphFilters();\r\n objHistoryGraphFilters.GrphFromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objHistoryGraphFilters.GrphToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objHistoryGraphFilters.Units = \"\";\r\n\r\n return objHistoryGraphFilters;\r\n }\r\n\r\n static BindTemperatureGraphData(historySearchFilters: any, graphData: any) {\r\n if (self != undefined && self != null) {\r\n var filterSet = new ReeferHistoryGraphFilters();\r\n filterSet.GrphFromDate = historySearchFilters.FromDate;\r\n filterSet.GrphToDate = historySearchFilters.ToDate;\r\n filterSet.Units = historySearchFilters.Units\r\n\r\n self.setState({\r\n graphData: graphData,\r\n Filters: filterSet\r\n }, () => self.initializeChart());\r\n }\r\n }\r\n\r\n getSeriesData(currentData: any[], seriesName: string, axesNo: number) {\r\n if (currentData.length > 0) {\r\n var returnSeriesData = [];\r\n $.each(currentData, function (i, val) {\r\n if (val.TemperatureValue != null && val.TemperatureValue != undefined) {\r\n if (axesNo == 1) { \r\n if (val.TemperatureValue != \"999\" && val.TemperatureValue != \"-999\") {\r\n if (seriesName == \"Humidity\") {\r\n if (val.TemperatureValue == \"0\" || val.HumiditySetPointStatus == \"O\")\r\n returnSeriesData.push(null);\r\n else\r\n returnSeriesData.push(val.TemperatureValue);\r\n }\r\n else\r\n returnSeriesData.push(val.TemperatureValue);\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n }\r\n else {\r\n var tempVal = Formatters.TemperatureFormatterForGraph(val.TemperatureValue);\r\n if (tempVal != 'OOR' && tempVal != '-NA-') {\r\n returnSeriesData.push(tempVal);\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n }\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n });\r\n }\r\n\r\n var TemperatureSeries;\r\n if (axesNo == 1) {\r\n TemperatureSeries = {\r\n name: seriesName,\r\n type: 'spline',\r\n data: returnSeriesData,\r\n yAxis: axesNo\r\n };\r\n }\r\n else {\r\n TemperatureSeries = {\r\n name: seriesName,\r\n type: 'spline',\r\n data: returnSeriesData\r\n };\r\n }\r\n\r\n return TemperatureSeries;\r\n }\r\n \r\n refreshGraphPoints() {\r\n //this.renderDateFields();\r\n //this.updateGraphData(true);\r\n this.BindGraphData();//RCNG-363\r\n this.getReeferHistoryDetails();//RCNG=430\r\n }\r\n static HighLightGraphData(selectedpoint) {\r\n if (self.chartTemperature != undefined && self.chartTemperature != null\r\n && self.chartTemperature.series != undefined && self.chartTemperature.series[0] != undefined) {\r\n var tempPoint = selectedpoint[0].C_EventDTTM;\r\n var tempDT = self.dateTimeFormatter(tempPoint);\r\n var seriesX = self.chartTemperature.series;\r\n var totalPoints = [];\r\n forEach(seriesX, function (values, key) {\r\n var allData = values.data;\r\n var i = 0;\r\n forEach(allData, function (mvalues, key) {\r\n if (mvalues.category == tempDT && i==0) {\r\n totalPoints.push(values.points[key]); \r\n i++;\r\n }\r\n });\r\n\r\n });\r\n if (totalPoints.length > 0) {\r\n //p[0].series.name\r\n self.chartTemperature.tooltip.refresh(totalPoints);\r\n }\r\n //setInterval(function () {\r\n // //var chart = $('#dvTemperatureGraph').highcharts();\r\n // if (i < 11 && j < self.chartTemperature.series[0].data.length) {\r\n // if (self.chartTemperature.series[i].data[j] != undefined && self.chartTemperature.series[i].data[j] != null) { \r\n // if (self.chartTemperature.series[i].data[j].category == te1) {\r\n \r\n // self.chartTemperature.series[i].data[j].select(true, true);\r\n // v.push(self.chartTemperature.series[i].data[j]);\r\n // //self.chartTemperature.tooltip.refresh(self.chartTemperature.series[i].data[j]);\r\n // //self.chartTemperature.series[i].data[j].category;\r\n // }\r\n // if (++j == self.chartTemperature.series[0].data.length) {\r\n // i++;\r\n // j = 0;\r\n // }\r\n // }\r\n // }\r\n \r\n //}, 1);\r\n //if (v.length > 0) {\r\n // //self.chartTemperature.tooltip.refresh(v);\r\n //}\r\n }\r\n }\r\n static ClearGraphData() {\r\n if (self != undefined) {\r\n self.setState({\r\n graphData: [],\r\n }, () => self.updateGraphData(false));\r\n $(\"#dvTemperatureGraph\").hide();\r\n self.enableDisableSearchButton(false);\r\n self.renderDateFields();\r\n }\r\n }\r\n\r\n updateGraphData(loader:any) {\r\n if (this.chartTemperature != undefined && this.chartTemperature != null\r\n && this.chartTemperature.series != undefined && this.chartTemperature.series[0] != undefined) {\r\n if (this.state.graphData.length > 0) {\r\n var graphCurrentData = this.GraphPoints();\r\n this.chartTemperature.xAxis[0].removePlotBand('temperatureGraphPlot2');\r\n if (graphCurrentData.xAxisPlotData != null && graphCurrentData.xAxisPlotData.length > 0) {\r\n // this.chartTemperature.xAxis[0].removePlotBand('temperatureGraphPlot2');\r\n $.each(graphCurrentData.xAxisPlotData, function (i, val) {\r\n self.chartTemperature.xAxis[0].addPlotBand(val);\r\n });\r\n }\r\n\r\n this.chartTemperature.xAxis[0].setCategories(graphCurrentData.xAxisData);\r\n this.chartTemperature.series[0].setData(graphCurrentData.yAxisData[0].data);\r\n this.chartTemperature.series[1].setData(graphCurrentData.yAxisData[1].data);\r\n this.chartTemperature.series[2].setData(graphCurrentData.yAxisData[2].data);\r\n this.chartTemperature.series[3].setData(graphCurrentData.yAxisData[3].data);\r\n this.chartTemperature.series[4].setData(graphCurrentData.yAxisData[4].data);\r\n this.chartTemperature.series[5].setData(graphCurrentData.yAxisData[5].data);\r\n this.chartTemperature.series[6].setData(graphCurrentData.yAxisData[6].data);\r\n this.chartTemperature.series[7].setData(graphCurrentData.yAxisData[7].data);\r\n this.chartTemperature.series[8].setData(graphCurrentData.yAxisData[8].data);\r\n this.chartTemperature.series[9].setData(graphCurrentData.yAxisData[9].data);\r\n this.chartTemperature.series[10].setData(graphCurrentData.yAxisData[10].data);\r\n this.chartTemperature.redraw(); \r\n $('.highcharts-reset-zoom').click();\r\n if (graphCurrentData.yAxisData[0].data.length == 0 && graphCurrentData.yAxisData[1].data.length == 0\r\n && graphCurrentData.yAxisData[2].data.length == 0 && graphCurrentData.yAxisData[3].data.length == 0\r\n && graphCurrentData.yAxisData[4].data.length == 0 && graphCurrentData.yAxisData[5].data.length == 0\r\n && graphCurrentData.yAxisData[5].data.length == 0 && graphCurrentData.yAxisData[6].data.length == 0\r\n && graphCurrentData.yAxisData[7].data.length == 0 && graphCurrentData.yAxisData[8].data.length == 0\r\n && graphCurrentData.yAxisData[9].data.length == 0 && graphCurrentData.yAxisData[10].data.length == 0) {\r\n $('#dvGraphMsgBox').show();\r\n }\r\n else {\r\n $('#dvGraphMsgBox').hide();\r\n }\r\n }\r\n else {\r\n this.chartTemperature.xAxis[0].setCategories([]);\r\n this.chartTemperature.series[0].setData([]);\r\n this.chartTemperature.series[1].setData([]);\r\n this.chartTemperature.series[2].setData([]);\r\n this.chartTemperature.series[3].setData([]);\r\n this.chartTemperature.series[4].setData([]);\r\n this.chartTemperature.series[5].setData([]);\r\n this.chartTemperature.series[6].setData([]);\r\n this.chartTemperature.series[7].setData([]);\r\n this.chartTemperature.series[8].setData([]);\r\n this.chartTemperature.series[9].setData([]);\r\n this.chartTemperature.series[10].setData([]);\r\n this.chartTemperature.redraw();\r\n $('#dvGraphMsgBox').show();\r\n $('.highcharts-reset-zoom').click();\r\n }\r\n }\r\n if (loader)\r\n $('#globalLoader').hide();\r\n }\r\n\r\n GraphPoints() {\r\n var returnTemperatures = [];\r\n var setPointTemperatures = [];\r\n var supplyTemperatures = [];\r\n var usda1Temperatures = [];\r\n var usda2Temperatures = [];\r\n var usda3Temperatures = [];\r\n var cargo4Temperatures = [];\r\n var ambientTemperatures = [];\r\n var humidityTemperatures = [];\r\n var o2Temperatures = [];\r\n var co2Temperatures = [];\r\n var reeferIdSelected = this.state.graphData[0].ReeferID;\r\n var graphTimes = this.state.graphData.map(x => x.EventDTTM);\r\n var xAxisCategories = [];\r\n var xAxisPlotValues = [];\r\n var RunStateValues = [];\r\n\r\n RunStateValues = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n RCDPowerSourceCd: x.RCDPowerSourceCd\r\n }));\r\n RunStateValues = RunStateValues.sort(x => x.EventDTTM).reverse();\r\n\r\n // declare some variables prepare plot bands \r\n var plotBandsArray: any[] = [];\r\n try {\r\n var a = 0;\r\n var m = 0;\r\n var n = 0;\r\n var e = 0;\r\n var f = 0;\r\n var allBat = 0;\r\n var max = RunStateValues.length - 1;\r\n // prepare a plotband array like [start position of RCDPowerSourceCd=B(index),end position of RCDPowerSourceCd=B(index)] like [[2,6],[11,14],[18,20]]\r\n for (var i = a; i < RunStateValues.length; i++) {\r\n if (RunStateValues[i].RCDPowerSourceCd == 'B') {\r\n m = i;\r\n for (var j = i; j < RunStateValues.length; j++) {\r\n if (RunStateValues[j].RCDPowerSourceCd == 'A') {\r\n n = j;\r\n i = j;\r\n plotBandsArray.push([m, n])\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n // find B exists before A occurs from last\r\n for (var g = max; g >= 0; g--) {\r\n if (RunStateValues[g].RCDPowerSourceCd == 'B') {\r\n e = g;\r\n break;\r\n }\r\n\r\n }\r\n // find A exists before B occurs from last and find there is NO A exists\r\n for (var h = max; h >= 0; h--) {\r\n if (RunStateValues[h].RCDPowerSourceCd == 'A') {\r\n f = h;\r\n allBat = 1;\r\n break;\r\n }\r\n\r\n }\r\n //if B exists before A means last point will be [Bindex,last point of array] \r\n // if all battery total graph ploted with band\r\n if (e > f) {\r\n if (e != RunStateValues.length) {\r\n if (allBat == 1) {\r\n plotBandsArray.push([f + 1, max])\r\n } else {\r\n plotBandsArray.push([f , max])\r\n }\r\n }\r\n }\r\n\r\n var i = 0;\r\n while (i < plotBandsArray.length) {\r\n var plotBandObject = {\r\n color: '#ececeb',\r\n from: plotBandsArray[i][0],\r\n to: plotBandsArray[i][1],\r\n id: 'temperatureGraphPlot2',\r\n label: {\r\n text: 'Battery power',\r\n y:50,\r\n rotation: 90,\r\n align: 'center'\r\n }\r\n };\r\n xAxisPlotValues.push(plotBandObject);\r\n i += 1;\r\n }\r\n } catch (Error) {\r\n\r\n // ignore errors during prepare a plotband array \r\n //PopupWindow.showErrorMessage(\"Alert\", Error.message);\r\n\r\n }\r\n\r\n $.each(graphTimes, function (i, val) { \r\n xAxisCategories.push(self.dateTimeFormatter(val));\r\n });\r\n\r\n xAxisCategories.sort();\r\n\r\n // Y1-axis Data\r\n returnTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.ReturnTemp1\r\n })); \r\n returnTemperatures = returnTemperatures.sort(x => x.EventDTTM).reverse();\r\n var returnTemperaturesSeries = this.getSeriesData(returnTemperatures, 'Return', 2);\r\n returnTemperaturesSeries.color = \"#EC7063\"; \r\n\r\n setPointTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.SetPoint\r\n }));\r\n setPointTemperatures = setPointTemperatures.sort(x => x.EventDTTM).reverse();\r\n var setPointTemperaturesSeries = this.getSeriesData(setPointTemperatures, 'Setpoint', 2);\r\n setPointTemperaturesSeries.color = \"#F1C40F\";\r\n \r\n supplyTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.SupplyTemp1\r\n }));\r\n supplyTemperatures = supplyTemperatures.sort(x => x.EventDTTM).reverse();\r\n var supplyTemperaturesSeries = this.getSeriesData(supplyTemperatures, 'Supply', 2);\r\n supplyTemperaturesSeries.color = \"#27AE60\";\r\n\r\n usda1Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.USDA1Temp\r\n }));\r\n usda1Temperatures = usda1Temperatures.sort(x => x.EventDTTM).reverse();\r\n var usda1TemperaturesSeries = this.getSeriesData(usda1Temperatures, 'USDA1', 2);\r\n usda1TemperaturesSeries.color = \"#0E6655\";\r\n\r\n usda2Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.USDA2Temp\r\n }));\r\n usda2Temperatures = usda2Temperatures.sort(x => x.EventDTTM).reverse();\r\n var usda2TemperaturesSeries = this.getSeriesData(usda2Temperatures, 'USDA2', 2);\r\n usda2TemperaturesSeries.color = \"#A04000\";\r\n\r\n usda3Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.USDA3Temp\r\n }));\r\n usda3Temperatures = usda3Temperatures.sort(x => x.EventDTTM).reverse();\r\n var usda3TemperaturesSeries = this.getSeriesData(usda3Temperatures, 'USDA3', 2);\r\n usda3TemperaturesSeries.color = \"#95A5A6\";\r\n\r\n cargo4Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.Cargo4Temp\r\n }));\r\n cargo4Temperatures = cargo4Temperatures.sort(x => x.EventDTTM).reverse();\r\n var cargo4TemperaturesSeries = this.getSeriesData(cargo4Temperatures, 'USDA4', 2);\r\n cargo4TemperaturesSeries.color = \"#FF5722\";\r\n\r\n ambientTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.AmbientTemp\r\n }));\r\n ambientTemperatures = ambientTemperatures.sort(x => x.EventDTTM).reverse();\r\n var ambientTemperaturesSeries = this.getSeriesData(ambientTemperatures, 'Ambient', 2);\r\n ambientTemperaturesSeries.color = \"#9CCC65\";\r\n\r\n // Y2-axis Data\r\n humidityTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.Humidity,\r\n HumiditySetPointStatus: x.HumiditySetpointStatus\r\n }));\r\n humidityTemperatures = humidityTemperatures.sort(x => x.EventDTTM).reverse();\r\n var humidityTemperaturesSeries = this.getSeriesData(humidityTemperatures, 'Humidity', 1);\r\n humidityTemperaturesSeries.color = \"#800080\";\r\n\r\n o2Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.O2Reading\r\n }));\r\n o2Temperatures = o2Temperatures.sort(x => x.EventDTTM).reverse();\r\n var o2TemperaturesSeries = this.getSeriesData(o2Temperatures, 'O2', 1);\r\n o2TemperaturesSeries.color = \"#F57F17\";\r\n\r\n co2Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.CO2Reading\r\n }));\r\n co2Temperatures = co2Temperatures.sort(x => x.EventDTTM).reverse();\r\n var co2TemperaturesSeries = this.getSeriesData(co2Temperatures, 'CO2', 1);\r\n co2TemperaturesSeries.color = \"#FDD835\";\r\n\r\n var dataObject = {\r\n reeferId: reeferIdSelected, \r\n xAxisData: xAxisCategories,\r\n xAxisPlotData: xAxisPlotValues,\r\n yAxisData: [setPointTemperaturesSeries, returnTemperaturesSeries, supplyTemperaturesSeries, usda1TemperaturesSeries, usda2TemperaturesSeries, usda3TemperaturesSeries, cargo4TemperaturesSeries, ambientTemperaturesSeries, humidityTemperaturesSeries, o2TemperaturesSeries, co2TemperaturesSeries]\r\n }\r\n\r\n return dataObject;\r\n }\r\n \r\n BindGraphData() {\r\n if (this.state.graphData != null && this.state.graphData.length > 0) {\r\n var parent = this;\r\n var element = document.getElementById('dvTemperatureGraph');\r\n\r\n var tooltipOption: Highcharts.TooltipOptions = {\r\n shared: true,\r\n useHTML: true,\r\n headerFormat: '{point.key:%m-%d-%y %H:%M}',\r\n pointFormat: '' +\r\n '',\r\n footerFormat: '
    {series.name}: {point.y}
    ',\r\n }\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n //var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\r\n \r\n if (typeof (element) != 'undefined' && element != null) {\r\n //if (isChrome) {\r\n // if (!contextMenu) {\r\n // Highcharts.setOptions({\r\n // global: {\r\n // useUTC: false\r\n // },\r\n // exporting: {\r\n // buttons: {\r\n // contextButton: {\r\n // //menuItems: Highcharts.getOptions().exporting.buttons.contextButton.menuItems.splice(2)\r\n // menuItems: ['downloadPNG', 'downloadJPEG']\r\n // }\r\n // }\r\n // }\r\n // });\r\n // }\r\n //}\r\n //else {\r\n Highcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n menuItems: ['downloadPNG', 'downloadJPEG']//26022 'printChart', 'separator', \r\n }\r\n }\r\n }\r\n });\r\n //}\r\n\r\n var graphCurrentData = this.GraphPoints();\r\n if (graphCurrentData.yAxisData[0].data.length == 0 && graphCurrentData.yAxisData[1].data.length == 0\r\n && graphCurrentData.yAxisData[2].data.length == 0 && graphCurrentData.yAxisData[3].data.length == 0\r\n && graphCurrentData.yAxisData[4].data.length == 0 && graphCurrentData.yAxisData[5].data.length == 0\r\n && graphCurrentData.yAxisData[5].data.length == 0 && graphCurrentData.yAxisData[6].data.length == 0\r\n && graphCurrentData.yAxisData[7].data.length == 0 && graphCurrentData.yAxisData[8].data.length == 0\r\n && graphCurrentData.yAxisData[9].data.length == 0 && graphCurrentData.yAxisData[10].data.length == 0) {\r\n $('#dvGraphMsgBox').show();\r\n }\r\n else {\r\n $('#dvGraphMsgBox').hide();\r\n }\r\n\r\n parent.chartTemperature = Highcharts.chart('dvTemperatureGraph', {\r\n chart: {\r\n zoomType: 'xy'\r\n },\r\n title: {\r\n text: 'Reefer Monitoring Data: ' + graphCurrentData.reeferId.slice(0, 4).concat(' ').concat(graphCurrentData.reeferId.slice(4, 10)).concat(' ').concat(graphCurrentData.reeferId.slice(10, 11))\r\n //text: ''\r\n },\r\n xAxis: [{\r\n type: 'dateTime',\r\n categories: graphCurrentData.xAxisData,\r\n labels: {\r\n format: '{value:%m-%d-%y %H:%M}'\r\n },\r\n plotBands: graphCurrentData.xAxisPlotData\r\n }],\r\n exporting: {\r\n enabled: true,\r\n sourceWidth: 1600,\r\n sourceHeight: 500,\r\n chartOptions: {\r\n plotOptions: {\r\n series: {\r\n dataLabels: {\r\n enabled: true\r\n }\r\n }\r\n }\r\n }\r\n },\r\n yAxis: [{ // Primary yAxis\r\n labels: {\r\n //format: '{value}°C', \r\n formatter: function () {\r\n return this.value + '°' + tempUnitCd.toUpperCase();\r\n },\r\n style: {\r\n color: \"#388E3C\"\r\n }\r\n },\r\n title: {\r\n text: 'Temperature',\r\n style: {\r\n color: \"#388E3C\"\r\n }\r\n }\r\n }, { // Secondary yAxis\r\n gridLineWidth: 0,\r\n title: {\r\n text: 'Percentage',\r\n style: {\r\n color: Highcharts.getOptions().colors[0]\r\n }\r\n },\r\n labels: {\r\n format: '{value} %',\r\n style: {\r\n color: Highcharts.getOptions().colors[0]\r\n }\r\n },\r\n opposite: true\r\n }],\r\n plotOptions: {\r\n spline: {\r\n marker: {\r\n enabled: true\r\n }\r\n },\r\n series: {\r\n connectNulls: true\r\n }\r\n },\r\n tooltip: tooltipOption,\r\n legend: {\r\n layout: 'vertical',\r\n align: 'right',\r\n verticalAlign: 'middle',\r\n floating: false,\r\n backgroundColor: 'rgba(255,255,255,0.25)'\r\n },\r\n series: graphCurrentData.yAxisData\r\n });\r\n\r\n contextMenu = true;\r\n }\r\n } \r\n }\r\n\r\n componentDidMount() {\r\n this.renderDateFields();\r\n this.enableDisableSearchButton(false);\r\n //this.BindGraphData();\r\n contextMenu = false; \r\n }\r\n\r\n renderDateFields() {\r\n var currentDateFilters = this.state.Filters;\r\n\r\n if (this.state.graphData != null && this.state.graphData != undefined && this.state.graphData.length > 0) {\r\n var graphTimes: any[] = this.state.graphData.map(x => new Date(x.EventDTTM));\r\n var graphSortedTimes = graphTimes.sort(function (a, b) { return b.getTime() - a.getTime() });\r\n var toDTTM = Formatters.DateTimeFormatter(graphSortedTimes[0]);\r\n var fromDTTM = Formatters.DateTimeFormatter(graphSortedTimes[graphSortedTimes.length - 1]);\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n currentDateFilters.GrphFromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.GrphToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM'); \r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = DateFormat(new Date(Date.now()), 'mm/dd/yyyy');\r\n var modifiedDttm = new Date(Date.now());\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.GrphFromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.GrphToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n initializeChart() {\r\n //this.renderDateFields();\r\n this.enableDisableSearchButton(true);\r\n $(\"#dvTemperatureGraph\").show();\r\n //if (this.chartTemperature != undefined && this.chartTemperature != null)\r\n // this.updateGraphData(false);\r\n //else \r\n this.BindGraphData();\r\n }\r\n\r\n fromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.GrphFromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n toDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.GrphToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n }\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.GrphFromDate;\r\n var toDttm = filters.GrphToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n getReeferHistoryDetails() {\r\n $('#globalLoader').show();\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n var fromDate = moment(new Date(filters.GrphFromDate)).toString();\r\n var toDate = moment(new Date(filters.GrphToDate)).toString();\r\n //filters.FromDate = filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n //filters.ToDate = filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var historyParams = { FromDate: DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM'), ToDate: DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM'), Units: filters.Units };\r\n var filterParams = JSON.stringify(historyParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n graphData: data\r\n }, () => this.updateGraphData(true));\r\n });\r\n }\r\n\r\n dateTimeFormatter(dateTimeVal: any) {\r\n if (dateTimeVal != null && dateTimeVal != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(dateTimeVal.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return prefDateTime.getTime();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n From\r\n \r\n To\r\n \r\n\r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    No Data Available
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ReeferHistoryGraphFilters {\r\n GrphFromDate: string;\r\n GrphToDate: string;\r\n Units: string;\r\n}\r\n\r\ninterface ReeferUnitHistoryUI {\r\n HighSpeedEvaporatorFanOutPut: string;\r\n IsAcceptableBatteryVoltage?: boolean;\r\n BatteryVoltage?: number;\r\n RCDPowerSourceCd: string;\r\n ReeferACPowerLevel?: number;\r\n ReeferOEMTypeCd: string;\r\n IsReeferPhysicallyConnected?: boolean;\r\n IsReeferCommunicationEstablished?: boolean;\r\n ReeferSwitchOn?: boolean;\r\n DeviceTemp?: number;\r\n UnitEventID?: number;\r\n EventMasterID?: number;\r\n EventDTTM?: Date;\r\n ModifiedDTTM?: Date;\r\n U_UnitAlarmSummaryHistoryID?: number;\r\n UnitControlEventID?: number;\r\n C_EventDTTM?: Date;\r\n C_EventMasterID?: number;\r\n UnitVesselOperationsID?: number;\r\n UnitCargoCareID?: number;\r\n C_UnitAlarmSummaryHistoryID?: number;\r\n Status: string;\r\n IsOnVessel: boolean;\r\n IsCargoCare: boolean;\r\n IsAcceptableACVoltage?: boolean;\r\n R_RCDStateReportedHistoryID?: number;\r\n RunState?: number;\r\n ControlledAtmosphereMode: string;\r\n R_EventDTTM?: Date;\r\n TimeToDefrost?: number;\r\n LineFrequency?: number;\r\n CurrentPhaseA?: number;\r\n CurrentPhaseB?: number;\r\n CurrentPhaseC?: number;\r\n ThreePhaseCurrent: string;\r\n ReturnTempLongAvg?: number;\r\n AmbientTempLongAvg?: number;\r\n CompositeSuctionPressureLongAvg?: number;\r\n DischargePressureLongAvg?: number;\r\n SupplyTemperatureLongAvg?: number;\r\n ReturnTemperatureLongAvg?: number;\r\n CompressorSuctionTempLongAvg?: number;\r\n CompressorCondensorTempLongAvg?: number;\r\n RCDEventID?: number;\r\n R_EventMasterID?: number;\r\n RCDMasterID?: number;\r\n RCDMasterHistoryID?: number;\r\n RCDGSMPositionHistoryID?: number;\r\n RCDLocationHistoryID?: number;\r\n RCDGPSPositionHistoryID?: number;\r\n RCDStateReportedHistoryID?: number;\r\n RCDAlarmSummaryHistoryID?: number;\r\n CCIsOffpower?: boolean;\r\n CCIsSetpoint?: boolean;\r\n CCMissingScheduleCd?: number;\r\n CCIsTempOutOfRange?: boolean;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n CompressorEvaporatorTempLongAvg?: number;\r\n CompressorDischargeTempLongAvg?: number;\r\n CountryCd: string;\r\n CountryName: string;\r\n UnitEventDTTM?: Date;\r\n UnitMasterID?: number;\r\n RCDReportingInterval?: number;\r\n Street: string;\r\n City: string;\r\n State: string;\r\n Zip: string;\r\n RCDRfrComErr?: boolean;\r\n TripId?: number;\r\n TripNm: string;\r\n TripStatusCd: string;\r\n TripStatusDescription: string;\r\n TripNameAndStatus: string;\r\n TripHistoryId?: number;\r\n BookedTemperature?: number;\r\n BookingNumber: string;\r\n TemperatureUnit: string;\r\n MSISDN: string;\r\n DataLoggerDtm?: Date;\r\n RSSI?: number;\r\n HotGasValveOpening?: number;\r\n C_ModifiedDTTM?: Date;\r\n GeofenceName: string;\r\n RCDID: string;\r\n Country: string;\r\n RCDFirmwareVersion: string;\r\n RCDBootloaderVersion: string;\r\n RCDMeshFirmwareVersion: string;\r\n RevisionNum?: number;\r\n LineVoltage1?: number;\r\n LineVoltage2?: number;\r\n LineVoltage3?: number;\r\n GPSLatitude?: number;\r\n GPSLongitude?: number;\r\n GPSLastLock?: number;\r\n GPSCoords: string;\r\n GPSLockState: string;\r\n IsInsideGeofence?: boolean;\r\n Geofence: string;\r\n CustomerAccessGroupIDList: string;\r\n TowerBaseStationID?: number;\r\n TowerLocalizationAreaCode?: number;\r\n MNC?: number;\r\n SuctionModulationValveOpening?: number;\r\n EconomizerValveOpening?: number;\r\n CondenserFanOutPut: string;\r\n DeviationFlg?: boolean;\r\n LowSpeedEvaporatorFanOutPut: string;\r\n CompositeSuctionPressureQualifier?: any;\r\n PretripTestStateID?: any;\r\n DefrostInterval: string;\r\n VentPositionCMHQualifier?: any;\r\n TotalCurrentDrawQualifier?: any;\r\n PretripTimeDisplay: string;\r\n PretripTestNumber?: number;\r\n PretripSubTestNumber?: number;\r\n SetPoint?: number;\r\n O2Setpoint?: number;\r\n CO2Setpoint?: number;\r\n HumiditySetpoint?: number;\r\n CompressorHighSpeed?: number;\r\n ElectricHeatOutPut?: number;\r\n MicroVersion: string;\r\n SoftwareRevision: string;\r\n AmbientTempQualifier?: any;\r\n USSH_Cargo4TempQualifier?: any;\r\n CO2ReadingQualifier?: any;\r\n CO2SetpointQualifier?: any;\r\n ColdTreatmentActive?: boolean;\r\n CompressorDischargeTempQualifier?: any;\r\n CompressorSuctionTempQualifier?: any;\r\n DischargePressureQualifier?: any;\r\n CondenserFanOutputQualifier?: any;\r\n HumiditySetpointStatus: string;\r\n O2ReadingSupport: string;\r\n ParentEventID?: number;\r\n UnitPrefix: string;\r\n UnitNumber: string;\r\n ReeferID: string;\r\n AlarmsList: string;\r\n CCAlarms: string;\r\n CCSeverityLevel: string;\r\n MicroAlarms: string;\r\n MASeverityLevel: string;\r\n UnitUSDAHistoryID?: number;\r\n USDA1Temp?: number;\r\n USDA1TempQualifier?: any;\r\n USDA2Temp?: number;\r\n USDA2TempQualifier?: any;\r\n USDA3Temp?: number;\r\n USDA3TempQualifier?: any;\r\n Cargo4Temp?: number;\r\n Cargo4TempQualifier?: any;\r\n UnitSettingsHistoryID?: number;\r\n DischargePressure?: number;\r\n CompositeSuctionPressure?: number;\r\n VentPositionSensorCMH?: number;\r\n O2SetpointSupport: string;\r\n CO2ReadingSupport: string;\r\n CondenserPressureQualifier?: any;\r\n DataLoggerDtmQualifier?: any;\r\n CurrentPhaseCQualifier?: any;\r\n ControllerSerialNumber: string;\r\n CompressorFrequency?: number;\r\n CondenserTemperature?: number;\r\n CondenserPressure?: number;\r\n HeaterOnTime?: number;\r\n EvaporatorExpansionValveOpening?: number;\r\n RunningMode: string;\r\n URH_UnitReadingsHistoryID?: number;\r\n Humidity?: number;\r\n AmbientTemp?: number;\r\n CompressorSuctionTemp?: number;\r\n CompressorDischargeTemp?: number;\r\n ReturnTemp1?: number;\r\n SupplyTemp1?: number;\r\n SupplyTemp2?: number;\r\n ReturnTemp2?: number;\r\n EvaporatorTemp?: number;\r\n NumberOfAlarmsInQue?: number;\r\n O2Reading?: number;\r\n CO2Reading?: number;\r\n OEMAlarmBlock: string;\r\n ISOFaultBlock: string;\r\n TotalCurrentDraw?: number;\r\n SupplyTempQualifier?: any;\r\n SupplyTemp3Qualifier?: any;\r\n SupplyTemp2Qualifier?: any;\r\n SupplyTemp1Qualifier?: any;\r\n CondenserTempQualifier?: any;\r\n ControllerSerialNumberQualifier?: any;\r\n CurrentPhaseAQualifier?: any;\r\n CurrentPhaseBQualifier?: any;\r\n DefrostIntervalQualifier?: any;\r\n EconomizerValveOpeningQualifier?: any;\r\n EvaporatorExpansionValveOpeningQualifier?: any;\r\n EvaporatorTempQualifier?: any;\r\n UnitHardwareVersion: string;\r\n HeaterOnTimeQualifier?: any;\r\n HighSpeedEvaporatorFanOutputQualifier?: any;\r\n TripStatusCdAndDFlag: string;\r\n HotGasValveOpeningQualifier?: any;\r\n LowSpeedEvaporatorFanOutputQualifier?: any;\r\n MicroVersionQualifier?: any;\r\n O2ReadingQualifier?: any;\r\n O2SetpointQualifier?: any;\r\n PowerSupplyDCVoltageQualifier?: any;\r\n ReturnTemp1Qualifier?: any;\r\n ReturnTemp2Qualifier?: any;\r\n ReturnTemp3Qualifier?: any;\r\n ReturnTempQualifier?: any;\r\n SetPointQualifier?: any;\r\n SuctionModulationValveOpeningQualifier?: any;\r\n LineFrequencyQualifier?: any;\r\n}","/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { GridToolBarControl } from '../sharedcomponents/GridToolBarControl';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport GeofenceMap from '../../actions/GeofenceMap';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { CellRenderer } from '../../actions/CellRenderer';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport $ from 'jquery';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\n//import '../../../node_modules/react-datetime-bootstrap/css/bootstrap-datetimepicker.min.css';\r\n\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\nvar self;\r\nvar geofencData;\r\nvar checkRight: any;\r\nexport interface GeofenceGridState {\r\n rowData: server.GetGeofenceCoordinates[];\r\n columnDefs: any[];\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n emailHtml: any;\r\n suggestionsFenceId: any[],\r\n targetId: string,\r\n fenceIdValue: any,\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n}\r\n\r\nexport class GeofenceGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var columnDefs = this.createColumnDefs();\r\n var overlayTemplate = 'Loading...';\r\n checkRight = false;\r\n this.state = {\r\n rowData: [],\r\n columnDefs: columnDefs,\r\n overlayLoadingTemplate: overlayTemplate,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n emailHtml: '',\r\n suggestionsFenceId: [],\r\n targetId: '',\r\n fenceIdValue: '',\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 }\r\n };\r\n\r\n self = this;\r\n }\r\n\r\n updatemGeofenceGridDimensions() {\r\n $(\".Geofence_Grid\").css('min-height', $(window).height() - 187);\r\n $(\".Geofence_Grid\").css('height', $(window).height() - 187);\r\n $(\".Geofence_Grid\").css('max-height', $(window).height() - 187);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.updatemGeofenceGridDimensions();\r\n window.addEventListener(\"resize\", this.updatemGeofenceGridDimensions.bind(this));\r\n\r\n \r\n \r\n \r\n \r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n geofencData = [];\r\n var geofenceData = nextprops.geofenceData;\r\n if (geofenceData != undefined && geofenceData != null) {\r\n this.setState({ rowData: geofenceData });\r\n geofencData.push(nextprops.fenceIdArray);\r\n }\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: \"Fence ID\", field: \"Tag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Tag\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Fence name\", field: \"Name\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Name\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 120\r\n },\r\n {\r\n headerName: \"Address\", field: \"Address\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Address\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 200\r\n },\r\n {\r\n headerName: \"Geofence type\", field: \"GeofenceCategoryCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.GeofenceCategoryCd); },\r\n filterParams: { valueGetter: params => { return Formatters.GeofenceTypeFormatterForFilter(params); } },\r\n cellRenderer: Formatters.fenceTypeFormatter, width: 120\r\n },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceRevisionNum\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"GeofenceRevisionNum\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 120\r\n },\r\n {\r\n headerName: \"Coordinates\", field: \"Coordinates\", cellClass: 'myExcelStyle', resizable: true,\r\n cellRenderer: Formatters.GeofenceCoordinatesFormatter, width: 200\r\n }\r\n ];\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n //alert(this.state.pageSize);\r\n }\r\n\r\n onGridSelectionChanged(params: any) {\r\n if (!checkRight) {\r\n var authRight = RCUtils.CheckAssesRightsOnly('146');\r\n if (authRight)\r\n checkRight = true;\r\n }\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n if (checkRight)\r\n setTimeout(() => { GeofenceMap.ShowSelectedGeofence(selectedRow) }, 1000);\r\n //GeofenceMap.ShowSelectedGeofence(selectedRow);\r\n });\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n refreshGeofenceManagementGrid() {\r\n this.setState({ fenceIdValue: '' }, () => { this.props.geofenceSearchbyFenceName(this.state.fenceIdValue, this.state.gridApiParams) });\r\n }\r\n\r\n geofenceSearchbyFenceId() {\r\n this.props.geofenceSearchbyFenceName(this.state.fenceIdValue, this.state.gridApiParams);\r\n }\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n suggestionsFenceId: this.getFenceNameSuggestions(value)\r\n });\r\n };\r\n\r\n getFenceNameSuggestions(value) {\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : geofencData[0].filter(tag =>\r\n //tag.toLowerCase().slice(0, inputLength) === inputValue\r\n tag.toLowerCase().includes(inputValue)//RCNG-279\r\n );\r\n };\r\n\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n suggestionsFenceId: []\r\n });\r\n };\r\n\r\n onChangeFenceId = (event, { newValue }) => {\r\n this.setState({\r\n fenceIdValue: newValue,\r\n targetId: event.target.id\r\n });\r\n };\r\n\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n static handleClearFenceId() {\r\n self.setState({\r\n fenceIdValue: '',\r\n });\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n /* Start RCNG-197 var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n var columnDisplayName = colDef[0].colDef.headerName; End RCNG-197*/\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName; //RCNG - 197\r\n\r\n if (fieldValue == \"-NA-\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldName.toString().trim() == \"GeofenceCategoryCd\")\r\n return Formatters.GeofenceTypeGrouping(fieldValue);\r\n\r\n //if (fieldName.toString().trim() == \"Coordinates\")\r\n // return Formatters.GeofenceCoordinatesGrouping(fieldValue); \r\n\r\n return fieldValue;\r\n\r\n }\r\n\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n\r\n const { suggestionsFenceId } = this.state;\r\n\r\n const FenceIdListinputProps = {\r\n id: 'fenceSearch',\r\n placeholder: 'Fence Search',\r\n value: this.state.fenceIdValue,\r\n onChange: this.onChangeFenceId.bind(this)\r\n };\r\n\r\n return
    \r\n
    \r\n 0 ? true : false}\r\n gridApiParams={this.state.gridApiParams}\r\n parentchild={\"P\"} formName={\"GeofenceManagement\"} />\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    ;\r\n }\r\n}","import * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { RCUtils } from './../../RCUtils';\r\n\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport GeofenceMap from '../../actions/GeofenceMap';\r\nimport { GeofenceGrid } from '../childcomponents/GeofenceGrid';\r\nimport { AddGeofence } from '../sharedcomponents/AddGeofence';\r\nimport { EditGeofence } from '../sharedcomponents/AddGeofence';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport ReactTooltip from 'react-tooltip'\r\nimport UserRights from '../../actions/UserRights';\r\nimport { debug } from 'console';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface geofenceMangementState {\r\n buttonState: boolean;\r\n fenceTypeCd: string;\r\n geofenceData: any[];\r\n filterParams: server.GeofenceSearch;\r\n GeofencePopupHtml: any;\r\n GeofencePopupTitle: string;\r\n}\r\n\r\nvar self;\r\nvar fenceIdArray;\r\nvar IsTriggered = false;\r\nexport default class GeofenceManagement extends React.Component, geofenceMangementState> {\r\n constructor(props: any) {\r\n super(props);\r\n var geofenceSearch = { FenceTypeCd: \"\", FenceName: \"\" };\r\n this.state = { buttonState: true, fenceTypeCd: \"\", geofenceData: [], filterParams: geofenceSearch, GeofencePopupHtml: '', GeofencePopupTitle: '' };\r\n self = this;\r\n IsTriggered = false;\r\n }\r\n\r\n updatemyprofilesDimensions() {\r\n $(\".body_container\").css('min-height', $(window).height() - 84);\r\n $(\".body_container\").css('max-height', $(window).height() - 84);\r\n $(\".GeofenceHeight\").css('min-height', $(window).height() - 151);\r\n $(\".GeofenceHeight\").css('max-height', $(window).height() - 151);\r\n }\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsOnly('146');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n GeofenceMap.InitializeMap(\"geofenceMap\");\r\n\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n\r\n this.updatemyprofilesDimensions();\r\n window.addEventListener(\"resize\", this.updatemyprofilesDimensions.bind(this));\r\n\r\n GeofenceMap.InitializeDrawingManager();\r\n if ($(\"#drawingManager\").hasClass(\"show\")) $(\"#drawingManager\").show();\r\n $(\"#dvResizeScreen\").css(\"display\", \"none\");\r\n //this.loadServerGeofences(false);\r\n\r\n setTimeout(() => { this.loadFencesonUI(); }, 500);\r\n }\r\n }\r\n\r\n loadFencesonUI() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeofenceCategoryCds');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length === 0) {\r\n this.setState({ fenceTypeCd: \"B\" }, () => this.loadServerGeofences(false));\r\n\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n else if (data.includes('B') && data.includes('D')) {\r\n this.setState({ fenceTypeCd: \"B\" }, () => this.loadServerGeofences(false));\r\n\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n else if (data.includes('B')) {\r\n this.setState({ fenceTypeCd: \"B\" }, () => this.loadServerGeofences(false));\r\n\r\n if ($(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').removeClass('active');\r\n\r\n if (!$(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').addClass('active');\r\n }\r\n else if (data.includes('D')) {\r\n this.setState({ fenceTypeCd: \"D\" }, () => this.loadDeviceGeofences(false));\r\n\r\n if (!$(\"#DeviceFence\").hasClass(\"active\"))\r\n $('#DeviceFence').addClass('active');\r\n\r\n if ($(\"#ServerFence\").hasClass(\"active\"))\r\n $('#ServerFence').removeClass('active');\r\n }\r\n });\r\n }\r\n\r\n drawingModePolygon(element: any) {\r\n GeofenceMap.SetDrawingMode('polygon', element);\r\n }\r\n drawingModeEdit(element: any) {\r\n GeofenceMap.SetDrawingMode('edit', element);\r\n }\r\n drawingModeDelete(element: any) {\r\n GeofenceMap.SetDrawingMode('erase', element);\r\n }\r\n\r\n loadServerGeofences(IsDeleted: boolean) {\r\n $(\"#globalLoader\").show();\r\n fenceIdArray = [];\r\n this.state.filterParams.FenceName = \"\";\r\n this.state.filterParams.FenceTypeCd = this.state.fenceTypeCd;// \"B\";\r\n var filterParams = JSON.stringify(this.state.filterParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeoFences',\r\n { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(geofenceList => {\r\n geofenceList.forEach(function (fence) {\r\n var coordinatesList = [];\r\n if (fence.Coordinates.length > 0) {\r\n fence.Coordinates.forEach(function (point) {\r\n var coordinates = new Microsoft.Maps.Location(point.Latitude, point.Longitude);\r\n coordinatesList.push(coordinates);\r\n });\r\n }\r\n fence.FormatedCoordinates = coordinatesList;\r\n fenceIdArray.push(fence.Tag);\r\n });\r\n this.setState({ geofenceData: geofenceList });\r\n GeofenceGrid.handleClearFenceId();\r\n GeofenceMap.BindGeofencePolygons(geofenceList);\r\n if (IsDeleted)\r\n GeofenceMap.EraseMode();\r\n $(\"#globalLoader\").hide();\r\n });\r\n }\r\n\r\n loadDeviceGeofences(IsDeleted: boolean) {\r\n $(\"#globalLoader\").show();\r\n fenceIdArray = [];\r\n this.state.filterParams.FenceName = \"\";\r\n this.state.filterParams.FenceTypeCd = this.state.fenceTypeCd;// \"D\";\r\n var filterParams = JSON.stringify(this.state.filterParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeoFences', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(geofenceList => {\r\n geofenceList.forEach(function (fence) {\r\n var coordinatesList = [];\r\n if (fence.Coordinates.length > 0) {\r\n fence.Coordinates.forEach(function (point) {\r\n var coordinates = new Microsoft.Maps.Location(point.Latitude, point.Longitude);\r\n coordinatesList.push(coordinates);\r\n });\r\n }\r\n fence.FormatedCoordinates = coordinatesList;\r\n fenceIdArray.push(fence.Tag);\r\n });\r\n this.setState({ geofenceData: geofenceList });\r\n GeofenceGrid.handleClearFenceId();\r\n GeofenceMap.BindGeofencePolygons(geofenceList);\r\n if (IsDeleted)\r\n GeofenceMap.EraseMode();\r\n $(\"#globalLoader\").hide();\r\n });\r\n }\r\n\r\n static loadGeofences(element: string) {\r\n $(\"#globalLoader\").show();\r\n fenceIdArray = [];\r\n self.state.filterParams.FenceName = \"\";\r\n self.state.filterParams.FenceTypeCd = element;\r\n var filterParams = JSON.stringify(self.state.filterParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeoFences', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(geofenceList => {\r\n geofenceList.forEach(function (fence) {\r\n var coordinatesList = [];\r\n if (fence.Coordinates.length > 0) {\r\n fence.Coordinates.forEach(function (point) {\r\n var coordinates = new Microsoft.Maps.Location(point.Latitude, point.Longitude);\r\n coordinatesList.push(coordinates);\r\n });\r\n }\r\n fence.FormatedCoordinates = coordinatesList;\r\n fenceIdArray.push(fence.Tag);\r\n });\r\n self.setState({ geofenceData: geofenceList });\r\n GeofenceGrid.handleClearFenceId();\r\n GeofenceMap.BindGeofencePolygons(geofenceList);\r\n $(\"#globalLoader\").hide();\r\n });\r\n }\r\n\r\n geofenceSearchbyFenceName(fenceName: string, gridApiParams: any) {\r\n $(\"#globalLoader\").show();\r\n this.clearPanelData();\r\n this.state.filterParams.FenceTypeCd = this.state.fenceTypeCd;\r\n this.state.filterParams.FenceName = fenceName;\r\n var filterParams = JSON.stringify(this.state.filterParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeoFences', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(geofenceList => {\r\n geofenceList.forEach(function (fence) {\r\n var coordinatesList = [];\r\n if (fence.Coordinates.length > 0) {\r\n fence.Coordinates.forEach(function (point) {\r\n var coordinates = new Microsoft.Maps.Location(point.Latitude, point.Longitude);\r\n coordinatesList.push(coordinates);\r\n });\r\n }\r\n fence.FormatedCoordinates = coordinatesList;\r\n });\r\n this.setState({ geofenceData: geofenceList });\r\n GeofenceMap.BindGeofencePolygons(geofenceList);\r\n gridApiParams.paginationGoToFirstPage();\r\n $(\"#globalLoader\").hide();\r\n });\r\n }\r\n\r\n static ValidatePolygonGeofence(coords: any, currentMode: any, currentFence: any, GeofencesData: any) {\r\n var coordinates: any = [];\r\n for (var i = 0; i < coords.length; i++) {\r\n var lat_long = coords[i].latitude + \" \" + coords[i].longitude;\r\n coordinates.push(lat_long);\r\n }\r\n var polygon: any = coordinates.join(\",\"); \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/ValidateGeofencePolygon', { method: 'POST', body: JSON.stringify((polygon)), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if(data) {\r\n var isPolygon = GeofenceMap.pointInPolygon(coords);\r\n if (isPolygon) \r\n this.bindGeofencePopup(currentMode, coords, currentFence, GeofencesData);\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"A self-intersecting polygon cannot be used to define a geofence. Please change the polygon accordingly.\");\r\n }\r\n else\r\n {\r\n PopupWindow.showErrorMessage(\"Alert\",\"A polygon is invalid or cannot contain duplicate coordinates. Please change the polygon accordingly.\");\r\n return;\r\n } \r\n }); \r\n }\r\n\r\n static DeleteCustomerGeofence(currentFence: any, fenceLayer: any, selectedfence: any) {\r\n $(\"#globalLoader\").show();\r\n var inputParams: server.GeofenceParams = { FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '', GeofenceCustomerID: '' };\r\n inputParams.ActionTypeCd = \"D\";\r\n inputParams.GeofenceCustomerID = currentFence.GeofenceCustomerID;\r\n inputParams.FenceTypeCd = currentFence.GeofenceCategoryCd;\r\n\r\n var geofenceParams = JSON.stringify(inputParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/SaveGeoFence', { method: 'POST', body: geofenceParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(message => {\r\n if (message == \"Geofence deleted successfully.\") {\r\n fenceLayer.remove(selectedfence);\r\n if (inputParams.FenceTypeCd == 'D')\r\n self.loadDeviceGeofences(true);\r\n else\r\n self.loadServerGeofences(true);\r\n //$(\"#panelCoordinates\").html(null);\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n }\r\n });\r\n }\r\n\r\n static bindGeofencePopup(currentMode: string, coordinates: any, currentFence: any, GeofencesData: any[]) {\r\n $(\"#globalLoader\").show();\r\n IsTriggered = false;\r\n var latlonArray = [];\r\n if (coordinates.length > 0) {\r\n $.each(coordinates, function (index, value) {\r\n if ((index === (coordinates.length - 1)) || !(latlonArray.indexOf(value.latitude.toFixed(10) + ',' + value.longitude.toFixed(10)) > -1))\r\n latlonArray.push(value.latitude.toFixed(10) + ',' + value.longitude.toFixed(10));\r\n });\r\n }\r\n var inputParams: server.GeofenceParams = { FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '', GeofenceCustomerID: '' };\r\n inputParams.Coordinates = latlonArray;\r\n inputParams.FenceTypeCd = self.state.fenceTypeCd;\r\n if (currentFence != null && currentMode == 'edit')\r\n inputParams.GeofenceCustomerID = currentFence.GeofenceCustomerID;\r\n var geofenceParams = JSON.stringify(inputParams);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeofenceIntersect', { method: 'POST', body: geofenceParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var intersectFences = '';\r\n data.forEach(function (fence) {\r\n var GeofenceCatogery = \"\";\r\n if (fence.GeofenceCategoryCd == 'D') GeofenceCatogery = \"Device Geofence\";\r\n if (fence.GeofenceCategoryCd == 'B') GeofenceCatogery = \"Server Geofence\";\r\n if (fence.GeofenceCategoryCd == 'R') GeofenceCatogery = \"Region Geofence\";\r\n intersectFences = intersectFences + \"
    Fence ID:
    \" + fence.Tag + \"
    ,
    Fence Name:
    \" + fence.Name + \"
    ,
    Geofence Category:
    \" + GeofenceCatogery + \"
    \";\r\n });\r\n var confirmMessage = \"
    The specified geofence overlaps with the following existing geofence(s):
    \" + intersectFences + \"
    Continue?
    \";\r\n RCNGWindow.ConfirmWindow.showGeofenceConfirmBox(confirmMessage, self.onOKSubmit.bind(this, currentMode, latlonArray, currentFence, GeofencesData, true), self.closeConfirmation.bind(this, currentMode, currentFence));\r\n $(\"#confirmPopUpModel .btn-close\").click(function () {\r\n if (!IsTriggered) {\r\n GeofenceMap.CancelDrawing();\r\n if (currentMode == 'edit' && currentFence != null)\r\n GeofenceMap.BindGeofencePolygons(self.state.geofenceData);\r\n }\r\n });\r\n }\r\n else\r\n self.onOKSubmit(currentMode, latlonArray, currentFence, GeofencesData, false);\r\n\r\n $(\"#globalLoader\").hide();\r\n });\r\n }\r\n\r\n closeConfirmation(currentMode: string, currentFence: any) {\r\n RCNGWindow.ConfirmWindow.close();\r\n GeofenceMap.CancelDrawing();\r\n if (currentMode == 'edit' && currentFence != null)\r\n GeofenceMap.BindGeofencePolygons(self.state.geofenceData);\r\n }\r\n\r\n onOKSubmit(currentMode: string, coordinates: any, currentFence: any, GeofencesData: any[], IsConfirmationOpened: boolean) {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n if (IsConfirmationOpened)\r\n RCNGWindow.ConfirmWindow.close();\r\n if (currentMode == 'edit' && currentFence != null)\r\n self.renderGeofencePopUpControl('Edit Geofence', coordinates, currentFence, GeofencesData);\r\n else\r\n self.renderGeofencePopUpControl('Add Geofence', coordinates, currentFence, GeofencesData);\r\n }\r\n }\r\n\r\n\r\n bindServerGeofences() {\r\n GeofenceMap.DisposeDrawingManager();\r\n //$(\"#panelCoordinates\").html(null);\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n this.setState({ fenceTypeCd: \"B\" });\r\n\r\n document.getElementById(\"DeviceFence\").classList.remove(\"active\");\r\n document.getElementById(\"ServerFence\").classList.add(\"active\");\r\n GeofenceMap.InitializeDrawingManager();\r\n setTimeout(() => { self.loadServerGeofences(false) }, 500);\r\n //this.loadServerGeofences(false);\r\n }\r\n\r\n bindDeviceGeofences() {\r\n GeofenceMap.DisposeDrawingManager();\r\n //$(\"#panelCoordinates\").html(null);\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n this.setState({ fenceTypeCd: \"D\" });\r\n \r\n document.getElementById(\"ServerFence\").classList.remove(\"active\");\r\n document.getElementById(\"DeviceFence\").classList.add(\"active\");\r\n\r\n GeofenceMap.InitializeDrawingManager();\r\n setTimeout(() => { self.loadDeviceGeofences(false) }, 500);\r\n //this.loadDeviceGeofences(false);\r\n }\r\n\r\n clearPanelData() {\r\n GeofenceMap.DisposeDrawingManager();\r\n //$(\"#panelCoordinates\").html(null);\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n\r\n GeofenceMap.InitializeDrawingManager();\r\n }\r\n \r\n navigateToGeofenceUploadPage() {\r\n this.props.history.push('/geofencefile');\r\n }\r\n\r\n renderGeofencePopUpControl(formName: string, coordinates: any, currentFence: any, GeofencesData: any[]) {\r\n self.setState({ GeofencePopupTitle: '', GeofencePopupHtml: '' });\r\n self.setState({ GeofencePopupTitle: formName, GeofencePopupHtml: self.bindGeofencePopupData(formName, coordinates, currentFence, GeofencesData) }, () => {\r\n $('#btnTriggerGeofencePopup').click();\r\n });\r\n }\r\n\r\n bindGeofencePopupData(formName: string, coordinates: any, currentFence: any, GeofencesData: any[]) {\r\n if (formName == 'Add Geofence')\r\n return \r\n else if (formName == 'Edit Geofence')\r\n return \r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n fnCancelDrawing(e) {\r\n GeofenceMap.CancelDrawing();\r\n if (this.state.GeofencePopupTitle == 'Edit Geofence')\r\n GeofenceMap.BindGeofencePolygons(this.state.geofenceData);\r\n }\r\n\r\n ShowFullMap() {\r\n $(\"#Container1\").hide();\r\n $(\"#Container2\").hide();\r\n $(\"#Container3\").hide();\r\n $(\".GeofenceHeight\").css('min-height', $(window).height() - 71);\r\n $(\".GeofenceHeight\").css('max-height', $(window).height() - 71);\r\n //$(\".GeofenceHeight\").css(\"border\", \"none\");\r\n $(\"#dvFullScreen\").css(\"display\", \"none\");\r\n $(\"#dvResizeScreen\").css(\"display\", \"block\");\r\n }\r\n\r\n MinimizeMap() {\r\n $(\"#Container1\").show();\r\n $(\"#Container2\").show();\r\n $(\"#Container3\").show();\r\n $(\".GeofenceHeight\").css('min-height', $(window).height() - 435);\r\n $(\".GeofenceHeight\").css('max-height', $(window).height() - 435);\r\n //$(\".GeofenceHeight\").css(\"border\", \"1px solid #045976\");\r\n $(\"#dvFullScreen\").css(\"display\", \"block\");\r\n $(\"#dvResizeScreen\").css(\"display\", \"none\");\r\n }\r\n\r\n public render() {\r\n\r\n return
    \r\n
    Geofence Management
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n Device Geofences are uploaded to devices by using the Deployment feature. While Device Geofences may be preferred over Server Geofences because they allow timelier recognition of geofence crossings in the platform, distributing these geofences to devices typically consumes cellular data. The amount of data consumed may be significant in some cases, depending on cellular service plans, number of geofences and number of deployments, but this is not typical. Please contact ORBCOMM Customer Care with any concerns.\r\n \r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {/* */}\r\n \r\n\r\n {/* */}\r\n \r\n\r\n {/**/}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
      \r\n
    • Left click on map to add points (up to 12) for a new geofence polygon
    • \r\n
    • To stop drawing, double-click when creating the last point
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • Click on a geofence which you want to edit.
    • \r\n
    • Edit the geofence as required.
    • \r\n
    • Once done the modifications, double click on that geofence.
    • \r\n
    • Pop up with \"Edit Geofence\" title will open, click on submit button.
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • Click on one or more geofences to delete
    • \r\n
    • When done deleting, click on the “delete” button
    • \r\n
    \r\n
    \r\n
    \r\n\r\n
    Map
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.GeofencePopupTitle}
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.GeofencePopupHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}","export var emptyGeneralState = { IsActivateGeneralCargoCareProfile: false, ProfileCode: '', ProfileDescription: '', InsertedBy: '', InsertedDTTM: null, StateCd: '', UpdatedBy: '', UpdatedDTTM: null };\r\n\r\n\r\nexport enum IECAL {\r\n TimeSinceTheLatestPowerOff = 1,\r\n TimeSpentOfPowerBeforeAssignmentWillBeExcluded = 2,\r\n AllTimeSpentOffPowerWillBeExcluded = 3\r\n}\r\n\r\nexport var emptyPowerState = {\r\n IsActivatePowerCargoCareProfile: false, MaxOffPowerDuration: '', OffPowerAlertSeverity: '', IsRaiseOffPowerInsideGeofence: null,\r\n IsPowerRestoredAlert: null, SelectedGeofences: [], suggestionsGeofences: [], userAGGGeofencesData: [], UserAccessGeofenceList: [],\r\n GeofenceTagName: '', targetId: '', LoginGeofences: [], cargoCareSeverity: [], PowerRestoredAlertSeverity: '', CCSeverityStateOptions: [], TempSetpointSeverityValue: '', IsChange: true, OffPowerIncludeExcludeCalculation:IECAL.TimeSinceTheLatestPowerOff.toString()\r\n};\r\n\r\nexport var emptyCargoCareWizardDefaultValues = {\r\n MaxOffPowerDuration: '',\r\n OffPowerAlertSeverity: '',\r\n\r\n AttemptsCycleWithin: '',\r\n Hours: '',\r\n ExcessiveDefrostAlertSeverity: '',\r\n\r\n BTASevere: '',\r\n BTAMinor: '',\r\n BTAInformational: '',\r\n BTASevereU: '',\r\n BTAMinorU: '',\r\n BTAInformationalU: '',\r\n TempSetpointSeverity: '',\r\n TempSetpointSeverityValue: '',\r\n \r\n SevereSupplyTemp: '',\r\n MinorSupplyTemp: '',\r\n InformatinalSupplyTemp: '',\r\n IsSuppressSupplyTemp: false,\r\n IsPreventSupression: false,\r\n SupressionDuration: '',\r\n PreventSupressionAttempts: '',\r\n PreventSupressionHours: '',\r\n\r\n SevereReturnTemp: '',\r\n MinorReturnTemp: '',\r\n InformatinalReturnTemp: '',\r\n SevereReturnTempUnit: '',\r\n IsSuppressReturnTemp: false,\r\n IsPreventSupressionReturn: false,\r\n SupressionDurationReturn: '',\r\n PreventSupressionAttemptsReturn: '',\r\n PreventSupressionHoursReturn: '',\r\n\r\n LateReportingInterval: '',\r\n};\r\n\r\nexport var emptySetpointState = {\r\n isActivateTempSetpoints: false, isSevereAlert: false, isMinorAlert: false, isInformationalAlert: false, isTempSetpointChangedAlert: false,\r\n BTASevere: '', BTAMinor: '', BTAInformational: '', BTASevereU: '', BTAMinorU: '', BTAInformationalU: '', TempSetpointSeverity: '', BookingTempUnitsOptions: [],\r\n CCSeverityStateOptions: [], TempSetpointSeverityValue: '', IsChange: true, CHKInvalidReeferTempSetpointAsMismatch:true\r\n};\r\n\r\nexport var emptySupplyTempState = {\r\n IsActivateSupplySetpoints: false, IsSupplySevereAlert: false, IsSupplyMinorAlert: false, IsSupplyInformationalAlert: false,\r\n SevereSupplyTempUnit: '', MinorSupplyTempUnit: '', InfSupplyTempUnit: '', TemperatureUnits: [], InformatinalSupplyTemp: '', TempSetpointSeverity:'',\r\n SevereSupplyTemp: '', MinorSupplyTemp: '', InformationalSupplyTemp: '', SevereSupplyDeviceRepFreq: '', MinorSupplyDeviceRepFreq: '', InfSupplyDeviceRepFreq: '',\r\n IsSuppressSupplyTemp: true, IsPreventSupression: false, SupressionDuration: '', PreventSupressionAttempts: '', PreventSupressionHours: '', IsChange: true,\r\n CHKSuppressSupplyTempAlertsDuringColdTreatment: true, CHKAlertsNotSuppressedAndSupplyTempReadingIsInvalid: true,\r\n SevereSupplyMismatchDuration: '', MinorSupplyMismatchDuration: '', InfoSupplyMismatchDuration: '', SevereSupplyMismatchDurationUnit: '',\r\n MinorSupplyMismatchDurationUnit: '', InfoSupplyMismatchDurationUnit: '', MismatchDurationUnits: []\r\n};\r\n\r\nexport var emptyReturnTempState = {\r\n IsActivateReturnSetpoints: false, IsReturnSevereAlert: false, IsReturnMinorAlert: false, IsReturnInformationalAlert: false,\r\n SevereReturnTempUnit: '', MinorReturnTempUnit: '', InfReturnTempUnit: '', TemperatureUnits: [], InformatinalReturnTemp: '', TempSetpointSeverity: '',\r\n SevereReturnTemp: '', MinorReturnTemp: '', InformationalReturnTemp: '', SevereReturnDeviceRepFreq: '', MinorReturnDeviceRepFreq: '', InfReturnDeviceRepFreq: '',\r\n IsSuppressReturnTemp: true, IsPreventSupression: false, SupressionDuration: '', PreventSupressionAttempts: '', PreventSupressionHours: '', IsChange: true,\r\n CHKSuppressReturnTempAlertsDuringColdTreatment: true, CHKAlertsNotSuppressedAndReturnTempReadingIsInvalid: true,\r\n SevereReturnMismatchDuration: '', MinorReturnMismatchDuration: '', InfoReturnMismatchDuration: '', SevereReturnMismatchDurationUnit: '',\r\n MinorReturnMismatchDurationUnit: '', InfoReturnMismatchDurationUnit: '', MismatchDurationUnits:[]\r\n};\r\n\r\nexport var emptyDefrostState = {\r\n IsActivateDefrostCargoCareProfile: false, AttemptsCycleWithin: '', Hours: '', ExcessiveDefrostAlertSeverity: ''\r\n , CCSeverityStateOptions: [], TempSetpointSeverityValue: '', IsChange: true\r\n};\r\n\r\nexport var emptyGeofenceState = {\r\n IsActivateGeofenceCargoCareProfile: false, CHKReeferEntersPOLGeofence: false, CHKReeferExitsPOLGeofence: false,\r\n CHKReeferEntersPODGeofence: false, CHKReeferExitsPODGeofence: false, DDLReeferEntersPOLGeofence: '', DDLReeferExitsPOLGeofence: '',\r\n DDLReeferEntersPODGeofence: '', DDLReeferExitsPODGeofence: '', CCSeverityStateOptions: [], TempSetpointSeverityValue: '', IsChange: true\r\n};\r\nexport var emptyInitialGeofenceState = {\r\n IsActivateGeofenceCargoCareProfile: false, CHKReeferEntersPOLGeofence: false, CHKReeferExitsPOLGeofence: false,\r\n CHKReeferEntersPODGeofence: false, CHKReeferExitsPODGeofence: false, DDLReeferEntersPOLGeofence: '', DDLReeferExitsPOLGeofence: '',\r\n DDLReeferEntersPODGeofence: '', DDLReeferExitsPODGeofence: '', CCSeverityStateOptions: [], TempSetpointSeverityValue: '', IsChange: false\r\n};\r\n\r\nexport var emptyColdTreatmentState = {\r\n IsActivateColdTreatmentProfile: false,\r\n CHKSuppressColdTreatmentAlert: true,\r\n TXTPostDefrostAlertSuppressiondureation: '120',\r\n\r\n CHKRaiseColdTreatmentAlert: true,\r\n CHKIncludeUSDA4CargoProbe: false,\r\n\r\n CHKRaiseSevereUSDA: false,\r\n CHKRaiseMinorUSDA: false,\r\n CHKRaiseInformationalUSDA: false,\r\n\r\n DDLSGNRaiseSevereUSDA: '',\r\n DDLSGNRaiseMinorUSDA: '',\r\n DDLSGNRaiseInformationalUSDA: '',\r\n\r\n TXTRaiseSevereUSDA: '',\r\n TXTRaiseMinorUSDA: '',\r\n TXTRaiseInformationalUSDA: '',\r\n\r\n DDLRaiseSevereUSDAUnit: '',\r\n DDLRaiseMinorUSDAUnit: '',\r\n DDLRaiseInformationalUSDAUnit: '',\r\n\r\n CHKRaiseUSDAWhenReadingIsLessThan: false,\r\n DDLRaiseUSDAWhenReadingIsLessThan: '',\r\n DDLSGNRaiseUSDAWhenReadingIsLessThan: '',\r\n TXTRaiseUSDAWhenReadingIsLessThan: '',\r\n DDLRaiseUSDAUnitWhenReadingIsLessThan: '',\r\n IsChange: true,\r\n CHKWhenUSDAReadingIsInvalid: true\r\n};\r\n\r\nexport var emptyControlledAtmosphereState = {\r\n IsActivateControlledAtmosphereCareProfile: false, CHKO2readinglessthanboookingO2: false, CHKO2readingGreaterthanboookingO2: false,\r\n CHKCO2readinglessthanboookingCO2: false, CHKCO2readingGreaterthanboookingCO2: false, DDLO2readinglessthanboookingO2: '',\r\n DDLO2readingGreaterthanboookingO2: '', DDLCO2readinglessthanboookingCO2: '', DDLCO2readingGreaterthanboookingCO2: '', CHKSuppressControlled: false,\r\n TXTSuppressControlled: '24', CCSeverityStateOptions: [], IsChange: true, CHKWhenControlledAtmosphereReadingIsInvalid:true\r\n};\r\n\r\nexport var emptyDoorState = {\r\n IsActivateDoorCargoCareProfile: false, CHKReeferDoorIsOpened: false, CHKReeferDoorIsClosed: false,\r\n CHKDoorSensorBatteryVoltageIsLow: false, DDLReeferDoorIsOpened: '', DDLReeferDoorIsClosed: '',\r\n DDLDoorSensorBatteryVoltageIsLow: '', CCSeverityStateOptions: [], TempSetpointSeverityValue: '', IsChange: true\r\n};\r\n\r\n\r\nexport var emptyReeferAlarmState = {\r\n IsActivateReeferAlarmCargoCareProfile: false, CHKRaiseSevere: false, CHKRaiseMinor: false, CHKRaiseInformational: false,\r\n DDLRaiseSevere: '', DDLRaiseMinor: '', DDLRaiseInformational: '', IsChange: true\r\n};\r\n\r\nexport var emptyDeviceState = {\r\n IsActivateDeviceRule: false, IsActivateLateReport: false, LateReportingInterval: '',\r\n LateReportSeverity: '', LateReportSeverityValue: '', CCSeverityStateOptions: [], TempSetpointSeverityValue: '', IsChange: true\r\n};\r\n\r\nexport const emptyCCSeverityStates = {\r\n CCSeverityCd: '', CCSeverityValue: ''\r\n};\r\n\r\nexport const emptyTemperatureUnits = {\r\n TemperatureUnitCd: '', CCSeverityValue: ''\r\n};\r\n\r\nexport enum Mode {\r\n Add,\r\n Edit,\r\n Delete,\r\n View,\r\n None,\r\n Clone\r\n}\r\n\r\nexport enum AssetSearch {\r\n SaveSearch = \"Save Search\",\r\n AssetID = \"Asset ID(s)\",\r\n BookingNumber = \"Active Booking Number(s)\",\r\n CargoCareProfile = \"CargoCare Profile(s)\",\r\n GeofenceStatus = \"Geofence Status\",\r\n GeofenceID = \"Geofence ID\",\r\n AssetTypes = \"Asset Types\",\r\n InventoryState = \"Inventory State\",\r\n OEM = \"OEM Type\",\r\n Countries = \"Country\",\r\n ReportingInterval = \"Reporting(min)\",\r\n VesselID = \"Vessel\",\r\n Voyage = \"Voyage\",\r\n Call = \"Call\",\r\n}\r\n\r\n//RCNG-1209\r\nexport enum CCTabs {\r\n General = \"General\",\r\n Power = \"Power\",\r\n Alarm = \"Alarm\",\r\n SetPoint = \"SetPoint\",\r\n SupplyTemp = \"SupplyTemp\",\r\n ReturnTemp = \"ReturnTemp\",\r\n Defrost = \"Defrost\",\r\n ColdTreatment = \"ColdTreatment\",\r\n ControlledAtmosphere = \"ControlledAtmosphere\",\r\n Geofence = \"Geofence\",\r\n Door = \"Door\",\r\n Device = \"Device\",\r\n NoTabFurther = \"NoTabFurther\"\r\n}\r\n","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\n//const Popup = require('react-popup');\r\nimport Popup from 'react-popup';\r\n\r\nexport class PopupWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n public static showErrorMessage(title: any, message: any) {\r\n Popup.create({\r\n title: title,\r\n content: message,\r\n buttons: {\r\n right: ['ok']\r\n }\r\n }, true);\r\n }\r\n\r\n public static showErrorMessage1(title: any, message: any, Error: any) {\r\n Popup.create({\r\n title: title,\r\n content: message,\r\n className: 'Error',\r\n buttons: {\r\n right: ['ok']\r\n }\r\n }, true);\r\n }\r\n\r\n public static ClosePopup() {\r\n Popup.close();\r\n }\r\n /* Added method for to show Popupmessage RCNG - 5517 OMP shall allow the user to disable DIMI Term*/\r\n public static showDIMIMessage(title: any, message: any) {\r\n Popup.create({\r\n title: title,\r\n content: \r\n \r\n
    {message}
    The DIMI settings available here are only applied by reefers that have Intelligent PTI set to DIMI.
    ,\r\n buttons: {\r\n right: ['ok']\r\n }\r\n }, true);\r\n }\r\n public render() {\r\n return \r\n }\r\n}\r\n\r\n","/* eslint-disable */\r\ndefine([\"require\", \"exports\"], function (require, exports) {\r\n \"use strict\";\r\n var jquery_1 = require('jquery');\r\n var Formatters = require('../actions/Formatters');\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var ExportRecords = /** @class */ (function () {\r\n function ExportRecords() {\r\n }\r\n\r\n ExportRecords.InitializeExcelExport = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index in columns[i]) {\r\n if (index == 'children') {\r\n for (var j = 0; j < columns[i][index].length; j++) {\r\n\r\n test.push(columns[i][index][j].field);\r\n }\r\n }\r\n }\r\n }\r\n\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'children') {\r\n for (var j = 0; j < columns[i][index1].length; j++) {\r\n if (test[k] == columns[i][index1][j].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i][index1][j].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i][index1][j].headerName);\r\n else\r\n columnHeaderName = columns[i][index1][j].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\"? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed'? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '\"' + '\\t' + info + '\",';\r\n }\r\n else {\r\n row += '\"' + info + '\",';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + '\\r\\n';\r\n }\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n var dt = new Date();\r\n var day = dt.getDate();\r\n var month = dt.getMonth() + 1;\r\n var year = dt.getFullYear();\r\n var hour = dt.getHours();\r\n var mins = dt.getMinutes();\r\n var postfix = day + \".\" + month + \".\" + year + \"_\" + hour + \".\" + mins;\r\n var fileName = formname + \"_\" + postfix + \".csv\";\r\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\r\n var isEdge = !isIE && !!window.StyleMedia;\r\n var data, csvfile, blob;\r\n var BOM = String.fromCharCode(0xFEFF);\r\n CSV = BOM + CSV;\r\n if (!CSV.match(/^data:text\\/csv/i)) {\r\n blob = new Blob([CSV], { type: 'text/csv;charset=utf-8;' });\r\n }\r\n if (isIE || isEdge) {\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, fileName);\r\n }\r\n }\r\n else {\r\n var link = document.createElement(\"a\");\r\n var url = URL.createObjectURL(blob);\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n };\r\n\r\n ExportRecords.InitializeExport = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index in columns[i]) {\r\n if (index == 'children') {\r\n for (var j = 0; j < columns[i][index].length; j++) {\r\n\r\n test.push(columns[i][index][j].field);\r\n }\r\n }\r\n }\r\n }\r\n\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'headerName') {\r\n if (test[k] == columns[i].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i].headerName);\r\n else\r\n columnHeaderName = columns[i].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '\"' + '\\t' + info + '\",';\r\n }\r\n else {\r\n row += '\"' + info + '\",';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n\r\n var dt = new Date();\r\n var day = dt.getDate();\r\n var month = dt.getMonth() + 1;\r\n var year = dt.getFullYear();\r\n var hour = dt.getHours();\r\n var mins = dt.getMinutes();\r\n var postfix = day + \".\" + month + \".\" + year + \"_\" + hour + \".\" + mins;\r\n var fileName = formname + \"_\" + postfix + \".csv\";\r\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\r\n var isEdge = !isIE && !!window.StyleMedia;\r\n var data, csvfile, blob;\r\n var BOM = String.fromCharCode(0xFEFF);\r\n CSV = BOM + CSV;\r\n if (!CSV.match(/^data:text\\/csv/i)) {\r\n blob = new Blob([CSV], { type: 'text/csv;charset=utf-8;' });\r\n }\r\n\r\n if (isIE || isEdge) {\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, fileName);\r\n }\r\n }\r\n else {\r\n var link = document.createElement(\"a\");\r\n var url = URL.createObjectURL(blob);\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n };\r\n\r\n ExportRecords.InitializeExcelExportParent = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n //below is for removing data rows.\r\n //WI-21604 - start\r\n if (columns[i].field == 'NotificationSubscriberID')\r\n continue;\r\n test.push(columns[i].field);\r\n }\r\n\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'children') {\r\n for (var j = 0; j < columns[i][index1].length; j++) {\r\n if (test[k] == columns[i][index1][j].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i][index1][j].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i][index1][j].headerName);\r\n else\r\n columnHeaderName = columns[i][index1][j].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '\"' + '\\t' + info + '\",';\r\n }\r\n else {\r\n row += '\"' + info + '\",';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n var dt = new Date();\r\n var day = dt.getDate();\r\n var month = dt.getMonth() + 1;\r\n var year = dt.getFullYear();\r\n var hour = dt.getHours();\r\n var mins = dt.getMinutes();\r\n var postfix = day + \".\" + month + \".\" + year + \"_\" + hour + \".\" + mins;\r\n var fileName = formname + \"_\" + postfix + \".csv\";\r\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\r\n var isEdge = !isIE && !!window.StyleMedia;\r\n var data, csvfile, blob;\r\n var BOM = String.fromCharCode(0xFEFF);\r\n CSV = BOM + CSV;\r\n if (!CSV.match(/^data:text\\/csv/i)) {\r\n blob = new Blob([CSV], { type: 'text/csv;charset=utf-8;' });\r\n }\r\n\r\n if (isIE || isEdge) {\r\n\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, fileName);\r\n }\r\n\r\n }\r\n else {\r\n var link = document.createElement(\"a\");\r\n var url = URL.createObjectURL(blob);\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n };\r\n ExportRecords.InitializeExportParent = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n //below is for removing data rows.\r\n //WI-21604 - start\r\n if (columns[i].field == 'NotificationSubscriberID' || columns[i].headerName == 'Remove' || columns[i].headerName == 'Cancel')\r\n continue;\r\n //WI-21604 - end\r\n\r\n test.push(columns[i].field);\r\n }\r\n\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'headerName') {\r\n if (test[k] == columns[i].field && columns[i].headerName != 'Remove' && columns[i].headerName != 'Cancel') {\r\n\r\n if ((jquery_1.inArray(test[k], dttm)) != -1) {\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i].headerName);\r\n }\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1) {\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i].headerName);\r\n }\r\n else {\r\n columnHeaderName = columns[i].headerName;\r\n }\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '\"' + '\\t' + info + '\",';\r\n }\r\n else {\r\n row += '\"' + info + '\",';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n\r\n var dt = new Date();\r\n var day = dt.getDate();\r\n var month = dt.getMonth() + 1;\r\n var year = dt.getFullYear();\r\n var hour = dt.getHours();\r\n var mins = dt.getMinutes();\r\n var postfix = day + \".\" + month + \".\" + year + \"_\" + hour + \".\" + mins;\r\n var fileName = formname + \"_\" + postfix + \".csv\";\r\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\r\n var isEdge = !isIE && !!window.StyleMedia;\r\n var data, csvfile, blob;\r\n var BOM = String.fromCharCode(0xFEFF);\r\n CSV = BOM + CSV;\r\n if (!CSV.match(/^data:text\\/csv/i)) {\r\n blob = new Blob([CSV], { type: 'text/csv;charset=utf-8;' });\r\n }\r\n\r\n if (isIE || isEdge) {\r\n\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, fileName);\r\n }\r\n\r\n }\r\n else {\r\n var link = document.createElement(\"a\");\r\n var url = URL.createObjectURL(blob);\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n };\r\n\r\n ExportRecords.SendmailExport = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n var CSV = '';\r\n if (columns != null && columns != undefined && columns.length > 0 && arrData != null && arrData != undefined && arrData.length > 0) {\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index in columns[i]) {\r\n if (index == 'children') {\r\n for (var j = 0; j < columns[i][index].length; j++) {\r\n test.push(columns[i][index][j].field);\r\n }\r\n }\r\n }\r\n }\r\n\r\n var ShowLabel = true;\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'headerName') {\r\n if (test[k] == columns[i].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i].headerName);\r\n else\r\n columnHeaderName = columns[i].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.SendmailExportParent = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n var CSV = '';\r\n if (columns != null && columns != undefined && columns.length > 0 && arrData != null && arrData != undefined && arrData.length > 0) {\r\n for (var i = 0; i < columns.length; i++) {\r\n //below is for removing data rows.\r\n //WI-21604 - start\r\n if (columns[i].field == 'NotificationSubscriberID' || columns[i].headerName == 'Remove' || columns[i].headerName == 'Cancel')\r\n continue;\r\n //WI-21604 - end\r\n\r\n test.push(columns[i].field);\r\n }\r\n\r\n var ShowLabel = true;\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'headerName') {\r\n if (test[k] == columns[i].field && columns[i].headerName != 'Remove' && columns[i].headerName != 'Cancel') {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i].headerName);\r\n else\r\n columnHeaderName = columns[i].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'MNC' || index == 'TowerLocalizationAreaCode' || index == 'TowerBaseStationID' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n if (formname == 'GeofenceManagement')\r\n info = index == 'Coordinates' ? Formatters.default.GeofenceCoordinatesFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.SendmailExcelExport = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n var CSV = '';\r\n if (columns != null && columns != undefined && columns.length > 0 && arrData != null && arrData != undefined && arrData.length > 0) {\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index in columns[i]) {\r\n if (index == 'children') {\r\n for (var j = 0; j < columns[i][index].length; j++) {\r\n test.push(columns[i][index][j].field);\r\n }\r\n }\r\n }\r\n }\r\n\r\n var ShowLabel = true;\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'children') {\r\n for (var j = 0; j < columns[i][index1].length; j++) {\r\n if (test[k] == columns[i][index1][j].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i][index1][j].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i][index1][j].headerName);\r\n else\r\n columnHeaderName = columns[i][index1][j].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].ConenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.SendmailExcelExportParent = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n var CSV = '';\r\n if (columns != null && columns != undefined && columns.length > 0 && arrData != null && arrData != undefined && arrData.length > 0) {\r\n for (var i = 0; i < columns.length; i++) {\r\n //below is for removing data rows.\r\n //WI-21604 - start\r\n if (columns[i].field == 'NotificationSubscriberID')\r\n continue;\r\n //WI-21604 - end\r\n\r\n test.push(columns[i].field);\r\n }\r\n\r\n var ShowLabel = true;\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'children') {\r\n for (var j = 0; j < columns[i][index1].length; j++) {\r\n if (test[k] == columns[i][index1][j].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i][index1][j].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i][index1][j].headerName);\r\n else\r\n columnHeaderName = columns[i][index1][j].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.InitializeChildGridExportToExcel = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index in columns[i]) {\r\n if (index == 'children') {\r\n for (var j = 0; j < columns[i][index].length; j++) {\r\n\r\n test.push(columns[i][index][j].field);\r\n }\r\n }\r\n }\r\n }\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'children') {\r\n for (var j = 0; j < columns[i][index1].length; j++) {\r\n if (test[k] == columns[i][index1][j].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i][index1][j].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i][index1][j].headerName);\r\n else\r\n columnHeaderName = columns[i][index1][j].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n \r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n //row += '\"' + '\\t' + info + '\",';\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n //row += '\"' + info + '\",';\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.InitializeExportParentGridExportToXLSX = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n //below is for removing data rows.\r\n //WI-21604 - start\r\n if (columns[i].field == 'NotificationSubscriberID')\r\n continue;\r\n test.push(columns[i].field);\r\n }\r\n\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'children') {\r\n for (var j = 0; j < columns[i][index1].length; j++) {\r\n if (test[k] == columns[i][index1][j].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i][index1][j].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i][index1][j].headerName);\r\n else\r\n columnHeaderName = columns[i][index1][j].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n //row += '\"' + '\\t' + info + '\",';\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n //row += '\"' + info + '\",';\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.InitializeExportParentToXLSX = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n //below is for removing data rows.\r\n //WI-21604 - start\r\n if (columns[i].field == 'NotificationSubscriberID' || columns[i].headerName == 'Remove' || columns[i].headerName == 'Cancel')\r\n continue;\r\n //WI-21604 - end\r\n\r\n test.push(columns[i].field);\r\n }\r\n\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'headerName') {\r\n if (test[k] == columns[i].field && columns[i].headerName != 'Remove' && columns[i].headerName != 'Cancel') {\r\n\r\n if ((jquery_1.inArray(test[k], dttm)) != -1) {\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i].headerName);\r\n }\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1) {\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i].headerName);\r\n }\r\n else {\r\n columnHeaderName = columns[i].headerName;\r\n }\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n \r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n\r\n var deviceFirmwareFormatter = { DeviceType: arrData[i].DeviceType, FirmwareRev: arrData[i].FirmwareRev };\r\n info = index == 'FirmwareRev' ? Formatters.default.deviceFirmwareFormatterForExcel(deviceFirmwareFormatter) : info;\r\n\r\n info = index == 'MNC' || index == 'TowerLocalizationAreaCode' || index == 'TowerBaseStationID' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n if (formname == 'GeofenceManagement')\r\n info = index == 'Coordinates' ? Formatters.default.GeofenceCoordinatesFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.InitializeExportChildToXLSX = function (arrData, columns, formname) {\r\n var test = [];\r\n var testcsv = '';\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index in columns[i]) {\r\n if (index == 'children') {\r\n for (var j = 0; j < columns[i][index].length; j++) {\r\n\r\n test.push(columns[i][index][j].field);\r\n }\r\n }\r\n }\r\n }\r\n var ShowLabel = true;\r\n var CSV = '';\r\n if (ShowLabel) {\r\n var row = \"\";\r\n for (var k = 0; k <= test.length; k++) {\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var columnHeaderName = \"\";\r\n for (var i = 0; i < columns.length; i++) {\r\n for (var index1 in columns[i]) {\r\n if (index1 == 'headerName') {\r\n if (test[k] == columns[i].field) {\r\n if ((jquery_1.inArray(test[k], dttm)) != -1)\r\n columnHeaderName = Formatters.default.TimeZoneColumnFormatterForExcel(columns[i].headerName);\r\n else if ((jquery_1.inArray(test[k], temperature)) != -1)\r\n columnHeaderName = Formatters.default.TempHeaderFormatterChildForms(columns[i].headerName);\r\n else\r\n columnHeaderName = columns[i].headerName;\r\n\r\n row += columnHeaderName + ',';\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + ' endline ';\r\n }\r\n for (var i = 0; i < arrData.length; i++) {\r\n var row = \"\";\r\n for (var j = 0; j <= test.length; j++) {\r\n for (var index in arrData[i]) {\r\n if (test[j] == index) {\r\n var t = test.indexOf(index);\r\n var info = arrData[i][index] != null ? arrData[i][index] : \"\";\r\n var isCargocare = { isCargocare: arrData[i].IsCargoCare, CCSeverityLevel: arrData[i].CCSeverityLevel };\r\n info = index == \"CCSeverityLevel\" ? Formatters.default.CargoCareFormatterforExcel(isCargocare) : info;\r\n info = index == \"IsInsideGeofence\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n info = index == \"IsActive\" ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n\r\n var space = [\"RCDID\", \"TowerBaseStationID\", \"ICCID\", \"MSISDN\", \"SIM_IMSI\", \"RCDId\", \"RcdID\", \"Value1\", \"Value2\", \"Value3\", \"Value4\"];\r\n var setPoint = [\"CO2Setpoint\", \"CO2Reading\", \"O2Setpoint\", \"O2Reading\", \"EvaporatorTemp\", \"CompositeSuctionPressure\", \"CompressorSuctionTemp\", \"DischargePressure\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"CondenserFanOutPut\", \"LowSpeedEvaporatorFanOutPut\", \"HighSpeedEvaporatorFanOutPut\", \"HeaterOnTime\", \"HotGasValveOpening\", \"EconomizerValveOpening\", \"CompressorFrequency\", \"VentPositionSensorCMH\", \"TotalCurrentDraw\", \"LineVoltage1\", \"LineVoltage2\", \"LineVoltage3\", \"VFD\", \"LineFrequency\", \"TripWiseExpiration\"];\r\n var temperature = [\"TemperatureUnit\", \"SetPoint\", \"SupplyTemp1\", \"SupplyTemp2\", \"ReturnTemp1\", \"ReturnTemp2\", \"AmbientTemp\", \"EvaporatorTemp\", \"CompressorSuctionTemp\", \"CompressorDischargeTemp\", \"CondenserTemperature\", \"USDA1Temp\", \"USDA2Temp\", \"USDA3Temp\", \"Cargo4Temp\", \"DeviceTemp\"];\r\n var dttm = [\"UnitEventDTTM\", \"DataLoggerDtm\", \"ModifiedDTTM\", \"EventDTTM\", \"R_EventDTTM\", \"R_ModifiedDTTM\", \"CreatedDTTM\", \"CreateDTTM\", \"StatusDate\", \"SubmittedOn\", \"EndDate\", \"scheduledCreatedDTTM\", \"StartDate\", \"LastPreTripDTTM\", \"PTRDateTime\", \"TTL\", \"GPSDTTM\", \"DeviceDataTime\", \"ExpirationTime\", \"EarliestDepartureDtm\", \"ArrivalDtm\", \"TWTime\", \"DLEventDTTM\"];\r\n info = (jquery_1.inArray(index, dttm)) != -1 ? Formatters.default.dateTypeFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, setPoint)) != -1 ? Formatters.default.sensorDataFormatterforExcel(arrData[i][index]) : info;\r\n info = (jquery_1.inArray(index, temperature)) != -1 ? Formatters.default.TemperatureFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"ReeferOEMTypeCd\" || index == \"OEMTypeCD\" ? Formatters.default.GetOEMTypeDescription(arrData[i][index]) : info;\r\n info = index == \"DeviceConfig\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DeviceType' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"GuestReeferMode\" ? Formatters.default.GuestReeferModeFormatterForExcel(arrData[i][index]) : info;\r\n var Door1Open = { Door1Open: arrData[i].Door1Open, HasDoorSensor: arrData[i].HasDoorSensor };\r\n info = index == \"Door1Open\" ? Formatters.default.DoorFormatterForExcel(Door1Open) : info;\r\n var isHumidity = { Humidity: arrData[i].Humidity, HumiditySetpointStatus: arrData[i].HumiditySetpointStatus };\r\n info = index == \"Humidity\" ? Formatters.default.HumiditySettingFormatterforExcel(isHumidity) : info;\r\n info = index == \"CommentExists\" || index == \"CommentExistsGenset\" || index == \"CommentExistsDC\" || index == \"CommentExistsChassis\" ? Formatters.default.CommentExistsforExcel(arrData[i][index]) : info;\r\n info = index.toUpperCase() == \"RCDPOWERSOURCECD\" ? Formatters.default.rcdPowerSourceFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"RunState\" ? Formatters.default.runStateFormatterforExcel(arrData[i][index]) : info;\r\n info = index == \"MASeverityLevel\" || index == \"R_HighestSeverityLevel\" ? Formatters.default.statusIndicatorforALMforExcel(arrData[i][index]) : info;\r\n info = index == \"AlertSeverityID\" ? Formatters.default.statusIndicatorforALRforExcel(arrData[i][index]) : info;\r\n info = index == \"IsOnVessel\" ? Formatters.default.isOnVesselFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselCd' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GPSLastLock' ? Formatters.default.secondsToTimeConverterForExcel(arrData[i][index]) : info;\r\n info = index == \"Name\" ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Description' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'RCDBootloaderVersion' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (formname == \"PreTrip\")\r\n info = index == 'PTIState' ? Formatters.default.PTIStateforExcel(arrData[i][index]) : info;\r\n else\r\n info = index == 'PTIState' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'PTResult' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'GeofenceTag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'VesselName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Origin' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Handler' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TripStatusCdAndDFlag' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n var isControlledAtmosphereMode = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, ControlledAtmosphereMode: arrData[i].ControlledAtmosphereMode };\r\n info = index == 'ControlledAtmosphereMode' ? Formatters.default.ControlledAtmosphereModeforExcel(isControlledAtmosphereMode) : info;\r\n info = index == 'AlarmsList' ? Formatters.default.AlarmListFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'UserName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TagName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Created' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DeploymentName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CreatedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'ModifiedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'SubmittedBy' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'FullName' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'Zip' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'TemperatureUnit' ? Formatters.default.TemperatureFormatterForBookingforExcel(arrData[i][index]) : info;\r\n info = index == 'ThreePhaseCurrent' ? Formatters.default.Current3PhaseFormatterforExcel(arrData[i][index]) : info;\r\n info = index == 'FilerepositoryActionCD' ? Formatters.default.GetFileRepositoryActionDesc(arrData[i][index]) : info;\r\n info = index == 'GeofenceCategoryCd' ? Formatters.default.fenceTypeFormatterForExcel(arrData[i][index]) : info;\r\n var SuctionModulationValveOpeningData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, SuctionModulationValveOpeningQualifier: arrData[i].SuctionModulationValveOpeningQualifier, SuctionModulationValveOpening: arrData[i].SuctionModulationValveOpening };\r\n info = index == 'SuctionModulationValveOpening' ? Formatters.default.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData) : info;\r\n var CondenserPressureData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, CondenserPressure: arrData[i].CondenserPressure };\r\n info = index == 'CondenserPressure' ? Formatters.default.sensorDataPCondFormatterExcel(CondenserPressureData) : info;\r\n var EEVData = { ReeferOEMTypeCd: arrData[i].ReeferOEMTypeCd, EvaporatorExpansionValveOpening: arrData[i].EvaporatorExpansionValveOpening };\r\n info = index == 'EvaporatorExpansionValveOpening' ? Formatters.default.sensorDataOpenExpFormatterExcel(EEVData) : info;\r\n info = index == 'IgnitionOn' ? Formatters.default.gensetSwitchFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'HasOilPressureSwitch' ? Formatters.default.YesNoConverterforExcel(arrData[i][index]) : info;\r\n var gensetRunningData = { GensetRunning: arrData[i].GensetRunning, HasOilPressureSwitch: arrData[i].HasOilPressureSwitch, OEMTypeCD: arrData[i].OEMTypeCD };\r\n info = index == 'GensetRunning' ? Formatters.default.EngFormatterforExcel(gensetRunningData) : info;\r\n info = index == 'ManufacturedDate' ? Formatters.default.YearFromdateTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'CCSeverityLevelGenset' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == \"AssetType\" ? Formatters.default.AssetTypeFormatterForExcel(arrData[i][index]) : info;\r\n var isFuelinfo = { FuelLevel: arrData[i].FuelLevel, FuelLevelQualifier: arrData[i].FuelLevelQualifier, FuelLevelQualifierDesc: arrData[i].FuelLevelQualifierDesc, FractionDisplay: arrData[i].FractionDisplay, HasFuelSensor: arrData[i].HasFuelSensor };\r\n info = index == \"FuelLevel\" ? Formatters.default.FillLevelGalTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"FractionDisplay\" ? Formatters.default.FillLevelTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"HasFuelSensor\" ? Formatters.default.FuelSensorTraceFormatterforExcel(isFuelinfo) : info;\r\n info = index == \"ExtBattVoltage\" || index == \"BattVoltage\" || index == \"DeviceBattery\" ? Formatters.default.BattVoltageFormatterforExcel(arrData[i][index]) : info;\r\n var ispwrStateFormatter = { DeviceType: arrData[i].DeviceConfig, DevicePowerSourceCd: arrData[i].DevicePowerSourceCd, DeviceTypeCd: arrData[i].DeviceType };\r\n info = index == 'DevicePowerSourceCd' ? Formatters.default.pwrStateFormatterforExcel(ispwrStateFormatter) : info;\r\n info = index == 'PWR' ? Formatters.default.pwrStateFormatterChassisforExcel(arrData[i][index]) : info;\r\n info = index == 'Loaded' ? Formatters.default.LoadedFormatterForExcel(arrData[i][index]) : info;\r\n var door1ChassisStateFormatter = { HasDoorSensor: arrData[i].HasDoorSensor, Door1OpenChassis: arrData[i].Door1OpenChassis };\r\n info = index == 'Door1OpenChassis' ? Formatters.default.DoorFormatterChassisforExcel(door1ChassisStateFormatter) : info;\r\n info = index == \"DryGPSHDOP\" || index == \"DryGPSSatelliteCount\" || index == \"ChassisGPSHDOP\" || index == \"ChassisGPSSatelliteCount\" ? Formatters.default.GPSfloatTypeFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'BatteryStatus' ? Formatters.default.dryPwrStateFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DrySpeed' || index == 'ChassisSpeed' ? Formatters.default.SpeedConverterforExcel(arrData[i][index]) : info;\r\n info = index == 'BreakSignal' ? Formatters.default.BrakeSignalFormatterForExcel(arrData[i][index]) : info; \r\n info = index == 'OEMModel' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CustomerName' ? Formatters.default.stringTypeFormatterFor3PExcel(arrData[i][index]) : info;\r\n info = index == 'TWState' ? Formatters.default.tripWiseFormatterForExcel(arrData[i][index]) : info;\r\n info = index == \"HumiditySetpoint\" ? Formatters.default.HumiditySetpointForExcel(arrData[i][index]) : info;\r\n info = index == 'ChassisBatteryStatus' ? Formatters.default.ChassisBatteryStatusFormatterForExcel(arrData[i][index]) : info;\r\n info = index == 'DLParam1' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam2' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam3' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam4' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'DLParam5' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'CellNetGeneration' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n info = index == 'EventNotes' ? Formatters.default.stringTypeFormatterChildForms(arrData[i][index]) : info;\r\n if (t != -1) {\r\n if (jquery_1.inArray(index, space) != -1) {\r\n row += '' + info + '*,';\r\n }\r\n else {\r\n row += '' + info + '*,';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n row.slice(0, row.length - 1);\r\n CSV += row + ' endline ';\r\n }\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n\r\n return CSV;\r\n };\r\n\r\n ExportRecords.ConvertCSVToJSon = function (uri) {\r\n var headerData = [];\r\n var columnData = [];\r\n if (uri != '') {\r\n var csvSplit = uri.split('endline');\r\n if (csvSplit != null && csvSplit.length > 0) {\r\n jquery_1.each(csvSplit, function (i, val) {\r\n if (parseInt(i) == 0) {\r\n var headersSplit = val.split(',');\r\n if (headersSplit != null && headersSplit.length > 0) {\r\n jquery_1.each(headersSplit, function (j, headerVal) {\r\n var headerColumn = { headerName: headerVal };\r\n headerData.push(headerColumn);\r\n });\r\n }\r\n }\r\n else {\r\n var columnDataObject = {};\r\n var columnDataSplit = val.split('*,');\r\n if (columnDataSplit != null && columnDataSplit.length > 0) {\r\n jquery_1.each(columnDataSplit, function (j, columnVal) {\r\n jquery_1.each(headerData, function (k, headerValue) {\r\n if (k.toString() == j.toString()) {\r\n var columnAssignedValue = columnVal.replace(\"\\\\t\", \"\");\r\n var columnFinalValue = columnAssignedValue.replace(\"\\\"\", \"\");\r\n var headerInfo = headerValue.headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n if (columnFinalValue != null && columnFinalValue != 'null' && columnFinalValue != undefined && columnFinalValue != '')\r\n columnDataObject[finalHeaderColumn] = columnFinalValue;\r\n else\r\n columnDataObject[finalHeaderColumn] = '-NA-';\r\n }\r\n });\r\n });\r\n\r\n columnData.push(columnDataObject);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n var csvJson = { HeaderData: headerData, ColumnData: columnData };\r\n return csvJson;\r\n };\r\n\r\n ExportRecords.DownloadFile = function (arrData, fileName) {\r\n //var fileName = formname + \"_\" + postfix + \".csv\";\r\n // var fileName = \"RCDeviceTemplate.csv\";\r\n //var fileName = \"RCDeviceTemplate.xlsx\";\r\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\r\n var isEdge = !isIE && !!window.StyleMedia;\r\n var data, csvfile, blob;\r\n if (!arrData.match(/^data:text\\/csv/i)) {\r\n blob = new Blob([arrData], { type: 'text/csv;charset=utf-8;' });\r\n }\r\n if (isIE || isEdge) {\r\n\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, fileName);\r\n }\r\n\r\n }\r\n else {\r\n var link = document.createElement(\"a\");\r\n var url = URL.createObjectURL(blob);\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n };\r\n\r\n ExportRecords.DownloadFileByUrl = function (urlName, formname) {\r\n //var fileName = formname + \"_\" + postfix + \".csv\";\r\n // var fileName = \"RCDeviceTemplate.csv\";\r\n //var fileName = \"RCDeviceTemplate.xlsx\";\r\n //var isIE = /*@cc_on!@*/false || !!document.documentMode;\r\n //var isEdge = !isIE && !!window.StyleMedia;\r\n //var data, csvfile, blob;\r\n //if (!arrData.match(/^data:text\\/csv/i)) {\r\n // blob = new Blob([arrData], { type: 'text/csv;charset=utf-8;' });\r\n //}\r\n //if (isIE || isEdge) {\r\n\r\n // if (navigator.msSaveBlob) {\r\n // navigator.msSaveBlob(blob, fileName);\r\n // }\r\n\r\n //}\r\n //else {\r\n var dt = new Date();\r\n var day = dt.getDate();\r\n var month = dt.getMonth() + 1;\r\n var year = dt.getFullYear();\r\n var hour = dt.getHours();\r\n var mins = dt.getMinutes();\r\n var postfix = day + \".\" + month + \".\" + year + \"_\" + hour + \".\" + mins;\r\n var fileName = formname + \"_\" + postfix + \".xlsx\";\r\n\r\n var link = document.createElement(\"a\");\r\n var url = urlName;\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n // }\r\n };\r\n\r\n ExportRecords.preventDefault = function () {\r\n jquery_1(document).contextmenu(function (e) {\r\n var relativeX = (e.pageX);\r\n var relativeY = (e.pageY);\r\n var height = jquery_1(window).height() - 200;\r\n var halfheight = (jquery_1(window).height()) / 2;\r\n if (height < relativeY) {\r\n relativeY = (relativeY - halfheight) + 20;\r\n }\r\n jquery_1('#liCommandsRequiresRight>.dropdown-menu').css(\"top\", \"55px\");\r\n jquery_1(\".context-menu\").css({\r\n top: relativeY + \"px\",\r\n left: relativeX + \"px\"\r\n });\r\n e.preventDefault();\r\n //jquery_1(\".context-menu\").show();\r\n //jquery_1(\"#contextmenu\").show();\r\n return false;\r\n });\r\n };\r\n ExportRecords.draggableModalPopup = function (elmnt) {\r\n var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;\r\n if (document.getElementById(elmnt.id)) {\r\n /* if present, the header is where you move the DIV from:*/\r\n document.getElementById(elmnt.id).onmousedown = dragMouseDown;\r\n } else {\r\n /* otherwise, move the DIV from anywhere inside the DIV:*/\r\n elmnt.onmousedown = dragMouseDown;\r\n }\r\n\r\n function dragMouseDown(e) {\r\n e = e || window.event;\r\n // get the mouse cursor position at startup:\r\n pos3 = e.clientX;\r\n pos4 = e.clientY;\r\n document.onmouseup = closeDragElement;\r\n // call a function whenever the cursor moves:\r\n document.onmousemove = elementDrag;\r\n }\r\n\r\n function elementDrag(e) {\r\n e = e || window.event;\r\n // calculate the new cursor position:\r\n pos1 = pos3 - e.clientX;\r\n pos2 = pos4 - e.clientY;\r\n pos3 = e.clientX;\r\n pos4 = e.clientY;\r\n // set the element's new position:\r\n elmnt.style.top = (elmnt.offsetTop - pos2) + \"px\";\r\n elmnt.style.left = (elmnt.offsetLeft - pos1) + \"px\";\r\n }\r\n\r\n function closeDragElement() {\r\n /* stop moving when mouse button is released:*/\r\n document.onmouseup = null;\r\n document.onmousemove = null;\r\n }\r\n }\r\n return ExportRecords;\r\n }());\r\n exports.default = ExportRecords;\r\n});\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGtmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMi0yMVQxMDo1MTowMiswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMTItMjFUMTA6NTE6MDIrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6YzcwNzE0ZjYtNmM0My00ZTQ1LThmZDctYWY2MjZmNWZmMmMzIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MjRiM2NhYjAtNDYyNi01ODRhLTlhODMtMjdjMjQ3ZWFkYzA1IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDVlNmUyZWUtZDJmNS1iZjQ5LWJhYmQtNmVkYmViYTEwNjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NWU2ZTJlZS1kMmY1LWJmNDktYmFiZC02ZWRiZWJhMTA2MzAiIHN0RXZ0OndoZW49IjIwMTgtMTItMjBUMTg6MTc6NDErMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNmNzA5MWY3LWRhYzEtNDg0Yi05ODk3LTgyMzc1YzMzNGE3ZiIgc3RFdnQ6d2hlbj0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzcwNzE0ZjYtNmM0My00ZTQ1LThmZDctYWY2MjZmNWZmMmMzIiBzdEV2dDp3aGVuPSIyMDE4LTEyLTIxVDEwOjUxOjAyKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoagUVYAAADcSURBVDiN5dShTgQxEADQ1w0GzylwWPAoBIIEDwmK79gfIPAfZwmGgLxgMEiCgz9AYQmkiNsmzUE3u9dDMarTTl6mTTMhxmjV0axc/Cs0uKgDYhuFyzDBNfZwXo1ighl2uvyz9vpbCyA8rFWC99jO9p5xsmynJfAgtvGtQegO1yvApwQy/1JTvOIFu0uAj9hPYEJPu/Wm+aOX4BJ4GNv4nhc2uMryjQI8GEzoGW564CKIH2BCP3BcgI/GggnVA9+NBXO0BOcxCFxE++DB4G9oDk/xhdsxIIT/Pfm/AQrwT3ewKqdXAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGtmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMi0yMVQxMDo1MTo1NCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMTItMjFUMTA6NTE6NTQrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTNmNTM5MjctZGYzZi1mZDQyLWI4NmEtYTE5NjM2MjUxODVhIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZjdlYWZhZTgtOTMyMS1lYTRhLTgyM2ItMzAzYjIzMTdiZjE0IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDVlNmUyZWUtZDJmNS1iZjQ5LWJhYmQtNmVkYmViYTEwNjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NWU2ZTJlZS1kMmY1LWJmNDktYmFiZC02ZWRiZWJhMTA2MzAiIHN0RXZ0OndoZW49IjIwMTgtMTItMjBUMTg6MTc6NDErMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNmNzA5MWY3LWRhYzEtNDg0Yi05ODk3LTgyMzc1YzMzNGE3ZiIgc3RFdnQ6d2hlbj0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTNmNTM5MjctZGYzZi1mZDQyLWI4NmEtYTE5NjM2MjUxODVhIiBzdEV2dDp3aGVuPSIyMDE4LTEyLTIxVDEwOjUxOjU0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkWLSm8AAADSSURBVDiNzZQ9CgIxEIW/1WJ7K7GysEstiDfRwjOJNxA77+AB7NVOsFLWHxQrg+DYpBpYJqxZ8FV5DPl4M0ySiQhl2mZ5D1gAfWANTJz4femFoIZRnwMDoAkMgzeVGUl1UZx4K4iZ1Cv/soAx0JvylxTQs+ErQXUynbwS9Gr4JNAiBVRDkiTVM6yl/VpWKglUQ/57ps9wfjjxvy+/E/8BxsASGMUATWjQBlgBu1io9Z/mwAFoA0eg68S/LaiVtBWAAJ3gTVkzPQEz4A5Mnfiot/8FjbFHQqUPDO8AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGtmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMi0yMVQxMDo0OTo0OCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMTItMjFUMTA6NDk6NDgrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzZjNDk0ODEtYjJlYi0wMjQwLWE3NmQtNTBmNDZmNWFmNzM3IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZDEyM2YzMWQtNjE2OS00ZTRlLTgwMzMtYTRkNjBlZjdmZjk2IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDVlNmUyZWUtZDJmNS1iZjQ5LWJhYmQtNmVkYmViYTEwNjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NWU2ZTJlZS1kMmY1LWJmNDktYmFiZC02ZWRiZWJhMTA2MzAiIHN0RXZ0OndoZW49IjIwMTgtMTItMjBUMTg6MTc6NDErMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNmNzA5MWY3LWRhYzEtNDg0Yi05ODk3LTgyMzc1YzMzNGE3ZiIgc3RFdnQ6d2hlbj0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NzZjNDk0ODEtYjJlYi0wMjQwLWE3NmQtNTBmNDZmNWFmNzM3IiBzdEV2dDp3aGVuPSIyMDE4LTEyLTIxVDEwOjQ5OjQ4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnlDX6QAAAEhSURBVDiNrdQ/SgNBFMfx77q+xtouNjb2HkGwCYgQSOESvINdbETwAOIZIjiNIISUEQtPoY230GKdjM1Gxtn580QfTDFv2c/O7vxmK+cc/10b/sQaObVGhr8BrJEta+TCGtntodbIFJgBC2tkogWBBXAFPK9hf6WX3oNmJdgDD7rWAJiE6AnQauAICPAEXP9A66adA+MSnAGP6qZ9D1dahDUgQBWLlDVyDNwD0rVWwBkwKoFJNAGHFQXXrxetyKdQgVm0qyXwFuk/pMAs6m3KXuTyTS7HUTSxy68oc9xDM7HZR5HjHlrKofaA+D8UVbA1sL/SeQlUwMMQ3dGABXg7RA+BF+CxBEbgD+C8btpbAJxz3+PzbrPy59oR3pc8+3+pLycy415n+gNuAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGtmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0yNVQxMDo0MTozMCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDEtMjVUMTA6NDE6MzArMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZWU2MTY4OWItNmEwNi0yZTRlLThkZGUtN2RkMTMxNGExOTg5IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZmM3Yjk0MjktN2FmMS0zYzRkLWIyZjMtZjAwYTVhMzRkMjIwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDVlNmUyZWUtZDJmNS1iZjQ5LWJhYmQtNmVkYmViYTEwNjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NWU2ZTJlZS1kMmY1LWJmNDktYmFiZC02ZWRiZWJhMTA2MzAiIHN0RXZ0OndoZW49IjIwMTgtMTItMjBUMTg6MTc6NDErMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNmNzA5MWY3LWRhYzEtNDg0Yi05ODk3LTgyMzc1YzMzNGE3ZiIgc3RFdnQ6d2hlbj0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZWU2MTY4OWItNmEwNi0yZTRlLThkZGUtN2RkMTMxNGExOTg5IiBzdEV2dDp3aGVuPSIyMDE5LTAxLTI1VDEwOjQxOjMwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp7Ms9IAAAI5SURBVDiNrdRbiE1RHMfxzxm3yS2EB5Gi0KBcckmZI3lgEE3SJA8k8TBTcmm0kwc1p/CgISFySZG8GLfJC3ZEPKBEIZEnt5JcQtge1t51nDlnGuVXu73XXmt917/1+///uSRJ/G/l1LaU+98Xy7AAE9AHn/AcV3Ea7yCJow6bqzocQhNe4hiWowaDMB5L0IpX2IXqchEVQ3ujDXsxAEcwFyNwAdMxBS34ii24m8sXhleCdsNZLMaDNKq1uIapWIFFuI9tGIfzmIjruXxhQDnoJtThIebgScmVlOod6nEGo3GgFDoY2/FNuLOPZSDl9Atr8AwNuXxhZjF0teDuPrzoIjDTF2T2NxVDF6bfx/8RmKkNH7Agly90y6CT8R6PK2wamb5HlZlbix8YmD4/c/lCexX643UnkTRjvpBe00vmTuBW0fgTNlchQc9OoI/RiCG4jYOCudIo64Vi+I0VSRw9qkp/jFShOrBUKIRGvMU6wfGFkMTRGyEdVyZxdJFwpzfRC/MqQD8LZhzGGOwUqm9atiCJo0dJHJ3Oxjm1LXW4hBuo7eQailUt5DWswiysT+LodxZpO+5htuBmV5QBJ+MQGtAjm8yMylJjv1D/XVENLgomb0ji6HsxVBrpKqGxnMMeod2VU0/BtDsYht1JHB0tXlDapOtwMgV+wZV081vBnElCfxiK72hO4qi19NTuJePLGCvU82ohB+tL1nzDKezwdzerCCWU7EZsxQyht/YTGvNToQA+l4Nl+gPBE4240uZ6PwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHNGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0yNFQxMzoxMzowNCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDEtMjRUMTM6MTM6MDQrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDRmNTU1NTItMTY2MS1iMTQwLTgyNGMtNmE4NTUzMDMwZjAzIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NTFiZjg0MzgtMjY4Mi1lYTRjLWEyZjYtZDVhY2JjY2MxNzVlIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDVlNmUyZWUtZDJmNS1iZjQ5LWJhYmQtNmVkYmViYTEwNjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NWU2ZTJlZS1kMmY1LWJmNDktYmFiZC02ZWRiZWJhMTA2MzAiIHN0RXZ0OndoZW49IjIwMTgtMTItMjBUMTg6MTc6NDErMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNmNzA5MWY3LWRhYzEtNDg0Yi05ODk3LTgyMzc1YzMzNGE3ZiIgc3RFdnQ6d2hlbj0iMjAxOC0xMi0yMFQxODoxNzo0MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDRmNTU1NTItMTY2MS1iMTQwLTgyNGMtNmE4NTUzMDMwZjAzIiBzdEV2dDp3aGVuPSIyMDE5LTAxLTI0VDEzOjEzOjA0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOlRleHRMYXllcnM+IDxyZGY6QmFnPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9Ij8iIHBob3Rvc2hvcDpMYXllclRleHQ9Ij8iLz4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqZPrBwAAADJSURBVDiNxZTRDcIwEEOfEQt0hXYEVigjwAhdobPACqwCI9ARYATzQfpTqcm1osJSdFLks3xxEtnm19j9XHEr0X2JIKkCTkCVtm62h2yT7dkF9MAL8GR1ub7S+BVwBRrbAhpgAC6S6lVOZ9x3yW271umc+yy05J6m0J7A23Yzxws7ldSOgsA5Sw6eY8v3HO9AVeJHnR5SPdp+l8hR0UeaqigIC4OK4n8fiqQ6pR9DMP3x/fcRfnT8YVLzk0WDklQXv7ylokuwSfofg58ElZe2eMwAAAAASUVORK5CYII=\"","/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport { SpecificBookingDetails } from '../childcomponents/SpecificBookingDetails';\r\nimport { SpecificBookingReefersGridData } from '../childcomponents/SpecificBookingReefersGridData';\r\nimport DateFormat from 'dateformat';\r\nimport forEach from 'lodash/forEach';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar self;\r\n\r\ninterface WizardState {\r\n renderHtml: any;\r\n BookingDetails: server.BookingDetails;\r\n BookingReefers: server.BookingSearchDetails;\r\n //BookingDataForView: server.BookingDataForView;\r\n BookingViewData: server.BookingViewData;\r\n rowData: server.bookingReefer[];\r\n isEdit: boolean;\r\n tabFrom: number;\r\n currentTab: number;\r\n AllBooking: any[];\r\n BookingCount: number;\r\n BookingType: any;\r\n IsOpen: any;\r\n buttonState: any;\r\n isViewOnly: boolean;\r\n formname: any;\r\n}\r\n\r\nvar emptyBookingDetails: server.BookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '', BKCustomer:''\r\n};\r\nvar emptyBookingReefers: server.BookingSearchDetails = {\r\n BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [], BookingNumber: []\r\n}\r\nvar emptyBookingViewData: server.BookingViewData = {\r\n CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false\r\n};\r\n//var emptyBookingDataForView: server.BookingDataForView = {\r\n// ReeferIds: [], BookingNumber: '', BookedTemperature: '', BookedTemperatureUnit: '', BookedTemperatureMin: '', BookedTemperatureMax: '', HumiditySetPoint: '', VentSettings: '', GensetId: '', CommodityName: '', STCC: '', HSCode: '', ServiceLevel: '',\r\n// HighValueCargo: false, CargoCareProfile: '', ThirdPartyAccess: '', CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false,\r\n// CTDays: '', CTMaxTemperature: '', PostCTTemperature: '', PostCTTemperatureRange: '', PostCTVentSettings: '', O2SetPoint: '', O2Min: '',\r\n// O2Max: '', CO2SetPoint: '', CO2Min: '', CO2Max: '', CAGName:''\r\n//};\r\nexport class ViewBooking extends React.Component, WizardState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.resetAllDetails();\r\n this.state = {\r\n renderHtml: '',\r\n BookingDetails: emptyBookingDetails,\r\n BookingReefers: emptyBookingReefers,\r\n //BookingDataForView: emptyBookingDataForView,\r\n BookingViewData: emptyBookingViewData,\r\n rowData: [],\r\n isEdit: false,\r\n tabFrom: 1,\r\n currentTab: 1,\r\n AllBooking: [],\r\n BookingCount: 0,\r\n BookingType: 'View Booking',\r\n IsOpen: 'View',\r\n buttonState: true,\r\n isViewOnly: true,\r\n formname: '',\r\n };\r\n\r\n self = this;\r\n }\r\n dateTypeFormatter(eventDate: Date) {\r\n //written considering parameter 'eventDate' sent is IST\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return prefDateTime;\r\n }\r\n resetAllDetails() {\r\n emptyBookingDetails = {\r\n Shipper: '', Consignee: '', ShipperCode: '', POR: '', POL: '', POD: '', VesselETD: null, VesselETA: null, BLNumber: '', ContractParty: '', Consolidation: '',\r\n Agent: '', VesselCode: '', VoyageNumber: '', Call: '', Forwarder: '', Notify: '', BookingNumber: '', DEL: '', IsVVCModified: false,\r\n SelectedVesselCD: '',\r\n SelectedCall: '',\r\n SelectedVoyage: '',\r\n ArrSelectedVesselCD: '',\r\n ArrSelectedCall: '',\r\n ArrSelectedVoyage: '', userInput: 0, CustomerAccessGroupIDLoaded: '', BKCustomer:''\r\n }\r\n emptyBookingReefers = { BookingReefers: '', SelectedBookingReefers: '', ReeferwithUnitID: [], BookingNumber:[] }\r\n }\r\n updatemyBookingDimensions() {\r\n $(\"#BookingTabsHeight\").css('min-height', $(window).height() - 150);\r\n $(\"#BookingTabsHeight\").css('max-height', $(window).height() - 150);\r\n }\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsOnly('213');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n this.updatemyBookingDimensions();\r\n window.addEventListener(\"resize\", this.updatemyBookingDimensions.bind(this));\r\n $(\"#SubscriptionMenu li\").click(function (e) {\r\n e.preventDefault();\r\n return false;\r\n });\r\n $('.deploymentWizard').find(\"ul.nav li:nth-child(0)\").attr(\"href\", \"#menu1\");\r\n this.getdata(self.props);\r\n }\r\n }\r\n getBookingDetails(deploymentMasterId: number) {\r\n }\r\n getdata(params: any) {\r\n if (params.location.state != null && (params.location.state.formname == \"ReeferStatus\" || params.location.state.formname == \"ReeferStatusGrid\" || params.location.state.formname == \"SSRMReeferStatusGrid\")) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + params.location.state.reeferData[0].BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n this.setState({ AllBooking: data }, () => { this.GetBookingDetails(); });\r\n }\r\n\r\n });\r\n\r\n }\r\n else\r\n this.setState({ renderHtml: this.dynamicRendering(1) });\r\n }\r\n GetBookingDetails() {\r\n var isfound = this.state.AllBooking.filter(x => x.BookingNumber.toLowerCase() == self.props.location.state.reeferData[0].BookingNumber.toLowerCase());\r\n var BookingInfoDetails = emptyBookingDetails;\r\n BookingInfoDetails.Shipper = isfound[0].Shipper;\r\n BookingInfoDetails.Consignee = isfound[0].Consignee;\r\n BookingInfoDetails.ShipperCode = isfound[0].ShipperCode;\r\n BookingInfoDetails.POR = isfound[0].POR;\r\n BookingInfoDetails.POL = isfound[0].POL;\r\n BookingInfoDetails.POD = isfound[0].POD;\r\n BookingInfoDetails.VesselETD = isfound[0].VesselETD != null ? DateFormat(new Date(isfound[0].VesselETD), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.VesselETA = isfound[0].VesselETA != null ? DateFormat(new Date(isfound[0].VesselETA), 'mm/dd/yyyy HH:MM:ss') : null;\r\n BookingInfoDetails.BLNumber = isfound[0].BLNumber;\r\n BookingInfoDetails.ContractParty = isfound[0].ContractParty;\r\n BookingInfoDetails.Consolidation = isfound[0].Consolidation;\r\n BookingInfoDetails.Agent = isfound[0].Agent;\r\n BookingInfoDetails.VesselCode = isfound[0].VesselCode;\r\n BookingInfoDetails.VoyageNumber = isfound[0].VoyageNumber;\r\n BookingInfoDetails.Call = isfound[0].Call;\r\n BookingInfoDetails.Forwarder = isfound[0].Forwarder;\r\n BookingInfoDetails.Notify = isfound[0].Notify;\r\n BookingInfoDetails.BookingNumber = isfound[0].BookingNumber;\r\n BookingInfoDetails.DEL = isfound[0].DEL;\r\n BookingInfoDetails.BKCustomer = isfound[0].BKCustomer;\r\n if (isfound[0].LifecycleCd == 'L' || isfound[0].LifecycleCd == 'R' || isfound[0].LifecycleCd == 'D' || isfound[0].LifecycleCd == 'P') {\r\n var departingVVC = isfound[0].DepartingVVC.split('-');\r\n var depVoyage = departingVVC[0].trim().length > 0 ? departingVVC[0].trim() : '';\r\n var depCall = departingVVC[1].trim().length > 0 ? departingVVC[1].trim() : '';\r\n var arrivingVVC = isfound[0].ArrivingVVC.split('-');\r\n var arrVoyage = arrivingVVC[0].trim().length > 0 ? arrivingVVC[0].trim() : '';\r\n var arrCall = arrivingVVC[1].trim().length > 0 ? arrivingVVC[1].trim() : '';\r\n\r\n BookingInfoDetails.SelectedVoyage = depVoyage;\r\n BookingInfoDetails.SelectedCall = depCall;\r\n BookingInfoDetails.SelectedVesselCD = depVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVesselCD = arrVoyage != '' ? isfound[0].VoyageVesselCd : '';\r\n BookingInfoDetails.ArrSelectedVoyage = arrVoyage;\r\n BookingInfoDetails.ArrSelectedCall = arrCall;\r\n }\r\n var BookingReefersData = emptyBookingReefers;\r\n BookingReefersData.BookingReefers = this.state.AllBooking.map(x => x.ReeferID).toString();\r\n BookingReefersData.SelectedBookingReefers = this.state.AllBooking.map(x => x.ReeferID).toString();\r\n BookingReefersData.ReeferwithUnitID = this.state.AllBooking.map(x => x.ReeferwithUnitID);\r\n var gridData = [];\r\n forEach(this.state.AllBooking, function (bookingItem) {\r\n \r\n if (bookingItem != \"\" && bookingItem != null) {\r\n\r\n var item = {\r\n action: '', reeferId: bookingItem.ReeferID, cargoCare: bookingItem.CCProfileName, accessCodes: bookingItem.CustomerAccessGroupID, bookedTemperature: bookingItem.BookedTemperature,\r\n bookedTemperatureQualifier: bookingItem.BookedTemperatureQualifier, bookedTemperatureMin: bookingItem.BookedTemperatureMin, bookedTemperatureMax: bookingItem.BookedTemperatureMax,\r\n humidity: bookingItem.HumiditySetpoint, commodity: bookingItem.Commodity, STCC: bookingItem.STCC, HS: bookingItem.HSCode, gensetId: bookingItem.GensetId, ventSetting: bookingItem.VentSetting,\r\n HVFlag: bookingItem.HighValueFlag, serviceLevel: bookingItem.ServiceLevel, CAFlag: bookingItem.CAFlag, O2Setpoint: bookingItem.O2Setpoint, O2SetpointMin: bookingItem.O2SetpointMin, O2SetpointMax: bookingItem.O2SetpointMax,\r\n CO2Setpoint: bookingItem.CO2Setpoint, CO2SetpointMin: bookingItem.CO2SetpointMin, CO2SetpointMax: bookingItem.CO2SetpointMax, CTFlag: bookingItem.CTFlag,\r\n CTDays: bookingItem.CTDays, USDAMaxTemperature: bookingItem.USDAMaxTemperature, postCTTemperature: bookingItem.PostCTTemperature, postCTTemperatureDeviation: bookingItem.PostCTTemperatureDeviation, postCTVentSetting: bookingItem.PostCTVentSetting,\r\n UnitMasterId: bookingItem.UnitMasterID, CustomerAccessGroupIdsStr: '', CAGName: bookingItem.CAGName\r\n };\r\n gridData.push(item);\r\n }\r\n });\r\n this.setState({ BookingDetails: BookingInfoDetails, BookingReefers: BookingReefersData, rowData: gridData, buttonState: false, formname: self.props.location.state.formname }, () => { this.setState({ renderHtml: this.dynamicRendering(1) }); });\r\n }\r\n dynamicRendering(tabPane: number) {\r\n if (tabPane == 1) {\r\n this.setState({ isEdit: false });\r\n return \r\n }\r\n\r\n else if (tabPane == 4)\r\n return \r\n }\r\n\r\n setActiveAndInactiveOld(TabToActive: number, TabToInactive: number) {\r\n if (TabToInactive > 0)\r\n document.getElementById(\"atab\" + TabToInactive).classList.remove(\"active\");\r\n\r\n document.getElementById(\"atab\" + TabToActive).classList.add(\"active\");\r\n }\r\n renderWizardPage(tabPane: number, tabState: any, tabPaneFrom: number) {\r\n \r\n this.setState({ tabFrom: tabPaneFrom });\r\n this.setActiveAndInactiveOld(tabPane, tabPaneFrom);\r\n switch (tabPane) {\r\n case 1:\r\n var newBookingDetails = emptyBookingDetails;\r\n newBookingDetails.Shipper = tabState.BookingDetails.Shipper;\r\n newBookingDetails.Consignee = tabState.BookingDetails.Consignee;\r\n newBookingDetails.ShipperCode = tabState.BookingDetails.ShipperCode;\r\n newBookingDetails.POR = tabState.BookingDetails.POR;\r\n newBookingDetails.POL = tabState.BookingDetails.POL;\r\n newBookingDetails.POD = tabState.BookingDetails.POD;\r\n newBookingDetails.VesselETD = tabState.BookingDetails.VesselETD;\r\n newBookingDetails.VesselETA = tabState.BookingDetails.VesselETA;\r\n newBookingDetails.BLNumber = tabState.BookingDetails.BLNumber;\r\n newBookingDetails.ContractParty = tabState.BookingDetails.ContractParty;\r\n newBookingDetails.Consolidation = tabState.BookingDetails.Consolidation;\r\n newBookingDetails.Agent = tabState.BookingDetails.Agent;\r\n newBookingDetails.VesselCode = tabState.BookingDetails.VesselCode;\r\n newBookingDetails.VoyageNumber = tabState.BookingDetails.VoyageNumber;\r\n newBookingDetails.Call = tabState.BookingDetails.Call;\r\n newBookingDetails.Forwarder = tabState.BookingDetails.Forwarder;\r\n newBookingDetails.Notify = tabState.BookingDetails.Notify;\r\n newBookingDetails.BookingNumber = tabState.BookingDetails.BookingNumber;\r\n newBookingDetails.DEL = tabState.BookingDetails.DEL;\r\n newBookingDetails.SelectedVesselCD = tabState.BookingDetails.SelectedVesselCD;\r\n newBookingDetails.SelectedCall = tabState.BookingDetails.SelectedCall;\r\n newBookingDetails.SelectedVoyage = tabState.BookingDetails.SelectedVoyage;\r\n newBookingDetails.ArrSelectedVesselCD = tabState.BookingDetails.ArrSelectedVesselCD;\r\n newBookingDetails.ArrSelectedCall = tabState.BookingDetails.ArrSelectedCall;\r\n newBookingDetails.ArrSelectedVoyage = tabState.BookingDetails.ArrSelectedVoyage;\r\n newBookingDetails.userInput = tabState.BookingDetails.userInput;\r\n newBookingDetails.IsVVCModified = tabState.BookingDetails.IsVVCModified;\r\n newBookingDetails.BKCustomer = tabState.BookingDetails.BKCustomer;\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.SelectedReefer;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.ReeferIds;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.ReeferwithUnitID;\r\n this.setState({ BookingDetails: newBookingDetails, BookingReefers: newBookingReefersDetails, rowData: tabState.rowData },\r\n () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n case 4:\r\n var newBookingReefersDetails = emptyBookingReefers;\r\n newBookingReefersDetails.BookingReefers = tabState.BookingReefers.BookingReefers;\r\n newBookingReefersDetails.SelectedBookingReefers = tabState.BookingReefers.SelectedBookingReefers;\r\n newBookingReefersDetails.ReeferwithUnitID = tabState.BookingReefers.ReeferwithUnitID;\r\n\r\n var emptyBookingViewData: server.BookingViewData = {\r\n CACTNotRequired: false, CTRequire: false, CARequire: false, CACTDifferByReefer: false\r\n };\r\n var CAFlagCount = 0; var CTFlagCount = 0;\r\n forEach(tabState.rowData, function (datarow) {\r\n if (datarow != null) {\r\n if (datarow.CAFlag)\r\n CAFlagCount++;\r\n if (datarow.CTFlag)\r\n CTFlagCount++;\r\n }\r\n });\r\n if (tabState.rowData.length == CAFlagCount)\r\n emptyBookingViewData.CARequire = true;\r\n else if (tabState.rowData.length == CTFlagCount)\r\n emptyBookingViewData.CTRequire = true;\r\n else if (CAFlagCount == 0 && CTFlagCount == 0)\r\n emptyBookingViewData.CACTNotRequired = true;\r\n else\r\n emptyBookingViewData.CACTDifferByReefer = true;\r\n\r\n //emptyBookingDataForView.ReeferIds = newBookingReefersDetails.ReeferwithUnitID;\r\n this.setState({ BookingReefers: newBookingReefersDetails, BookingDetails: tabState.BookingDetails, BookingViewData: emptyBookingViewData, rowData: tabState.rowData },\r\n () => { this.setState({ renderHtml: this.dynamicRendering(tabPane), currentTab: tabPane }); });\r\n break;\r\n }\r\n }\r\n\r\n backScreen() {\r\n if (this.state.currentTab == 4) {\r\n SpecificBookingReefersGridData.BackScreen();\r\n }\r\n }\r\n\r\n nextScreen() {\r\n if (this.state.currentTab == 1) {\r\n SpecificBookingDetails.NextScreen();\r\n }\r\n }\r\n\r\n cancelWizard() {\r\n this.props.history.goBack();\r\n }\r\n\r\n static UpdateBookingType(Type: any) {\r\n self.setState({ BookingType: Type });\r\n }\r\n static UpdateButtonStyle(State: any) {\r\n self.setState({ buttonState: State });\r\n }\r\n public render() {\r\n return
    \r\n
    View Booking
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.renderHtml}\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n this.state.currentTab != 1 ? : ''\r\n }\r\n {\r\n this.state.currentTab != 4 ?\r\n : ''\r\n }\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}","import * as React from 'react';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControl } from './../sharedcomponents/EmailControl';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport Workbook from 'react-excel-workbook';\r\nimport $ from 'jquery';\r\nvar Excel = Exceljs.default;\r\n\r\n\r\n\r\nexport interface ToolBarState {\r\n exportFields: ExportFields;\r\n DisableVCOption: boolean;\r\n EnableVCCheckBox: boolean;\r\n DisableVCCheckBoxOption: boolean;\r\n DisableVCDropDown: boolean;\r\n DropDownVCData: server.VesselInformation[];\r\n SelectedVCData: server.VesselInformation;\r\n SelectedVesselId: number;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\nconst emptyExportFields: ExportFields = { ExportData: '' };\r\n\r\nexport class GridToolBarDrysPopups extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n exportFields: emptyExportFields,\r\n DisableVCOption: false,\r\n DisableVCCheckBoxOption: false,\r\n EnableVCCheckBox: false,\r\n DisableVCDropDown: false,\r\n DropDownVCData: [],\r\n SelectedVCData: null,\r\n SelectedVesselId: 0,\r\n excelData: [],\r\n headerData: [],\r\n isDownload: false,\r\n excelGridData: this.props.gridData,\r\n formName: this.props.formName,\r\n fileTitle: this.props.formName, sheetInfo: ''\r\n };\r\n\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n \r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (self.props.gridData != undefined && self.props.gridData != null && self.props.gridData.length > 0) {\r\n arrData = typeof self.props.gridData != 'object' ? JSON.parse(self.props.gridData) : self.props.gridData;\r\n var r = self.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n $(\"#globalLoader\").show();\r\n if (self.props.parentchild == 'P') {\r\n uri = Excel.InitializeExportParentToXLSX(arrData, r, this.props.formName);\r\n self.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n uri = Excel.InitializeExportChildToXLSX(arrData, r, this.props.formName);\r\n self.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(self.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closepopupModel() {\r\n $('#PopupEmailTo').hide();\r\n }\r\n\r\n EmailTo() {\r\n $('#PopupEmailTo').show();\r\n }\r\n\r\n \r\n \r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadPopUpExcel').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport DryStatus from '../routecomponents/DryStatusSSRM';\r\n//import { DryStatusGrid } from '../childcomponents/DryStatusGrid';\r\nimport { DryStatusSSRMGrid } from '../childcomponents/DryStatusSSRMGrid';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { CellRenderer } from '../../actions/CellRenderer';\r\nimport $ from 'jquery';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBarDrysPopups } from '../sharedcomponents/GridToolBarDrysPopups';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport './../../../node_modules/react-datepicker/dist/react-datepicker.css';\r\nimport deletepng from '../../images/delete.png';\r\nvar Config: any = require('../../Config.json');\r\nexport interface DryCommandsGridState {\r\n rowData: server.DryStatusData[];\r\n columnDefs: any[];\r\n Filters: DryForwardCommandParams;\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n GridToolBarHtml: any;\r\n}\r\n\r\nvar colDefs;\r\nvar self;\r\n\r\n\r\nexport class DryCommandsGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new DryForwardCommandParams();\r\n var overlayTemplate = 'Loading...';\r\n this.state = {\r\n rowData: [], columnDefs: [], Filters: filterSet,\r\n overlayLoadingTemplate: overlayTemplate, pageSize: 25, gridApiParams: [],\r\n GridToolBarHtml: ''\r\n };\r\n\r\n self = this;\r\n }\r\n\r\n static submitCommands(commandName, paramValue, refreshGrid) {\r\n if (self.state.rowData.length > 0) {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedDrys = self.state.rowData;\r\n self.state.Filters.TempValue = paramValue;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryPostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n }\r\n\r\n if ($('#confirmPopUpModel') != undefined) {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n }\r\n\r\n $(\"#contextMenuModel .close\").click();\r\n\r\n if (refreshGrid == \"home\")\r\n DryStatusSSRMGrid.refreshDashboardGrid();\r\n else\r\n DryStatus.refreshDryStatusGrid();\r\n });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n colDefs = this.createColumnDefs();\r\n var dryData = nextprops.selectedDrys;\r\n if (dryData != undefined && dryData != null) {\r\n this.setState({ rowData: dryData }, () => this.renderGridToolBar());\r\n }\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n componentDidMount() {\r\n colDefs = this.createColumnDefs();\r\n \r\n \r\n \r\n \r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n refreshGrid = () => {\r\n\r\n var selectedDrys = \"\";\r\n if (this.state.rowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.rowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.AssetNumber != null) {\r\n selectedDrys = selectedDrys == \"\" ? selectedValue.AssetNumber : selectedDrys + \",\" + selectedValue.AssetNumber;\r\n }\r\n });\r\n var gensetSearchFilters: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedReefer: selectedDrys, SelectedGeofence: '', SelectedInterval: '', SelectedGeofenceInside: '', SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: ''};//WI-26881\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusDataSP', { method: 'POST', body: JSON.stringify(gensetSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n }, () => {\r\n this.renderGridToolBar();\r\n $('#globalLoader').hide();\r\n });\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"AssetNumber\", width: 105, cellRenderer: CellRenderer.removeIndicator },\r\n { headerName: \"State\", field: \"IsPending\", width: 105, cellRenderer: CellRenderer.StringTypeFormatter },\r\n // { headerName: \"CC\", field: \"CCSeverityLevelGenset\", width: 65, cellRenderer: Formatters.stringTypeFormatter }, \r\n // { headerName: \"OEM\", field: \"OEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Dry ID\", field: \"AssetNumber\", cellRenderer: CellRenderer.StringTypeFormatter, width: 190 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: CellRenderer.StringTypeFormatter, width: 190 },\r\n { headerName: \"Event\", field: \"EventDescription\", cellRenderer: CellRenderer.StringTypeFormatter, width: 215 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 190 },\r\n ];\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n //alert(this.state.pageSize);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass DryForwardCommandParams {\r\n SelectedDrys: server.DryStatusData[];\r\n CommandName: string;\r\n TempValue: string;\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","module.exports = \"data:image/png;base64,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\"","import * as React from 'react';\r\nimport MultiSelectListBox from 'react-multiselect-listbox';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport $ from 'jquery';\r\nimport forEach from 'lodash/forEach';\r\nimport { GridReeferStatusToolBar } from '../sharedcomponents/GridReeferStatusToolBar';\r\nimport { GridReeferHistoryToolBar } from '../sharedcomponents/GridReeferHistoryToolBar';\r\nimport { GridToolBarExcel } from './../sharedcomponents/GridToolBarExcel';\r\nimport { GridGensetStatusToolBar } from '../sharedcomponents/GridGensetStatusToolBar';\r\nimport { GridGensetHistoryToolBar } from '../sharedcomponents/GridGensetHistoryToolBar';\r\n/* Start WI 27261*/\r\nimport { GensetHistoryGrid } from '../childcomponents/GensetHistoryGrid';\r\nimport { ReeferHistoryGrid } from '../childcomponents/ReeferHistoryGrid';\r\nimport { DryHistoryGrid } from '../childcomponents/DryHistoryGrid';\r\nimport { ChassisHistoryGrid } from '../childcomponents/ChassisHistoryGrid';\r\nimport { ReeferMapGrid } from '../childcomponents/ReeferMapGrid';\r\n/* End WI 27261*/\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\nvar self;\r\nvar prefChanged: boolean = false;\r\n\r\nexport interface GridColumnPreference {\r\n selectedKeys: any;\r\n exportColumns: any;\r\n copyToHistory: boolean;\r\n saveRowGroups: boolean;\r\n}\r\n\r\nexport class GridColumnPreferences extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n selectedKeys: [],\r\n exportColumns: [],\r\n copyToHistory: true,\r\n saveRowGroups: this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false\r\n };\r\n\r\n self = this;\r\n\r\n this.LoadDefaultGridColumns(this.props.functionId);\r\n }\r\n\r\n LoadDefaultGridColumns(functionId: any) {\r\n prefChanged = false;\r\n this.setState({ exportColumns: [], selectedKeys: [] });\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //this.setState({ exportColumns: data });\r\n this.BindSavedPreferenceData(functionId, data);\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n var functionId = this.props.functionId;\r\n if (functionId == 41 || functionId == 46 || functionId == 48 || functionId == 61) { //WI 26721\r\n if ($(\"#divCopyToHistory\").hasClass(\"d-none\")) $('#divCopyToHistory').removeClass('d-none');\r\n }\r\n else {\r\n if (!$(\"#divCopyToHistory\").hasClass(\"d-none\")) $('#divCopyToHistory').addClass('d-none');\r\n }\r\n //if (functionId == 42 || functionId == 47 || functionId == 49 || functionId == 62 || functionId == 66) \r\n // document.getElementById(\"CopyToHistoryFooter\").classList.remove(\"justify-content-between\");\r\n //else \r\n // document.getElementById(\"CopyToHistoryFooter\").classList.add(\"justify-content-between\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ copyToHistory: true });\r\n var functionId = nextprops.functionId;\r\n if (functionId != undefined && functionId != null && functionId != \"\") {\r\n if (functionId == 41 || functionId == 46 || functionId == 48 || functionId == 61) { //WI 26721\r\n if ($(\"#divCopyToHistory\").hasClass(\"d-none\")) $('#divCopyToHistory').removeClass('d-none');\r\n }\r\n else {\r\n if (!$(\"#divCopyToHistory\").hasClass(\"d-none\")) $('#divCopyToHistory').addClass('d-none');\r\n }\r\n this.LoadDefaultGridColumns(functionId);\r\n }\r\n //if (functionId == 42 || functionId == 47 || functionId == 49 || functionId == 62 || functionId == 66) \r\n // document.getElementById(\"CopyToHistoryFooter\").classList.remove(\"justify-content-between\");\r\n //else\r\n // document.getElementById(\"CopyToHistoryFooter\").classList.add(\"justify-content-between\");\r\n }\r\n\r\n HideAllGridColumns() {\r\n //var defaultColumns = this.state.ExportColumns;\r\n //var allColumnsNames = defaultColumns.map(({ ColumnNm }) => ColumnNm); \r\n var defaultColumns = self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //var allColumnsNames = defaultColumns.filter(x => x.getId());\r\n self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n }\r\n\r\n ShowHideGridColumns(columnNames: any) {\r\n self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n //$.each(columnNames, function (index, value) {\r\n // self.props.gridApiParams.gridOptionsWrapper.columnApi.moveColumn(value, index);\r\n //});\r\n self.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n }\r\n\r\n static StatusGridPreferenceColumns(functionId: any, gridApiParams: any, gridPreferencesData: any, formName: any) {\r\n //$('#globalLoader').show();\r\n var dbPreID: any = 0; //RCNG 5353 Fix\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerPreferenceData?FunctionId=' + functionId + '&DashboardPreferenceId=' + dbPreID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var columnNames = null;\r\n if (gridPreferencesData != null && gridPreferencesData.length > 0) {\r\n var preferenceData = JSON.parse(gridPreferencesData[0].SearchData);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== customerSelectedColumns.indexOf(value));\r\n }\r\n else {\r\n if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n //columnNames = preferenceData.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors).concat(data.CustomerAttributes);//WI 26721\r\n columnNames = userColumnNames.filter(value => -1 !== defaultCustomerColumns.indexOf(value));\r\n }\r\n else\r\n columnNames = preferenceData.SelectedColumnValues;\r\n }\r\n\r\n \r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //var allColumnsNames = defaultColumns.map(function (v, i) { return v.colId });\r\n //var customColumns = differenceWith(columnNames, allColumnsNames, isEqual);\r\n //if (customColumns.length > 0) {\r\n // var selectedColumns = difference(columnNames, customColumns);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(selectedColumns, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(selectedColumns, true);\r\n //}\r\n //else {\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //}\r\n }\r\n else if (preferenceData.SelectedRowGroups != null && preferenceData.SelectedRowGroups.length >= 0) {\r\n //var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(customerSelectedColumns, true);\r\n }\r\n else if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors).concat(data.CustomerAttributes);//WI 26721\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n }\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n }\r\n\r\n } else if (data.CustomerPreference != null) {\r\n var preferenceData = JSON.parse(data.CustomerPreference);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n columnNames = preferenceData.SelectedColumnValues;\r\n\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n\r\n //var allColumnsNames = defaultColumns.map(function (v, i) { return v.colId });\r\n //var customColumns = differenceWith(columnNames, allColumnsNames, isEqual);\r\n //if (customColumns.length > 0) {\r\n // var selectedColumns = difference(columnNames, customColumns);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(selectedColumns, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(selectedColumns, true);\r\n //}\r\n //else {\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n // gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //}\r\n }\r\n }\r\n else {\r\n if (functionId == 66) {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n var reqColumns = defaultColumns.filter(x => x.colId != \"TWState\" && x.colId != \"TWTime\");\r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(reqColumns, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(reqColumns, true);\r\n }\r\n else {\r\n //var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true); \r\n if (data.DefaultCustomerPreference != null) {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors).concat(data.CustomerAttributes);//WI 26721\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n }\r\n }\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n }\r\n if (formName == \"ReeferStatusGrid\") {\r\n setTimeout(() => {\r\n GridReeferStatusToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n }, 500);\r\n }\r\n else if (formName == \"GensetStatusGrid\") {\r\n setTimeout(() => {\r\n GridGensetStatusToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n }, 500);\r\n }\r\n else if (formName == \"ReeferGrid\" || formName == \"GensetStatus\") {\r\n setTimeout(() => {\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n }, 500);\r\n }\r\n });\r\n }\r\n\r\n static HistoryGridPreferenceColumns(functionId: any, gridApiParams: any, gridPreferencesData: any, formName: any) {\r\n //$('#globalLoader').show();\r\n var dbPreID: any = 0;\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerPreferenceData?FunctionId=' + functionId + '&DashboardPreferenceId=' + dbPreID;;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var columnNames = null;\r\n if (gridPreferencesData != null && gridPreferencesData.length > 0) {\r\n var preferenceData = JSON.parse(gridPreferencesData[0].SearchData);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== customerSelectedColumns.indexOf(value));\r\n }\r\n else {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n //columnNames = preferenceData.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors);\r\n columnNames = userColumnNames.filter(value => -1 !== defaultCustomerColumns.indexOf(value));\r\n }\r\n\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //var allColumnsNames = defaultColumns.filter(x => x.getId());\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n //$.each(columnNames, function (index, value) {\r\n // gridApiParams.gridOptionsWrapper.columnApi.moveColumn(value, index);\r\n //});\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //$('#globalLoader').hide();\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(customerSelectedColumns, true);\r\n }\r\n else if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n }\r\n else {\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n }\r\n }\r\n\r\n }\r\n else if (data.CustomerPreference != null) {\r\n var preferenceData = JSON.parse(data.CustomerPreference);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n\r\n columnNames = preferenceData.SelectedColumnValues;\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //var allColumnsNames = defaultColumns.filter(x => x.getId());\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(columnNames, 0);\r\n //$.each(columnNames, function (index, value) {\r\n // gridApiParams.gridOptionsWrapper.columnApi.moveColumn(value, index);\r\n //});\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(columnNames, true);\r\n //$('#globalLoader').hide();\r\n }\r\n }\r\n else {\r\n //var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n //gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, true);\r\n ////$('#globalLoader').hide();\r\n\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.DeviceSensors);\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n /*var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();*/\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultCustomerColumns, true);\r\n\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnVisible('0', false);\r\n }\r\n\r\n if (formName == \"ReeferHistoryGrid\") {\r\n setTimeout(() => {\r\n GridReeferHistoryToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n }, 200);\r\n }\r\n else if (formName == \"GensetHistoryGrid\") {\r\n setTimeout(() => {\r\n GridGensetHistoryToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n }, 200);\r\n }\r\n\r\n else if (formName == \"ReeferHistory\" || formName == \"GensetHistory\") {\r\n setTimeout(() => {\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n BindSavedPreferenceData(functionId: any, exportCols: any[]) {\r\n $('#globalLoader').show();\r\n var dashboardPreferenceId: any = this.props.dashboardPreferenceId;\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetDashboardWidgetsSearches?dashboardPreferenceId='+dashboardPreferenceId );\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if(data != null && data.length > 0)\r\n {\r\n var widgetPreferenceData: any = data;\r\n var widgetId: any = this.props.widgetId;\r\n var gridPreferences: any = widgetPreferenceData.filter(x=>x.DashboardWidgetId == widgetId);\r\n if(gridPreferences != null && gridPreferences.length>0){\r\n var preferenceData = JSON.parse(gridPreferences[0].SearchData);\r\n if (preferenceData.SelectedColumnIds != null && preferenceData.SelectedColumnIds != undefined) {\r\n var userSelectedKeys = preferenceData.SelectedColumnIds;\r\n var defaultKeys = exportCols.map(item => item.InterfaceExportColumnId);\r\n var selectedKeys:any = [];\r\n forEach(userSelectedKeys, function (key) { //RCNG-2320\r\n if ($.inArray(key, defaultKeys) !== -1)\r\n selectedKeys.push(key);\r\n }); \r\n //var selectedKeys = defaultKeys.filter(value => -1 !== userSelectedKeys.indexOf(value));//RCNG-1646\r\n\r\n this.setState({ exportColumns: exportCols, selectedKeys: selectedKeys });\r\n }\r\n else {\r\n var defaultKeys = exportCols.map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, selectedKeys: defaultKeys });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n else {\r\n //var defaultKeys = exportCols.filter(item => item.IsRequired == true).map(item => item.InterfaceExportColumnId);\r\n if (functionId == 66) {\r\n var defaultKeys = exportCols.filter(x => x.ColumnNm != \"TWState\" && x.ColumnNm != \"TWTime\").map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, selectedKeys: defaultKeys });\r\n }\r\n else {\r\n var defaultKeys = exportCols.map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, selectedKeys: defaultKeys });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n else {\r\n //var defaultKeys = exportCols.filter(item => item.IsRequired == true).map(item => item.InterfaceExportColumnId);\r\n if (functionId == 66) {\r\n var defaultKeys = exportCols.filter(x => x.ColumnNm != \"TWState\" && x.ColumnNm != \"TWTime\").map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, selectedKeys: defaultKeys });\r\n }\r\n else {\r\n var defaultKeys = exportCols.map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: exportCols, selectedKeys: defaultKeys });\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n });\r\n \r\n }\r\n\r\n ResetGridPreferences() {\r\n prefChanged = true;\r\n var data = this.state.exportColumns;\r\n //var defaultKeys = data.filter(item => item.IsRequired == true).map(item => item.InterfaceExportColumnId);\r\n var defaultKeys = data.map(item => item.InterfaceExportColumnId);\r\n this.setState({ exportColumns: data, selectedKeys: defaultKeys });\r\n }\r\n\r\n static ResetGridColumns(functionId: any, gridApiParams: any, formName: any) {\r\n $('#globalLoader').show();\r\n var exportColumns = null;\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n\r\n var defaultColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n var exportColumns = data;\r\n var selectedColumns = [];\r\n var selectedColumnsIds = [];\r\n var saveRowGroups = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0\r\n $.each(exportColumns, function (index, value) {\r\n if (data.length > 0) {\r\n var preferenceColumnNames = data[index].ColumnNm;\r\n var preferenceColumnIds = data[index].InterfaceExportColumnId;\r\n selectedColumnsIds.push(preferenceColumnIds);\r\n selectedColumns.push(preferenceColumnNames);\r\n }\r\n });\r\n\r\n var rowGroupedArray = [];\r\n if (saveRowGroups) {\r\n if (gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns() != null && gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0) {\r\n for (var i = 0; i < gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length; i++) {\r\n // Validation \r\n if (selectedColumns.indexOf(gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId) !== -1) {\r\n rowGroupedArray.push(gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId)\r\n }\r\n }\r\n }\r\n }\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var data1 = { SelectedColumnIds: selectedColumnsIds, SelectedColumnValues: selectedColumns, SelectedRowGroups: rowGroupedArray };\r\n //var data = { SelectedColumnIds: self.state.targetKeys, SelectedColumnValues: selectedColumns };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(data1), CopyToHistory: false };//WI 26721\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.moveColumns(selectedColumns, 0);\r\n gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(selectedColumns, true);\r\n\r\n if (formName == \"ReeferStatusGrid\")\r\n GridReeferStatusToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"GensetStatusGrid\")\r\n GridGensetStatusToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"ReeferGrid\" || formName == \"GensetStatus\")\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"ReeferHistoryGrid\")\r\n GridReeferHistoryToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"GensetHistoryGrid\")\r\n GridGensetHistoryToolBar.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (formName == \"ReeferHistory\" || formName == \"GensetHistory\")\r\n GridToolBarExcel.GetColumns(gridApiParams.gridOptionsWrapper.gridOptions);\r\n\r\n $('#globalLoader').hide();\r\n });\r\n });\r\n }\r\n\r\n SaveGridPreferences() {\r\n if (self.state.selectedKeys.length == 0)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one column to save grid preference.\");\r\n else {\r\n var selectedCols = this.state.selectedKeys;\r\n if (selectedCols.length > 0 && prefChanged) {\r\n RCNGWindow.ConfirmWindow.showConfirmBox('Columns are modified. Do you want to save the changes?', this.onOKSubmit.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else if (selectedCols.length > 0 && !prefChanged) {\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Alert', 'Columns are not modified, please modify the grid preference columns.', this.closeConfirmation.bind(this));//RCNG-4191\r\n }\r\n else {\r\n this.onOKSubmit();\r\n }\r\n }\r\n }\r\n\r\n onOKSubmit() {\r\n if (self.state.selectedKeys.length > 0) {\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n this.HideAllGridColumns();\r\n \r\n var defaultColumns = this.state.exportColumns;\r\n var selectedColumnIds = self.state.selectedKeys;\r\n var selectedColumns = [];\r\n //var rows = this.props.gridApiParams.gridOptionsWrapper.columnApi.getRowGroupColumns().slice();\r\n $.each(selectedColumnIds, function (index, value) {\r\n var data = defaultColumns.filter(x => x.InterfaceExportColumnId == parseInt(value));\r\n if (data.length > 0) {\r\n var preferenceColumns = data[0].ColumnNm;\r\n selectedColumns.push(preferenceColumns);\r\n }\r\n });\r\n var rowGroupedArray = [];\r\n if (this.state.saveRowGroups) {\r\n if (this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns() != null && this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0) {\r\n for (var i = 0; i < this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length; i++) {\r\n // Validation \r\n if (selectedColumns.indexOf(this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId) !== -1) {\r\n rowGroupedArray.push(this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns()[i].colId)\r\n }\r\n }\r\n }\r\n }\r\n //var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserGridPreferences';\r\n var colsData = { SelectedColumnIds: self.state.selectedKeys, SelectedColumnValues: selectedColumns, SelectedRowGroups: rowGroupedArray };\r\n //var data = { SelectedColumnIds: self.state.targetKeys, SelectedColumnValues: selectedColumns };\r\n var preferencedata = { UserId: 0, FunctionId: this.props.functionId, WidgetId: this.props.widgetId, DashboardPreferenceId: this.props.dashboardPreferenceId, RevisionNum: this.props.revisionNum, PreferenceData: JSON.stringify(colsData), CopyToHistory: self.state.copyToHistory }; //WI 26721\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => { \r\n this.ShowHideGridColumns(selectedColumns);\r\n this.props.closeModelDialog();\r\n if(data == \"RevisionNum Invalid\") {\r\n $('#globalLoader').hide();\r\n this.props.validateRevisionNum(self.props.dashboardPreferenceId);\r\n }\r\n else { \r\n var gridPrefData: any = [];\r\n this.HideAllGridColumns();\r\n this.props.refreshRevisionNum(self.props.dashboardPreferenceId, false); \r\n this.ShowHideGridColumns(selectedColumns);\r\n if (self.props.formname == \"ReeferStatusGrid\") {\r\n GridReeferStatusToolBar.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n if(self.state.copyToHistory) {\r\n var copyGridPrefData: any = { SearchData: JSON.stringify(colsData), CopyToHistory: self.state.copyToHistory }; \r\n gridPrefData.push(copyGridPrefData);\r\n ReeferHistoryGrid.GetReeferHistoryGridPrefColumns(gridPrefData); //WI 26721\r\n }\r\n }\r\n else if (self.props.formname == \"ReeferGrid\" || self.props.formName == \"GensetStatus\")\r\n GridToolBarExcel.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (self.props.formname == \"ReeferHistoryGrid\")\r\n GridReeferHistoryToolBar.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (self.props.formname == \"ReeferHistory\" || self.props.formName == \"GensetHistory\")\r\n GridToolBarExcel.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (self.props.formname == \"GensetHistoryGrid\")\r\n GridGensetHistoryToolBar.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n else if (self.props.formname == \"GensetStatusGrid\") { //WI 26721\r\n GridGensetStatusToolBar.GetColumns(this.props.gridApiParams.gridOptionsWrapper.gridOptions);\r\n if(self.state.copyToHistory) {\r\n var copyGridPrefData: any = { SearchData: JSON.stringify(colsData), CopyToHistory: self.state.copyToHistory }; \r\n gridPrefData.push(copyGridPrefData);\r\n GensetHistoryGrid.GetGensetHistoryGridPrefColumns(gridPrefData);\r\n }\r\n }\r\n else if (self.props.formname == \"DryStatusGrid\") { //WI 26721\r\n if(self.state.copyToHistory) {\r\n var copyGridPrefData: any = { SearchData: JSON.stringify(colsData), CopyToHistory: self.state.copyToHistory }; \r\n gridPrefData.push(copyGridPrefData);\r\n DryHistoryGrid.GetDryHistoryGridPrefColumns(gridPrefData);\r\n }\r\n }\r\n else if (self.props.formname == \"ChassisStatusGrid\") { //WI 26721\r\n if(self.state.copyToHistory) {\r\n var copyGridPrefData: any = { SearchData: JSON.stringify(colsData), CopyToHistory: self.state.copyToHistory }; \r\n gridPrefData.push(copyGridPrefData);\r\n ChassisHistoryGrid.GetChassisHistoryGridPrefColumns(gridPrefData);\r\n }\r\n }\r\n\r\n else if (self.props.formname == \"ReeferMapGrid\") { //RCNG-5198\r\n ReeferMapGrid.GetReeferMapGridPreferenceColumns();\r\n }\r\n else if (self.props.formname == \"DryStatusGrid\") //WI 26721\r\n DryHistoryGrid.GetDryHistoryGridPrefColumns(gridPrefData);\r\n else if (self.props.formname == \"ChassisStatusGrid\") //WI 26721\r\n ChassisHistoryGrid.GetChassisHistoryGridPrefColumns(gridPrefData);\r\n $('#globalLoader').hide();\r\n }\r\n \r\n });\r\n \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one column to save grid preference.\");\r\n }\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n CancelAction() {\r\n this.props.closeModelDialog();\r\n }\r\n\r\n SaveRowGroupsChange = () => {\r\n this.setState({\r\n saveRowGroups: !this.state.saveRowGroups,\r\n });\r\n }\r\n\r\n onCopyToHistoryCheck(event: React.FormEvent) { //WI 26721 \r\n this.setState({ copyToHistory: event.currentTarget.checked });\r\n }\r\n\r\n public render() {\r\n var chkboxCss: any = { 'margin-left': '35px', 'position': 'relative', 'font-size': '15px', 'font-weight': 'bold' };\r\n var defaultColumns = this.state.exportColumns;\r\n var dataSource = [];\r\n if (defaultColumns != undefined && defaultColumns != null && defaultColumns.length > 0) {\r\n dataSource = defaultColumns.map(function (col) {\r\n return (\r\n { value: col.InterfaceExportColumnId, desc: col.ColumnDisplayNm }\r\n );\r\n });\r\n }\r\n\r\n return
    \r\n
    \r\n
    \r\n Selected Columns / Displayed\r\n\r\n All Columns / Not Displayed\r\n
    \r\n
    \r\n\r\n >)\",\r\n removeAll: \"Remove All (<<)\",\r\n selectedInfo: \"Selected Columns / Displayed\"\r\n }}\r\n sortable={true}\r\n options={dataSource}\r\n textField=\"desc\"\r\n valueField=\"value\"\r\n value={this.state.selectedKeys}\r\n rowHeight={50}\r\n onSelect={({ item, sortedList }) => {\r\n prefChanged = true;\r\n this.setState({ selectedKeys: sortedList.map(i => i.value) });\r\n }}\r\n onRemove={({ item }) => {\r\n prefChanged = true;\r\n this.setState({ selectedKeys: [...this.state.selectedKeys.filter(i => i !== item.value)] });\r\n }}\r\n onSelectAll={selectedItems => {\r\n prefChanged = true;\r\n const selected = [\r\n ...this.state.selectedKeys,\r\n ...selectedItems.map(item => item.value)\r\n ];\r\n this.setState({\r\n selectedKeys: selected\r\n })\r\n }}\r\n onRemoveAll={() => {\r\n this.setState({\r\n selectedKeys: []\r\n })\r\n }}\r\n onSort={({ sortedList }) => {\r\n prefChanged = true;\r\n this.setState({\r\n selectedKeys: [...sortedList.map(i => i.value)]\r\n })\r\n }}\r\n onSearch={(itemsList, textField, query) => {\r\n var items: any = itemsList.items;\r\n if (items.length > 0 && itemsList.query != \"\") {\r\n var filterlist: any = items.filter(i => i.desc.toUpperCase().includes(itemsList.query.toUpperCase()));\r\n return filterlist;\r\n }\r\n else\r\n return items;\r\n }}\r\n\r\n />\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    {/*WI 26721*/}\r\n \r\n Copy To History\r\n
    \r\n\r\n
    Changes here will update the active dashboard
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n","module.exports = \"data:image/png;base64,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\"","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport DateFormat from 'dateformat';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\n\r\ninterface CommentsState {\r\n SelectedReefers: any[];\r\n UserComments: server.UserMessageBoardData;\r\n RowData: server.UserMessagesUI[];\r\n SelectedReefer: string;\r\n UnitMasterId: any;\r\n MessageBoardId: any;\r\n commandUnits: server.ReeferCommandUnits[];\r\n DeleteMessage: string;\r\n DeleteParams: any;\r\n assetMasterID: number;//WI-23781\r\n}\r\n\r\nvar defaultUserComments: server.UserMessageBoardData = {\r\n MessageBoardID: 0, UserID: 0, Message: '', CreatedDTTM: null, AssetMasterID: 0\r\n};\r\nvar self;\r\nexport class Comments extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n this.state = {\r\n SelectedReefers: [], UserComments: defaultUserComments, RowData: [], SelectedReefer: '', commandUnits: [], DeleteMessage: '',\r\n DeleteParams: null, UnitMasterId: 0, MessageBoardId: null, assetMasterID: 0\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n var reeferData = this.props.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.ReeferID != null) {\r\n this.setState({ RowData: [], SelectedReefers: reeferData, SelectedReefer: reeferData.ReeferID, UnitMasterId: reeferData.UnitMasterID, assetMasterID: this.props.AssetMasterID });\r\n if (reeferData.UnitMasterID != undefined && reeferData.UnitMasterID != null) {\r\n this.GetCommentsData(reeferData, this.props.AssetMasterID);//WI-23781\r\n }\r\n }\r\n else {\r\n this.setState({ RowData: [], SelectedReefers: reeferData, SelectedReefer: reeferData.ReeferID, UnitMasterId: reeferData.AssetMasterID, assetMasterID: this.props.AssetMasterID });\r\n if (reeferData.AssetMasterID != undefined && reeferData.AssetMasterID != null) {\r\n this.GetCommentsData(reeferData, this.props.AssetMasterID);//WI-23781\r\n }\r\n\r\n }\r\n\r\n this.performShowhidebuttons(false);\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n var reeferData = nextProps.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.ReeferID != null) {\r\n this.setState({ RowData: [], SelectedReefers: reeferData, SelectedReefer: reeferData.ReeferID, UnitMasterId: reeferData.AssetMasterID, assetMasterID: nextProps.AssetMasterID });\r\n if (nextProps.AssetMasterID != undefined && nextProps.AssetMasterID != null) {\r\n this.GetCommentsData(reeferData, nextProps.AssetMasterID);\r\n }\r\n }\r\n else {\r\n this.setState({ RowData: [], SelectedReefers: reeferData, SelectedReefer: reeferData.AssetNumber, UnitMasterId: reeferData.AssetMasterID, assetMasterID: nextProps.AssetMasterID });\r\n if (nextProps.AssetMasterID != undefined && nextProps.AssetMasterID != null) {\r\n this.GetCommentsData(reeferData, nextProps.AssetMasterID);\r\n }\r\n\r\n }\r\n }\r\n\r\n dateTimeConverter(dttmValue) {\r\n if (dttmValue == \"\" || dttmValue == null) {\r\n return '-NA-';\r\n }\r\n else {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(dttmValue);\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy h:MM:ss TT');\r\n }\r\n }\r\n\r\n closeModel() {\r\n $('#CommentModal').hide();\r\n $('#deleteCommentModal').hide();\r\n $('#deleteAllCommentModal').hide();\r\n }\r\n\r\n public AddComment(): void {\r\n if (this.state.SelectedReefer != undefined) {\r\n $('#AddComment').addClass('active');\r\n $('#RefreshComment').removeClass('active');\r\n $('#DeleteAll').removeClass('active');\r\n $('#CommentModal').show();\r\n }\r\n }\r\n\r\n public RefreshComment(): void {\r\n if (this.state.SelectedReefer != undefined) {\r\n $('#globalLoader').show();\r\n $('#AddComment').removeClass('active');\r\n $('#RefreshComment').addClass('active');\r\n $('#DeleteAll').removeClass('active');\r\n this.RefreshCommentsData(this.state.SelectedReefers, this.props.AssetMasterID);\r\n }\r\n }\r\n\r\n public DeleteAll(): void {\r\n if (this.state.SelectedReefer != undefined) {\r\n $('#AddComment').removeClass('active');\r\n $('#RefreshComment').removeClass('active');\r\n $('#DeleteAll').addClass('active');\r\n this.setState({ DeleteMessage: '' });\r\n this.GetCommentsDataForDeleteAll(this.state.SelectedReefers, this.props.AssetMasterID);\r\n }\r\n }\r\n\r\n public GetCommentsDataForDeleteAll(reeferData: any, AssetMasterID: number): void {\r\n /* WI-23781\r\n var unitMasterID;\r\n if (reeferData.UnitMasterID != undefined) {\r\n unitMasterID = reeferData.UnitMasterID;\r\n }\r\n var url = Config.ApiBaseUrl + '/api/Comments/GetComments?UnitMasterId=' + unitMasterID;\r\n */\r\n var url = Config.ApiBaseUrl + '/api/Comments/GetComments?AssetMasterID=' + AssetMasterID;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n this.setState({ DeleteMessage: 'Are you sure you want to delete All Comments?' });\r\n this.performShowhidebuttons(false);\r\n }\r\n else {\r\n this.setState({ DeleteMessage: 'There are no comments to delete.' });\r\n this.performShowhidebuttons(true);\r\n }\r\n\r\n $('#deleteAllCommentModal').show();\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n performYesActionDeleteAll(params: any) {\r\n this.deleteAllComments();\r\n this.closeModel();\r\n }\r\n\r\n deleteAllComments() {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/Comments/DeleteAllComments?AssetMasterID=' + this.props.AssetMasterID;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Delete All Comments\", data);\r\n this.GetCommentsData(this.state.SelectedReefers, this.props.AssetMasterID);\r\n });\r\n }\r\n\r\n performNoActionDeleteAll() {\r\n $('#deleteAllCommentModal').hide();\r\n }\r\n\r\n performYesAction(params: any) {\r\n var par = this.state.MessageBoardId;\r\n this.deleteComment(par);\r\n this.closeModel();\r\n }\r\n\r\n deleteComment(params: any) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/Comments/DeleteComments?MessageBoardId=' + params;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Delete Comment\", data);\r\n this.GetCommentsData(this.state.SelectedReefers, this.props.AssetMasterID);\r\n });\r\n }\r\n\r\n performNoAction() {\r\n this.closeModel();\r\n }\r\n\r\n performShowhidebuttons(isOkvisible) {\r\n if (isOkvisible) {\r\n $(\"#btnYes\").hide();\r\n $(\"#btnNo\").hide();\r\n $(\"#btnOk\").show();\r\n }\r\n else {\r\n $(\"#btnYes\").show();\r\n $(\"#btnNo\").show();\r\n $(\"#btnOk\").hide();\r\n }\r\n }\r\n\r\n dateDiffrence(date: any) {\r\n var stLatest = \"\";\r\n if (date) {\r\n var today = new Date();\r\n var past = new Date(date);\r\n var diff = Math.floor(today.getTime() - past.getTime());\r\n var day = 1000 * 60 * 60 * 24;\r\n var days = Math.floor(diff / day);\r\n if (days < 1) {\r\n stLatest = \"[Latest]\";\r\n } else {\r\n stLatest = \"\";\r\n }\r\n }\r\n\r\n return stLatest;\r\n }\r\n\r\n SaveAction() {\r\n $('#globalLoader').show();\r\n var userComments: server.UserMessageBoardData = JSON.parse(JSON.stringify(this.state.UserComments));\r\n if ((this.state.UserComments != null && this.state.UserComments.Message.trim() == \"\")) {\r\n PopupWindow.showErrorMessage(\"Comments\", \"Please enter comments.\");\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n else {\r\n userComments.AssetMasterID = this.props.AssetMasterID;//this.state.UnitMasterId;\r\n userComments.CreatedDTTM = new Date();\r\n var url = Config.ApiBaseUrl + '/api/Comments/SaveComments';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(userComments), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Add Comment\", data);\r\n var userComments: server.UserMessageBoardData = JSON.parse(JSON.stringify(this.state.UserComments));\r\n userComments.Message = '';\r\n this.setState({ UserComments: userComments });\r\n this.GetCommentsData(this.state.SelectedReefers, this.props.AssetMasterID);\r\n });\r\n }\r\n\r\n this.closeModel();\r\n }\r\n\r\n public MessageOnChange(event: any): void {\r\n const name = event.target.name;\r\n const value = event.target.value;\r\n var userComments: server.UserMessageBoardData = JSON.parse(JSON.stringify(this.state.UserComments));\r\n userComments.Message = value;\r\n this.setState({ UserComments: userComments });\r\n }\r\n\r\n removeComment(commentId: any) {\r\n this.setState({ MessageBoardId: commentId, DeleteMessage: 'Are you sure you want to delete this Comment?' }, () => { $('#deleteCommentModal').show(); });\r\n }\r\n\r\n CancelAction() {\r\n $('#CommentModal').hide();\r\n }\r\n\r\n public GetCommentsData(reeferData: any, AssetMasterID: number): void {\r\n /*\r\n WI-23781\r\n var unitMasterID;\r\n if (reeferData.UnitMasterID != undefined) {\r\n unitMasterID = reeferData.AssetMasterID;\r\n }\r\n var url = Config.ApiBaseUrl + '/api/Comments/GetComments?UnitMasterId=' + unitMasterID;\r\n */\r\n var url = Config.ApiBaseUrl + '/api/Comments/GetComments?AssetMasterID=' + AssetMasterID;\r\n\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n });\r\n }\r\n public RefreshCommentsData(reeferData: any, AssetMasterID: number): void {\r\n /* WI-23781\r\n var unitMasterID;\r\n if (reeferData.UnitMasterID != undefined) {\r\n unitMasterID = reeferData.UnitMasterID;\r\n }\r\n var url = Config.ApiBaseUrl + '/api/Comments/GetComments?UnitMasterId=' + unitMasterID;\r\n */\r\n var url = Config.ApiBaseUrl + '/api/Comments/GetComments?AssetMasterID=' + AssetMasterID;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n this.setState({ RowData: data });\r\n });\r\n }\r\n\r\n public render() {\r\n return (\r\n
    \r\n {this.LoadCommentsData()}\r\n
    \r\n );\r\n }\r\n\r\n LoadCommentsData() {\r\n var self = this, commentsList = this.state.RowData;\r\n var commentsList = this.state.RowData;\r\n return (
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Delete Comments
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {this.state.DeleteMessage}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Delete Comments
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {this.state.DeleteMessage}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Add Comments
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n \r\n \r\n \r\n

    \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n
      \r\n {Object.keys(commentsList).map(function (comment) {\r\n var formattedDate = self.dateTimeConverter(commentsList[comment].CreatedDTTM);\r\n var latestStr = self.dateDiffrence(formattedDate);\r\n return (\r\n
    • \r\n
      \r\n

      {commentsList[comment].Message}

      \r\n

      {commentsList[comment].Username} Posted on {formattedDate} {latestStr}

      \r\n \r\n
      \r\n
    • \r\n )\r\n })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    )\r\n }\r\n}","import * as React from 'react';\r\nimport $ from 'jquery';\r\nimport Formatters from '../actions/Formatters';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar ProcessfirstCellOnlyRowIndex = -1;\r\nvar gridApiParams;\r\nclass ExportAction {\r\n static ExportSelectedRows(GridApiParams, formName) {\r\n gridApiParams = GridApiParams;\r\n //gridApiParams = [];\r\n //gridApiParams.push(gridApiParams);\r\n var IsGroupsExist = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false;\r\n if (IsGroupsExist) {\r\n gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false, //columnKeys: columnsToBeExported, \r\n onlySelected: true,\r\n allColumns: true,\r\n processGroupHeaderCallback: myGroupHeaderCallback, processHeaderCallback: myHeaderCallback,\r\n processRowGroupCallback: myRowGroupCallback, processCellCallback: myCellCallback,\r\n fileName: getFileName(formName),\r\n sheetName: getFileName(formName)\r\n })\r\n }\r\n else {\r\n var allColumns = gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n for (var i = allColumns.length - 1; i >= 0; i--) {\r\n if (allColumns[i].colDef.headerName === 'Group') {\r\n allColumns.splice(i, 1);\r\n }\r\n }\r\n gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: true,\r\n columnKeys: allColumns,\r\n skipGroups: true,\r\n onlySelected: true,\r\n processGroupHeaderCallback: myGroupHeaderCallback, processHeaderCallback: myHeaderCallback,\r\n processRowGroupCallback: myRowGroupCallback, processCellCallback: myCellCallback,\r\n fileName: getFileName(formName),\r\n sheetName: getFileName(formName)\r\n })\r\n }\r\n setTimeout(() => {\r\n showMessageAndClosePopup(); \r\n }, 1000);\r\n\r\n }\r\n\r\n\r\n}\r\nexport default ExportAction;\r\n\r\nfunction showMessageAndClosePopup() {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n}\r\nfunction getFileName(formName: string) {\r\n var currentDate = new Date();\r\n return formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds();\r\n}\r\n function myGroupHeaderCallback(params) {\r\n\r\n var displayName = params.columnApi.getDisplayNameForColumnGroup(\r\n params.columnGroup\r\n );\r\n return displayName;\r\n}\r\n\r\nfunction myHeaderCallback(params) {\r\n var headerDisplayName = params.column.getColDef().headerName;\r\n switch (headerDisplayName) {\r\n case \"Event Time\": case \"Reported Time\": case \"Created On\": case \"Last Modified On\": case \"Last Updated On\": case \"Updated On\": case \"Created Time\": case \"Modified Time\":\r\n case 'StatusDate': case 'Submitted Dt': case 'Expiration Dt': case 'Status Time': case 'Submitted Time': case 'Expiration Time': case \"Door time\":\r\n case \"Event time\": case \"Receipt time\"://RCNG-1143\r\n return Formatters.TimeZoneFormatter(headerDisplayName);\r\n case \"Device temp. \": case \"Device temp \"://RCNG-1143\r\n return Formatters.TemperatureHeaderFormatter(headerDisplayName);\r\n default:\r\n return headerDisplayName;\r\n }\r\n}\r\nfunction myRowGroupCallback(params) {\r\n\r\n var indent = '--';\r\n var node = params.node;\r\n //var label = node.key.toUpperCase();\r\n\r\n var label = getGroupDisplayValueName(params);\r\n if (!node.parent.parent) {\r\n return label; // top level node, parent is root node\r\n }\r\n label = '> ' + label;\r\n // indent once per level in the row group hierarchy\r\n while (node.parent.parent) {\r\n label = indent + label;\r\n node = node.parent;\r\n }\r\n return label;\r\n\r\n} \r\n\r\nfunction getGroupDisplayValueName(params) {\r\n if (params != undefined && params != null) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n var columnDisplayName = colDef[0].colDef.headerName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && (fieldName === 'BatteryVoltage' || fieldName === 'DoorSensorBatteryVoltage'))\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n\r\n switch (fieldName) {\r\n case \"IgnitionOn\":\r\n return Formatters.GensetSwitchFormatterGroupingExcel(fieldValue);\r\n case \"GensetRunning\":\r\n return Formatters.EngineSortingFormatterGroupingExcel(fieldValue);\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM': case \"DLEventDTTM\": case 'DoorEventDtm':\r\n return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n case 'DeviceTemp':\r\n {\r\n return Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n }\r\n case 'IsInsideGeofence': case 'IsActive':\r\n {\r\n return Formatters.YesNoConverterforExcel(fieldValue);\r\n }\r\n\r\n case \"DevicePowerSourceCd\":\r\n return Formatters.PowerStateFormatterGroupingForExcel(fieldValue);//done\r\n\r\n case 'BatteryVoltage':\r\n {\r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-999') ? '-NA-' : Formatters.BattVoltageSortingGrouping(fieldValue);\r\n }\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n\r\n return Formatters.GuestReeferModeFormatterForExcel(fieldValue);\r\n }\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) return Formatters.rcdPowerSourceFormatterforExcel(fieldValue);\r\n\r\n case \"CustomerName\":\r\n {\r\n if (columnDisplayName == 'Assigned To')\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"-NA-\" : fieldValue;\r\n else\r\n return fieldValue;\r\n }\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return Formatters.RSSIFormatterGroupingForExcel(fieldValue);\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n\r\n case \"AssetType\":\r\n return Formatters.AssetTypeGrouping(fieldValue);\r\n case \"GeofenceCategoryCd\":\r\n return Formatters.GeofenceTypeGrouping(fieldValue);\r\n case \"FilerepositoryActionCD\":\r\n return Formatters.FileStatusGrouping(fieldValue);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterForExcel(fieldValue, params);\r\n case \"DoorOpen\":\r\n return Formatters.DeviceDoorFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n\r\n }\r\n}\r\nfunction myCellCallback(params) {\r\n var returnValue;\r\n\r\n if (params.node.group && ProcessfirstCellOnlyRowIndex != params.node.rowGroupIndex) {\r\n ProcessfirstCellOnlyRowIndex = params.node.rowGroupIndex\r\n if (params.node.key != null && params.node.key != undefined)\r\n return myRowGroupCallback(params);\r\n }\r\n\r\n if (params.node.group && params.column.colId === \"0\") {\r\n return myRowGroupCallback(params);\r\n }\r\n\r\n if (!params.node.group) {\r\n switch (params.column.colId) {\r\n\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID':\r\n {\r\n if (params.value == undefined || params.value == \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n case 'Name': case 'Tag': case 'Address':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.stringTypeFormatterChildFormsNew(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'Coordinates':\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GeofenceCoordinatesFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n break;\r\n case 'DeviceTemp':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM': case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'TTL': case 'ExpirationTime': case 'PTRDateTime': case \"DLEventDTTM\": case 'DoorEventDtm':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.dateTypeFormatterforExcel(params.value);\r\n }\r\n break\r\n\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasFuelSensor': case 'HasOilPressureSwitch': case 'HasDoorSensor': case 'IsDeployed':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n\r\n case 'BatteryVoltage': case 'DoorSensorBatteryVoltage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n\r\n\r\n case 'GPSLastLock': if (params.value != undefined && params.value != null) returnValue = Formatters.secondsToTimeConverterForExcel(params.node.data.GPSLastLock); break;\r\n\r\n case 'IgnitionOn': if (params.value != undefined && params.value != null) returnValue = Formatters.gensetSwitchFormatterForExcel(params.value); break;\r\n\r\n case 'CustomerName':\r\n {\r\n if (params.column.colDef.headerName == 'Assigned To')\r\n returnValue = Formatters.stringTypeFormatterFor3PExcel(params.value);\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n\r\n case \"RSSI\": if (params.value != undefined && params.value != null) returnValue = params.node.data.RSSI; break;\r\n\r\n case \"GetFileRepositoryActionDesc\": returnValue = Formatters.GetFileRepositoryActionDesc(params.value); break;\r\n\r\n case \"RunState\": returnValue = Formatters.runStateFormatterforExcel(params.node.data.RunState.toUpperCase().trim()); break;\r\n\r\n case \"RcdPowerSourceCd\": returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value); break;\r\n\r\n case 'ManufacturedDate':\r\n {\r\n returnValue = Formatters.YearFromdateTypeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = Formatters.AssetTypeFormatterForExcel(params.value);\r\n break;\r\n case 'DoorOpen':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.DeviceDoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'GeofenceCategoryCd': if (params.value != undefined && params.value != null) returnValue = Formatters.fenceTypeFormatterForExcel(params.value);\r\n break;\r\n case 'GensetRunning': {\r\n if (params.value != undefined && params.value != null) {\r\n var HasOilPressureSwitch;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HasOilPressureSwitch = gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasOilPressureSwitch;\r\n }\r\n else {\r\n HasOilPressureSwitch = false;\r\n }\r\n\r\n //if (HasOilPressureSwitch != undefined && HasOilPressureSwitch != null)\r\n var isGensetRunning = {\r\n GensetRunning: params.node.data.GensetRunning,\r\n HasOilPressureSwitch: params.node.data.HasOilPressureSwitch,\r\n OEMTypeCD: params.node.data.OEMTypeCD\r\n };\r\n returnValue = Formatters.EngFormatterforExcel(isGensetRunning);\r\n }\r\n }\r\n break;\r\n\r\n case 'DevicePowerSourceCd': {\r\n if (params.value != undefined && params.value != null) {\r\n var DeviceConfig;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceConfig = gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceConfig;\r\n }\r\n else {\r\n DeviceConfig = false;\r\n }\r\n\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n else {\r\n DeviceType = \"\";\r\n }\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: params.node.data.DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: params.node.data.DeviceType\r\n }\r\n \r\n //if (DeviceType != undefined && DeviceType != null && DeviceConfig != undefined && DeviceConfig != null)\r\n returnValue = Formatters.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'LineFrequency':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'TemperatureUnit': case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorTemp': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp': \r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var IsCargoCare = {\r\n isCargocare: params.node.data.IsCargoCare,\r\n CCSeverityLevel: params.node.data.CCSeverityLevel\r\n };\r\n returnValue = Formatters.CargoCareFormatterforExcel(IsCargoCare);\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlarmsList': returnValue = Formatters.AlarmListFormatterforExcel(params.value); break;\r\n case 'Humidity':\r\n {\r\n var isHumidity = {\r\n Humidity: params.node.data.Humidity,\r\n HumiditySetpointStatus: params.node.data.HumiditySetpointStatus\r\n };\r\n returnValue = Formatters.HumiditySettingFormatterforExcel(isHumidity);\r\n }\r\n break;\r\n case 'CondenserPressure':\r\n {\r\n var CondenserPressureData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n CondenserPressure: params.node.data.CondenserPressure\r\n };\r\n returnValue = Formatters.sensorDataPCondFormatterExcel(CondenserPressureData);\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening':\r\n {\r\n var EEVData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.node.data.EvaporatorExpansionValveOpening\r\n };\r\n returnValue = Formatters.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening':\r\n {\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: params.node.data.ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: params.node.data.SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.node.data.SuctionModulationValveOpening\r\n };\r\n returnValue = Formatters.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n break;\r\n case \"ThreePhaseCurrent\": returnValue = Formatters.Current3PhaseFormatterforExcel(params.value); break;\r\n case \"FilerepositoryActionCD\":\r\n {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\")\r\n returnValue = Formatters.GetFileRepositoryActionDesc(params.node.data.FilerepositoryActionCD);\r\n else\r\n return \"-NA-\";\r\n }\r\n break;\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGroupingForExcel(params);\r\n case 'HumiditySetpoint':\r\n {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\")\r\n returnValue = Formatters.HumiditySetpointForExcel(params.value, params.node.data.HumiditySetpointStatus);\r\n else\r\n return \"-NA-\";\r\n }\r\n break; \r\n default: {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n returnValue = params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n}\r\n","// @ts-nocheck\r\nimport $ from 'jquery';\r\nimport batterycritical from '../images/battery-critical.svg';\r\nimport batterylow from '../images/battery-low.svg';\r\nimport batterynormal from '../images/battery-normal.svg';\r\nimport PlugSolid from '../images/PlugSolid.svg';\r\nimport UnPlug from '../images/Unplug.svg';\r\n\r\nconst dryFormatter = {\r\n dryBatteryStatusSorting: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.BatteryStatus != null && params.data.BatteryStatus != undefined) {\r\n switch (params.data.BatteryStatus.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n return \"1\";\r\n case \"L\":\r\n return \"2\";\r\n case \"N\":\r\n return \"3\";\r\n }\r\n }\r\n return \"-1\";\r\n }\r\n return \"-1\";\r\n },\r\n dryBatteryStatusFormatterFilter: (params) => {\r\n\r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.BatteryStatus != null && params.data.BatteryStatus != undefined) {\r\n //var element = document.createElement(\"span\");\r\n //element.className = \"pwr_grid_icon\";\r\n //var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.BatteryStatus.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n title = \"Critical\";\r\n break;\r\n case \"L\":\r\n title = \"Low\";\r\n break;\r\n case \"N\":\r\n title = \"Normal\";\r\n break;\r\n }\r\n //element.appendChild(imageElement);\r\n //return element;\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n return title;\r\n },\r\n\r\n dryBatteryStatusFormatter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.BatteryStatus != null && params.data.BatteryStatus != undefined) {\r\n var element = document.createElement(\"span\");\r\n element.className = \"pwr_grid_icon\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.BatteryStatus.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n imageElement.src = batterycritical;\r\n break;\r\n case \"L\":\r\n imageElement.src = batterylow;\r\n break;\r\n case \"N\":\r\n imageElement.src = batterynormal;\r\n break;\r\n }\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n dryPWRSorting: (params) => {\r\n //return \"-NA-\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DryPWR != null && params.data.DryPWR != undefined) {\r\n switch (params.data.DryPWR.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n return \"1\";\r\n case \"B\":\r\n return \"2\";\r\n //case \"N\":\r\n // return \"3\";\r\n }\r\n }\r\n return \"3\";\r\n }\r\n return \"3\";\r\n },\r\n dryPwrStateFormatterFilter: (params) => {\r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DryPWR != null && params.data.DryPWR != undefined) {\r\n\r\n switch (params.data.DryPWR.toString().toUpperCase().trim()) {\r\n case \"1\":\r\n case \"A\":\r\n title = \"Powered\";\r\n break;\r\n case \"2\":\r\n case \"B\":\r\n title = \"On Battery\";\r\n break;\r\n case \"3\":\r\n title = \"-NA-\";\r\n break;\r\n }\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n return title;\r\n },\r\n pwrStateFormatterdry: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DryPWR != null && params.data.DryPWR != undefined) {\r\n var element = document.createElement(\"span\");\r\n element.className = \"pwr_grid_icon\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.DryPWR.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n element.className = \"PlugSolid\";\r\n element.title = \"Powered\"\r\n imageElement.src = PlugSolid;\r\n break;\r\n case \"B\":\r\n element.className = \"PlugSolid\";\r\n element.title = \"On Battery\"\r\n imageElement.src = UnPlug;\r\n break;\r\n }\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n //return '-NA-';\r\n return \"-NA-\";\r\n },\r\n\r\n doorFormatterFilter: (params) => {\r\n \r\n //RCNG-2227,2228\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasDoorSensor != null && params.data.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.Door1Open != null) {\r\n \r\n //if (params.data.Door1Open.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"Open\";\r\n //else\r\n // return \"Closed\";\r\n switch (params.data.Door1Open.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\"\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DoorFormatterSorting: (params) => {\r\n \r\n //RCNG-2227,2228\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasDoorSensor != null && params.data.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.Door1Open != null) {\r\n //if (params.data.Door1Open.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"1\";\r\n //else\r\n // return \"2\";\r\n switch (params.data.Door1Open.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"1\";\r\n case \"CLS\":\r\n return \"2\";\r\n case \"DIS\":\r\n return \"3\"\r\n case \"UNP\":\r\n return \"4\";\r\n case \"UNK\":\r\n return \"5\";\r\n }\r\n }\r\n else\r\n return \"5\";\r\n }\r\n else\r\n return \"4\";\r\n }\r\n else\r\n return '5';\r\n },\r\n\r\n doorFormatter: (params) => {\r\n \r\n //RCNG-2227,2228\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasDoorSensor != null && params.data.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.Door1Open != null) {\r\n //if (params.data.Door1Open.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"Open\";\r\n //else\r\n // return \"Closed\";\r\n switch (params.data.Door1Open.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\";\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n doorQuickFilterFormatter: (param) => {\r\n \r\n if (param != null && param != undefined) {\r\n if (param.value == 1)\r\n return \"Open\";\r\n else if (param.value == 2)\r\n return \"Closed\";\r\n else if (param.value == 3)\r\n return \"Sensor Error\"\r\n else if (param.value == 4)\r\n return \"No Sensor\"\r\n else if (param.value == 5)\r\n return \"*No Door\"\r\n else\r\n return \"-NA-\";\r\n }\r\n },\r\n\r\n SpeedConverter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var speedUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).SpeedUnitCd.trim();\r\n if (params.value != null && params.value != '-NA-') {\r\n if (speedUnitCd.toLowerCase() == \"kmh\") {\r\n var param = params.value;\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n var param1 = (tempVal / 1.609344);\r\n return parseFloat(param1.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n SpeedConverterFilter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var speedUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).SpeedUnitCd.trim();\r\n if (params.data.DrySpeed != null) {\r\n if (speedUnitCd.toLowerCase() == \"kmh\") {\r\n var param = params.data.DrySpeed;\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempVal = parseFloat(params.data.DrySpeed);\r\n var param1 = (tempVal / 1.609344);\r\n return parseFloat(param1.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n TemperatureValueFormatter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n if ((params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"ST9100\")) {\r\n //if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n /* return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)) :\r\n param.toFixed(1);*/\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(parseInt(tempRoundingValue)) : param.toFixed(1);\r\n }\r\n else\r\n /* return tempRoundingValue > 0 ? tempVal.toFixed(parseInt(tempRoundingValue)):\r\n param.toFixed(1);*/\r\n return tempRoundingValue > 0 ? tempVal.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n tempVal.toFixed(parseInt(tempRoundingValue)) : tempVal.toFixed(1);\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n floatTypeSortingFieldName: (param, FieldName) => {\r\n if (param != null && param != undefined) {\r\n if (param.data != null && param.data != undefined) {\r\n\r\n switch (FieldName) {\r\n case 'GeofenceDefinitionRevision':\r\n return param.data.GeofenceDefinitionRevision != null && param.data.GeofenceDefinitionRevision != \"\" && param.data.GeofenceDefinitionRevision != \"null\" ? param.data.GeofenceDefinitionRevision : '-NA-';\r\n case 'DryGPSHDOP':\r\n return param.data.DryGPSHDOP != null && param.data.DryGPSHDOP != \"\" && param.data.DryGPSHDOP != \"null\" ? param.data.DryGPSHDOP : '-NA-';\r\n case 'DryGPSSatelliteCount':\r\n return param.data.DryGPSSatelliteCount != null && param.data.DryGPSSatelliteCount != \"\" && param.data.DryGPSSatelliteCount != \"null\" ? param.data.DryGPSSatelliteCount : '-NA-';\r\n case 'DrySpeed':\r\n return param.data.DrySpeed != null && param.data.DrySpeed != \"null\" ? param.data.DrySpeed : '-NA-';//RCNG-1185\r\n case 'Miles':\r\n return param.data.Miles != null && param.data.Miles != \"\" && param.data.Miles != \"null\" ? param.data.Miles : '-NA-';\r\n default:\r\n return '-NA-';\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n DryBattVoltageSortingFieldName: (params, FieldName) => {\r\n\r\n if (params != null && params != undefined) {\r\n\r\n if (params.data != null && params.data != undefined) {\r\n var tempRoundingValue = \"1\";\r\n return (params.data.BattVoltage != null) ? parseFloat(params.data.BattVoltage.toFixed(parseInt(tempRoundingValue))) : -999;\r\n }\r\n else\r\n return -999;\r\n }\r\n else\r\n return -999;\r\n },\r\n\r\n CommentExistsforDrySorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.CommentExistsDC != null && params.data.CommentExistsDC != undefined) {\r\n if (params.data.CommentExistsDC == 0) {\r\n return 0;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n\r\n },\r\n //RCNG-2227,2228\r\n dryDoorBattPctSorting: (params) => {\r\n \r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.Door1BattPct != null && params.data.Door1BattPct != undefined) {\r\n var battPct = (Math.round(params.data.Door1BattPct / 10.0)) * 10;\r\n return battPct.toString();\r\n }\r\n return \"-1\";\r\n }\r\n return \"-1\";\r\n },\r\n dryDoorBattPctFormatterFilter: (params) => {\r\n \r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.Door1BattPct != null && params.data.Door1BattPct != undefined) {\r\n var battPct = (Math.round(params.data.Door1BattPct / 10.0)) * 10;\r\n title = battPct.toString();\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n return title;\r\n },\r\n dryBatteryPctSorting: (params) => {\r\n \r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.BatteryPct != null && params.data.BatteryPct != undefined && params.data.BatteryPct >=0) {\r\n var battPct = (Math.round(params.data.BatteryPct / 10.0)) * 10;\r\n return battPct.toString();\r\n }\r\n return \"-1\";\r\n }\r\n return \"-1\";\r\n },\r\n\t\r\n\tdryBatteryPctFormatterFilter: (params) => { \r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.BatteryPct != null && params.data.BatteryPct != undefined) {\r\n var battPct = (Math.round(params.data.BatteryPct / 10.0)) * 10;\r\n title = battPct.toString();\r\n }\r\n else\r\n title = \"-NA-\";\r\n }\r\n else\r\n title = \"-NA-\";\r\n return title;\r\n },\r\n BatteryModeFormatterFilter:(params) => {\r\n if(params.data.BatteryMode != null && params.data.BatteryMode != \"\" && params.data.BatteryMode != \"null\")\r\n {\r\n var BatteryMode = params.data.BatteryMode;\r\n if(BatteryMode == \"N\")\r\n return \"Normal\";\r\n else if(BatteryMode == \"B\")\r\n return \"Backup\";\r\n else if(BatteryMode == \"T\")\r\n return \"Tertiary\";\r\n else if(BatteryMode == \"R\")\r\n return \"Reserve\";\r\n else return \"-NA-\";\r\n }\r\n else return \"-NA-\";\r\n }\r\n}\r\n\r\nexport default dryFormatter;","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\n\r\nimport batterycritical from '../images/battery-critical.svg';\r\nimport batterylow from '../images/battery-low.svg';\r\nimport batterynormal from '../images/battery-normal.svg';\r\n\r\nimport PlugSolid from '../images/PlugSolid.svg';\r\nimport UnPlug from '../images/Unplug.svg';\r\n\r\nimport TripInprogress from '../images/Status/RouteDeviation/TripInprogress.png';\r\nimport TripCompletedDeviation from '../images/Status/RouteDeviation/TripCompletedDeviation.png';\r\nimport TripCompleted from '../images/Status/RouteDeviation/TripCompleted.png';\r\nimport TripProblemetic from '../images/Status//RouteDeviation/TripProblemetic.png';\r\nimport TripPending from '../images/Status/RouteDeviation/TripPending.png';\r\nimport TripDeleted from '../images/Status/RouteDeviation/TripDeleted.png';\r\nimport TripCancelDeviation from '../images/Status/RouteDeviation/TripCancelDeviation.png';\r\nimport TripCancel from '../images/Status/RouteDeviation/TripCancel.png';\r\n\r\nimport RSSIUNK from '../images/RSSI/RSSI_UNK.png';\r\nimport RSSI1 from '../images/RSSI/RSSI_1.png';\r\nimport RSSI2 from '../images/RSSI/RSSI_2.png';\r\nimport RSSI3 from '../images/RSSI/RSSI_3.png';\r\nimport RSSI4 from '../images/RSSI/RSSI_4.png';\r\nimport RSSI5 from '../images/RSSI/RSSI_5.png';\r\n\r\nimport GroupChat from '../images/GroupChat.png';\r\n\r\nexport class ChassisCellRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n static PwrStateFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.PWR != null && params.data.PWR != undefined) {\r\n\r\n if (params.data.PWR.toString().toUpperCase().trim() == \"A\") {\r\n return ;\r\n }\r\n else if (params.data.PWR.toString().toUpperCase().trim() == \"B\") {\r\n return ;\r\n } \r\n }\r\n }\r\n //return '-NA-';\r\n return \"-NA-\";\r\n }\r\n\r\n static BatteryStatusFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ChassisBatteryStatus != null && params.data.ChassisBatteryStatus != undefined) {\r\n if (params.data.ChassisBatteryStatus.toString().toUpperCase().trim() == \"C\") {\r\n return ;\r\n }\r\n else if (params.data.ChassisBatteryStatus.toString().toUpperCase().trim() == \"L\") {\r\n return ;\r\n }\r\n else if (params.data.ChassisBatteryStatus.toString().toUpperCase().trim() == \"N\") {\r\n return ;\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n\r\n static TripstatusIndicator(params) {\r\n var deviationFlg = '';\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n\r\n //var imageSrc = '';\r\n var valueString = params.value.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n //imageSrc = TripInprogress;\r\n return ;\r\n //break;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n //imageSrc = TripCompletedDeviation; /* WI19591 checking Trip is deviated */\r\n return ;\r\n else\r\n //imageSrc = TripCompleted;\r\n return ;\r\n //break;\r\n case 'D':\r\n //imageSrc = TripProblemetic;\r\n return ;\r\n //break;\r\n case 'P':\r\n //imageSrc = TripPending;\r\n return ;\r\n //break;\r\n case 'R':\r\n //imageSrc = TripDeleted;\r\n return ;\r\n //break;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n //imageSrc = TripCancelDeviation; /* WI19591 checking Trip is deviated */\r\n return ;\r\n else\r\n //imageSrc = TripCancel;\r\n return ;\r\n //break;\r\n default:\r\n break;\r\n\r\n }\r\n }\r\n\r\n return ;\r\n\r\n }\r\n return ;\r\n }\r\n\r\n static RSSITypeFormatter(params) {\r\n var imageSrc = \"\";\r\n if (params.data != null && params.data != undefined) {//WI-21812:For Unknown RSSI Id image is not showing\r\n if (params.data.RSSI != null && params.data.RSSI != undefined) {\r\n if (params.data.RSSI == 0)\r\n imageSrc = RSSIUNK;\r\n else if (params.data.RSSI <= -111)\r\n imageSrc = RSSI1;\r\n else if (params.data.RSSI >= -110 && params.data.RSSI <= -100)\r\n imageSrc = RSSI2;\r\n else if (params.data.RSSI >= -99 && params.data.RSSI <= -88)\r\n imageSrc = RSSI3;\r\n else if (params.data.RSSI >= -87 && params.data.RSSI <= -76)\r\n imageSrc = RSSI4;\r\n else if (params.data.RSSI >= -75)\r\n imageSrc = RSSI5;\r\n else\r\n imageSrc = RSSIUNK;\r\n }\r\n else\r\n imageSrc = RSSIUNK;//WI-21812:For Unknown RSSI Id image is not showing\r\n }\r\n return ;\r\n\r\n }\r\n\r\n static CommentExistsFormatter(params) {\r\n\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value == 0) {\r\n return ;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n }\r\n\r\n static GPSCoordsFormatter(params) {\r\n if (params.value != null && params.value != '-1000') {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && (params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1020\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1030\")) {\r\n if (params.value != null && params.value != '-1000')\r\n return params.value;\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSLatitude != 0 && params.data.GPSLongitude != 0 && (params.data.GPSLockState == null || params.data.GPSLockState == '' || params.data.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n if (params.value != null && params.value != '-1000') {\r\n //params.value = {params.value};\r\n //params.value =

    {params.value}

    ;\r\n var pCss = {\r\n 'color': '#736F6E'\r\n };\r\n return

    {params.value}

    ;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSCoords != null && params.data.GPSCoords != undefined && params.data.GPSCoords.toString().trim() == \"\") {\r\n return '-NA-';\r\n }\r\n else\r\n return params.value;\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static StringTypeValueFormatter(params) {\r\n if (params.value != \"-NA-\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static StringTypeFormatter(params) {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n\r\n }\r\n\r\n static StringTypeFormatterFor3P(params) {\r\n if (params.value != null && params.value != \"null\" && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n if (params.value === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n //Grouping starts from here\r\n\r\n static TripStatusFormatterGrouping(param) {\r\n var deviationFlg = '';\r\n if (param != null && param != undefined) {\r\n var valueString = param.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n return
    In Progress
    ;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n return
    Completed Deviation
    ;\r\n else\r\n return
    Completed
    ;\r\n\r\n case 'D':\r\n return
    Problemetic
    ;\r\n case 'P':\r\n return
    Pending
    ;\r\n case 'R':\r\n return
    Deleted
    ;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n return
    Cancel Deviation
    ;\r\n else\r\n return
    Cancel
    ;\r\n default:\r\n return \"*No Trip\";\r\n\r\n }\r\n }\r\n return \"*No Trip\";\r\n }\r\n return \"*No Trip\";\r\n }\r\n\r\n static RSSIFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return
    5 Bars
    ;\r\n else if (param == 2)\r\n return
    4 Bars
    ;\r\n else if (param == 3)\r\n return
    3 Bars
    ;\r\n else if (param == 4)\r\n return
    2 Bars
    ;\r\n else if (param == 5)\r\n return
    1 Bar
    ;\r\n else\r\n return
    Unknown
    ;\r\n }\r\n }\r\n\r\n static CommentExistsGrouping(params) {\r\n if (params != null && params != '-NA-') {\r\n if (params.toString() == \"0\")\r\n return
    yes
    ;\r\n else\r\n return \"*No Comments\";\r\n }\r\n else\r\n return '*No Comments';\r\n }\r\n\r\n static ChassisBatteryStatusFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return
    Critical
    ;\r\n case \"2\":\r\n return
    Low
    ;\r\n case \"3\":\r\n return
    Normal
    ;\r\n case \"-1\":\r\n return '*No BATT';\r\n }\r\n }\r\n }\r\n\r\n static ChassisPwrStateFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n switch (param.toString()) {\r\n case \"1\":\r\n return
    Powered
    ;\r\n case \"2\":\r\n return
    On Battery
    ;\r\n case \"3\":\r\n return '*No PWR';\r\n }\r\n }\r\n }\r\n}","\r\n/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json');\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface DrySearchState {\r\n isLoading: boolean;\r\n /* WI 26566 changes start */\r\n allAssetStatus: any[];\r\n gridType: any;\r\n gensetStatus: any[];\r\n reeferStatus: any[];\r\n chassisStatus: any[];\r\n /* WI 26566 changes end */\r\n searchFilters: server.ReeferSearchFilters;\r\n dryStatus: server.DryStatusData[];\r\n columnDefs: any[];\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestDrySearchAction {\r\n type: 'REQUEST_DRY_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n colDefs: any[];\r\n}\r\n\r\ninterface ReceiveDrySearchAction {\r\n type: 'RECEIVE_DRY_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n /* WI 26566 changes start */\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n dryStatusData: server.DryStatusData[];\r\n gensetStatusData: any[];\r\n reeferStatusData: any[];\r\n /* WI 26566 changes end */\r\n chassisStatusData: any[];\r\n colDefs: any[];\r\n}\r\n/* WI 26566 changes start */\r\ninterface ReceiveAllAssetTypeSearchAction {\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n dryStatusData: server.DryStatusData[];\r\n gensetStatusData: any[];\r\n reeferStatusData: any[];\r\n chassisStatusData: any[];\r\n colDefs: any[];\r\n}\r\n/* WI 26566 changes end */\r\n\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestDrySearchAction | ReceiveDrySearchAction | ReceiveAllAssetTypeSearchAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestDryAdvanceSearch: (searchFilters: server.ReeferSearchFilters, reeferCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: [], dryStatusData: [], reeferStatusData: [], gensetStatusData: [], chassisStatusData: [], colDefs: reeferCols });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: [], dryStatusData: [], reeferStatusData: [], gensetStatusData: [], chassisStatusData: [], colDefs: reeferCols });\r\n }\r\n }\r\n else {\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: data, dryStatusData: data, reeferStatusData: [], gensetStatusData: [], chassisStatusData: [], colDefs: reeferCols });\r\n }\r\n }\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: [], dryStatusData: [], reeferStatusData: [], gensetStatusData: [], chassisStatusData: [], colDefs: reeferCols });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_DRY_ADVANCE_SEARCH', searchFilters: searchFilters, colDefs: reeferCols });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\n//const emptyAdvanceSearchFilter = { CustomerTypeCode: null, CustomerID: null, AssetType: null, AssetNumber: null, ServerFence: null, DeviceFence: null, Region: null, City: null, State: null,ZipCode: null, Country: null, Geofence: null, POI: null, Oem: null, ReportingInterval: null, GeofenceInside: null}\r\nconst emptySearchFilter = {\r\n SelectedOem: null, SelectedCountry: null, SelectedReefer: null, SelectedGeofence: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: null, SelectedAssetTypes: null, SelectedAssetStates: null,\r\n SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles:null //WI-26881\r\n}\r\nconst unloadedState: DrySearchState = { isLoading: false, gridType: '', allAssetStatus: [], reeferStatus: [], gensetStatus: [], chassisStatus:[], searchFilters: emptySearchFilter, dryStatus: [], columnDefs: [] };\r\n\r\nexport const reducer: Reducer = (state: DrySearchState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_DRY_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n gensetStatus: state.gensetStatus,\r\n reeferStatus: state.reeferStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n dryStatus: state.dryStatus,\r\n isLoading: true,\r\n columnDefs: state.columnDefs\r\n };\r\n\r\n\r\n case 'RECEIVE_DRY_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n dryStatus: action.dryStatusData,\r\n /* WI 26566 changes start */\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n reeferStatus: action.reeferStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n /* WI 26566 changes end */\r\n isLoading: false,\r\n columnDefs: action.colDefs\r\n };\r\n }\r\n /* WI 26566 changes start */\r\n case 'RECEIVE_AllAssetType_ADVANCE_SEARCH':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n dryStatus: action.dryStatusData,\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n reeferStatus: action.reeferStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs\r\n };\r\n }\r\n /* WI 26566 changes end */\r\n break;\r\n\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","/// \r\n/// \r\nimport * as React from 'react';\r\n//import Bing from '../../actions/ReeferMapCallout.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMapCallout.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport MapCallout from '../../actions/MapCallout';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport $ from 'jquery';\r\nimport DateFormat from 'dateformat';\r\nimport moment from 'moment';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { GridToolBarExcel } from '../sharedcomponents/GridToolBarExcel';\r\nimport lodashfilter from 'lodash/filter';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\n//import '../../../node_modules/react-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface ReeferGridState {\r\n rowData: server.UnitHistoryUI[],\r\n columnDefs: any[],\r\n Filters: ReeferHistoryFilter,\r\n mapState: string,\r\n overlayLoadingTemplate: any,\r\n pageSize: any,\r\n gridApiParams: any,\r\n reeferFormatter: server.ReeferFormatter;//WI-21810:QA_IE_Event description is displayed as 'NA' in reefer map screen\r\n PreferenceDTTM: any;\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n PTReport: string;\r\n ReportReeferId: string;\r\n selectedDataItems: any[];\r\n IsLocationEstimated: boolean;\r\n DashboardPreferenceId: any;\r\n DashboardWidgetsSearch: any[];\r\n IsReadOnly: any;\r\n RevisionNum: any;\r\n}\r\n\r\nvar self;\r\nvar functionId;\r\nvar reeferCurrentStatus;\r\nvar selectedReefer = [];\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar reeferAssetSensors: any[];\r\n\r\nexport class ReeferMapGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.initHistoryFilters();//new ReeferHistoryFilter();\r\n functionId = 42; // functionId for ReeferHistory Grid\r\n //var columnDefs = this.createColumnDefs();\r\n \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomerDeviceTypeSensor');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.renderCustomerDeviceTypeSensorColumns(data);\r\n });\r\n var overlayTemplate = 'Loading...';\r\n reeferCurrentStatus = [];\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n if (this.props.historyData != undefined && this.props.historyData != null) {\r\n reeferCurrentStatus.push(this.props.historyData[0]);\r\n this.state = {\r\n rowData: this.props.historyData[0], columnDefs: [], Filters: filterSet, mapState: \"CurrentLocation\", overlayLoadingTemplate: overlayTemplate\r\n , pageSize: 25\r\n , gridApiParams: []\r\n , reeferFormatter: null//WI-21810:QA_IE_Event description is displayed as 'NA' in reefer map screen\r\n , PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm)\r\n , modelTitleReport: '', popUpHtmlReport: '', PTReport: '', ReportReeferId: ''\r\n , selectedDataItems: []\r\n , IsLocationEstimated: false\r\n , DashboardWidgetsSearch: []\r\n , IsReadOnly: false\r\n , DashboardPreferenceId: 0\r\n , RevisionNum: 0\r\n };\r\n }\r\n else\r\n this.state = {\r\n rowData: [], columnDefs: [], Filters: filterSet, mapState: \"CurrentLocation\", overlayLoadingTemplate: overlayTemplate\r\n , pageSize: 25\r\n , gridApiParams: []\r\n , reeferFormatter: null//WI-21810:QA_IE_Event description is displayed as 'NA' in reefer map screen\r\n , PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm)\r\n , modelTitleReport: '', popUpHtmlReport: '', PTReport: '', ReportReeferId: ''\r\n , selectedDataItems: []\r\n , IsLocationEstimated: false\r\n , DashboardWidgetsSearch: []\r\n , IsReadOnly: false\r\n , DashboardPreferenceId: 0\r\n , RevisionNum: 0\r\n };\r\n this.GetDefaultGridPreferenceColumns();\r\n //this.PopulateReeferenceData();//WI-21810:QA_IE_Event description is displayed as 'NA' in reefer map screen\r\n this.populateDefaultDates();\r\n self = this;\r\n columnDefs2 = this.createColumnDefs();\r\n }\r\n GetDefaultGridPreferenceColumns() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n var GridPreferenceColumns: any;\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n // RCNG 5198 - OMP - UI:The selected grid columns are not displayed for Export excel and send Email\r\n if (data != null && data != undefined && data.DashboardWidgetsSearch != null && data.DashboardWidgetsSearch.length > 0) {\r\n GridPreferenceColumns = data.DashboardWidgetsSearch.filter(x => x.WidgetName == 'Reefer History')\r\n }\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n {\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n if(defaultPreferenceName.length>0) \r\n this.setState({ DashboardPreferenceId: defaultPreferenceName[0].DashboardPreferenceId, IsReadOnly: defaultPreferenceName[0].IsReadOnly, RevisionNum: defaultPreferenceName[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n this.setState({ DashboardPreferenceId: dashboardLayouts[0].DashboardPreferenceId, IsReadOnly: dashboardLayouts[0].IsReadOnly, RevisionNum: dashboardLayouts[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n }\r\n } \r\n // RCNG 5198 - OMP - UI:The selected grid columns are not displayed for Export excel and send Email\r\n\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, this.state.gridApiParams, GridPreferenceColumns, \"ReeferMapGrid\");\r\n\r\n }, 2000);\r\n\r\n }); \r\n\r\n }\r\n // RCNG 5198 - OMP - UI:The selected grid columns are not displayed for Export excel and send Email\r\n static GetReeferMapGridPreferenceColumns() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n var GridPreferenceColumns: any;\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if (data.DashboardLayouts != null && data.DashboardLayouts.length > 0) {\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x => x.DashboardPreferenceId == dashboardPreferenceId);\r\n if (defaultPreferenceName.length > 0)\r\n self.setState({ DashboardPreferenceId: defaultPreferenceName[0].DashboardPreferenceId, IsReadOnly: defaultPreferenceName[0].IsReadOnly, RevisionNum: defaultPreferenceName[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n self.setState({ DashboardPreferenceId: dashboardLayouts[0].DashboardPreferenceId, IsReadOnly: dashboardLayouts[0].IsReadOnly, RevisionNum: dashboardLayouts[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n }\r\n }\r\n \r\n });\r\n\r\n }\r\n initHistoryFilters() {\r\n var reeferHistoryFilter = new ReeferHistoryFilter();\r\n reeferHistoryFilter.Units = '';\r\n reeferHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n reeferHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n\r\n return reeferHistoryFilter;\r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns(customerDeviceTypeSensor: any) {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n\r\n if (customerDeviceTypeSensor != null && customerDeviceTypeSensor != undefined)\r\n reeferAssetSensors = customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'R');\r\n\r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n\r\n PopulateReeferenceData() {\r\n if (this.state.reeferFormatter == null || this.state.reeferFormatter == undefined) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n });\r\n });\r\n }\r\n }\r\n\r\n populateDefaultDates() { \r\n var toDTTM = this.state.PreferenceDTTM; \r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n\r\n onGridReady(params: any) {\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n //this.gridApi.sizeColumnsToFit();\r\n var gridPreferencesData: any = self.state.DashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 5);\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api);\r\n setTimeout(() => { \r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferMapGrid\");\r\n }, 3000); \r\n }\r\n\r\n refreshGrid = () => {\r\n if (this.state.mapState == \"ReeferTrace\") {\r\n this.populateSelectedReefersDates();\r\n this.bindReeferHistoryData(); \r\n }\r\n else {\r\n this.populateDefaultDates();\r\n this.bindReeferCurrentData(); \r\n }\r\n };\r\n\r\n onGridSelectionChanged(params: any) {\r\n self.setState({ IsLocationEstimated: false });\r\n var selectedRows = params.api.getSelectedRows(); \r\n if (selectedRows != null && selectedRows != undefined) { \r\n if (self.state.mapState == \"CurrentLocation\") {\r\n setTimeout(() => { self.showSelectedPushin(selectedRows); }, 500); // WI 26554 added timeout to display callout by default\r\n }\r\n else\r\n self.BindMapPushPin(selectedRows);\r\n\r\n self.setState({\r\n selectedDataItems: selectedRows\r\n });\r\n }\r\n }\r\n\r\n showSelectedPushin(selectedRows: any) {\r\n selectedRows.forEach(function (selectedRow, index) {\r\n MapCallout.DisplaySelectedPushpin(selectedRow, self.props.reeferFormatter);\r\n selectedReefer = [];\r\n selectedReefer.push(selectedRow);\r\n });\r\n }\r\n\r\n BindMapPushPin(selectedRows: any) { \r\n var selectedRowsWithCoords = lodashfilter(selectedRows, function (item) {\r\n return item.GPSCoords != null && item.GPSCoords != undefined && item.GPSCoords.toString() != \"\";\r\n });\r\n if (selectedRowsWithCoords != null && selectedRowsWithCoords.length > 0)\r\n MapCallout.DisplaySelectedPushpin(selectedRowsWithCoords[0], self.props.reeferFormatter);\r\n else {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData.length > 0) {\r\n var selectedRowIndex = self.state.rowData.findIndex(row => row.ParentEventID === selectedRows[0].ParentEventID);\r\n if (selectedRowIndex != -1) {\r\n if (selectedRowIndex == self.state.rowData.length - 1) {\r\n MapCallout.DisplaySelectedPushpin(selectedRows[0], self.props.reeferFormatter);\r\n }\r\n else {\r\n for (var rowIndex = selectedRowIndex + 1; rowIndex < self.state.rowData.length; rowIndex++) {\r\n var rowCurrentData = self.state.rowData[rowIndex];\r\n if (rowCurrentData.GPSCoords != null && rowCurrentData.GPSCoords != undefined && rowCurrentData.GPSCoords.toString() != \"\") {\r\n self.setState({ IsLocationEstimated: true });\r\n selectedRows[0].GPSLatitude = rowCurrentData.GPSLatitude;\r\n selectedRows[0].GPSLongitude = rowCurrentData.GPSLongitude;\r\n MapCallout.DisplaySelectedPushpin(selectedRows[0], self.props.reeferFormatter);\r\n break;\r\n }\r\n else if (rowIndex == self.state.rowData.length - 1) {\r\n MapCallout.DisplaySelectedPushpin(selectedRows[0], self.props.reeferFormatter);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n static popUpGetPTIReport(selectedPin) { \r\n if (selectedPin.ReeferID != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + selectedPin.ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => { \r\n self.setState({ PTReport: result, ReportReeferId: selectedPin.ReeferID}, () => { $('#globalLoader').hide(); });\r\n if (self.state.PTReport == null || self.state.PTReport == '') \r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n self.setState({ popUpHtmlReport:
    });\r\n $('#btnTrigger').click();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n populateSelectedReefersDates() {\r\n if (selectedReefer[0].EventDTTM != null && selectedReefer[0].EventDTTM != \"\") {\r\n //var toDTTM = DateFormat(new Date(selectedReefer[0].EventDTTM), 'mm/dd/yyyy');\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currenttoDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var toDTTM = Formatters.DateTimeFormatter(selectedReefer[0].EventDTTM);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n else {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n\r\n this.state.Filters.Units = selectedReefer[0].UnitMasterID;\r\n //var CurrentReefers = \"\";\r\n //var CurrentReefersList = [];\r\n //reeferCurrentStatus[0].forEach(function (item, index) {\r\n // CurrentReefersList.push(item.UnitMasterID);\r\n //});\r\n\r\n //CurrentReefers = CurrentReefersList.join(\",\");\r\n //this.state.Filters.Units = CurrentReefers;\r\n }\r\n\r\n bindReeferHistoryData() {\r\n self.state.gridApiParams.showLoadingOverlay();\r\n MapCallout.ClearMapPushpins();\r\n self.setState({ IsLocationEstimated: false });\r\n var fromDate = moment(new Date(this.state.Filters.FromDate)).startOf('day').toString();\r\n var toDate = moment(new Date(this.state.Filters.ToDate)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n MapCallout.BindTraceMapPushpins(data, \"trace\", self.props.reeferFormatter); \r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n\r\n this.setState({\r\n rowData: data\r\n });\r\n self.state.gridApiParams.paginationGoToFirstPage(); \r\n self.state.gridApiParams.hideOverlay(); \r\n });\r\n }\r\n\r\n bindReeferCurrentData() {\r\n $('#globalLoader').show();\r\n var CurrentReefers = \"\";\r\n var CurrentReefersList = [];\r\n reeferCurrentStatus[0].forEach(function (item, index) {\r\n CurrentReefersList.push(item.ReeferID);\r\n });\r\n\r\n CurrentReefers = CurrentReefersList.join(\",\");\r\n var reeferSearchFilters: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedReefer: CurrentReefers, SelectedGeofence: '', SelectedInterval: '', SelectedGeofenceInside: '', SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n var filterParams = JSON.stringify(reeferSearchFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.setState({\r\n rowData: data\r\n });\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n if (data.length > 0) {\r\n MapCallout.BindTraceMapPushpins(data, \"current\", self.props.reeferFormatter);\r\n MapCallout.DisplaySelectedPushpin(data[0], self.props.reeferFormatter);\r\n }\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n ApplyReeferHistorySearch() {\r\n var message = this.ValidateHistoryDates();\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n\r\n self.state.gridApiParams.showLoadingOverlay(); \r\n MapCallout.ClearMapPushpins();\r\n self.setState({ IsLocationEstimated: false });\r\n var fromDate = moment(new Date(this.state.Filters.FromDate)).toString();\r\n var toDate = moment(new Date(this.state.Filters.ToDate)).toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n MapCallout.BindTraceMapPushpins(data, \"trace\", self.props.reeferFormatter); \r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n self.state.gridApiParams.paginationGoToFirstPage(); \r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n this.setState({\r\n rowData: data\r\n });\r\n });\r\n }\r\n\r\n ValidateHistoryDates() {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = this.state.Filters.FromDate;\r\n var toDttm = this.state.Filters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'State Indicators History',\r\n children: [\r\n { headerName: \"CC\", field: \"CCSeverityLevel\", width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", width: 65, cellRenderer: ReeferCellRenderer.StatusIndicatorWithDescriptionForALM, refData: self.props.reeferFormatter.AlarmMasterList },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", width: 65, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: ReeferCellRenderer.PwrStateFormatter },\r\n { headerName: \"BATT\", field: \"ReeferBatteryPct\", width: 65, valueGetter: (params) => { return Formatters.reeferBatteryPctSorting(params); }, cellRenderer: ReeferCellRenderer.BatteryPctFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"VVC Dep\", field: \"DepartingVVC\", valueGetter: (params) => { return Formatters.DepartingVVCstringTypeValueFormatter(params); }, width: 100 },\r\n { headerName: \"VVC Arr\", field: \"ArrivingVVC\", valueGetter: (params) => { return Formatters.ArrivingVVCstringTypeValueFormatter(params); }, width: 100 },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", tooltipField: \"TripNameAndStatus\", cellRenderer: ReeferCellRenderer.TripstatusIndicator, width: 70 },\r\n { headerName: \"INV\", field: \"AssetState\", width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: ReeferCellRenderer.AssetStateFormatter },\r\n\r\n ]\r\n },\r\n {\r\n headerName: 'Identification History',\r\n children: [\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Model\", field: \"OEMModel\", valueGetter: (params) => { return ReeferFormatters.UnitTypesListFormatters(params, self.props.reeferFormatter.UnitTypesList); }, cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n ]\r\n },\r\n {\r\n headerName: \"Booking History\",\r\n children: [\r\n { headerName: \"Booking #\", field: \"BookingNumber\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"BK temp\", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: ReeferFormatters.TemperatureFormatterForBooking, field: \"TemperatureUnit\", width: 130 },\r\n { headerName: \"CC profile\", field: \"CCProfileCode\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"CC alerts\", field: \"CCAlarms\", cellRenderer: ReeferCellRenderer.CCAlarmDescriptionFormatter, refData: self.props.reeferFormatter.AlarmMasterList, width: 150 },\r\n ]\r\n },\r\n {\r\n headerName: 'Event and Location History',\r\n children: [\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", width: 150, valueGetter: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList,\r\n self.props.reeferFormatter.EventMasterList, self.props.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.props.reeferFormatter.Ref_SensorAlerts);\r\n }, cellRenderer: ReeferCellRenderer.StringTypeFormatter\r\n },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Event notes\", field: \"EventNotes\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n {\r\n headerName: \"Door\", field: \"DoorOpen\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, getQuickFilterText: ReeferFormatters.doorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.DoorFormatterSorting(params); }, cellRenderer: ReeferFormatters.doorFormatter, width: 140\r\n },\r\n { headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DoorEventDtm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DoorEventDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170 },\r\n { headerName: \"Device fence\", field: \"GeofenceName\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Server fence\", field: \"ServerGeofenceName\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Device fence ID\", field: \"Geofence\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"Server fence ID\", field: \"ServerGeofence\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, cellRenderer: ReeferCellRenderer.GPSCoordsFormatter, width: 150 },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", cellRenderer: Formatters.reeferSecondsToTimeConverterFilter, width: 150 },\r\n { headerName: \"City\", field: \"City\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"State\", field: \"State\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Country\", field: \"Country\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Zip\", field: \"Zip\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 100 },\r\n { headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"ModifiedDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Datalog Events History',\r\n children: [\r\n { headerName: \"DL event\", field: \"DLEventMasterID\", width: 150, valueGetter: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.props.reeferFormatter.CustomerSpecificEventList, self.props.reeferFormatter.EventMasterList); }, cellRenderer: ReeferCellRenderer.StringTypeFormatter },\r\n { headerName: \"DL event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DLEventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Data 1\", field: \"DLParam1\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 110 },\r\n { headerName: \"Data 2\", field: \"DLParam2\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 110 },\r\n { headerName: \"Data 3\", field: \"DLParam3\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 110 },\r\n { headerName: \"Data 4\", field: \"DLParam4\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 110 },\r\n { headerName: \"Data 5\", field: \"DLParam5\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 110 }\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Status History',\r\n children: [\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Alarm\", field: \"AlarmsList\", cellRenderer: ReeferCellRenderer.AlarmDescriptionFormatter, refData: self.props.reeferFormatter.AlarmMasterList, width: 150 },\r\n { headerName: \"Opr mode\", field: \"RunningMode\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Reefer data\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"T set\", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"SetPoint\", width: 90 },\r\n { headerName: \"T sup 1 \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"SupplyTemp1\", width: 90 },\r\n { headerName: \"T sup 2 \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"SupplyTemp2\", width: 90 },\r\n { headerName: \"T rtn 1 \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"ReturnTemp1\", width: 90 },\r\n { headerName: \"T rtn 2 \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"ReturnTemp2\", width: 90 },\r\n { headerName: \"T amb\", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"AmbientTemp\", width: 90 },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n { headerName: \"RH read\", field: \"Humidity\", cellRenderer: ReeferFormatters.HumiditySettingFormatter, width: 90 },\r\n { headerName: \"CO2 set\", field: \"CO2Setpoint\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"CO2 read\", field: \"CO2Reading\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"O2 set\", field: \"O2Setpoint\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"O2 read\", field: \"O2Reading\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"T evap in \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"EvaporatorInletSensor\", width: 110 },\r\n { headerName: \"T evap out \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"EvaporatorOutletSensor\", width: 110 },\r\n { headerName: \"P suc\", field: \"CompositeSuctionPressure\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"T suc\", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"CompressorSuctionTemp\", width: 90 },\r\n { headerName: \"P dis\", field: \"DischargePressure\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"T dis \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"CompressorDischargeTemp\", width: 90 },\r\n { headerName: \"T dis 2 \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"CompressorDischargeTemp2\", width: 90 },\r\n { headerName: \"T econ in \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"EconomizerInTemp\", width: 90, columnGroupShow: 'open' },\r\n { headerName: \"T econ out \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"EconomizerOutTemp\", width: 90, columnGroupShow: 'open' },\r\n { headerName: \"P cond\", field: \"CondenserPressure\", cellRenderer: ReeferFormatters.sensorDataPCondFormatter, width: 90 },\r\n { headerName: \"T cond wall \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"CondenserTemperature\", width: 110 },\r\n { headerName: \"M cond\", field: \"CondenserFanOutPut\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Evap fan set\", field: \"EvaporatorFanSpeedControl\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140, columnGroupShow: 'open' },\r\n { headerName: \"LS evap\", field: \"LowSpeedEvaporatorFanOutPut\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"HS evap\", field: \"HighSpeedEvaporatorFanOutPut\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Air pump hr\", field: \"AirPumpRunHours\", cellRenderer: ReeferFormatters.AirPumpRunHoursFormatter, width: 120, columnGroupShow: 'open' },\r\n { headerName: \"Heat on\", field: \"HeaterOnTime\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Open exp\", field: \"EvaporatorExpansionValveOpening\", cellRenderer: ReeferFormatters.sensorDataOpenExpFormatter, width: 90 },\r\n { headerName: \"Open suc\", field: \"SuctionModulationValveOpening\", cellRenderer: ReeferFormatters.sensorDataOpenSucFormatter, width: 90 },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Open econ\", field: \"EconomizerValveOpening\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Comp freq\", field: \"CompressorFrequency\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Comp curr\", field: \"CompressorCurrent\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"Comp hr\", field: \"CompressorRunHours\", cellRenderer: ReeferFormatters.CompressorRunHoursFormatter, width: 120 },\r\n { headerName: \"CT state\", field: \"ColdTreatmentState\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ColdTreatmentState\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, },\r\n { headerName: \"CT dur (d)\", field: \"CTDuration\", valueGetter: (params) => { return Formatters.CTDurationSorting(params); }, cellRenderer: ReeferFormatters.CTDurationFormatter, width: 90, columnGroupShow: 'open', }, // RCNG-1818\r\n { headerName: \"CT max \", headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTTempLimit\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTTempLimit\", width: 100, columnGroupShow: 'open', },//RCNG-1818\r\n { headerName: \"CT final \", headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTPostSetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTPostSetPoint\", width: 100, columnGroupShow: 'open', },//RCNG-1818\r\n { headerName: \"CT rem (hr)\", field: \"CTRemainingTime\", valueGetter: (params) => { return Formatters.CTRemainingTimeSorting(params); }, cellRenderer: ReeferFormatters.CTRemainingTimeFormatter, width: 120, columnGroupShow: 'open', }, // RCNG-1818\r\n \r\n { headerName: \"CT Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CTTime\", cellRenderer: Formatters.dateTypeFormatter, width: 120 },\r\n\r\n { headerName: \"USDA 1\", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"USDA1Temp\", width: 90 },\r\n { headerName: \"USDA 2\", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"USDA2Temp\", width: 90 },\r\n { headerName: \"USDA 3\", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"USDA3Temp\", width: 90 },\r\n { headerName: \"USDA 4 cargo \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"Cargo4Temp\", width: 130 },\r\n { headerName: \"Vent pos\", field: \"VentPositionSensorCMH\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"CA mode\", field: \"ControlledAtmosphereMode\", cellRenderer: ReeferFormatters.ControlledAtmosphereMode, width: 150 },\r\n { headerName: \"Bulb mode\", field: \"BulbMode\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"CA hr\", field: \"CARunHours\", cellRenderer: ReeferFormatters.CARunHoursFormatter, width: 120, columnGroupShow: 'open' },\r\n { headerName: \"CA SW ver\", field: \"CASoftwareRevision\", cellRenderer: ReeferFormatters.CASWVerFormatter, width: 120, columnGroupShow: 'open' },\r\n { headerName: \"3 ph curr\", field: \"ThreePhaseCurrent\", cellRenderer: ReeferFormatters.Current3PhaseFormatter, width: 135 },\r\n { headerName: \"Tot curr\", field: \"TotalCurrentDraw\", cellRenderer: Formatters.sensorDataFormatter, width: 100 },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"EverFRESH\", field: \"EverFRESH\", cellRenderer: ReeferFormatters.everFreshFormatter, width: 120 },\r\n //EverFRESH missing\r\n { headerName: \"VFD\", field: \"VFD\", cellRenderer: Formatters.sensorDataFormatter, width: 90 },\r\n { headerName: \"OEM PTI state\", field: \"TripWiseStatusDescription\", valueGetter: (params) => { return ReeferFormatters.TripWiseStatusSorting(params, self.props.reeferFormatter.TripWiseStatusList); }, cellRenderer: (params) => { return ReeferCellRenderer.TripWiseStatusFormatter(params, self.props.reeferFormatter.TripWiseStatusList); }, width: 90 },\r\n { headerName: \"OEM PTI exp (d)\", field: \"TripWiseExpiration\", valueGetter: (params) => { return Formatters.TripWiseExpirationSorting(params); }, cellRenderer: ReeferFormatters.TripWiseExpirationFormatter, width: 90 }, // RCNG-169\r\n { headerName: \"OEM PTI type\", field: \"DimiStartAfter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DimiStartAfter\"); }, cellRenderer: ReeferCellRenderer.OEMPTITypeFormatter },\r\n { headerName: \"OEM PTI time left (hr)\", field: \"DimiRemainTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiRemainTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130 },\r\n { headerName: \"PTI state\", field: \"PTIState\", valueGetter: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.props.reeferFormatter.PreTripList); }, cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"PTI result\", field: \"PTResult\", tooltip: Formatters.toolTipFormatter, valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); }, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 130 },\r\n { headerName: \"PTI Type\", field: \"PTIType\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 120 },\r\n { headerName: \"PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Freq\", field: \"LineFrequency\", cellRenderer: ReeferFormatters.lineFrequencyFormatter, width: 130 },\r\n { headerName: \"Const s/n\", field: \"ControllerSerialNumber\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Cont time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", cellRenderer: Formatters.dateTypeFormatter, width: 120 },\r\n { headerName: \"Cont SW version\", field: \"SoftwareRevision\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 120 },\r\n { headerName: \"Cont Set\", field: \"ControllerTypeSetting\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 90 },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 120 },\r\n { headerName: \"Defrost int\", field: \"DefrostInterval\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130, columnGroupShow: 'open' },\r\n { headerName: \"Tot pwr kWh\", field: \"PowerMeter\", cellRenderer: ReeferFormatters.PowerMeterFormatter, width: 130 },\r\n ]\r\n },\r\n {\r\n headerName: 'Device Status History',\r\n children: [\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", cellRenderer: Formatters.sensorDataFormatter, width: 120 },\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceFormatter, width: 120 }, \r\n\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", valueGetter: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", valueGetter: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", valueGetter: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.props.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Device temp \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"DeviceTemp\", width: 130 },\r\n { headerName: \"Device bat (V)\", field: \"BatteryVoltage\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n {\r\n headerName: \"Door bat (V)\", field: \"DoorSensorBatteryVoltage\",\r\n valueGetter: (params) => { return Formatters.DoorBattVoltageSortingFieldName(params, \"DoorSensorBatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.DoorBatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130\r\n },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"Geofence revision\", field: \"RevisionNum\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"ICCID\", field: \"ICCID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"EUI\", field: \"EUI\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"MNC\", field: \"MNC\", cellRenderer: ReeferCellRenderer.MNCTypeFormatter, width: 70 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 70 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 80 },\r\n { headerName: \"Cell signal\", field: \"RSSI\", cellRenderer: ReeferCellRenderer.RSSITypeFormatter, width: 80 },\r\n\r\n //{ headerName: \"RFR COMMS.\", field: \"RCDRfrComErr\", cellRenderer: Formatters.reeferCommsFormatter, width: 130 },\r\n ]\r\n //},\r\n //{\r\n // headerName: 'Device Sensor',\r\n // children: [\r\n // { headerName: \"Temp Sup. 1 \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorSupplyTemp1\", width: 120 },\r\n // { headerName: \"Temp Rtn. 1 \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorReturnTemp1\", width: 120 }\r\n // ]\r\n }\r\n ];\r\n }\r\n\r\n updateReeferMapDimensions() {\r\n $(\"#reeferMapGrid-height\").css('min-height', $(window).height() - 400);\r\n $(\"#reeferMapGrid-height\").css('max-height', $(window).height() - 400);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateReeferMapDimensions.bind(this));\r\n }\r\n\r\n radioButtonChange(value) {\r\n if (value == \"ReeferTrace\") {\r\n this.populateSelectedReefersDates();\r\n this.bindReeferHistoryData();\r\n document.getElementById(\"CurrentLocation\").classList.remove(\"active\");\r\n document.getElementById(\"ReeferTrace\").classList.add(\"active\");\r\n this.setState({ mapState: value });\r\n }\r\n else {\r\n this.populateDefaultDates();\r\n this.bindReeferCurrentData();\r\n document.getElementById(\"ReeferTrace\").classList.remove(\"active\");\r\n document.getElementById(\"CurrentLocation\").classList.add(\"active\");\r\n this.setState({ mapState: value });\r\n }\r\n }\r\n\r\n ShowFullMap() {\r\n $(\"#Container1\").hide();\r\n $(\"#Container2\").hide();\r\n $(\"#Container3\").hide();\r\n $(\"#reeferMapGrid-height\").css('min-height', $(window).height() - 102);\r\n $(\"#reeferMapGrid-height\").css('max-height', $(window).height() - 102);\r\n $(\"#reeferMapGrid-height\").css(\"border\", \"none\");\r\n $(\"#dvFullScreen\").css(\"display\", \"none\");\r\n $(\"#dvResizeScreen\").css(\"display\", \"block\");\r\n $('.ReeferMapCallout').addClass('m-2');\r\n }\r\n\r\n MinimizeMap() {\r\n $(\"#Container1\").show();\r\n $(\"#Container2\").show();\r\n $(\"#Container3\").show();\r\n $(\"#reeferMapGrid-height\").css('min-height', $(window).height() - 400); \r\n $(\"#reeferMapGrid-height\").css('max-height', $(window).height() - 400);\r\n $(\"#reeferMapGrid-height\").css(\"border\", \"1px solid #045976\");\r\n $(\"#dvFullScreen\").css(\"display\", \"block\");\r\n $(\"#dvResizeScreen\").css(\"display\", \"none\");\r\n $('.ReeferMapCallout').removeClass('m-2');\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n downloadPTReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([self.state.PTIReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'PT_' + self.state.ReportReeferId + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(self.state.PTReport));\r\n element.setAttribute('download', 'PT_' + self.state.ReportReeferId + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n\r\n printPTReport() {\r\n var divToPrint = document.getElementById(\"printData\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n navigateToNextCell(params: any) {\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always on of the 4 keys above\";\r\n }\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"ReeferMapGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n \r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNumConfirm.bind(this, dashboardPreferenceId), self.closeRevisionConfirmation.bind(this));\r\n }\r\n \r\n refreshRevisionNumConfirm(dashboardPreferenceId: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n $('#globalLoader').hide(); \r\n });\r\n }\r\n\r\n refreshRevisionNum(dashboardPreferenceId: any) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n });\r\n }\r\n closeRevisionConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n From\r\n \r\n \r\n \r\n To\r\n \r\n \r\n \r\n\r\n {\r\n this.state.mapState == 'CurrentLocation' ?\r\n \r\n :\r\n \r\n }\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.mapState == 'CurrentLocation' ?\r\n \r\n :\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.IsLocationEstimated == true ?
    Location estimated
    : ''}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Pre-Trip Report
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtmlReport}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","/// \r\n\r\nimport * as React from 'react';\r\n\r\nvar self;\r\nexport interface StatusFilter {\r\n statusData: any[]\r\n AllDry_Count: number\r\n InGeofence_Count: number\r\n OutGeofence_Count: number \r\n dryStatusFilters: DryStatusFilters\r\n}\r\ninterface DryStatusFilters {\r\n AllDry: boolean,\r\n InGeofence: boolean,\r\n OutGeofence: boolean\r\n}\r\nconst emptySearchFilters = {\r\n AllDry: false, InGeofence: false, OutGeofence: false\r\n};\r\nvar isPanelLoaded;\r\nexport class DryStatusToggleButtonsFilter extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n statusData: [],\r\n AllDry_Count: 0,\r\n InGeofence_Count: 0,\r\n OutGeofence_Count: 0, \r\n dryStatusFilters: emptySearchFilters\r\n }\r\n\r\n self = this;\r\n isPanelLoaded = false;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (nextprops.gridData != undefined && nextprops.gridData != null && isPanelLoaded == true) {\r\n this.setStatusFilters(nextprops);\r\n }\r\n if (!isPanelLoaded) {\r\n isPanelLoaded = true;\r\n }\r\n }\r\n\r\n setStatusFilters(nextprops: any) {\r\n self.setState({\r\n isPanelLoaded: true,\r\n statusData: nextprops.gridData,\r\n AllDry_Count: nextprops.gridData.length,\r\n InGeofence_Count: nextprops.gridData.filter(x => x.InGeofence == true).length,\r\n OutGeofence_Count: nextprops.gridData.filter(x => x.InGeofence != true).length\r\n });\r\n }\r\n\r\n //ApplyStatusFilter(param: string) {\r\n // self.props.filterReeferStatusGrid(param);\r\n //}\r\n ApplyStatusFilter(param: string, event: React.FormEvent) {\r\n var searchFilter = this.state.dryStatusFilters;\r\n var isChecked: boolean = event.currentTarget.checked;\r\n switch (param) {\r\n case \"AllDry\":\r\n searchFilter.AllDry = isChecked;\r\n break;\r\n case \"InGeofence\":\r\n searchFilter.InGeofence = isChecked;\r\n break\r\n case \"OutGeofence\":\r\n searchFilter.OutGeofence = isChecked;\r\n break;\r\n }\r\n\r\n this.setState({\r\n dryStatusFilters: searchFilter\r\n });\r\n\r\n self.props.filterDryStatusGrid(searchFilter);\r\n }\r\n\r\n static ClearToggleFilters() {\r\n if (self != undefined) {\r\n var searchFilter = self.state.dryStatusFilters;\r\n searchFilter.AllDry = false;\r\n searchFilter.InGeofence = false;\r\n searchFilter.OutGeofence = false; \r\n self.setState({\r\n dryStatusFilters: searchFilter\r\n });\r\n }\r\n }\r\n\r\n ClearDryStatusFilters() {\r\n var searchFilter = self.state.dryStatusFilters;\r\n searchFilter.AllDry = false;\r\n searchFilter.InGeofence = false;\r\n searchFilter.OutGeofence = false;\r\n self.setState({\r\n dryStatusFilters: searchFilter\r\n });\r\n\r\n self.props.filterDryStatusGrid(searchFilter);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n
      \r\n
    • Grid Filters
    • \r\n {/*
    • Total Drys {this.state.AllDry_Count}
    • */}\r\n
    • Inside Geofence {this.state.InGeofence_Count}
    • \r\n
    • Outside Geofence {this.state.OutGeofence_Count}
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\n","/// \r\n/// \r\nimport * as React from 'react';\r\nimport { DryCommandsGrid } from '../../../childcomponents/DryCommandsGrid';\r\nimport { RCUtils } from './../../../../RCUtils';\r\nimport { PopupWindow } from '../../../sharedcomponents/PopupWindow';\r\nimport { DryStatusSSRMGrid } from '../../../childcomponents/DryStatusSSRMGrid';\r\nimport DryStatus from '../../../routecomponents/DryStatusSSRM';\r\n\r\nimport $ from 'jquery';\r\nvar self;\r\nvar Config: any = require('../../../../Config.json');\r\n\r\nexport interface ReportingIntervalState {\r\n SelectedDrys: any[],\r\n RowData: server.DryStatusData[],\r\n Filters: server.DryForwardCommandParams\r\n}\r\n\r\nexport class MRelatedReportingInterval extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedDrys: [], RowData: [], Filters: filterSet };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n if (this.props.dryData != null && this.props.dryData.length > 0) {\r\n this.setState({ RowData: this.props.dryData });\r\n }\r\n }\r\n\r\n submitPingCommand() {\r\n var command = \"PollUnit\";\r\n var refreshGrid = this.props.refreshGrid;\r\n //this.submitCommands(command, null, refreshGrid);\r\n }\r\n ValidateDecimalValue(param) {\r\n const IsMatch = /^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$/;\r\n if (IsMatch.test(param))\r\n return true;\r\n else\r\n return false;\r\n }\r\n submitReportingIntervalCommand() {\r\n var AlertMessage = \"\";\r\n var motionReportingInterval = this.state.Filters.InMotionReportingInterval.toString();\r\n var stationaryreportingInterval = this.state.Filters.StationaryReportingInterval.toString();\r\n if ((!motionReportingInterval || motionReportingInterval == undefined || motionReportingInterval == \"\" || motionReportingInterval.length == 0) || !this.ValidateDecimalValue(motionReportingInterval))\r\n AlertMessage += \"Please enter valid InMotionReportingInterval value.\\n\";\r\n if ((!stationaryreportingInterval || stationaryreportingInterval == undefined || stationaryreportingInterval == \"\" || stationaryreportingInterval.length == 0) || !this.ValidateDecimalValue(stationaryreportingInterval))\r\n AlertMessage += \"Please enter valid StationaryReportingInterval value.\\n\";\r\n if (AlertMessage == '') {\r\n\r\n\r\n //if (self.state.rowData.length > 0) {\r\n var command = \"MotionReportingInterval\";\r\n $('#globalLoader').show();\r\n var refreshGrid = this.props.refreshGrid;\r\n this.state.Filters.CommandName = command;\r\n this.state.Filters.SelectedDrys = this.state.RowData;\r\n // self.state.Filters.TempValue = paramValue;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryPostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n }\r\n\r\n if ($('#confirmPopUpModel') != undefined) {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n }\r\n\r\n $(\"#contextMenuModel .close\").click();\r\n\r\n if (refreshGrid == \"home\")\r\n DryStatusSSRMGrid.refreshDashboardGrid();\r\n else\r\n DryStatus.refreshDryStatusGrid();\r\n });\r\n this.setDefaultFilters();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage('Error', AlertMessage);\r\n }\r\n //}\r\n //else\r\n // PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n\r\n this.setState({ SelectedDrys: dryData });\r\n var dryData = nextprops.dryData;\r\n if (dryData != undefined && dryData != null && dryData.length > 0) {\r\n this.setState({ RowData: dryData });\r\n }\r\n }\r\n InMotionReportingIntervalChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var inMotionReportingInterval = this.state.Filters.InMotionReportingInterval;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n inMotionReportingInterval = Value;\r\n else\r\n return;\r\n this.state.Filters.InMotionReportingInterval = inMotionReportingInterval;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n StationaryReportingIntervalChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var stationaryReportingInterval = this.state.Filters.StationaryReportingInterval;\r\n var Value: string = event.currentTarget.value.trim();\r\n const IsMatch = /^[0-9]*$/;\r\n if (IsMatch.test(Value))\r\n stationaryReportingInterval = Value;\r\n else\r\n return;\r\n this.state.Filters.StationaryReportingInterval = stationaryReportingInterval;\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n\r\n setDefaultFilters() {\r\n var filters: server.DryForwardCommandParams = {\r\n SelectedDrys: [], CommandName: \"PollUnit\", TempValue: \"\", InMotionReportingInterval: '', StationaryReportingInterval: ''\r\n };\r\n return filters;\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n In-Motion Reporting Interval:\r\n
    \r\n
    this.InMotionReportingIntervalChange(e)} value={this.state.Filters.InMotionReportingInterval} />
    \r\n \r\n
    \r\n Stationary Reporting Interval:\r\n
    \r\n
    this.StationaryReportingIntervalChange(e)} value={this.state.Filters.StationaryReportingInterval} />
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n }\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","/// \r\n\r\nimport * as React from 'react';\r\n\r\nvar self;\r\nexport interface StatusFilter {\r\n statusData: any[]\r\n AllChassis_Count: number\r\n PwrInGeofence_Count: number\r\n PwrOutGeofence_Count: number\r\n NotPwrInGeofence_Count: number\r\n NotPwrOutGeofence_Count: number\r\n chassisStatusFilters: ChassisStatusFilters\r\n}\r\ninterface ChassisStatusFilters {\r\n AllChassis: boolean,\r\n PwrInGeofence: boolean,\r\n PwrOutGeofence: boolean,\r\n NotPwrInGeofence: boolean,\r\n NotPwrOutGeofence: boolean\r\n}\r\nconst emptySearchFilters = {\r\n AllChassis: false, PwrInGeofence: false, PwrOutGeofence: false, NotPwrInGeofence: false, NotPwrOutGeofence: false\r\n};\r\nvar isPanelLoaded;\r\nexport class ChassisStatusToggleButtonsFilter extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n statusData: [],\r\n AllChassis_Count: 0,\r\n PwrInGeofence_Count: 0,\r\n PwrOutGeofence_Count: 0,\r\n NotPwrInGeofence_Count: 0,\r\n NotPwrOutGeofence_Count: 0,\r\n chassisStatusFilters: emptySearchFilters\r\n }\r\n\r\n self = this;\r\n isPanelLoaded = false;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (nextprops.gridData != undefined && nextprops.gridData != null && isPanelLoaded == true) {\r\n this.setStatusFilters(nextprops);\r\n }\r\n if (!isPanelLoaded) {\r\n isPanelLoaded = true;\r\n }\r\n }\r\n\r\n setStatusFilters(nextprops: any) {\r\n self.setState({\r\n isPanelLoaded: true,\r\n statusData: nextprops.gridData,\r\n AllChassis_Count: nextprops.gridData.length,\r\n PwrInGeofence_Count: nextprops.gridData.filter(x => x.InGeofence == true && (x.PWR != null && x.PWR.toString().trim() == \"A\")).length,\r\n PwrOutGeofence_Count: nextprops.gridData.filter(x => x.InGeofence == false && (x.PWR != null && x.PWR.toString().trim() == \"A\")).length,\r\n NotPwrInGeofence_Count: nextprops.gridData.filter(x => x.InGeofence == true && (x.PWR == null || (x.PWR != null && x.PWR.toString().trim() != \"A\"))).length,\r\n NotPwrOutGeofence_Count: nextprops.gridData.filter(x => x.InGeofence == false && (x.PWR == null || (x.PWR != null && x.PWR.toString().trim() != \"A\"))).length\r\n\r\n });\r\n }\r\n\r\n //ApplyStatusFilter(param: string) {\r\n // self.props.filterReeferStatusGrid(param);\r\n //}\r\n ApplyStatusFilter(param: string, event: React.FormEvent) {\r\n var searchFilter = this.state.chassisStatusFilters;\r\n var isChecked: boolean = event.currentTarget.checked;\r\n switch (param) {\r\n case \"AllChassis\":\r\n searchFilter.AllChassis = isChecked;\r\n break;\r\n case \"PwrInGeofence\":\r\n searchFilter.PwrInGeofence = isChecked;\r\n break\r\n case \"PwrOutGeofence\":\r\n searchFilter.PwrOutGeofence = isChecked;\r\n break;\r\n case \"NotPwrInGeofence\":\r\n searchFilter.NotPwrInGeofence = isChecked;\r\n break;\r\n case \"NotPwrOutGeofence\":\r\n searchFilter.NotPwrOutGeofence = isChecked;\r\n break;\r\n }\r\n\r\n this.setState({\r\n chassisStatusFilters: searchFilter\r\n });\r\n\r\n self.props.filterChassisStatusGrid(searchFilter);\r\n }\r\n\r\n static ClearToggleFilters() {\r\n if (self != undefined) {\r\n var searchFilter = self.state.chassisStatusFilters;\r\n searchFilter.AllChassis = false;\r\n searchFilter.PwrInGeofence = false;\r\n searchFilter.PwrOutGeofence = false;\r\n searchFilter.NotPwrInGeofence = false;\r\n searchFilter.NotPwrOutGeofence = false;\r\n self.setState({\r\n chassisStatusFilters: searchFilter\r\n });\r\n }\r\n }\r\n\r\n ClearChassisStatusFilters() {\r\n var searchFilter = self.state.chassisStatusFilters;\r\n searchFilter.AllChassis = false;\r\n searchFilter.PwrInGeofence = false;\r\n searchFilter.PwrOutGeofence = false;\r\n searchFilter.NotPwrInGeofence = false;\r\n searchFilter.NotPwrOutGeofence = false;\r\n self.setState({\r\n chassisStatusFilters: searchFilter\r\n });\r\n\r\n self.props.filterChassisStatusGrid(searchFilter);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n
      \r\n
    • Grid Filters
    • \r\n
    • Total Chassiss {this.state.AllChassis_Count}
    • \r\n
    • Powered, Inside Geofence {this.state.PwrInGeofence_Count}
    • \r\n
    • Powered, Outside Geofence {this.state.PwrOutGeofence_Count}
    • \r\n
    • Not Powered, Inside Geofence {this.state.NotPwrInGeofence_Count}
    • \r\n
    • Not Powered, Outside Geofence {this.state.NotPwrOutGeofence_Count}
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\n","/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nimport ReeferCallout from '../actions/ReeferCallout';\r\nvar Config: any = require('../Config.json');\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface HomeState {\r\n isLoading: boolean;\r\n searchFilters: server.ReeferSearchFilters;\r\n gridType: any;\r\n allAssetStatus: any[];\r\n reeferStatus: any[];\r\n gensetStatus: any[];\r\n dryStatus: any[];\r\n chassisStatus: any[];\r\n performCargoAction: boolean;\r\n reeferFormatter: any;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n eventsRefreshed: any;\r\n tripWISESupportdeviceTypes: any;\r\n SearchLoadingIsInProgress: boolean;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestReeferFormatters {\r\n type: 'REQUEST_REEFER_FORMATTERS';\r\n}\r\n\r\ninterface RequestReeferConfigTypes {\r\n type: 'REQUEST_REEFER_CONFIG_TYPES';\r\n}\r\n\r\ninterface RequestRefApplicationParams {\r\n type: 'REQUEST_REF_APPLICATION_PARAMS';\r\n}\r\n\r\ninterface RequestReeferSearchAction {\r\n type: 'REQUEST_REEFER_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\ninterface RequestDrySearchAction {\r\n type: 'REQUEST_DRY_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\ninterface RequestGensetSearchAction {\r\n type: 'REQUEST_GENSET_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\ninterface RequestChassisSearchAction {\r\n type: 'REQUEST_CHASSIS_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\ninterface RequestTripWISESupport {\r\n type: 'REQUEST_TRIPWISE_SUPPORT';\r\n}\r\n\r\ninterface ReceiveReeferFormattersConfigAction {\r\n type: 'RECEIVE_REEFER_FORMATTERS_CONFIG_TYPES';\r\n searchFilters: server.ReeferSearchFilters;\r\n gridType: any;\r\n allAssetStatusData: any[];\r\n reeferStatusData: any[];\r\n gensetStatusData: any[];\r\n dryStatusData: any[];\r\n chassisStatusData: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n eventsRefresh: any;\r\n tripWISESupportdeviceTypes: any;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\n\r\ninterface ReceiveDrySearchAction {\r\n type: 'RECEIVE_DRY_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n gridType: any;\r\n allAssetStatusData: any[];\r\n reeferStatusData: any[];\r\n gensetStatusData: any[];\r\n dryStatusData: any[];\r\n chassisStatusData: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n eventsRefresh: any;\r\n tripWISESupportdeviceTypes: any;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\ninterface ReceiveChassisSearchAction {\r\n type: 'RECEIVE_CHASSIS_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n gridType: any;\r\n allAssetStatusData: any[];\r\n reeferStatusData: any[];\r\n gensetStatusData: any[];\r\n dryStatusData: any[];\r\n chassisStatusData: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n eventsRefresh: any;\r\n tripWISESupportdeviceTypes: any;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\n\r\ninterface ReceiveReeferSearchAction {\r\n type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n gridType: any;\r\n allAssetStatusData: any[];\r\n reeferStatusData: any[];\r\n gensetStatusData: any[];\r\n dryStatusData: any[];\r\n chassisStatusData: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n tripWISESupportdeviceTypes: any;\r\n eventsRefresh: any;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\n\r\ninterface ReceiveGensetSearchAction {\r\n type: 'RECEIVE_GENSET_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n gridType: any;\r\n allAssetStatusData: any[];\r\n reeferStatusData: any[];\r\n dryStatusData: any[];\r\n gensetStatusData: any[];\r\n chassisStatusData: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n tripWISESupportdeviceTypes: any;\r\n eventsRefresh: any;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\ninterface RequestAssignCargoCare {\r\n type: 'REQUEST_ASSIGN_CARGO_CARE';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\n\r\ninterface RequestUnAssignCargoCare {\r\n type: 'REQUEST_UN_ASSIGN_CARGO_CARE';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\n\r\ninterface RequestClearSetPoint {\r\n type: 'REQUEST_CLEAR_SET_POINT';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\n//WI-23763\r\ninterface RequestAllAssetTypeSearchAction {\r\n type: 'REQUEST_AllAssetType_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n//WI-23763\r\ninterface ReceiveAllAssetTypeSearchAction {\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n gridType: any;\r\n allAssetStatusData: any[];\r\n reeferStatusData: any[];\r\n dryStatusData: any[];\r\n gensetStatusData: any[];\r\n chassisStatusData: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n eventsRefresh: any;\r\n tripWISESupportdeviceTypes: any;\r\n SearchLoadingIsInProgress: any;\r\n}\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestReeferFormatters | RequestReeferConfigTypes | RequestRefApplicationParams | RequestReeferSearchAction | ReceiveReeferSearchAction | RequestGensetSearchAction | ReceiveGensetSearchAction | RequestDrySearchAction | ReceiveDrySearchAction | RequestChassisSearchAction | ReceiveChassisSearchAction | RequestAssignCargoCare | RequestUnAssignCargoCare | RequestClearSetPoint | RequestAllAssetTypeSearchAction | ReceiveAllAssetTypeSearchAction | ReceiveReeferFormattersConfigAction | RequestTripWISESupport;//WI-23763\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestReeferFormatters: (): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({\r\n type: 'RECEIVE_REEFER_FORMATTERS_CONFIG_TYPES', searchFilters: getState().home.searchFilters, gridType: getState().home.gridType,\r\n allAssetStatusData: getState().home.allAssetStatus, reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [],\r\n performCargoAction: false, reeferFormatterData: data, reeferConfigTypes: getState().home.reeferConfigTypes,\r\n refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes,\r\n eventsRefresh: false, SearchLoadingIsInProgress: false\r\n });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_REEFER_FORMATTERS' });\r\n },\r\n requestRefApplicationParams: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetRefApplicationParams', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_FORMATTERS_CONFIG_TYPES', searchFilters: getState().home.searchFilters, gridType: getState().home.gridType, allAssetStatusData: getState().home.allAssetStatus, reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: data, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_REF_APPLICATION_PARAMS' });\r\n },\r\n requestReeferConfigTypes: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferConfigTypes', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_FORMATTERS_CONFIG_TYPES', searchFilters: getState().home.searchFilters, gridType: getState().home.gridType, allAssetStatusData: getState().home.allAssetStatus, reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: data, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_REEFER_CONFIG_TYPES' });\r\n },\r\n requestDryAdvanceSearch: (searchFilters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean,\r\n SearchLoadingIsInProgress: boolean): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n //ReeferCallout.BindClusterMapPushpins(finalData, 'dry', (getState().home.reeferFormatter != null) ? getState().home.reeferFormatter : null);\r\n if (finalData != null && finalData != undefined && finalData.length > 0) {\r\n var data = JSON.parse(JSON.stringify(finalData));\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: data, reeferStatusData: [], dryStatusData: data, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: data, reeferStatusData: getState().home.reeferStatus, dryStatusData: data, gensetStatusData: getState().home.gensetStatus, chassisStatusData: getState().home.chassisStatus, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: data, reeferStatusData: [], dryStatusData: data, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: data, reeferStatusData: getState().home.reeferStatus, dryStatusData: data, gensetStatusData: getState().home.gensetStatus, chassisStatusData: getState().home.chassisStatus, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'dry', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_DRY_ADVANCE_SEARCH', searchFilters: searchFilters, SearchLoadingIsInProgress: SearchLoadingIsInProgress });\r\n },\r\n requestReeferAdvanceSearch: (searchFilters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean,\r\n SearchLoadingIsInProgress: boolean): AppThunkAction => (dispatch, getState) => {\r\n\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCurrentConditionReeferDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n //ReeferCallout.BindClusterMapPushpins(finalData, 'status', (getState().home.reeferFormatter != null) ? getState().home.reeferFormatter : null);\r\n if (finalData != null && finalData != undefined && finalData.length > 0) {\r\n var data = JSON.parse(JSON.stringify(finalData));\r\n\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress:false });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', allAssetStatusData: data, reeferStatusData: data, dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', allAssetStatusData: data, reeferStatusData: data, dryStatusData: getState().home.dryStatus, gensetStatusData: getState().home.gensetStatus, chassisStatusData: getState().home.chassisStatus, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', allAssetStatusData: data, reeferStatusData: data, dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh,SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', allAssetStatusData: data, reeferStatusData: data, dryStatusData: getState().home.dryStatus, gensetStatusData: getState().home.gensetStatus, chassisStatusData: getState().home.chassisStatus, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'status', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_REEFER_ADVANCE_SEARCH', searchFilters: searchFilters, SearchLoadingIsInProgress: SearchLoadingIsInProgress });\r\n },\r\n requestGensetAdvanceSearch: (searchFilters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean,\r\n SearchLoadingIsInProgress: boolean): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n //ReeferCallout.BindClusterMapPushpins(finalData, 'genset', (getState().home.reeferFormatter != null) ? getState().home.reeferFormatter : null);\r\n if (finalData != null && finalData != undefined && finalData.length > 0) {\r\n var data = JSON.parse(JSON.stringify(finalData));\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: data, reeferStatusData: [], dryStatusData: [], gensetStatusData: data, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: data, reeferStatusData: getState().home.reeferStatus, dryStatusData: getState().home.dryStatus, gensetStatusData: data, chassisStatusData: getState().home.chassisStatus, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: data, reeferStatusData: [], dryStatusData: [], gensetStatusData: data, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: data, reeferStatusData: getState().home.reeferStatus, dryStatusData: getState().home.dryStatus, gensetStatusData: data, chassisStatusData: getState().home.chassisStatus, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_GENSET_ADVANCE_SEARCH', searchFilters: searchFilters, SearchLoadingIsInProgress: SearchLoadingIsInProgress });\r\n },\r\n requestChassisAdvanceSearch: (searchFilters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean,\r\n SearchLoadingIsInProgress: boolean): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n //ReeferCallout.BindClusterMapPushpins(finalData, 'chassis', (getState().home.reeferFormatter != null) ? getState().home.reeferFormatter : null);\r\n if (finalData != null && finalData != undefined && finalData.length > 0) {\r\n var data = JSON.parse(JSON.stringify(finalData));\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined && data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: data, reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: data, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: data, reeferStatusData: getState().home.reeferStatus, dryStatusData: getState().home.dryStatus, gensetStatusData: getState().home.gensetStatus, chassisStatusData: data, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n }\r\n else {\r\n if(newSearch == true)\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: data, reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: data, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: data, reeferStatusData: getState().home.reeferStatus, dryStatusData: getState().home.dryStatus, gensetStatusData: getState().home.gensetStatus, chassisStatusData: data, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: eventsRefresh, SearchLoadingIsInProgress: false });//RCNG-1363\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_CHASSIS_ADVANCE_SEARCH', searchFilters: searchFilters, SearchLoadingIsInProgress: SearchLoadingIsInProgress });\r\n },\r\n requestAllAssetTypeAdvanceSearchSSRM: (searchFilters: server.ReeferSearchFilters, isFenceAssets: any,\r\n SearchLoadingIsInProgress: boolean): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetAllAssetTypeDataSSRMAsync', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n \r\n if (finalData != null && finalData != undefined) {\r\n var data = JSON.parse(JSON.stringify(finalData));\r\n if (data != null && data != undefined) {\r\n var _isdryError = ((data.Dry.ErrorMessage != null && data.Dry.ErrorMessage != undefined && data.Dry.ErrorMessage != \"\") || (data.Dry.length > 0 && (data.Dry[0].ErrorMessage != undefined && data.Dry[0].ErrorMessage != \"\")));\r\n var _isgensetError = ((data.Genset.ErrorMessage != null && data.Genset.ErrorMessage != undefined && data.Genset.ErrorMessage != \"\") || (data.Genset.length > 0 && (data.Genset[0].ErrorMessage != undefined && data.Genset[0].ErrorMessage != \"\")));\r\n var _isreeferError = ((data.Reefers.ErrorMessage != null && data.Reefers.ErrorMessage != undefined && data.Reefers.ErrorMessage != \"\") || (data.Reefers.length > 0 && (data.Reefers[0].ErrorMessage != undefined && data.Reefers[0].ErrorMessage != \"\")));\r\n var _ischassisError = ((data.Chassis.ErrorMessage != null && data.Chassis.ErrorMessage != undefined && data.Chassis.ErrorMessage != \"\") || (data.Chassis.length > 0 && (data.Chassis[0].ErrorMessage != undefined && data.Chassis[0].ErrorMessage != \"\")));\r\n var _timeOutError = \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\";\r\n var _timeOutMsg = \"Server is busy. Please try after sometime.\";\r\n if (_isdryError && _isgensetError && _isreeferError && _ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n }\r\n else if (_isdryError && !_isgensetError && !_isreeferError && !_ischassisError) {\r\n if (data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isgensetError && !_isdryError && !_isreeferError && !_ischassisError) {\r\n if (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many genset asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && !_isdryError && !_isgensetError && !_ischassisError) {\r\n if (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_ischassisError && !_isreeferError && !_isdryError && !_isgensetError) {\r\n if (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isdryError && !_isgensetError && !_ischassisError) {\r\n if ((data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer and dry asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isgensetError && !_isdryError && !_ischassisError) {\r\n if ((data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer and genset asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _ischassisError && !_isdryError && !_isgensetError) {\r\n if ((data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isgensetError && _ischassisError && !_isdryError && !_isreeferError) {\r\n if ((data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many genset and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isdryError && _ischassisError && !_isgensetError && !_isreeferError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isgensetError && _isdryError && !_ischassisError && !_isreeferError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many genset and dry asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isdryError && _ischassisError && !_isgensetError && !_isreeferError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (!_isreeferError && _isdryError && _isgensetError && _ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry, genset and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && !_isdryError && _isgensetError && _ischassisError) {\r\n if ((data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer, genset and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isdryError && !_isgensetError && _ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer, dry and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isdryError && _isgensetError && !_ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer, dry and genset asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else {\r\n if (data.Dry.length == 0 && data.Genset.length == 0 && data.Reefers.length == 0 && data.Chassis.length == 0)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Assets not found.\");\r\n\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n else {\r\n if (data.Dry.length == 0 && data.Genset.length == 0 && data.Reefers.length == 0 && data.Chassis.length == 0)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Assets not found.\");\r\n\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n else {\r\n\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, SearchLoadingIsInProgress: SearchLoadingIsInProgress });\r\n },\r\n requestAllAssetTypeAdvanceSearch: (searchFilters: server.ReeferSearchFilters, isFenceAssets: any,\r\n SearchLoadingIsInProgress: boolean): AppThunkAction => (dispatch, getState) => {\r\n console.log(\"from Home.ts value of SearchLoadingIsInProgress from caller function is \" + SearchLoadingIsInProgress);\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetAllAssetTypeDataAsync', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n //if (finalData != null && finalData != undefined) {\r\n // var data = JSON.parse(JSON.stringify(finalData));\r\n // if (data.Reefers != null && data.Reefers != undefined && data.Reefers.length > 0) {\r\n // if (getState().home.reeferFormatter != null && getState().home.reeferFormatter != undefined) {\r\n // if (getState().home.reeferFormatter.AlarmMasterList != null && getState().home.reeferFormatter.AlarmMasterList != undefined && getState().home.reeferFormatter.AlarmMasterList.length > 0) {\r\n // //ReeferCallout.BindClusterMapAllAssetsPushpins(finalData, 'All Assets', getState().home.reeferFormatter, isFenceAssets);\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // //ReeferCallout.BindClusterMapAllAssetsPushpins(finalData, 'All Assets', null, isFenceAssets);\r\n // }\r\n //}\r\n if (finalData != null && finalData != undefined) {\r\n var data = JSON.parse(JSON.stringify(finalData));\r\n if (data != null && data != undefined) {\r\n var _isdryError = ((data.Dry.ErrorMessage != null && data.Dry.ErrorMessage != undefined && data.Dry.ErrorMessage != \"\") || (data.Dry.length > 0 && (data.Dry[0].ErrorMessage != undefined && data.Dry[0].ErrorMessage != \"\")));\r\n var _isgensetError = ((data.Genset.ErrorMessage != null && data.Genset.ErrorMessage != undefined && data.Genset.ErrorMessage != \"\") || (data.Genset.length > 0 && (data.Genset[0].ErrorMessage != undefined && data.Genset[0].ErrorMessage != \"\")));\r\n var _isreeferError = ((data.Reefers.ErrorMessage != null && data.Reefers.ErrorMessage != undefined && data.Reefers.ErrorMessage != \"\") || (data.Reefers.length > 0 && (data.Reefers[0].ErrorMessage != undefined && data.Reefers[0].ErrorMessage != \"\")));\r\n var _ischassisError = ((data.Chassis.ErrorMessage != null && data.Chassis.ErrorMessage != undefined && data.Chassis.ErrorMessage != \"\") || (data.Chassis.length > 0 && (data.Chassis[0].ErrorMessage != undefined && data.Chassis[0].ErrorMessage != \"\")));\r\n var _timeOutError = \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\";\r\n var _timeOutMsg = \"Server is busy. Please try after sometime.\";\r\n if (_isdryError && _isgensetError && _isreeferError && _ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n }\r\n else if (_isdryError && !_isgensetError && !_isreeferError && !_ischassisError) {\r\n if (data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isgensetError && !_isdryError && !_isreeferError && !_ischassisError) {\r\n if (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many genset asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && !_isdryError && !_isgensetError && !_ischassisError) {\r\n if (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_ischassisError && !_isreeferError && !_isdryError && !_isgensetError) {\r\n if (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isdryError && !_isgensetError && !_ischassisError) {\r\n if ((data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer and dry asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isgensetError && !_isdryError && !_ischassisError) {\r\n if ((data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer and genset asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _ischassisError && !_isdryError && !_isgensetError) {\r\n if ((data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isgensetError && _ischassisError && !_isdryError && !_isreeferError) {\r\n if ((data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many genset and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: true \r\n });\r\n }\r\n }\r\n else if (_isdryError && _ischassisError && !_isgensetError && !_isreeferError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isgensetError && _isdryError && !_ischassisError && !_isreeferError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many genset and dry asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isdryError && _ischassisError && !_isgensetError && !_isreeferError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (!_isreeferError && _isdryError && _isgensetError && _ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many dry, genset and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && !_isdryError && _isgensetError && _ischassisError) {\r\n if ((data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer, genset and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isdryError && !_isgensetError && _ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Chassis.ErrorMessage == _timeOutError || data.Chassis[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer, dry and chassis asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else if (_isreeferError && _isdryError && _isgensetError && !_ischassisError) {\r\n if ((data.Dry.ErrorMessage == _timeOutError || data.Dry[0].ErrorMessage == _timeOutError) && (data.Reefers.ErrorMessage == _timeOutError || data.Reefers[0].ErrorMessage == _timeOutError) && (data.Genset.ErrorMessage == _timeOutError || data.Genset[0].ErrorMessage == _timeOutError)) {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", _timeOutMsg);\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many reefer, dry and genset asset results. Please refine your search.\");\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: [],\r\n dryStatusData: [], gensetStatusData: [], chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n }\r\n else {\r\n if (data.Dry.length == 0 && data.Genset.length == 0 && data.Reefers.length == 0 && data.Chassis.length == 0)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Assets not found.\");\r\n\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n }\r\n $('#globalLoader').hide();\r\n }\r\n else {\r\n if (data.Dry.length == 0 && data.Genset.length == 0 && data.Reefers.length == 0 && data.Chassis.length == 0)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Assets not found.\");\r\n\r\n dispatch({\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: data, reeferStatusData: data.Reefers == null ? [] : data.Reefers,\r\n dryStatusData: data.Dry == null ? [] : data.Dry, gensetStatusData: data.Genset == null ? [] : data.Genset, chassisStatusData: data.Chassis == null ? [] : data.Chassis, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false \r\n });\r\n\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n else {\r\n\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: '', allAssetStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n }\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, SearchLoadingIsInProgress: SearchLoadingIsInProgress });\r\n },\r\n requestAssignCargoCare: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/AssignCargoCare', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().home.searchFilters, gridType: getState().home.gridType, allAssetStatusData: getState().home.allAssetStatus, reeferStatusData: getState().home.reeferStatus, dryStatusData: getState().home.dryStatus, gensetStatusData: getState().home.gensetStatus, chassisStatusData: getState().home.chassisStatus, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_ASSIGN_CARGO_CARE', commandUnits: commandUnits });\r\n },\r\n requestUnAssignCargoCare: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/UnAssignCargoCare', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().home.searchFilters, gridType: getState().home.gridType, allAssetStatusData: getState().home.allAssetStatus, reeferStatusData: getState().home.reeferStatus, dryStatusData: getState().home.dryStatus, gensetStatusData: getState().home.gensetStatus, chassisStatusData: getState().home.chassisStatus, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_UN_ASSIGN_CARGO_CARE', commandUnits: commandUnits });\r\n },\r\n requestClearSetPoint: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearSetPoint', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: getState().home.searchFilters, gridType: getState().home.gridType, allAssetStatusData: getState().home.allAssetStatus, reeferStatusData: getState().home.reeferStatus, dryStatusData: getState().home.dryStatus, gensetStatusData: getState().home.gensetStatus, chassisStatusData: getState().home.chassisStatus, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams, tripWISESupportdeviceTypes: getState().home.tripWISESupportdeviceTypes, eventsRefresh: false, SearchLoadingIsInProgress: false });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_CLEAR_SET_POINT', commandUnits: commandUnits });\r\n },\r\n requestTripWISESupport: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetTripWISESupport', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({\r\n type: 'RECEIVE_REEFER_FORMATTERS_CONFIG_TYPES', searchFilters: getState().home.searchFilters, gridType: getState().home.gridType, allAssetStatusData: getState().home.allAssetStatus,\r\n reeferStatusData: [], dryStatusData: [], gensetStatusData: [], chassisStatusData: [], performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter,\r\n reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams,\r\n tripWISESupportdeviceTypes: data, eventsRefresh: false,SearchLoadingIsInProgress:false\r\n });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_TRIPWISE_SUPPORT' });\r\n },\r\n \r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptySearchFilter = {\r\n SelectedOem: null, SelectedCountry: null, SelectedReefer: null, SelectedGeofence: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedVesselCode: null, StatusFilters: [], AllReefers: null,\r\n CustomAttributeFilters: null, SelectedAssetTypes: null, SelectedAssetStates: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles:null//WI-26881\r\n\r\n}\r\nconst unloadedState: HomeState = { isLoading: false, searchFilters: emptySearchFilter, gridType: '', allAssetStatus: [], reeferStatus: [], gensetStatus: [], dryStatus: [], chassisStatus: [], performCargoAction: false, reeferFormatter: null, reeferConfigTypes: null, refApplicationParams: null, tripWISESupportdeviceTypes: null, eventsRefreshed: false, SearchLoadingIsInProgress: false };\r\n\r\nexport const reducer: Reducer = (state: HomeState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_REEFER_FORMATTERS':\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress \r\n };\r\n case 'REQUEST_REEFER_CONFIG_TYPES':\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_REF_APPLICATION_PARAMS':\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_REEFER_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_DRY_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_GENSET_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_CHASSIS_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_ASSIGN_CARGO_CARE':\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_UN_ASSIGN_CARGO_CARE':\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress\r\n };\r\n case 'REQUEST_CLEAR_SET_POINT':\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress\r\n };\r\n case 'RECEIVE_REEFER_FORMATTERS_CONFIG_TYPES':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n var allAssetsData: any;\r\n if (action.allAssetStatusData === undefined)\r\n allAssetsData = state.allAssetStatus;\r\n else\r\n allAssetsData = action.allAssetStatusData;\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: action.gridType === undefined ? state.gridType : action.gridType,\r\n allAssetStatus: allAssetsData,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: false,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: action.reeferFormatterData,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams,\r\n tripWISESupportdeviceTypes: action.tripWISESupportdeviceTypes,\r\n eventsRefreshed: action.eventsRefresh,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress\r\n };\r\n };\r\n case 'RECEIVE_DRY_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n var allAssetsData: any;\r\n if (action.allAssetStatusData === undefined)\r\n allAssetsData = state.allAssetStatus;\r\n else\r\n allAssetsData = action.allAssetStatusData;\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType === undefined ? state.gridType : action.gridType,\r\n allAssetStatus: allAssetsData,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: action.dryStatusData,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: false,\r\n performCargoAction: state.performCargoAction,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n };\r\n case 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n var allAssetsData: any;\r\n if (action.allAssetStatusData === undefined)\r\n allAssetsData = state.allAssetStatus;\r\n else\r\n allAssetsData = action.allAssetStatusData;\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType === undefined ? state.gridType : action.gridType,\r\n allAssetStatus: allAssetsData,\r\n reeferStatus: action.reeferStatusData,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: false,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: action.reeferFormatterData,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams,\r\n tripWISESupportdeviceTypes: action.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n };\r\n case 'RECEIVE_GENSET_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n var allAssetsData: any;\r\n if (action.allAssetStatusData === undefined)\r\n allAssetsData = state.allAssetStatus;\r\n else\r\n allAssetsData = action.allAssetStatusData;\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType === undefined ? state.gridType : action.gridType,\r\n allAssetStatus: allAssetsData,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: action.gensetStatusData,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: false,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: action.reeferFormatterData,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams,\r\n tripWISESupportdeviceTypes: action.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n };\r\n case 'RECEIVE_CHASSIS_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n var allAssetsData: any;\r\n if (action.allAssetStatusData === undefined)\r\n allAssetsData = state.allAssetStatus;\r\n else\r\n allAssetsData = action.allAssetStatusData;\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType === undefined ? state.gridType : action.gridType,\r\n allAssetStatus: allAssetsData,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: action.chassisStatusData,\r\n isLoading: false,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: action.reeferFormatterData,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams,\r\n tripWISESupportdeviceTypes: action.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n };\r\n //WI-23763\r\n case 'REQUEST_AllAssetType_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n //WI-23763\r\n case 'RECEIVE_AllAssetType_ADVANCE_SEARCH':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n reeferStatus: action.reeferStatusData,\r\n dryStatus: action.dryStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n isLoading: false,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: action.reeferFormatterData,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams,\r\n tripWISESupportdeviceTypes: action.tripWISESupportdeviceTypes,\r\n eventsRefreshed: action.eventsRefresh,\r\n SearchLoadingIsInProgress: action.SearchLoadingIsInProgress\r\n };\r\n }\r\n break;\r\n case 'REQUEST_TRIPWISE_SUPPORT':\r\n return {\r\n searchFilters: state.searchFilters,\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams,\r\n tripWISESupportdeviceTypes: state.tripWISESupportdeviceTypes,\r\n eventsRefreshed: false,\r\n SearchLoadingIsInProgress: state.SearchLoadingIsInProgress\r\n };\r\n\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","\r\n/// \r\n/// \r\n/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\n\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json');\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface GensetSearchState {\r\n isLoading: boolean;\r\n /* WI 26566 changes start */\r\n allAssetStatus: any[];\r\n gridType: any;\r\n chassisStatus: any[];\r\n reeferStatus: any[];\r\n dryStatus: any[];\r\n /* WI 26566 changes end */\r\n searchFilters: server.ReeferSearchFilters;\r\n gensetStatus: server.GensetStatusUI[];\r\n columnDefs: any[];\r\n reeferFormatter: server.ReeferFormatter;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestGensetSearchAction {\r\n type: 'REQUEST_GENSET_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n colDefs: any[];\r\n}\r\n\r\ninterface ReceiveGensetSearchAction {\r\n type: 'RECEIVE_GENSET_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n /* WI 26566 changes start */\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n chassisStatusData: any[];\r\n reeferStatusData: any[];\r\n dryStatusData: any[];\r\n /* WI 26566 changes end */\r\n gensetStatusData: server.GensetStatusUI[];\r\n colDefs: any[];\r\n reeferFormatterData: server.ReeferFormatter;\r\n}\r\n/* WI 26566 changes start */\r\ninterface ReceiveAllAssetTypeSearchAction {\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n chassisStatusData: any[];\r\n reeferStatusData: any[];\r\n dryStatusData: any[];\r\n gensetStatusData: server.GensetStatusUI[];\r\n colDefs: any[];\r\n reeferFormatterData: server.ReeferFormatter;\r\n}\r\n/* WI 26566 changes end */\r\n\r\ninterface RequestEventMaster {\r\n type: 'REQUEST_EVENTMASTER'; \r\n}\r\ninterface ReceiveEventMaster {\r\n type: 'RECEIVE_EVENTMASTER';\r\n reeferFormatterData: server.ReeferFormatter;\r\n}\r\n\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestGensetSearchAction | ReceiveGensetSearchAction | RequestEventMaster | ReceiveEventMaster | ReceiveAllAssetTypeSearchAction ;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestGensetAdvanceSearch: (searchFilters: server.ReeferSearchFilters, reeferCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: [], dryStatusData: [], reeferStatusData: [], chassisStatusData:[], gensetStatusData: [], colDefs: reeferCols, reeferFormatterData: getState().home.reeferFormatter });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: [], dryStatusData: [], reeferStatusData: [], chassisStatusData: [], gensetStatusData: [], colDefs: reeferCols, reeferFormatterData: getState().home.reeferFormatter });\r\n }\r\n }\r\n else {\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: data, dryStatusData: [], reeferStatusData: [], chassisStatusData: [], gensetStatusData: data, colDefs: reeferCols, reeferFormatterData: getState().home.reeferFormatter});\r\n }\r\n }\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'genset', allAssetStatusData: [], dryStatusData: [], reeferStatusData: [], chassisStatusData: [], gensetStatusData: [], colDefs: reeferCols, reeferFormatterData: getState().home.reeferFormatter});\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_GENSET_ADVANCE_SEARCH', searchFilters: searchFilters, colDefs: reeferCols });\r\n },\r\n requestEventMaster: (): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_EVENTMASTER', reeferFormatterData: data });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_EVENTMASTER' });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\n//const emptyAdvanceSearchFilter = { CustomerTypeCode: null, CustomerID: null, AssetType: null, AssetNumber: null, ServerFence: null, DeviceFence: null, Region: null, City: null, State: null,ZipCode: null, Country: null, Geofence: null, POI: null, Oem: null, ReportingInterval: null, GeofenceInside: null}\r\nconst emptySearchFilter = {\r\n SelectedOem: null, SelectedCountry: null, SelectedReefer: null, SelectedGeofence: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedVesselCode: null, StatusFilters: [], AllReefers: null,\r\n CustomAttributeFilters: null, SelectedAssetTypes: null, SelectedAssetStates: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles:null //WI-26881\r\n}\r\nconst unloadedState: GensetSearchState = {\r\n isLoading: false, searchFilters: emptySearchFilter, gridType: '', allAssetStatus: [], gensetStatus: [], dryStatus: [], chassisStatus: [], reeferStatus: [], columnDefs: [], reeferFormatter: null };\r\n\r\nexport const reducer: Reducer = (state: GensetSearchState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_GENSET_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n gensetStatus: state.gensetStatus,\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n reeferFormatter: state.reeferFormatter\r\n };\r\n case 'REQUEST_EVENTMASTER':\r\n return {\r\n searchFilters: state.searchFilters,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n gensetStatus: state.gensetStatus,\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n reeferFormatter: state.reeferFormatter \r\n };\r\n case 'RECEIVE_EVENTMASTER':\r\n return {\r\n searchFilters: state.searchFilters,\r\n /* WI 26566 changes start */\r\n gridType: state.gridType,\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n chassisStatus: state.chassisStatus,\r\n /* WI 26566 changes end */\r\n gensetStatus: state.gensetStatus,\r\n isLoading: false,\r\n columnDefs: state.columnDefs,\r\n reeferFormatter: action.reeferFormatterData\r\n };\r\n \r\n case 'RECEIVE_GENSET_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n /* WI 26566 changes start */\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n reeferStatus: action.reeferStatusData,\r\n dryStatus: action.dryStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n /* WI 26566 changes end */\r\n gensetStatus: action.gensetStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs,\r\n reeferFormatter: action.reeferFormatterData\r\n };\r\n }\r\n /* WI 26566 changes start */\r\n case 'RECEIVE_AllAssetType_ADVANCE_SEARCH':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n reeferStatus: action.reeferStatusData,\r\n dryStatus: action.dryStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs,\r\n reeferFormatter: action.reeferFormatterData\r\n };\r\n }\r\n /* WI 26566 changes end */\r\n break;\r\n\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\n\r\nimport { RCUtils } from './../RCUtils';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nimport { getStateToken } from '@okta/okta-auth-js';\r\nimport { data } from 'jquery';\r\nvar Config: any = require('../Config.json');\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\nexport interface RcdSearchState {\r\n isLoading: boolean;\r\n rcdSearchFilters: server.RcdStatusSearchFilters;\r\n rcdStatus: server.USP_RcdCurrentConditionUI[];\r\n reeferFormatter: server.ReeferFormatter;\r\n refApplicationParams: any;\r\n SelectedRowGroups: [];\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestRcdSearchAction {\r\n type: 'REQUEST_RCD_ADVANCE_SEARCH';\r\n rcdSearchFilters: server.RcdStatusSearchFilters;\r\n}\r\n\r\ninterface ReceiveRcdSearchAction {\r\n type: 'RECEIVE_RCD_ADVANCE_SEARCH_DETAILS';\r\n rcdSearchFilters: server.RcdStatusSearchFilters;\r\n rcdStatusData: server.USP_RcdCurrentConditionUI[];\r\n}\r\ninterface RequestEventMaster {\r\n type: 'REQUEST_EVENTMASTER';\r\n}\r\ninterface ReceiveEventMaster {\r\n type: 'RECEIVE_EVENTMASTER';\r\n reeferFormatterData: server.ReeferFormatter;\r\n}\r\n\r\ninterface RequestRefApplicationParams {\r\n type: 'REQUEST_REF_APPLICATION_PARAMS';\r\n}\r\n\r\ninterface ReceiveRefApplicationParams {\r\n type: 'RECEIVE_REF_APPLICATION_PARAMS';\r\n refApplicationParams: any;\r\n}\r\ninterface REQUEST_TOHOLD_SELECTEDROWGROUPS {\r\n type: 'REQUEST_TOHOLD_SELECTEDROWGROUPS';\r\n selectedRowGroups :[]\r\n\r\n}\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestRcdSearchAction | ReceiveRcdSearchAction | RequestEventMaster | ReceiveEventMaster | RequestRefApplicationParams | ReceiveRefApplicationParams | REQUEST_TOHOLD_SELECTEDROWGROUPS;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestRcdAdvanceSearch: (rcdSearchFilters: server.RcdStatusSearchFilters): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(rcdSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError) \r\n .then(response => response.json() as Promise)\r\n .then(data => { \r\n if (data.length > 0) { \r\n if (data[0].ErrorMessage == null || data[0].ErrorMessage == \"\") {\r\n dispatch({ type: 'RECEIVE_RCD_ADVANCE_SEARCH_DETAILS', rcdSearchFilters: rcdSearchFilters, rcdStatusData: data });\r\n if (data[0].CountMessage == \"Show\")\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"The maximum search limit has been reached. Please filter you search criteria.\");\r\n }\r\n else {\r\n dispatch({ type: 'RECEIVE_RCD_ADVANCE_SEARCH_DETAILS', rcdSearchFilters: rcdSearchFilters, rcdStatusData: [] });\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n }\r\n }\r\n else\r\n dispatch({ type: 'RECEIVE_RCD_ADVANCE_SEARCH_DETAILS', rcdSearchFilters: rcdSearchFilters, rcdStatusData: [] });\r\n\r\n $('#globalLoader').hide();\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_RCD_ADVANCE_SEARCH', rcdSearchFilters: rcdSearchFilters });\r\n },\r\n requestEventMaster: (): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_EVENTMASTER', reeferFormatterData: data });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_EVENTMASTER' });\r\n },\r\n requestRefApplicationParams: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetRefApplicationParams', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_REF_APPLICATION_PARAMS', refApplicationParams: data });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_REF_APPLICATION_PARAMS' });\r\n },\r\n requestToHoldSelectedRowGroups: (SelectedRowGroups: []): AppThunkAction => (dispatch, getState) => {\r\n dispatch({ type: 'REQUEST_TOHOLD_SELECTEDROWGROUPS', selectedRowGroups : SelectedRowGroups });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptySearchFilter = { SelectedRcd: null, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null, SelectedAssetType: null }\r\nconst unloadedState: RcdSearchState = { isLoading: false, rcdSearchFilters: emptySearchFilter, rcdStatus: [], reeferFormatter: null, refApplicationParams: null,SelectedRowGroups:[] };\r\n\r\nexport const reducer: Reducer = (state: RcdSearchState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_RCD_ADVANCE_SEARCH':\r\n return {\r\n rcdSearchFilters: action.rcdSearchFilters,\r\n rcdStatus: state.rcdStatus,\r\n reeferFormatter: state.reeferFormatter,\r\n isLoading: true,\r\n refApplicationParams: state.refApplicationParams,\r\n SelectedRowGroups: state.SelectedRowGroups\r\n\r\n };\r\n case 'REQUEST_EVENTMASTER':\r\n return {\r\n rcdSearchFilters: state.rcdSearchFilters,\r\n rcdStatus: state.rcdStatus,\r\n reeferFormatter: state.reeferFormatter,\r\n isLoading: true,\r\n refApplicationParams: state.refApplicationParams,\r\n SelectedRowGroups: state.SelectedRowGroups\r\n };\r\n case 'RECEIVE_EVENTMASTER':\r\n return {\r\n rcdSearchFilters: state.rcdSearchFilters,\r\n rcdStatus: state.rcdStatus,\r\n reeferFormatter: action.reeferFormatterData,\r\n isLoading: false,\r\n refApplicationParams: state.refApplicationParams,\r\n SelectedRowGroups: state.SelectedRowGroups\r\n\r\n };\r\n case 'REQUEST_REF_APPLICATION_PARAMS':\r\n return {\r\n rcdSearchFilters: state.rcdSearchFilters,\r\n rcdStatus: state.rcdStatus,\r\n reeferFormatter: state.reeferFormatter,\r\n isLoading: true,\r\n refApplicationParams: state.refApplicationParams,\r\n SelectedRowGroups: state.SelectedRowGroups\r\n };\r\n case 'RECEIVE_REF_APPLICATION_PARAMS':\r\n return {\r\n rcdSearchFilters: state.rcdSearchFilters,\r\n rcdStatus: state.rcdStatus,\r\n reeferFormatter: state.reeferFormatter,\r\n isLoading: false,\r\n refApplicationParams: action.refApplicationParams,\r\n SelectedRowGroups: state.SelectedRowGroups\r\n\r\n };\r\n case 'RECEIVE_RCD_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.rcdSearchFilters === state.rcdSearchFilters) {\r\n return {\r\n rcdSearchFilters: action.rcdSearchFilters,\r\n rcdStatus: action.rcdStatusData,\r\n reeferFormatter: state.reeferFormatter,\r\n isLoading: false,\r\n refApplicationParams: state.refApplicationParams,\r\n SelectedRowGroups: state.SelectedRowGroups\r\n };\r\n }\r\n break;\r\n case 'REQUEST_TOHOLD_SELECTEDROWGROUPS':\r\n return {\r\n rcdSearchFilters: state.rcdSearchFilters,\r\n rcdStatus: state.rcdStatus,\r\n reeferFormatter: state.reeferFormatter,\r\n isLoading: false,\r\n refApplicationParams: state.refApplicationParams,\r\n SelectedRowGroups: action.selectedRowGroups\r\n }; \r\n break;\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","\r\n/// \r\n/// \r\n/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\n\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json');\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface VesselSearchState {\r\n isLoading: boolean;\r\n searchFilters: server.VesselSearchFilters;\r\n vesselStatus: server.USP_UnitCurrentConditionUI_Model[];\r\n vesselData: server.VesselEntityCollection;\r\n columnDefs: any[];\r\n performCargoAction: boolean;\r\n reeferFormatter: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestVesselSearchAction {\r\n type: 'REQUEST_VESSEL_SEARCH';\r\n searchFilters: server.VesselSearchFilters;\r\n colDefs: any[];\r\n}\r\n\r\ninterface ReceiveVesselSearchAction {\r\n type: 'RECEIVE_VESSEL_SEARCH_DETAILS';\r\n searchFilters: server.VesselSearchFilters; \r\n vesselStatusData: server.USP_UnitCurrentConditionUI_Model[];\r\n colDefs: any[];\r\n performCargoAction: boolean;\r\n reeferFormatterData: server.ReeferFormatter;\r\n reeferConfigTypes: any;\r\n refApplicationParams: any;\r\n}\r\n\r\ninterface ReceiveVesselDataAction {\r\n type: 'RECEIVE_VESSEL_DATA_DETAILS';\r\n searchFilters: server.VesselSearchFilters;\r\n vesselStatusData: server.USP_UnitCurrentConditionUI_Model[];\r\n vesselData: server.VesselEntityCollection;\r\n colDefs: any[];\r\n performCargoAction: boolean;\r\n}\r\n\r\ninterface RequestAssignCargoCare {\r\n type: 'REQUEST_ASSIGN_CARGO_CARE';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\n\r\ninterface RequestUnAssignCargoCare {\r\n type: 'REQUEST_UN_ASSIGN_CARGO_CARE';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\n\r\ninterface RequestClearSetPoint {\r\n type: 'REQUEST_CLEAR_SET_POINT';\r\n commandUnits: server.ReeferCommandUnits[];\r\n}\r\ninterface RequestEventMaster {\r\n type: 'REQUEST_EVENTMASTER'; \r\n}\r\ninterface ReceiveEventMaster {\r\n type: 'RECEIVE_EVENTMASTER';\r\n reeferFormatterData: server.ReeferFormatter;\r\n}\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestVesselSearchAction | ReceiveVesselSearchAction | ReceiveVesselDataAction | RequestAssignCargoCare | RequestUnAssignCargoCare | RequestClearSetPoint | RequestEventMaster | ReceiveEventMaster;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestVesselData: (vesselCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Vessel/GetVesselData', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_VESSEL_DATA_DETAILS', vesselData: data, vesselStatusData: getState().vesselStatus.vesselStatus, searchFilters: getState().vesselStatus.searchFilters, colDefs:vesselCols, performCargoAction: false });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_VESSEL_SEARCH', searchFilters: getState().vesselStatus.searchFilters, colDefs: vesselCols });\r\n },\r\n requestVesselSearch: (searchFilters: any, vesselCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Vessel/GetVesselStatus', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n if (data[0].ErrorMessage == null || data[0].ErrorMessage == \"\")\r\n dispatch({ type: 'RECEIVE_VESSEL_SEARCH_DETAILS', searchFilters: searchFilters, vesselStatusData: data, colDefs: vesselCols, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams });\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_VESSEL_SEARCH_DETAILS', searchFilters: searchFilters, vesselStatusData: [], colDefs: vesselCols, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams });\r\n }\r\n }\r\n else\r\n dispatch({ type: 'RECEIVE_VESSEL_SEARCH_DETAILS', searchFilters: searchFilters, vesselStatusData: [], colDefs: vesselCols, performCargoAction: false, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams });\r\n\r\n });\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_VESSEL_SEARCH', searchFilters: searchFilters, colDefs: vesselCols });\r\n },\r\n requestAssignCargoCare: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/AssignCargoCare', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_VESSEL_SEARCH_DETAILS', searchFilters: getState().vesselStatus.searchFilters, vesselStatusData: getState().vesselStatus.vesselStatus, colDefs: getState().vesselStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_ASSIGN_CARGO_CARE', commandUnits: commandUnits });\r\n },\r\n requestUnAssignCargoCare: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/UnAssignCargoCare', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_VESSEL_SEARCH_DETAILS', searchFilters: getState().vesselStatus.searchFilters, vesselStatusData: getState().vesselStatus.vesselStatus, colDefs: getState().vesselStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter,reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_UN_ASSIGN_CARGO_CARE', commandUnits: commandUnits });\r\n },\r\n requestClearSetPoint: (commandUnits: server.ReeferCommandUnits[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearSetPoint', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_VESSEL_SEARCH_DETAILS', searchFilters: getState().vesselStatus.searchFilters, vesselStatusData: getState().vesselStatus.vesselStatus, colDefs: getState().vesselStatus.columnDefs, performCargoAction: true, reeferFormatterData: getState().home.reeferFormatter, reeferConfigTypes: getState().home.reeferConfigTypes, refApplicationParams: getState().home.refApplicationParams });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_CLEAR_SET_POINT', commandUnits: commandUnits });\r\n },\r\n requestEventMaster: (): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_EVENTMASTER', reeferFormatterData: data });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_EVENTMASTER' });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptySearchFilter = { VesselId: '', VoyageId: '', PortOfDeparture: '', PortOfDestination: '', AllReefers: '' }\r\nconst emptyVesselData = { VesselIDList: [], VoyageIDList: [], PortOfDepartureList: [], PortOfDestinationList: [] }\r\nconst unloadedState: VesselSearchState = { isLoading: false, searchFilters: emptySearchFilter, vesselStatus: [], vesselData: emptyVesselData, columnDefs: [], performCargoAction: false, reeferFormatter: null, reeferConfigTypes: null, refApplicationParams: null };\r\n\r\nexport const reducer: Reducer = (state: VesselSearchState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_VESSEL_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n vesselStatus: state.vesselStatus,\r\n vesselData: state.vesselData,\r\n isLoading: true,\r\n columnDefs: action.colDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams : state.refApplicationParams\r\n };\r\n case 'RECEIVE_VESSEL_DATA_DETAILS':\r\n return {\r\n searchFilters: action.searchFilters,\r\n vesselStatus: state.vesselStatus,\r\n vesselData: action.vesselData,\r\n isLoading: false,\r\n columnDefs: action.colDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams\r\n };\r\n case 'REQUEST_ASSIGN_CARGO_CARE':\r\n return {\r\n searchFilters: state.searchFilters,\r\n vesselStatus: state.vesselStatus,\r\n vesselData: state.vesselData,\r\n isLoading: false,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams\r\n };\r\n case 'REQUEST_UN_ASSIGN_CARGO_CARE':\r\n return {\r\n searchFilters: state.searchFilters,\r\n vesselStatus: state.vesselStatus,\r\n vesselData: state.vesselData,\r\n isLoading: false,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams\r\n };\r\n case 'REQUEST_CLEAR_SET_POINT':\r\n return {\r\n searchFilters: state.searchFilters,\r\n vesselStatus: state.vesselStatus,\r\n vesselData: state.vesselData,\r\n isLoading: false,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams\r\n };\r\n case 'REQUEST_EVENTMASTER':\r\n return {\r\n reeferFormatter: state.reeferFormatter,\r\n searchFilters: state.searchFilters,\r\n vesselStatus: state.vesselStatus,\r\n vesselData: state.vesselData,\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams\r\n };\r\n case 'RECEIVE_EVENTMASTER':\r\n return {\r\n reeferFormatter: action.reeferFormatterData,\r\n searchFilters: state.searchFilters,\r\n vesselStatus: state.vesselStatus,\r\n vesselData: state.vesselData,\r\n isLoading: false,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false,\r\n reeferConfigTypes: state.reeferConfigTypes,\r\n refApplicationParams: state.refApplicationParams\r\n };\r\n case 'RECEIVE_VESSEL_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n vesselStatus: action.vesselStatusData,\r\n vesselData: state.vesselData,\r\n isLoading: false,\r\n columnDefs: action.colDefs,\r\n performCargoAction: action.performCargoAction,\r\n reeferFormatter: state.reeferFormatter,\r\n reeferConfigTypes: action.reeferConfigTypes,\r\n refApplicationParams: action.refApplicationParams\r\n };\r\n }\r\n break;\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8xNC8wOFZL9aYAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAABD0lEQVQ4je3Uv2qEQBAG8G+XsCoo1qbVBxGsLZN9DPMmlzxF4qW891AUi+O45hARLP2vW2yaI90GBLvclDN8v2aGIVJK7Fl0V+0B7lJPqgEhBJxz3vf9oes6BwAsy6pN03yL4/ioug4lyDl/bZrmMwgC4nkepmlCkiROURRfnHMAOG4C27Z9932feJ6HPM8BAHeYVFV12AwOw+C4rossy9D3PQBgWRbYto3L5fKsyinBOwohBIQQv711Xf+KqLdsGEadpils2walFFJKrOuKsixhGEa9GWSMRefzWV6vV1BKIYTA7XbDOI6SMRapckS1fkIIwjB8WZblY55nBwB0Xa81TYtOp9O3Mvf4Nv8A/AEq0X2KHl+ZIwAAAABJRU5ErkJggg==\"","/* eslint-disable */\r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\nimport * as HomeState from '../../store/Home';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../actions/Formatters';\r\nimport DryFormatters from '../../actions/DryFormatter';\r\nimport { DryCellRenderer } from '../../actions/DryCellRenderer';\r\n//import Excel from '../../actions/ExportToExcel.js';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport CCAlmTooltip from './../sharedcomponents/GridToolTips/CCAlmTooltip';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { DryStatusSearch } from '../childcomponents/DryStatusSearch';\r\nimport { GridToolBarExcel } from './../sharedcomponents/GridToolBarExcel';\r\nimport UserRights from '../../actions/UserRights';\r\nimport * as DryStatusState from '../../store/DryStatus';\r\nimport uniq from 'lodash/uniq';\r\nimport forEach from 'lodash/forEach';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { DryStatusToggleButtonsFilter } from '../childcomponents/DryStatusToggleButtonsFilter';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { DryPingControl } from './../sharedcomponents/ForwardCommands/DryCommands/DryPingControl';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { MRelatedReportingInterval } from './../sharedcomponents/ForwardCommands/DryCommands/MRelatedReportingInterval';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\n\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\n\r\nvar dryColumns;\r\nvar dryColumns2;\r\n//var gensetStatus;\r\nvar statusFilters;\r\nvar self;\r\n//var customerTypeCd;\r\nvar functionId;\r\nvar noCarryFwdScreens = [\"gensetstatus\", \"reeferstatus\", \"chassisstatus\"];\r\nvar dryAssetSensors;\r\nvar selectedRowIndex: number;\r\nvar IsTriggered: boolean;\r\n// At runtime, Redux will merge together...\r\ntype DryStatusProps =\r\n UserDetailState.UserState\r\n & HomeState.HomeState\r\n & DryStatusState.DrySearchState // ... state we've requested from the Redux store \r\n & typeof DryStatusState.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\n\r\nexport interface DryStatusSearchState {\r\n selectedItems: any[];\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n dryStatusData: any[];\r\n pageSize: any;\r\n gridApiParams: any;\r\n exportFields: ExportFields;\r\n ToggleSearchParams: any;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n columnDefs: any[];\r\n PrevEndRow: any;\r\n PrevStartRow: any;\r\n frameworkComponents: any;\r\n rowModelname: string;\r\n serverSideStoreType: any;\r\n DashboardPreferenceId: any;\r\n DashboardWidgetsSearch: any[];\r\n IsReadOnly: any;\r\n RevisionNum: any;\r\n drySearchFilters: server.ReeferSearchFilters;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customerAccessData: any[];\r\nvar commandIssued: boolean = false;\r\nvar serverSideEnabled: boolean;\r\n\r\nclass DryStatusSSRM extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n customerAccessData = [];\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n //customerTypeCd = this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n var exportData = new ExportFields();\r\n //dryColumns = this.createColumnDefs();\r\n serverSideEnabled = true;\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomerDeviceTypeSensor');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n // this.setState({ CustomerDeviceTypeSensor: data });\r\n this.renderCustomerDeviceTypeSensorColumns(data);\r\n });\r\n var customAttributesInfo = {};\r\n var filters: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null, \r\n SelectedVesselCode: null, StatusFilters: null, AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null //WI-26881\r\n };\r\n functionId = 48;\r\n this.state = {\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n columnDefs: [],\r\n modelTitle: '',\r\n popUpHtml: '',\r\n dryStatusData: [],\r\n pageSize: 1000,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n ToggleSearchParams: null,\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n PrevEndRow: -1,\r\n PrevStartRow: -1,\r\n frameworkComponents: { cCAlmTooltip: CCAlmTooltip },\r\n rowModelname: 'serverSide',\r\n serverSideStoreType: 'partial',\r\n DashboardWidgetsSearch: [],\r\n IsReadOnly: false,\r\n DashboardPreferenceId: 0,\r\n RevisionNum: 0,\r\n drySearchFilters: filters\r\n };\r\n\r\n $('#globalLoader').show;\r\n this.GetDefaultGridPreferenceColumns();\r\n dryColumns2 = this.createColumnDefs();\r\n if (this.props.location.state != undefined && this.props.location.state != null) {\r\n statusFilters = this.props.location.state;\r\n }\r\n else if (this.props.searchFilters != undefined && this.props.searchFilters != null) {\r\n\r\n if (this.props.searchFilters.SelectedAssetTypes != null && (this.props.searchFilters.SelectedAssetTypes == \"\"\r\n || this.props.searchFilters.SelectedAssetTypes.toString().split(',').indexOf(\"Dry\") != -1)) {\r\n statusFilters = this.props.searchFilters;\r\n \r\n //WI-24029-start\r\n if (window.location.search != undefined && window.location.search != null && window.location.href != undefined && window.location.href != null) {\r\n if (window.location.href.includes('drystatus') && (!noCarryFwdScreens.includes(window.location.search.slice(window.location.search.indexOf(\"=\") + 1))))\r\n statusFilters = this.props.searchFilters;\r\n else\r\n this.clearFilters();\r\n }\r\n else\r\n this.clearFilters();\r\n //WI-24029-end\r\n \r\n }\r\n else\r\n this.clearFilters();\r\n }\r\n else\r\n this.clearFilters();\r\n \r\n setTimeout(() => {\r\n this.ApplyDryAssetSearch(statusFilters);\r\n }, 200);\r\n self = this;\r\n }\r\n\r\n GetDefaultGridPreferenceColumns() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n if(defaultPreferenceName.length>0) \r\n this.setState({ DashboardPreferenceId: defaultPreferenceName[0].DashboardPreferenceId, IsReadOnly: defaultPreferenceName[0].IsReadOnly, RevisionNum: defaultPreferenceName[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n this.setState({ DashboardPreferenceId: dashboardLayouts[0].DashboardPreferenceId, IsReadOnly: dashboardLayouts[0].IsReadOnly, RevisionNum: dashboardLayouts[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n }\r\n } \r\n }); \r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns(customerDeviceTypeSensor : any) {\r\n dryColumns = this.createColumnDefs();\r\n var newColumns = dryColumns;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n \r\n if (customerDeviceTypeSensor != null && customerDeviceTypeSensor != undefined) \r\n dryAssetSensors = customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'D');\r\n\r\n if (dryAssetSensors != null && dryAssetSensors != undefined && dryAssetSensors.length > 0) {\r\n //var door1Column = {\r\n // headerName: \"Door\", field: \"Door1Open\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, getQuickFilterText: DryFormatters.doorQuickFilterFormatter,\r\n // filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n // valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n //};\r\n\r\n //generatedColumns.push({ door1Column });\r\n\r\n $.each(dryAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: false, sortable: false, filter: false, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: false, sortable: false, filter: false, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n\r\n //var fieldName = val.FieldValue;a\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!dryColumns2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n dryColumns2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: dryColumns });\r\n }\r\n }\r\n\r\n clearFilters() {\r\n\r\n //var filters: server.AdvancedGensetSearchFilters = {\r\n // CustomerTypeCode: null, CustomerID: null, AssetType: null, AssetNumber: null, ServerFence: null, DeviceFence: null, Region: null, City: null, State: null, ZipCode: null, Country: null, Geofence: null, POI: null, Oem: null, ReportingInterval: null, GeofenceInside: null\r\n //};\r\n var customAttributesInfo = {};\r\n var filters: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null, \r\n SelectedVesselCode: null, StatusFilters: null, AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null //WI-26881\r\n };\r\n\r\n statusFilters = filters;\r\n }\r\n\r\n dryContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.drymapAction(this.state.selectedItems);\r\n break;\r\n case \"History\": this.dryhistoryAction(this.state.selectedItems);\r\n break;\r\n case \"CommandStatus\": this.drycommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.drydetailsAction(this.state.selectedItems, 'Dry', 'CurrentDetails');\r\n break;\r\n case \"Copy\": this.reeferdetailsCopyAction();\r\n break;\r\n case \"CopyWithHeader\": this.reeferdetailsCopyWithHeaderAction();\r\n break;\r\n }\r\n }\r\n\r\n onRowDataChanged(params: any): void {\r\n var containerIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n containerIdSelected = self.state.PrevSelectedItems[0].AssetNumber;\r\n }\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n if (self.state.dryStatusData != null && self.state.dryStatusData.length > 0) {\r\n TotalCount = self.state.dryStatusData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && containerIdSelected !== \"\") {\r\n let count = 0;\r\n if (containerIdSelected) {\r\n params.api.forEachNode((node) => {\r\n count = count + 1;\r\n if (node.data.AssetNumber === containerIdSelected) {\r\n node.setSelected(true);\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n //console.log('pageNo' + pageNo);\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n reeferdetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n reeferdetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n\r\n if (event.data != null && event.data != undefined) {\r\n //self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === 0)//RCNG-1110\r\n this.drydetailsAction(this.state.selectedItems, 'Dry', 'Comments');\r\n }\r\n }\r\n\r\n drydetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var drydetails = {\r\n dryData: data[0], source: dataSource, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/drydetails?From=' + window.location.pathname.replace('/', ''), drydetails);\r\n }\r\n\r\n dryhistoryAction(data: any) {\r\n var drydetails = data;\r\n this.props.history.push('/dryhistory', drydetails);\r\n }\r\n\r\n drymapAction(data: any) {\r\n var drydetails = data;\r\n this.props.history.push('/drymap', drydetails);\r\n }\r\n\r\n drycommandstatusAction(data: any) {\r\n var drydetails = data;\r\n this.props.history.push('/drycommands', drydetails);\r\n }\r\n\r\n updateDryStatusDimensions() {\r\n // $(\"#ReeferStatusGrid .ag-bl-normal-center-row\").css('min-height', $(window).height() - 248);\r\n // $(\"#ReeferStatusGrid .ag-bl-normal-center-row\").css('max-height', $(window).height() - 248);\r\n $(\"#GensetStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 297);\r\n $(\"#GensetStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 297);\r\n $(\"#GensetStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 297);\r\n }\r\n\r\n //componentWillUnmount() {\r\n // //window.removeEventListener(\"resize\", this.updateReeferStatusDimensions.bind(this));\r\n //}\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsForDrys('158');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n //this.updateReeferStatusDimensions();\r\n window.addEventListener(\"resize\", this.updateDryStatusDimensions.bind(this));\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n Excel.preventDefault();\r\n setTimeout(() => { this.updateDryStatusDimensions() }, 200);\r\n // To make the Modal popups draggable.\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n }\r\n \r\n }\r\n\r\n //popUpSendEmail() {\r\n // self.setState({ modelTitle: 'Send Email', popUpHtml: self.RenderContextMenuPopUp('SendEmail') });\r\n //}\r\n\r\n exportToExcel() {\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.state.dryStatusData != 'object' ? JSON.parse(this.state.dryStatusData) : this.state.dryStatusData;\r\n }\r\n $(\"#globalLoader\").show();\r\n var r = this.state.columnDefs;\r\n try {\r\n //Excel.InitializeExcelExport(arrData, r, 'ReeferStatusGrid');\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n var formName = 'DryStatus';\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridToolBarExcel.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n self.setState({ gridApiParams: params.api });\r\n var gridPreferencesData: any = self.state.DashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 16);\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n //this.gridApi.sizeColumnsToFit();\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"DryStatus\");\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"DryStatus\");\r\n }, 3000); \r\n }\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n\r\n switch (popUpName) {\r\n case 'SendEmail':\r\n return 0 ? true : false} sensorData={dryAssetSensors}/>\r\n case 'Export':\r\n return ;\r\n case 'Ping':\r\n return ;\r\n case 'AssignCustomer':\r\n return ;\r\n case 'MRRI':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var gensetData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.GensetStatusUI[];\r\n filterSet = gensetData;\r\n var filterParams = JSON.stringify(filterSet);\r\n if (!isCommands) {\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n }\r\n }\r\n\r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', false);\r\n }\r\n\r\n popUpAssignToCustomer() {\r\n //self.setState({ modelTitle: 'Assign Assets to Customer' });\r\n //self.RenderContextMenuPopUp('AssignCustomer', false);\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Assign Asset(s) to Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString(); \r\n }\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpUnAssignFromCustomer() {\r\n //self.setState({ modelTitle: 'Unassign Units From Customer' });\r\n //self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Asset(s) From Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpRelatedReportingInterval() {\r\n self.setState({ modelTitle: 'Motion-Related Reporting Intervals' });\r\n self.RenderContextMenuPopUp('MRRI', false);\r\n }\r\n\r\n\r\n onSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n //var rights = self.props.loggedInUserData.User.Customer.Rights;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();//this.gridApi.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n\r\n if (selectedReeferData.length > 1) {\r\n $('#liDetailsRequiresRight').removeClass('enabled');\r\n $('#liDetailsRequiresRight').addClass('disabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liDetailsRequiresRight').removeClass('disabled');\r\n $('#liDetailsRequiresRight').addClass('enabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n }\r\n var forwardCommandParam = JSON.stringify(selectedReeferData);\r\n var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetAssetAssigned3rdParty';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"assigned\") {\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('disabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('enabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('disabled');\r\n\r\n }\r\n else if (data == \"unassigned\") {\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('disabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('disabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('enabled');\r\n }\r\n else {\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('disabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('disabled');\r\n }\r\n });\r\n }\r\n\r\n onSortChanged(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.api.refreshInMemoryRowModel('filter');\r\n params.api.gridOptionsWrapper.gridOptions.api.redrawRows();\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getDryContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"ReeferID\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var assetNumber = selectedrowNode.data.AssetNumber;\r\n params.api.forEachNode((newRowNode, index) => {\r\n if ((newRowNode.data.AssetNumber === assetNumber)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.AssetNumber == selectedrowNode.data.AssetNumber) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.dryContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('162'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.dryContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('159'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.dryContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('163'),\r\n },\r\n {\r\n name: 'Third Party Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('170,171'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'ThirdPartyAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignToCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('170'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'Assign'),\r\n },\r\n {\r\n name: 'Unassign From Customer',\r\n action: () => {\r\n this.popUpUnAssignFromCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('171'),\r\n disabled: UserRights.checkMenuItemDisabledForDry(params, 'UnAssign'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Inventory',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('250,251'),//RCNG-1176\r\n disabled: UserRights.checkMenuItemDisabled(params, 'RetireOrReactivate'),\r\n subMenu: [\r\n {\r\n name: 'Retire',\r\n action: () => {\r\n this.popUpRetire();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('250', params, \"Retire\"),\r\n },\r\n {\r\n name: 'Reactivate',\r\n action: () => {\r\n this.popUpReactivate();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('251', params, \"Reactivate\"),\r\n },\r\n ],\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n onCancelDryStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n popUpRetire() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a retired asset does not appear in search results, nor does it contribute to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesRetire.bind(this),\r\n self.onCancelDryStatusGrid.bind(this));\r\n }\r\n popUpReactivate() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a reactivated asset appears in search results and contributes to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesReactivate.bind(this),\r\n self.onCancelDryStatusGrid.bind(this));\r\n }\r\n onYesRetire() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits() \r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/RetireAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Retired.\");\r\n self.refreshStatusGrid();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n } \r\n }\r\n onYesReactivate() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits();\r\n $('#globalLoader').show();\r\n RCNGWindow.ConfirmWindow.close();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/ReactivateAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Reactivated.\");\r\n self.refreshStatusGrid();\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n \r\n }\r\n }\r\n\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"AssetMasterID\": value.AssetMasterID,\r\n \"AssetNumber\": value.AssetNumber,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n //\"DCCurrentConditionID\": value.DCCurrentConditionID,\r\n //\"DCConditionID\": value.DCConditionID,\r\n \"RCDID\": value.RCDID,\r\n \"VesselCd\": value.VesselCd\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: false,\r\n sortable: false,\r\n resizable: true,\r\n }]\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"PWR\", field: \"DryPWR\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, width: 70,\r\n valueGetter: (params) => { return DryFormatters.dryPWRSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryPwrStateFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"BATT\", field: \"BatteryPct\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false,\r\n resizable: true, valueGetter: (params) => { return DryFormatters.dryBatteryPctSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryBatteryPctFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.BatteryPctFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"VSL\", field: \"VesselCd\", width: 80, enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: false, cellClass: 'myExcelStyle', filter: false, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: DryCellRenderer.AssetStateFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Assignments',\r\n children: [\r\n {\r\n headerName: \"Assigned to\", field: \"customername\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.customername); },\r\n cellRenderer: DryCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Identification',\r\n children: [\r\n { headerName: \"Dry ID\", field: \"AssetNumber\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetNumber\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: \"Report Date/Time and Location\",\r\n children: [\r\n\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventDescription\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", enableRowGroup: false, cellClass: 'myExcelStyle',\r\n sortable: true, filter: false,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door\", field: \"Door1Open\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, getQuickFilterText: DryFormatters.doorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"Door1EventDttm\", enableRowGroup: false, cellClass: 'myExcelStyle',\r\n sortable: false, filter: false, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } },\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"Door1EventDttm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170,\r\n onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Inside temp \", field: \"InsideTemp\", headerValueGetter: Formatters.TempHeaderFormatter,enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"InsideTemp\"); }, cellRenderer: DryFormatters.TemperatureValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceNameID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceNameID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n // { headerName: \"Region Fence\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"Region Fence ID\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"GeofenceDefinitionRevision\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Address\", field: \"Address\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Address\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open', cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZipCode\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Battery (V)\", field: \"DeviceBattery\", cellRenderer: Formatters.BattVoltageFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)},\r\n {\r\n headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: DryCellRenderer.GPSCoordsFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.secondsToTimeConverterFilter(params); },\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc acc (m)\", field: \"PositionAccuracy\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSAcctypeSorting(params.data.PositionAccuracy); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter,\r\n columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc HDOP\", field: \"DryGPSHDOP\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.DryGPSHDOP, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter,\r\n columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc sat ct\", field: \"DryGPSSatelliteCount\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.DryGPSSatelliteCount, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter,\r\n columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Speed\", field: \"DrySpeed\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"DrySpeed\"); }, cellRenderer: DryFormatters.SpeedConverter,\r\n headerValueGetter: Formatters.SpeedHeaderFormatter, filterParams: { valueGetter: params => { return DryFormatters.SpeedConverterFilter(params); } },\r\n columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Miles\", field: \"Miles\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"Miles\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: \"Device Status\",\r\n children: [\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: false, sortable: true, filter: false, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => {\r\n return Formatters.stringTypeSortingFieldName(params, \"RCDID\");\r\n }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device data\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, columnGroupShow: 'open',\r\n field: \"DeviceDataTime\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DeviceDataTime\"); }, cellRenderer: Formatters.dateTypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDeviceDataTimeForFilter(params); } },\r\n width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FirmwareVersion\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device temp \", field: \"DeviceTemp\", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: DryFormatters.TemperatureValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: false, cellClass: 'bigInt', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Lux\", field: \"Illumination\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Illumination\"); }, cellRenderer: Formatters.LuxValueFormatter, columnGroupShow: 'open', width: 70\r\n },\r\n {\r\n headerName: \"Bat mode\", field: \"BatteryMode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.BatteryModeFormatter(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.BatteryModeFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door bat\", field: \"Door1BattPct\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.dryDoorBattPctSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryDoorBattPctFormatterFilter(params); } },\r\n cellRenderer: DryCellRenderer.DoorBattPctFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 180, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n cellRenderer: DryCellRenderer.RSSITypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } },\r\n width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MNC\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: false, sortable: false, filter: false, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceType\"); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n {\r\n headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\",\r\n enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CreatedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } },\r\n width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Comments\", field: \"CommentExistsDC\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true,\r\n valueGetter: (params) => { return DryFormatters.CommentExistsforDrySorting(params); }, cellRenderer: DryCellRenderer.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: \"Device Gravity Vector Status\",\r\n children: [\r\n {\r\n headerName: \"X Axis\", field: \"XAxis\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"XAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Y Axis\", field: \"YAxis\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"YAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Z Axis\", field: \"ZAxis\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n\r\n //self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue == \"-NA-\" || (fieldValue == \"-999\" && self.validateFieldName(fieldName.toString().trim())))\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"BatteryStatus\":\r\n return DryCellRenderer.DryBatteryStatusFormatterGrouping(fieldValue);\r\n case \"DryPWR\":\r\n return DryCellRenderer.DryPwrStateFormatterGrouping(fieldValue);\r\n case \"AssetState\":\r\n return DryCellRenderer.AssetStateFormatterGrouping(fieldValue);\r\n //case \"TripStatusCdAndDFlag\":\r\n //return DryCellRenderer.TripStatusFormatterGrouping(fieldValue);\r\n case \"customername\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"Door1Open\":\r\n return Formatters.Door1FormatterGrouping(fieldValue); //RCNG-2369\r\n case \"RSSI\":\r\n return DryCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"CommentExistsDC\":\r\n return DryCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n case \"Door1EventDttm\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"Door1BattPct\": case \"BatteryPct\": \r\n return DryCellRenderer.DryDoorBattPctFormatterGrouping(fieldValue);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, dryAssetSensors, colDef);\r\n case \"Illumination\":\r\n return Formatters.LuxValueFormatterforGroup(fieldValue);\r\n default:\r\n return fieldValue;\r\n }\r\n }\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (!nextprops.isLoading) {\r\n if (!serverSideEnabled) {\r\n this.setState({\r\n dryStatusData: nextprops.dryStatus\r\n });\r\n }\r\n \r\n $('#globalLoader').hide();\r\n if (nextprops.performCargoAction) {\r\n $('#globalLoader').show();\r\n setTimeout(() => {\r\n this.ApplyDryAssetSearch(this.state.drySearchFilters);\r\n }, 200);\r\n \r\n }\r\n } else {\r\n $('#globalLoader').show();\r\n }\r\n }\r\n\r\n bindingDryStatusGrid(searchState: server.ReeferSearchFilters) {\r\n $('#globalLoader').show();\r\n DryStatusToggleButtonsFilter.ClearToggleFilters();\r\n self.setState({ ToggleSearchParams: null, rowData: [] });\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n\r\n this.ApplyDryAssetSearch(searchState);\r\n }\r\n createServerSideDatasource(server) {\r\n return {\r\n getRows: function (params) {\r\n\r\n setTimeout(function () {\r\n\r\n params.success({\r\n rowData: [],\r\n rowCount: 0,\r\n });\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n }, 1000);\r\n },\r\n };\r\n }\r\n ClearDryStatusGridData() {\r\n if (self != undefined) {\r\n //ReeferCallout.ResetMapPushpins();\r\n selectedRowIndex = -1;\r\n var datasource = self.createServerSideDatasource();\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\")\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n }\r\n \r\n ApplyDryAssetSearch(searchState: server.ReeferSearchFilters){\r\n var finalData = [];\r\n self.ClearDryStatusGridData();\r\n self.setState({ rowData: [], PrevStartRow: -1, PrevEndRow: -1, drySearchFilters: searchState });\r\n var datasource = self.ServerSideDatasource(finalData, searchState);\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n }\r\n\r\n ServerSideDatasource(data: any, searchState: any) {\r\n return {\r\n getRows: (params) => {\r\n var newfilters: server.ReeferSearchFiltersSSRM = {\r\n SelectedOem: searchState.SelectedOem,\r\n SelectedCountry: searchState.SelectedCountry,\r\n SelectedGeofence: searchState.SelectedGeofence,\r\n SelectedGeofenceInside: searchState.SelectedGeofenceInside,\r\n SelectedInterval: searchState.SelectedInterval,\r\n SelectedReefer: searchState.SelectedReefer,\r\n SelectedVesselCode: searchState.SelectedVesselCode,\r\n StatusFilters: searchState.StatusFilters,\r\n AllReefers: searchState.AllReefers,\r\n CustomAttributeFilters: searchState.CustomAttributeFilters,\r\n SelectedAssetTypes: searchState.SelectedAssetTypes,\r\n SelectedAssetStates: searchState.SelectedAssetStates,\r\n SelectedBookingNumber: searchState.SelectedBookingNumber,\r\n StartRow: params.request.startRow,\r\n EndRow: params.request.endRow,\r\n RowGroupCols: params.request.rowGroupCols,\r\n GroupKeys: params.request.groupKeys,\r\n SortModels: params.request.sortModel,\r\n SelectedVesselCD: searchState.SelectedVesselCD,\r\n SelectedVoyage: searchState.SelectedVoyage,\r\n SelectedCall: searchState.SelectedCall,\r\n SelectedCargoCareProfiles: searchState.SelectedCargoCareProfiles\r\n };\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/GetDCCurrentConditionDataSP', { method: 'POST', body: JSON.stringify(newfilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n var response:any = this.getData_old(finalData, params.request);\r\n if (response.rows.length == 0) {\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n }\r\n else {\r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n setTimeout(function () {\r\n if (response.success) {\r\n $('#globalLoader').hide();\r\n params.successCallback(response.rows, response.lastRow);\r\n } else {\r\n params.failCallback();\r\n }\r\n }, 200);\r\n });\r\n\r\n },\r\n };\r\n };\r\n\r\n getData_old(params, req) { \r\n var newData = params;\r\n let dryData = cloneDeep(params);\r\n //let reefersData = Object.assign({}, params);\r\n var dryStateData = self.state.dryStatusData;\r\n if (req.endRow != dryStateData.length && req.endRow > dryStateData.length && req.endRow != this.state.PrevEndRow) {\r\n dryData.push(...dryStateData);\r\n self.setState({ dryStatusData: dryData, PrevEndRow: req.endRow, PrevStartRow: req.startRow });\r\n }\r\n\r\n return {\r\n success: true,\r\n rows: newData,\r\n lastRow: this.getLastRowIndex(req, newData),//params.length,//getLastRowIndex(req, newData),\r\n };\r\n }\r\n\r\n getLastRowIndex(request, results) {\r\n if (!results || results.length === 0) {\r\n return request.startRow;\r\n }\r\n if (self.state.dryStatusData.length == request.endRow || (parseInt(self.state.dryStatusData.length) % parseInt(self.state.pageSize) == 0)) {\r\n var currentLastRow = request.startRow + results.length+1;\r\n } else {\r\n var currentLastRow = request.startRow + results.length;\r\n }\r\n\r\n return currentLastRow <= request.endRow ? currentLastRow : -1;\r\n }\r\n\r\n\r\n refreshStatusGrid() {\r\n $('#globalLoader').show();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n setTimeout(() => {\r\n this.ApplyDryAssetSearch(self.state.drySearchFilters);\r\n }, 200);\r\n }\r\n\r\n refreshStatusGridFromTripStatus() {\r\n $('#globalLoader').show();\r\n setTimeout(() => {\r\n this.ApplyDryAssetSearch(this.state.drySearchFilters);\r\n }, 200);\r\n }\r\n\r\n static refreshDryStatusGrid() {\r\n self.refreshStatusGrid();\r\n }\r\n\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n //RenderContextMenuPopUp(popUpName: string) {\r\n // var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n\r\n // switch (popUpName) {\r\n // case 'SendEmail':\r\n // return ;\r\n // }\r\n //}\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n });\r\n }\r\n \r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.DeviceDataTime)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"DryStatus\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n \r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNumConfirm.bind(this, dashboardPreferenceId), self.closeRevisionConfirmation.bind(this));\r\n }\r\n \r\n refreshRevisionNumConfirm(dashboardPreferenceId: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n $('#globalLoader').hide(); \r\n });\r\n }\r\n\r\n refreshRevisionNum(dashboardPreferenceId: any) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n });\r\n }\r\n closeRevisionConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
    \r\n
    \r\n Dry Container Status\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.modelTitle}
    \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ ...state.userDetails, ...state.dryStatus, ...state.home }), // Selects which state properties are merged into the component's props\r\n DryStatusState.actionCreators,\r\n)(DryStatusSSRM as any)\r\n","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\n\r\nimport moment from 'moment';\r\nimport DateFormat from 'dateformat';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as Highcharts from 'highcharts';\r\nimport HC_Exporting from 'highcharts/modules/exporting';\r\nimport HC_Exporting_offline from 'highcharts/modules/offline-exporting';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface TemperatureGraphState {\r\n graphData: ReeferUnitHistoryUI[];\r\n Filters: ReeferGraphHistoryFilter;\r\n PreferenceDTTM: any;\r\n buttonState: boolean;\r\n reeferFormatter: server.ReeferFormatter;\r\n}\r\n\r\nvar self;\r\n\r\nexport class TemperatureGraph extends React.Component {\r\n chartTemperature: Highcharts.ChartObject;\r\n constructor(props: any) {\r\n super(props);\r\n HC_Exporting(Highcharts);\r\n HC_Exporting_offline(Highcharts);\r\n var filterSet = this.initTemperatureGraphFilters();//new ReeferGraphHistoryFilter();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n if (this.props.historySearchFilters != null && this.props.historySearchFilters != undefined) {\r\n filterSet.GraphFromDate = this.props.historySearchFilters.FromDate;\r\n filterSet.GraphToDate = this.props.historySearchFilters.ToDate;\r\n filterSet.Units = this.props.historySearchFilters.Units;\r\n this.setState({ Filters: filterSet });\r\n }\r\n\r\n this.state = {\r\n Filters: filterSet,\r\n graphData: this.props.reeferHistoryData,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n buttonState: false,\r\n reeferFormatter: this.props.propsReeferFormatters\r\n };\r\n self = this;\r\n }\r\n initTemperatureGraphFilters() {\r\n var objHistoryGraphFilters = new ReeferGraphHistoryFilter();\r\n objHistoryGraphFilters.GraphFromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objHistoryGraphFilters.GraphToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objHistoryGraphFilters.Units = \"\";\r\n\r\n return objHistoryGraphFilters;\r\n }\r\n\r\n getSeriesData(currentData: any[], seriesName: string, axesNo: number) {\r\n if (currentData.length > 0) {\r\n var returnSeriesData = [];\r\n $.each(currentData, function (i, val) {\r\n if (val.TemperatureValue != null && val.TemperatureValue != undefined) {\r\n if (axesNo == 1) {\r\n if (val.TemperatureValue != \"999\" && val.TemperatureValue != \"-999\") {\r\n if (seriesName == \"Humidity\") {\r\n if (val.TemperatureValue == \"0\" || val.HumiditySetPointStatus == \"O\")\r\n returnSeriesData.push(null);\r\n else\r\n returnSeriesData.push(val.TemperatureValue);\r\n }\r\n else\r\n returnSeriesData.push(val.TemperatureValue);\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n }\r\n else {\r\n var tempVal = Formatters.TemperatureFormatterForGraph(val.TemperatureValue);\r\n if (tempVal != 'OOR' && tempVal != '-NA-') {\r\n returnSeriesData.push(tempVal);\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n }\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n });\r\n }\r\n\r\n var TemperatureSeries;\r\n if (axesNo == 1) {\r\n TemperatureSeries = {\r\n name: seriesName,\r\n type: 'spline',\r\n data: returnSeriesData,\r\n yAxis: axesNo\r\n };\r\n }\r\n else {\r\n TemperatureSeries = {\r\n name: seriesName,\r\n type: 'spline',\r\n data: returnSeriesData\r\n };\r\n }\r\n\r\n return TemperatureSeries;\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n\r\n var filterSet = new ReeferGraphHistoryFilter();\r\n filterSet.GraphFromDate = this.props.historySearchFilters.FromDate;\r\n filterSet.GraphToDate = this.props.historySearchFilters.ToDate;\r\n filterSet.Units = this.props.historySearchFilters.Units;\r\n this.setState({\r\n graphData: nextProps.reeferHistoryData,\r\n Filters: filterSet\r\n }, () => this.refreshGraphPoints());\r\n }\r\n\r\n refreshGraphPoints() {\r\n this.renderDateFields();\r\n this.updateGraphData();\r\n }\r\n\r\n updateGraphData() {\r\n if (this.chartTemperature != undefined && this.chartTemperature != null\r\n && this.chartTemperature.series != undefined && this.chartTemperature.series[0] != undefined) {\r\n if (this.state.graphData.length > 0) {\r\n \r\n var graphCurrentData = this.GraphPoints();\r\n this.chartTemperature.xAxis[0].removePlotBand('temperatureGraphPlot1');\r\n if (graphCurrentData.xAxisPlotData != null && graphCurrentData.xAxisPlotData.length > 0) {\r\n // this.chartTemperature.xAxis[0].removePlotBand('temperatureGraphPlot1');\r\n $.each(graphCurrentData.xAxisPlotData, function (i, val) {\r\n self.chartTemperature.xAxis[0].addPlotBand(val);\r\n });\r\n }\r\n\r\n this.chartTemperature.xAxis[0].setCategories(graphCurrentData.xAxisData);\r\n this.chartTemperature.series[0].setData(graphCurrentData.yAxisData[0].data);\r\n this.chartTemperature.series[1].setData(graphCurrentData.yAxisData[1].data);\r\n this.chartTemperature.series[2].setData(graphCurrentData.yAxisData[2].data);\r\n this.chartTemperature.series[3].setData(graphCurrentData.yAxisData[3].data);\r\n this.chartTemperature.series[4].setData(graphCurrentData.yAxisData[4].data);\r\n this.chartTemperature.series[5].setData(graphCurrentData.yAxisData[5].data);\r\n this.chartTemperature.series[6].setData(graphCurrentData.yAxisData[6].data);\r\n this.chartTemperature.series[7].setData(graphCurrentData.yAxisData[7].data);\r\n this.chartTemperature.series[8].setData(graphCurrentData.yAxisData[8].data);\r\n this.chartTemperature.series[9].setData(graphCurrentData.yAxisData[9].data);\r\n this.chartTemperature.series[10].setData(graphCurrentData.yAxisData[10].data);\r\n this.chartTemperature.redraw();\r\n $('.highcharts-reset-zoom').click();\r\n if (graphCurrentData.yAxisData[0].data.length == 0 && graphCurrentData.yAxisData[1].data.length == 0\r\n && graphCurrentData.yAxisData[2].data.length == 0 && graphCurrentData.yAxisData[3].data.length == 0\r\n && graphCurrentData.yAxisData[4].data.length == 0 && graphCurrentData.yAxisData[5].data.length == 0\r\n && graphCurrentData.yAxisData[5].data.length == 0 && graphCurrentData.yAxisData[6].data.length == 0\r\n && graphCurrentData.yAxisData[7].data.length == 0 && graphCurrentData.yAxisData[8].data.length == 0\r\n && graphCurrentData.yAxisData[9].data.length == 0 && graphCurrentData.yAxisData[10].data.length == 0) {\r\n $('#divMessageBox').show();\r\n }\r\n else {\r\n $('#divMessageBox').hide();\r\n }\r\n }\r\n else {\r\n this.chartTemperature.xAxis[0].setCategories([]);\r\n this.chartTemperature.series[0].setData([]);\r\n this.chartTemperature.series[1].setData([]);\r\n this.chartTemperature.series[2].setData([]);\r\n this.chartTemperature.series[3].setData([]);\r\n this.chartTemperature.series[4].setData([]);\r\n this.chartTemperature.series[5].setData([]);\r\n this.chartTemperature.series[6].setData([]);\r\n this.chartTemperature.series[7].setData([]);\r\n this.chartTemperature.series[8].setData([]);\r\n this.chartTemperature.series[9].setData([]);\r\n this.chartTemperature.series[10].setData([]);\r\n this.chartTemperature.redraw();\r\n $('#divMessageBox').show();\r\n $('.highcharts-reset-zoom').click();\r\n }\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n GraphPoints() {\r\n\r\n var returnTemperatures = [];\r\n var setPointTemperatures = [];\r\n var supplyTemperatures = [];\r\n var usda1Temperatures = [];\r\n var usda2Temperatures = [];\r\n var usda3Temperatures = [];\r\n var cargo4Temperatures = [];\r\n var ambientTemperatures = [];\r\n var humidityTemperatures = [];\r\n var o2Temperatures = [];\r\n var co2Temperatures = [];\r\n var reeferIdSelected = this.state.graphData[0].ReeferID;\r\n var graphTimes = this.state.graphData.map(x => x.EventDTTM);\r\n var xAxisCategories = [];\r\n var xAxisPlotValues = [];\r\n var RunStateValues = [];\r\n\r\n RunStateValues = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n RCDPowerSourceCd: x.RCDPowerSourceCd\r\n }));\r\n RunStateValues = RunStateValues.sort(x => x.EventDTTM).reverse();\r\n\r\n // declare some variables prepare plot bands \r\n var plotBandsArray: any[] = [];\r\n try {\r\n var a = 0;\r\n var m = 0;\r\n var n = 0;\r\n var e = 0;\r\n var f = 0;\r\n var allBat = 0;\r\n var max = RunStateValues.length - 1;\r\n // prepare a plotband array like [start position of RCDPowerSourceCd=B(index),end position of RCDPowerSourceCd=B(index)] like [[2,6],[11,14],[18,20]]\r\n for (var i = a; i < RunStateValues.length; i++) {\r\n if (RunStateValues[i].RCDPowerSourceCd == 'B') {\r\n m = i;\r\n for (var j = i; j < RunStateValues.length; j++) {\r\n if (RunStateValues[j].RCDPowerSourceCd == 'A') {\r\n n = j;\r\n i = j;\r\n plotBandsArray.push([m, n])\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n // find B exists before A occurs from last\r\n for (var g = max; g >= 0; g--) {\r\n if (RunStateValues[g].RCDPowerSourceCd == 'B') {\r\n e = g;\r\n break;\r\n }\r\n\r\n }\r\n // find A exists before B occurs from last and find there is NO A exists\r\n for (var h = max; h >= 0; h--) {\r\n if (RunStateValues[h].RCDPowerSourceCd == 'A') {\r\n f = h;\r\n allBat = 1;\r\n break;\r\n }\r\n\r\n }\r\n //if B exists before A means last point will be [Bindex,last point of array] \r\n // if all battery total graph ploted with band\r\n if (e > f) {\r\n if (e != RunStateValues.length) {\r\n if (allBat == 1) {\r\n plotBandsArray.push([f + 1, max])\r\n } else {\r\n plotBandsArray.push([f, max])\r\n }\r\n }\r\n }\r\n\r\n var i = 0;\r\n while (i < plotBandsArray.length) {\r\n var plotBandObject = {\r\n color: '#ececeb',\r\n from: plotBandsArray[i][0],\r\n to: plotBandsArray[i][1],\r\n id: 'temperatureGraphPlot1',\r\n label: {\r\n text: 'Battery power',\r\n y: 50,\r\n rotation: 90,\r\n align: 'center'\r\n }\r\n };\r\n xAxisPlotValues.push(plotBandObject);\r\n i += 1;\r\n }\r\n } catch (Error) {\r\n\r\n // ignore errors during prepare a plotband array \r\n //PopupWindow.showErrorMessage(\"Alert\", Error.message);\r\n\r\n }\r\n\r\n $.each(graphTimes, function (i, val) {\r\n xAxisCategories.push(self.dateTimeFormatter(val));\r\n });\r\n\r\n xAxisCategories.sort();\r\n\r\n // Y1-axis Data\r\n returnTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.ReturnTemp1\r\n }));\r\n returnTemperatures = returnTemperatures.sort(x => x.EventDTTM).reverse();\r\n var returnTemperaturesSeries = this.getSeriesData(returnTemperatures, 'Return', 2);\r\n returnTemperaturesSeries.color = \"#EC7063\";\r\n\r\n setPointTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.SetPoint\r\n }));\r\n setPointTemperatures = setPointTemperatures.sort(x => x.EventDTTM).reverse();\r\n var setPointTemperaturesSeries = this.getSeriesData(setPointTemperatures, 'Setpoint', 2);\r\n setPointTemperaturesSeries.color = \"#F1C40F\";\r\n\r\n supplyTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.SupplyTemp1\r\n }));\r\n supplyTemperatures = supplyTemperatures.sort(x => x.EventDTTM).reverse();\r\n var supplyTemperaturesSeries = this.getSeriesData(supplyTemperatures, 'Supply', 2);\r\n supplyTemperaturesSeries.color = \"#27AE60\";\r\n\r\n usda1Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.USDA1Temp\r\n }));\r\n usda1Temperatures = usda1Temperatures.sort(x => x.EventDTTM).reverse();\r\n var usda1TemperaturesSeries = this.getSeriesData(usda1Temperatures, 'USDA1', 2);\r\n usda1TemperaturesSeries.color = \"#0E6655\";\r\n\r\n usda2Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.USDA2Temp\r\n }));\r\n usda2Temperatures = usda2Temperatures.sort(x => x.EventDTTM).reverse();\r\n var usda2TemperaturesSeries = this.getSeriesData(usda2Temperatures, 'USDA2', 2);\r\n usda2TemperaturesSeries.color = \"#A04000\";\r\n\r\n usda3Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.USDA3Temp\r\n }));\r\n usda3Temperatures = usda3Temperatures.sort(x => x.EventDTTM).reverse();\r\n var usda3TemperaturesSeries = this.getSeriesData(usda3Temperatures, 'USDA3', 2);\r\n usda3TemperaturesSeries.color = \"#95A5A6\";\r\n\r\n cargo4Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.Cargo4Temp\r\n }));\r\n cargo4Temperatures = cargo4Temperatures.sort(x => x.EventDTTM).reverse();\r\n var cargo4TemperaturesSeries = this.getSeriesData(cargo4Temperatures, 'USDA4', 2);\r\n cargo4TemperaturesSeries.color = \"#FF5722\";\r\n\r\n ambientTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.AmbientTemp\r\n }));\r\n ambientTemperatures = ambientTemperatures.sort(x => x.EventDTTM).reverse();\r\n var ambientTemperaturesSeries = this.getSeriesData(ambientTemperatures, 'Ambient', 2);\r\n ambientTemperaturesSeries.color = \"#9CCC65\";\r\n\r\n // Y2-axis Data\r\n humidityTemperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.Humidity,\r\n HumiditySetPointStatus: x.HumiditySetpointStatus\r\n }));\r\n humidityTemperatures = humidityTemperatures.sort(x => x.EventDTTM).reverse();\r\n var humidityTemperaturesSeries = this.getSeriesData(humidityTemperatures, 'Humidity', 1);\r\n humidityTemperaturesSeries.color = \"#800080\";\r\n\r\n o2Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.O2Reading\r\n }));\r\n o2Temperatures = o2Temperatures.sort(x => x.EventDTTM).reverse();\r\n var o2TemperaturesSeries = this.getSeriesData(o2Temperatures, 'O2', 1);\r\n o2TemperaturesSeries.color = \"#F57F17\";\r\n\r\n co2Temperatures = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n TemperatureValue: x.CO2Reading\r\n }));\r\n co2Temperatures = co2Temperatures.sort(x => x.EventDTTM).reverse();\r\n var co2TemperaturesSeries = this.getSeriesData(co2Temperatures, 'CO2', 1);\r\n co2TemperaturesSeries.color = \"#FDD835\";\r\n\r\n var dataObject = {\r\n reeferId: reeferIdSelected,\r\n xAxisData: xAxisCategories,\r\n xAxisPlotData: xAxisPlotValues,\r\n yAxisData: [setPointTemperaturesSeries, returnTemperaturesSeries, supplyTemperaturesSeries, usda1TemperaturesSeries, usda2TemperaturesSeries, usda3TemperaturesSeries, cargo4TemperaturesSeries, ambientTemperaturesSeries, humidityTemperaturesSeries, o2TemperaturesSeries, co2TemperaturesSeries]\r\n }\r\n\r\n return dataObject;\r\n }\r\n\r\n BindGraphData() {\r\n if (this.state.graphData != null && this.state.graphData.length > 0) {\r\n var parent = this;\r\n var element = document.getElementById('tempartureGraphDiv');\r\n\r\n var tooltipOption: Highcharts.TooltipOptions = {\r\n shared: true,\r\n useHTML: true,\r\n headerFormat: '{point.key:%m-%d-%y %H:%M}',\r\n pointFormat: '' +\r\n '',\r\n footerFormat: '
    {series.name}: {point.y}
    ',\r\n }\r\n\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n //var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\r\n \r\n if (typeof (element) != 'undefined' && element != null) {\r\n //if (isChrome) {\r\n //Highcharts.setOptions({\r\n // global: {\r\n // useUTC: false\r\n // },\r\n // exporting: {\r\n // buttons: {\r\n // contextButton: {\r\n // menuItems: ['downloadPNG', 'downloadJPEG']\r\n // }\r\n // }\r\n // }\r\n //});\r\n //}\r\n //else {\r\n Highcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n menuItems: ['downloadPNG', 'downloadJPEG']//26022'printChart', 'separator', \r\n }\r\n }\r\n }\r\n });\r\n //}\r\n\r\n var graphCurrentData = this.GraphPoints();\r\n if (graphCurrentData.yAxisData[0].data.length == 0 && graphCurrentData.yAxisData[1].data.length == 0\r\n && graphCurrentData.yAxisData[2].data.length == 0 && graphCurrentData.yAxisData[3].data.length == 0\r\n && graphCurrentData.yAxisData[4].data.length == 0 && graphCurrentData.yAxisData[5].data.length == 0\r\n && graphCurrentData.yAxisData[5].data.length == 0 && graphCurrentData.yAxisData[6].data.length == 0\r\n && graphCurrentData.yAxisData[7].data.length == 0 && graphCurrentData.yAxisData[8].data.length == 0\r\n && graphCurrentData.yAxisData[9].data.length == 0 && graphCurrentData.yAxisData[10].data.length == 0) {\r\n $('#divMessageBox').show();\r\n }\r\n else {\r\n $('#divMessageBox').hide();\r\n }\r\n\r\n parent.chartTemperature = Highcharts.chart('tempartureGraphDiv', {\r\n chart: {\r\n zoomType: 'xy'\r\n },\r\n title: {\r\n text: 'Reefer Monitoring Data: ' + graphCurrentData.reeferId\r\n //text: ''\r\n },\r\n xAxis: [{\r\n type: 'dateTime',\r\n categories: graphCurrentData.xAxisData,\r\n labels: {\r\n format: '{value:%m-%d-%y %H:%M}'\r\n },\r\n plotBands: graphCurrentData.xAxisPlotData\r\n }],\r\n exporting: {\r\n enabled: true,\r\n sourceWidth: 1600,\r\n sourceHeight: 500,\r\n chartOptions: {\r\n plotOptions: {\r\n series: {\r\n dataLabels: {\r\n enabled: true\r\n }\r\n }\r\n }\r\n }\r\n },\r\n yAxis: [{ // Primary yAxis\r\n labels: {\r\n //format: '{value}°C', \r\n formatter: function () {\r\n return this.value + '°' + tempUnitCd.toUpperCase();\r\n },\r\n style: {\r\n color: \"#388E3C\"\r\n }\r\n },\r\n title: {\r\n text: 'Temperature',\r\n style: {\r\n color: \"#388E3C\"\r\n }\r\n }\r\n }, { // Secondary yAxis\r\n gridLineWidth: 0,\r\n title: {\r\n text: 'Percentage',\r\n style: {\r\n color: Highcharts.getOptions().colors[0]\r\n }\r\n },\r\n labels: {\r\n format: '{value} %',\r\n style: {\r\n color: Highcharts.getOptions().colors[0]\r\n }\r\n },\r\n opposite: true\r\n }],\r\n plotOptions: {\r\n spline: {\r\n marker: {\r\n enabled: true\r\n }\r\n },\r\n series: {\r\n connectNulls: true\r\n }\r\n },\r\n tooltip: tooltipOption,\r\n legend: {\r\n layout: 'vertical',\r\n align: 'right',\r\n verticalAlign: 'middle',\r\n floating: false,\r\n backgroundColor: 'rgba(255,255,255,0.25)'\r\n },\r\n series: graphCurrentData.yAxisData\r\n });\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.renderDateFields();\r\n this.BindGraphData();\r\n }\r\n\r\n renderDateFields() {\r\n\r\n var currentDateFilters = this.state.Filters;\r\n\r\n if (this.state.graphData != null && this.state.graphData != undefined && this.state.graphData.length > 0) {\r\n //var graphTimes: any[] = this.state.graphData.map(x => new Date(x.EventDTTM));\r\n //var graphSortedTimes = graphTimes.sort(function (a, b) { return b.getTime() - a.getTime() });\r\n var toDTTM = Formatters.DateTimeFormatter(this.state.Filters.GraphToDate);//Formatters.DateTimeFormatter(graphSortedTimes[0]);\r\n var fromDTTM = Formatters.DateTimeFormatter(this.state.Filters.GraphFromDate);//Formatters.DateTimeFormatter(graphSortedTimes[graphSortedTimes.length - 1]);\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n currentDateFilters.GraphFromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.GraphToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = DateFormat(new Date(Date.now()), 'mm/dd/yyyy');\r\n var modifiedDttm = new Date(Date.now());\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.GraphFromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.GraphToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n fromDateChange(date) {\r\n\r\n var filters = self.state.Filters;\r\n filters.GraphFromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters, buttonState: true });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n toDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.GraphToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters, buttonState: true });\r\n }\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.GraphFromDate;\r\n var toDttm = filters.GraphToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n getReeferHistoryDetails() {\r\n\r\n $('#globalLoader').show();\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n var fromDate = moment(new Date(filters.GraphFromDate)).toString();\r\n var toDate = moment(new Date(filters.GraphToDate)).toString();\r\n //filters.FromDate = filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n //filters.ToDate = filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var historyParams = { FromDate: DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM'), ToDate: DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM'), Units: filters.Units };\r\n var filterParams = JSON.stringify(historyParams);\r\n if (this.state.reeferFormatter === null) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n }, () => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n graphData: data\r\n }, () => this.updateGraphData());\r\n });\r\n });\r\n });\r\n } else {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n graphData: data\r\n }, () => this.updateGraphData());\r\n });\r\n }\r\n }\r\n\r\n dateTimeFormatter(dateTimeVal: any) {\r\n if (dateTimeVal != null && dateTimeVal != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(dateTimeVal.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return prefDateTime.getTime();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n From\r\n \r\n To\r\n \r\n \r\n \r\n\r\n \r\n \r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    No Data Available
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ReeferGraphHistoryFilter {\r\n GraphFromDate: string;\r\n GraphToDate: string;\r\n Units: string;\r\n}\r\n\r\ninterface ReeferUnitHistoryUI {\r\n HighSpeedEvaporatorFanOutPut: string;\r\n IsAcceptableBatteryVoltage?: boolean;\r\n BatteryVoltage?: number;\r\n RCDPowerSourceCd: string;\r\n ReeferACPowerLevel?: number;\r\n ReeferOEMTypeCd: string;\r\n IsReeferPhysicallyConnected?: boolean;\r\n IsReeferCommunicationEstablished?: boolean;\r\n ReeferSwitchOn?: boolean;\r\n DeviceTemp?: number;\r\n UnitEventID?: number;\r\n EventMasterID?: number;\r\n EventDTTM?: Date;\r\n ModifiedDTTM?: Date;\r\n U_UnitAlarmSummaryHistoryID?: number;\r\n UnitControlEventID?: number;\r\n C_EventDTTM?: Date;\r\n C_EventMasterID?: number;\r\n UnitVesselOperationsID?: number;\r\n UnitCargoCareID?: number;\r\n C_UnitAlarmSummaryHistoryID?: number;\r\n Status: string;\r\n IsOnVessel: boolean;\r\n IsCargoCare: boolean;\r\n IsAcceptableACVoltage?: boolean;\r\n R_RCDStateReportedHistoryID?: number;\r\n RunState?: number;\r\n ControlledAtmosphereMode: string;\r\n R_EventDTTM?: Date;\r\n TimeToDefrost?: number;\r\n LineFrequency?: number;\r\n CurrentPhaseA?: number;\r\n CurrentPhaseB?: number;\r\n CurrentPhaseC?: number;\r\n ThreePhaseCurrent: string;\r\n ReturnTempLongAvg?: number;\r\n AmbientTempLongAvg?: number;\r\n CompositeSuctionPressureLongAvg?: number;\r\n DischargePressureLongAvg?: number;\r\n SupplyTemperatureLongAvg?: number;\r\n ReturnTemperatureLongAvg?: number;\r\n CompressorSuctionTempLongAvg?: number;\r\n CompressorCondensorTempLongAvg?: number;\r\n RCDEventID?: number;\r\n R_EventMasterID?: number;\r\n RCDMasterID?: number;\r\n RCDMasterHistoryID?: number;\r\n RCDGSMPositionHistoryID?: number;\r\n RCDLocationHistoryID?: number;\r\n RCDGPSPositionHistoryID?: number;\r\n RCDStateReportedHistoryID?: number;\r\n RCDAlarmSummaryHistoryID?: number;\r\n CCIsOffpower?: boolean;\r\n CCIsSetpoint?: boolean;\r\n CCMissingScheduleCd?: number;\r\n CCIsTempOutOfRange?: boolean;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n CompressorEvaporatorTempLongAvg?: number;\r\n CompressorDischargeTempLongAvg?: number;\r\n CountryCd: string;\r\n CountryName: string;\r\n UnitEventDTTM?: Date;\r\n UnitMasterID?: number;\r\n RCDReportingInterval?: number;\r\n Street: string;\r\n City: string;\r\n State: string;\r\n Zip: string;\r\n RCDRfrComErr?: boolean;\r\n TripId?: number;\r\n TripNm: string;\r\n TripStatusCd: string;\r\n TripStatusDescription: string;\r\n TripNameAndStatus: string;\r\n TripHistoryId?: number;\r\n BookedTemperature?: number;\r\n BookingNumber: string;\r\n TemperatureUnit: string;\r\n MSISDN: string;\r\n DataLoggerDtm?: Date;\r\n RSSI?: number;\r\n HotGasValveOpening?: number;\r\n C_ModifiedDTTM?: Date;\r\n GeofenceName: string;\r\n RCDID: string;\r\n Country: string;\r\n RCDFirmwareVersion: string;\r\n RCDBootloaderVersion: string;\r\n RCDMeshFirmwareVersion: string;\r\n RevisionNum?: number;\r\n LineVoltage1?: number;\r\n LineVoltage2?: number;\r\n LineVoltage3?: number;\r\n GPSLatitude?: number;\r\n GPSLongitude?: number;\r\n GPSLastLock?: number;\r\n GPSCoords: string;\r\n GPSLockState: string;\r\n IsInsideGeofence?: boolean;\r\n Geofence: string;\r\n CustomerAccessGroupIDList: string;\r\n TowerBaseStationID?: number;\r\n TowerLocalizationAreaCode?: number;\r\n MNC?: number;\r\n SuctionModulationValveOpening?: number;\r\n EconomizerValveOpening?: number;\r\n CondenserFanOutPut: string;\r\n DeviationFlg?: boolean;\r\n LowSpeedEvaporatorFanOutPut: string;\r\n CompositeSuctionPressureQualifier?: any;\r\n PretripTestStateID?: any;\r\n DefrostInterval: string;\r\n VentPositionCMHQualifier?: any;\r\n TotalCurrentDrawQualifier?: any;\r\n PretripTimeDisplay: string;\r\n PretripTestNumber?: number;\r\n PretripSubTestNumber?: number;\r\n SetPoint?: number;\r\n O2Setpoint?: number;\r\n CO2Setpoint?: number;\r\n HumiditySetpoint?: number;\r\n CompressorHighSpeed?: number;\r\n ElectricHeatOutPut?: number;\r\n MicroVersion: string;\r\n SoftwareRevision: string;\r\n AmbientTempQualifier?: any;\r\n USSH_Cargo4TempQualifier?: any;\r\n CO2ReadingQualifier?: any;\r\n CO2SetpointQualifier?: any;\r\n ColdTreatmentActive?: boolean;\r\n CompressorDischargeTempQualifier?: any;\r\n CompressorSuctionTempQualifier?: any;\r\n DischargePressureQualifier?: any;\r\n CondenserFanOutputQualifier?: any;\r\n HumiditySetpointStatus: string;\r\n O2ReadingSupport: string;\r\n ParentEventID?: number;\r\n UnitPrefix: string;\r\n UnitNumber: string;\r\n ReeferID: string;\r\n AlarmsList: string;\r\n CCAlarms: string;\r\n CCSeverityLevel: string;\r\n MicroAlarms: string;\r\n MASeverityLevel: string;\r\n UnitUSDAHistoryID?: number;\r\n USDA1Temp?: number;\r\n USDA1TempQualifier?: any;\r\n USDA2Temp?: number;\r\n USDA2TempQualifier?: any;\r\n USDA3Temp?: number;\r\n USDA3TempQualifier?: any;\r\n Cargo4Temp?: number;\r\n Cargo4TempQualifier?: any;\r\n UnitSettingsHistoryID?: number;\r\n DischargePressure?: number;\r\n CompositeSuctionPressure?: number;\r\n VentPositionSensorCMH?: number;\r\n O2SetpointSupport: string;\r\n CO2ReadingSupport: string;\r\n CondenserPressureQualifier?: any;\r\n DataLoggerDtmQualifier?: any;\r\n CurrentPhaseCQualifier?: any;\r\n ControllerSerialNumber: string;\r\n CompressorFrequency?: number;\r\n CondenserTemperature?: number;\r\n CondenserPressure?: number;\r\n HeaterOnTime?: number;\r\n EvaporatorExpansionValveOpening?: number;\r\n RunningMode: string;\r\n URH_UnitReadingsHistoryID?: number;\r\n Humidity?: number;\r\n AmbientTemp?: number;\r\n CompressorSuctionTemp?: number;\r\n CompressorDischargeTemp?: number;\r\n ReturnTemp1?: number;\r\n SupplyTemp1?: number;\r\n SupplyTemp2?: number;\r\n ReturnTemp2?: number;\r\n EvaporatorTemp?: number;\r\n NumberOfAlarmsInQue?: number;\r\n O2Reading?: number;\r\n CO2Reading?: number;\r\n OEMAlarmBlock: string;\r\n ISOFaultBlock: string;\r\n TotalCurrentDraw?: number;\r\n SupplyTempQualifier?: any;\r\n SupplyTemp3Qualifier?: any;\r\n SupplyTemp2Qualifier?: any;\r\n SupplyTemp1Qualifier?: any;\r\n CondenserTempQualifier?: any;\r\n ControllerSerialNumberQualifier?: any;\r\n CurrentPhaseAQualifier?: any;\r\n CurrentPhaseBQualifier?: any;\r\n DefrostIntervalQualifier?: any;\r\n EconomizerValveOpeningQualifier?: any;\r\n EvaporatorExpansionValveOpeningQualifier?: any;\r\n EvaporatorTempQualifier?: any;\r\n UnitHardwareVersion: string;\r\n HeaterOnTimeQualifier?: any;\r\n HighSpeedEvaporatorFanOutputQualifier?: any;\r\n TripStatusCdAndDFlag: string;\r\n HotGasValveOpeningQualifier?: any;\r\n LowSpeedEvaporatorFanOutputQualifier?: any;\r\n MicroVersionQualifier?: any;\r\n O2ReadingQualifier?: any;\r\n O2SetpointQualifier?: any;\r\n PowerSupplyDCVoltageQualifier?: any;\r\n ReturnTemp1Qualifier?: any;\r\n ReturnTemp2Qualifier?: any;\r\n ReturnTemp3Qualifier?: any;\r\n ReturnTempQualifier?: any;\r\n SetPointQualifier?: any;\r\n SuctionModulationValveOpeningQualifier?: any;\r\n LineFrequencyQualifier?: any;\r\n}","/// \r\n/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport DatePicker from 'react-datepicker';\r\nimport moment, { max } from 'moment';\r\nimport DateFormat from 'dateformat';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as Highcharts from 'highcharts';\r\nimport HC_Exporting from 'highcharts/modules/exporting';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface GensetGraphState {\r\n graphData: server.GensetHistoryUI[];\r\n Filters: GensetHistoryFilter;\r\n PreferenceDTTM: any;\r\n buttonState: boolean;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GensetMonitorGraph extends React.Component {\r\n chartGensetMonitor: Highcharts.ChartObject;\r\n constructor(props: any) {\r\n super(props);\r\n HC_Exporting(Highcharts);\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var filterSet = this.initHistoryFilters();//new GensetHistoryFilter();\r\n \r\n if (this.props.gensetHistoryFilters != null && this.props.gensetHistoryFilters != undefined) {\r\n filterSet.FromDate = this.props.gensetHistoryFilters.FromDate;\r\n filterSet.ToDate = this.props.gensetHistoryFilters.ToDate;\r\n filterSet.AssetNumber = this.props.gensetHistoryFilters.AssetNumber;\r\n filterSet.DeviceNumber = this.props.gensetHistoryFilters.DeviceNumber;\r\n\r\n this.setState({ Filters: filterSet });\r\n }\r\n this.state = {\r\n Filters: filterSet,\r\n graphData: this.props.gensetHistoryData,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n buttonState: false\r\n };\r\n\r\n self = this;\r\n }\r\n \r\n initHistoryFilters() {\r\n var gensetHistoryFilter = new GensetHistoryFilter();\r\n gensetHistoryFilter.AssetNumber = '';\r\n gensetHistoryFilter.DeviceNumber = '';\r\n gensetHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n gensetHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n gensetHistoryFilter.EventCode = '';\r\n\r\n return gensetHistoryFilter;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderDateFields();\r\n this.BindGraphData();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n this.setState({\r\n graphData: nextProps.gensetHistoryData,\r\n Filters: nextProps.gensetHistoryFilters\r\n }, () => this.refreshGraphPoints());\r\n }\r\n\r\n refreshGraphPoints() {\r\n this.renderDateFields();\r\n this.updateGraphData();\r\n }\r\n\r\n renderDateFields() {\r\n var currentDateFilters = this.state.Filters;\r\n\r\n if (this.state.graphData != null && this.state.graphData != undefined && this.state.graphData.length > 0) {\r\n var graphTimes: any[] = this.state.graphData.map(x => new Date(x.EventDTTM));\r\n var graphSortedTimes = graphTimes.sort(function (a, b) { return b.getTime() - a.getTime() });\r\n var toDTTM = Formatters.DateTimeFormatter(graphSortedTimes[0]);\r\n var fromDTTM = Formatters.DateTimeFormatter(graphSortedTimes[graphSortedTimes.length - 1]);\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = DateFormat(new Date(Date.now()), 'mm/dd/yyyy');\r\n var modifiedDttm = new Date(Date.now());\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n fromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters, buttonState: true });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n toDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters, buttonState: true });\r\n }\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.FromDate;\r\n var toDttm = filters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n getGensetHistoryDetails() {\r\n $('#globalLoader').show();\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n \r\n var fromDate = moment(new Date(filters.FromDate)).toString();\r\n var toDate = moment(new Date(filters.ToDate)).toString();\r\n filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n graphData: data\r\n }, () => this.updateGraphData());\r\n });\r\n }\r\n\r\n dateTimeFormatter(dateTimeVal: any) {\r\n if (dateTimeVal != null && dateTimeVal != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(dateTimeVal.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return prefDateTime.getTime();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n getSeriesDataForFuelLevel(currentData: any[], seriesName: string, axesNo: number) {\r\n if (currentData.length > 0) {\r\n var returnSeriesData = [];\r\n $.each(currentData, function (i, val) {\r\n if (val.Qualifier != null && ((val.Qualifier == 'A') || (val.Qualifier == 'P'))) {\r\n if (val.Value != null && val.Value != undefined) {\r\n if (axesNo == 1) {\r\n var floatVal = Formatters.FloatFormatterForGraph(val.Value);\r\n if (floatVal != 'OOR' && floatVal != '-NA-') {\r\n returnSeriesData.push(floatVal);\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n }\r\n }\r\n } \r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n });\r\n }\r\n\r\n var voltageSeries;\r\n if (axesNo == 1) {\r\n voltageSeries = {\r\n name: seriesName,\r\n type: 'spline',\r\n data: returnSeriesData,\r\n yAxis: axesNo\r\n };\r\n }\r\n\r\n return voltageSeries;\r\n }\r\n\r\n getSeriesData(currentData: any[], seriesName: string, axesNo: number) {\r\n \r\n if (currentData.length > 0) {\r\n var returnSeriesData = [];\r\n $.each(currentData, function (i, val) {\r\n if (val.Value != null && val.Value != undefined) {\r\n if (axesNo == 1) {\r\n if (val.Value != undefined && val.Value != null) {\r\n returnSeriesData.push(val.Value);\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n }\r\n else {\r\n var floatVal = Formatters.FloatFormatterForGraph(val.Value);\r\n if (floatVal != 'OOR' && floatVal != '-NA-') {\r\n returnSeriesData.push(floatVal);\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n }\r\n }\r\n else {\r\n returnSeriesData.push(null);\r\n }\r\n });\r\n }\r\n\r\n var voltageSeries;\r\n if (axesNo == 1) {\r\n voltageSeries = {\r\n name: seriesName,\r\n type: 'spline',\r\n data: returnSeriesData,\r\n yAxis: axesNo\r\n };\r\n }\r\n else {\r\n voltageSeries = {\r\n name: seriesName,\r\n type: 'spline',\r\n data: returnSeriesData\r\n };\r\n }\r\n\r\n return voltageSeries;\r\n }\r\n\r\n GraphPoints() {\r\n var gensetBatteryVoltage = [];\r\n var deviceBatteryVoltage = [];\r\n var gensetFuelLevel = [];\r\n\r\n var gensetIdSelected = this.state.graphData[0].AssetNumber;\r\n var graphTimes = this.state.graphData.map(x => x.EventDTTM);\r\n var xAxisCategories = [];\r\n var xAxisPlotValues = [];\r\n var GensetRunStateValues = [];\r\n GensetRunStateValues = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n IgnitionOn: x.IgnitionOn\r\n }));\r\n GensetRunStateValues = GensetRunStateValues.sort(x => x.EventDTTM).reverse();\r\n // declare some variables prepare plot bands \r\n var plotBandsArray: any[] = [];\r\n try {\r\n var m = 0;\r\n var n = 0;\r\n var e = 0;\r\n var f = 0;\r\n var allPow = 0;\r\n var max = GensetRunStateValues.length - 1;\r\n // prepare a plotband array like [start position of IgnitionOn=0 or false(index),end position of IgnitionOn=0 or false(index)] like [[2,6],[11,14],[18,20]]\r\n for (var i = 0; i < GensetRunStateValues.length; i++) {\r\n if (GensetRunStateValues[i].IgnitionOn == 1 || GensetRunStateValues[i].IgnitionOn == true) {\r\n m = i;\r\n for (var j = i; j < GensetRunStateValues.length; j++) {\r\n if (GensetRunStateValues[j].IgnitionOn == 0 || GensetRunStateValues[j].IgnitionOn == false) {\r\n n = j;\r\n i = j;\r\n if (GensetRunStateValues[j].IgnitionOn != null) {\r\n plotBandsArray.push([m, n])\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n // find IgnitionOff exists before IgnitionOn occurs from last\r\n for (var g = max; g >= 0; g--) {\r\n if (GensetRunStateValues[g].IgnitionOn != null) {\r\n if (GensetRunStateValues[g].IgnitionOn == 1 || GensetRunStateValues[g].IgnitionOn == true) {\r\n e = g;\r\n break;\r\n }\r\n }\r\n\r\n }\r\n // find IgnitionOn exists before IgnitionOff occurs from last and find there is No IgnitionOn exists\r\n for (var h = max; h >= 0; h--) {\r\n if (GensetRunStateValues[h].IgnitionOn != null) {\r\n if (GensetRunStateValues[h].IgnitionOn == 0 || GensetRunStateValues[h].IgnitionOn == false) {\r\n f = h;\r\n allPow = 1;\r\n break;\r\n }\r\n }\r\n\r\n }\r\n //if IgnitionOff exists before IgnitionOn means last point will be [Bindex,last point of array]\r\n // if all IgnitionOn total graph ploted with band\r\n var p,cnt = 0;\r\n if (e > f) {\r\n if (e != GensetRunStateValues.length) {\r\n if (allPow == 1) {\r\n for (var k = h; k < GensetRunStateValues.length; k++) {\r\n if (GensetRunStateValues[k].IgnitionOn != null) {\r\n if (GensetRunStateValues[k].IgnitionOn == 1 || GensetRunStateValues[k].IgnitionOn == true) {\r\n p = k;\r\n for (var l = k; l < GensetRunStateValues.length; l++) {\r\n if (GensetRunStateValues[l].IgnitionOn == 1 || GensetRunStateValues[l].IgnitionOn == true) {\r\n cnt = cnt + 1;\r\n }\r\n }\r\n plotBandsArray.push([p,p+cnt])\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n plotBandsArray.push([f, max])\r\n }\r\n }\r\n }\r\n\r\n var i = 0;\r\n \r\n while (i < plotBandsArray.length) {\r\n var plotBandObject = {\r\n color: '#ececeb',\r\n from: plotBandsArray[i][0],\r\n to: plotBandsArray[i][1],\r\n id: 'gensetRunningGraphPlot1',\r\n label: {\r\n text: 'Switch On',\r\n y: 50,\r\n rotation: 90,\r\n align: 'center'\r\n }\r\n };\r\n xAxisPlotValues.push(plotBandObject);\r\n i += 1;\r\n }\r\n } catch (Error) {\r\n // ignore errors during prepare a plotband array \r\n //PopupWindow.showErrorMessage(\"Alert\", Error.message);\r\n }\r\n\r\n\r\n $.each(graphTimes, function (i, val) {\r\n xAxisCategories.push(self.dateTimeFormatter(val));\r\n });\r\n\r\n xAxisCategories.sort();\r\n\r\n // Y1-axis Data\r\n gensetBatteryVoltage = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n Value: x.ExtBattVoltage\r\n }));\r\n gensetBatteryVoltage = gensetBatteryVoltage.sort(x => x.EventDTTM).reverse();\r\n var returnGensetBatterySeries = this.getSeriesData(gensetBatteryVoltage, 'Genset bat (V)', 2);\r\n returnGensetBatterySeries.color = \"#EC7063\";\r\n\r\n deviceBatteryVoltage = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n Value: x.BattVoltage\r\n }));\r\n deviceBatteryVoltage = deviceBatteryVoltage.sort(x => x.EventDTTM).reverse();\r\n var deviceBatteryVoltageSeries = this.getSeriesData(deviceBatteryVoltage, 'Device bat (V)', 2);\r\n deviceBatteryVoltageSeries.color = \"#F1C40F\";\r\n\r\n gensetFuelLevel = this.state.graphData.map(x => ({\r\n EventDTTM: x.EventDTTM,\r\n Value: x.FuelLevel != null ? parseFloat(x.FuelLevel.toString()).toFixed(2) : null,\r\n Qualifier: x.FuelLevelQualifier\r\n }));\r\n gensetFuelLevel = gensetFuelLevel.sort(x => x.EventDTTM).reverse();\r\n var gensetFuelLevelSeries = this.getSeriesDataForFuelLevel(gensetFuelLevel, 'Fuel (gal)', 1);\r\n gensetFuelLevelSeries.color = \"#27AE60\";\r\n \r\n var dataObject = {\r\n gensetId: gensetIdSelected,\r\n xAxisData: xAxisCategories,\r\n xAxisPlotData: xAxisPlotValues,\r\n yAxisData: [returnGensetBatterySeries, deviceBatteryVoltageSeries, gensetFuelLevelSeries]\r\n }\r\n\r\n return dataObject;\r\n }\r\n\r\n updateGraphData() {\r\n if (this.chartGensetMonitor != undefined && this.chartGensetMonitor != null\r\n && this.chartGensetMonitor.series != undefined && this.chartGensetMonitor.series[0] != undefined) {\r\n if (this.state.graphData.length > 0) {\r\n var graphCurrentData = this.GraphPoints();\r\n this.chartGensetMonitor.xAxis[0].removePlotBand('gensetRunningGraphPlot1');\r\n if (graphCurrentData.xAxisPlotData != null && graphCurrentData.xAxisPlotData.length > 0) { \r\n $.each(graphCurrentData.xAxisPlotData, function (i, val) {\r\n self.chartGensetMonitor.xAxis[0].addPlotBand(val);\r\n });\r\n }\r\n this.chartGensetMonitor.xAxis[0].setCategories(graphCurrentData.xAxisData);\r\n this.chartGensetMonitor.series[0].setData(graphCurrentData.yAxisData[0].data);\r\n this.chartGensetMonitor.series[1].setData(graphCurrentData.yAxisData[1].data);\r\n this.chartGensetMonitor.series[2].setData(graphCurrentData.yAxisData[2].data);\r\n this.chartGensetMonitor.redraw();\r\n $('.highcharts-reset-zoom').click();\r\n if (graphCurrentData.yAxisData[0].data.length == 0 && graphCurrentData.yAxisData[1].data.length == 0\r\n && graphCurrentData.yAxisData[2].data.length == 0) {\r\n $('#divMessageBox').show();\r\n }\r\n else {\r\n $('#divMessageBox').hide();\r\n }\r\n }\r\n else {\r\n this.chartGensetMonitor.xAxis[0].setCategories([]);\r\n this.chartGensetMonitor.series[0].setData([]);\r\n this.chartGensetMonitor.series[1].setData([]);\r\n this.chartGensetMonitor.series[2].setData([]); \r\n this.chartGensetMonitor.redraw();\r\n $('#divMessageBox').show();\r\n $('.highcharts-reset-zoom').click();\r\n }\r\n }\r\n\r\n $('#globalLoader').hide();\r\n }\r\n\r\n BindGraphData() {\r\n if (this.state.graphData != null && this.state.graphData.length > 0) {\r\n var parent = this;\r\n var element = document.getElementById('gensetMonitorGraphDiv');\r\n\r\n var tooltipOption: Highcharts.TooltipOptions = {\r\n shared: true,\r\n useHTML: true,\r\n headerFormat: '{point.key:%m-%e-%y %H:%M}',\r\n pointFormat: '' +\r\n '',\r\n footerFormat: '
    {series.name}: {point.y}
    ',\r\n }\r\n \r\n var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\r\n if (typeof (element) != 'undefined' && element != null) {\r\n if (isChrome) {\r\n Highcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n menuItems: Highcharts.getOptions().exporting.buttons.contextButton.menuItems.splice(2)\r\n }\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n Highcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n }\r\n });\r\n }\r\n\r\n var graphCurrentData = this.GraphPoints();\r\n if (graphCurrentData.yAxisData[0].data.length == 0 && graphCurrentData.yAxisData[1].data.length == 0\r\n && graphCurrentData.yAxisData[2].data.length == 0) {\r\n $('#divMessageBox').show();\r\n }\r\n else {\r\n $('#divMessageBox').hide();\r\n }\r\n\r\n parent.chartGensetMonitor = Highcharts.chart('gensetMonitorGraphDiv', {\r\n chart: {\r\n zoomType: 'xy'\r\n },\r\n title: {\r\n text: 'Genset Monitoring Data: ' + graphCurrentData.gensetId\r\n //text: ''\r\n },\r\n xAxis: [{\r\n type: 'dateTime',\r\n categories: graphCurrentData.xAxisData,\r\n labels: {\r\n format: '{value:%m-%e-%y %H:%M}'\r\n },\r\n plotBands: graphCurrentData.xAxisPlotData\r\n }],\r\n exporting: {\r\n enabled: true,\r\n sourceWidth: 1600,\r\n sourceHeight: 500,\r\n buttons: {\r\n contextButton: {\r\n align: 'right',\r\n x: 0,\r\n y: 50,\r\n verticalAlign: 'top'\r\n }\r\n },\r\n chartOptions: {\r\n plotOptions: {\r\n series: {\r\n dataLabels: {\r\n enabled: true\r\n }\r\n }\r\n }\r\n }\r\n },\r\n yAxis: [{ // Primary yAxis\r\n labels: {\r\n //format: '{value} (V)', \r\n formatter: function () {\r\n return this.value;\r\n },\r\n style: {\r\n color: \"#388E3C\"\r\n }\r\n },\r\n title: {\r\n text: 'Voltage (V)',\r\n style: {\r\n color: \"#388E3C\"\r\n }\r\n }\r\n }, { // Secondary yAxis\r\n gridLineWidth: 0,\r\n title: {\r\n text: 'Gallons (gal)',\r\n style: {\r\n color: Highcharts.getOptions().colors[0]\r\n }\r\n },\r\n labels: {\r\n //format: '{value} (Gal)',\r\n formatter: function () {\r\n return this.value;\r\n },\r\n style: {\r\n color: Highcharts.getOptions().colors[0]\r\n }\r\n },\r\n opposite: true\r\n }],\r\n plotOptions: {\r\n spline: {\r\n marker: {\r\n enabled: true\r\n }\r\n },\r\n series: {\r\n connectNulls: true\r\n }\r\n },\r\n tooltip: tooltipOption,\r\n legend: {\r\n layout: 'vertical',\r\n align: 'right',\r\n verticalAlign: 'middle',\r\n floating: false,\r\n backgroundColor: 'rgba(255,255,255,0.25)'\r\n },\r\n series: graphCurrentData.yAxisData\r\n });\r\n }\r\n }\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n From\r\n \r\n \r\n \r\n To\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n
    \r\n
    \r\n
    No Data Available
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass GensetHistoryFilter {\r\n AssetNumber: string;\r\n DeviceNumber: string;\r\n FromDate: string;\r\n ToDate: string;\r\n EventCode: string;\r\n}\r\n\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAATCAYAAADxlA/3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAHaGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEwLTI0VDE3OjQ0OjEzKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTEwLTI0VDE5OjMzOjUyKzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMC0yNFQxOTozMzo1MiswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiZDJkM2EzNy0wNWU0LWY1NGItOTYxYS03MmU1MTM1NjJkNmMiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyYzg1YTE0OS0xN2E3LTM2NGUtODRmMS01MGIzZDQxOTc4YmYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NTA3YTdiNi1iZmIxLWVkNDktOTNiYS0xOGUwNzljZTI1MTEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ1MDdhN2I2LWJmYjEtZWQ0OS05M2JhLTE4ZTA3OWNlMjUxMSIgc3RFdnQ6d2hlbj0iMjAxOS0xMC0yNFQxNzo0NDoxMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0MDEyZmEwMC01NWRlLTQ2NDEtYmQ5Mi01OWMyYzJkMGNjYmUiIHN0RXZ0OndoZW49IjIwMTktMTAtMjRUMTc6NDQ6MTMrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YmQyZDNhMzctMDVlNC1mNTRiLTk2MWEtNzJlNTEzNTYyZDZjIiBzdEV2dDp3aGVuPSIyMDE5LTEwLTI0VDE5OjMzOjUyKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyYzg1YTE0OS0xN2E3LTM2NGUtODRmMS01MGIzZDQxOTc4YmY8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz48FzSCAAACYElEQVRIiZ3WyWqUQRAH8N9MZpKYOO4rRgW9KIiIR/ENfAqv4gN5UvAiggcPvoGgEDeI6EEiuEBcUBSXqElmPg9VH9OJiTOZgqb76+qv6l9bVzeqqpJ0EHsxiQ525HoKWzCR+5MYwzTaOVp4hNM4gweYzb1n+G0DahQA7mAR+9BMwY0UPoHxVFwlXwHwGl7jBC7m+R6+4jke4l4CeodftdJWAeYX9uM4uoXy75hJRY+xuwD3AucSXC//66a8JnbhfI7LWMBT3E8PvSgBrKTgTwmilwB+4IsIwx8cLf5ZyLkymFo4kuMCvuFda82hlbR0a7E3VazbQygaljqYWAugKSx+qx/rDyIEjeS9ybMNEZ5RqYfF9QCcFPnQSBDHsS35Z7Fc8M4Ir/Vyb9O0FkBDZHYNppl7dWJt8y8tjqJ4IwAV3gtXtwvFjRw1oDrpxsV9MZL16wH4msKP5dwteFUxavoscqJpRFoLoI5lbe3YgP9nxCXTHXBuaABwV+RBXQXt/K7naf3rui7RUULQxPR6SXhOJNtvUQ3LuV4UZfdBWFyJi6krcmGz1MPceiGYEtZ1hhT0RHhtM/QYV3CzBFCJJvJZWD6u3+3GcpSVUNOw7u9iDldxS1TbqhwYTwCHsSRcv4SfyV+2uvxaOf8ZAGJZtOSbqfxjySwBtEWcX4rG0xLW1ust+b2USnsp/LCoBPoV1Mtzr3AdN0S7/qdplQAuiU7VwSHxQNkjWmpHNKj6YbJVJOpkrpf02/cK5nE7lc//xzurHiQbUSeB7MEB7BRvgu2iJHcnsFmcEl68Itw+kP4CZg+TJiF5ZKwAAAAASUVORK5CYII=\"","// @ts-nocheck\r\nimport $ from 'jquery';\r\nimport DateFormat from 'dateformat';\r\n\r\nimport NormalCC from '../images/Status/Alarms/NormalCC.png';\r\nimport MediumCC from '../images/Status/Alarms/MediumCC.png';\r\nimport LowCC from '../images/Status/Alarms/LowCC.png';\r\nimport HighCC from '../images/Status/Alarms/HighCC.png';\r\nimport HighALM from '../images/Status/Alarms/HighALM.png';\r\nimport MediumALM from '../images/Status/Alarms/MediumALM.png';\r\n\r\nimport AssetStateActive from '../images/AssetState/ActiveRA.svg';\r\nimport AssetStateDisconnected from '../images/AssetState/DisconnectedRA.png';\r\nimport AssetStateRetired from '../images/AssetState/RetiredRA.svg';\r\n\r\nimport TripInprogress from '../images/Status/RouteDeviation/TripInprogress.png';\r\nimport TripCompletedDeviation from '../images/Status/RouteDeviation/TripCompletedDeviation.png';\r\nimport TripCompleted from '../images/Status/RouteDeviation/TripCompleted.png';\r\nimport TripProblemetic from '../images/Status//RouteDeviation/TripProblemetic.png';\r\nimport TripPending from '../images/Status/RouteDeviation/TripPending.png';\r\nimport TripDeleted from '../images/Status/RouteDeviation/TripDeleted.png';\r\nimport TripCancelDeviation from '../images/Status/RouteDeviation/TripCancelDeviation.png';\r\nimport TripCancel from '../images/Status/RouteDeviation/TripCancel.png';\r\nimport lodashfilter from 'lodash/filter';\r\n\r\nimport passed from '../images/passed.png';\r\nimport aborted from '../images/aborted.png';\r\nimport runningtime from '../images/running-time.png';\r\nimport Skipped from '../images/Skipped.png';\r\nimport questionMark from '../images/questionMark.png';\r\nimport failed from '../images/failed.png';\r\n\r\nconst reeferFormatters = {\r\n\r\n CargoCareFormatter: (params) => {\r\n var valueString = \"\";\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n if (params != null && params != undefined && params != '') {\r\n\r\n var cellColor = \"\";\r\n var isCargoCare = false;\r\n var imageElement = document.createElement(\"img\");\r\n\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n isCargoCare = params.data.IsCargoCare;\r\n\r\n if (params.data.CCAlarms != \"\" && params.data.CCAlarms != null && params.data.CCSeverityLevel != \"\" && params.data.CCSeverityLevel != null) {\r\n if (params.data.CCSeverityLevel.toString() == \"1\") {\r\n cellColor = \"Tomato\";\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"2\") {\r\n cellColor = \"Orange\";\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"3\") {\r\n cellColor = \"Yellow\";\r\n }\r\n }\r\n else {\r\n cellColor = \"\";\r\n }\r\n\r\n if (cellColor == \"\" && !isCargoCare) {\r\n return \"\";\r\n }\r\n else if (isCargoCare && cellColor == \"\") {\r\n imageElement.src = NormalCC;\r\n }\r\n else if (isCargoCare && cellColor == \"Tomato\") {\r\n imageElement.src = HighCC;\r\n }\r\n else if (isCargoCare && cellColor == \"Orange\") {\r\n imageElement.src = MediumCC;\r\n }\r\n else if (isCargoCare && cellColor == \"Yellow\") {\r\n imageElement.src = LowCC;\r\n }\r\n }\r\n element.appendChild(imageElement);\r\n }\r\n\r\n return element;\r\n },\r\n\r\n CargoCareSorting: (params) => {\r\n var isCargoCare = false;\r\n var severity = \"\";\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n isCargoCare = params.data.IsCargoCare;\r\n severity = params.data.CCSeverityLevel;\r\n if (isCargoCare && severity == \"1\")\r\n return \"1\";\r\n else if (isCargoCare && severity == \"2\")\r\n return \"2\";\r\n else if (isCargoCare && severity == \"3\")\r\n return \"3\";\r\n else if (isCargoCare && severity == \"\")\r\n return \"4\";\r\n else if (severity == \"\" && !isCargoCare)\r\n return \"5\";\r\n else\r\n return \"5\";\r\n }\r\n },\r\n\r\n CargoCareFormatterForFilter: (params) => {\r\n\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.CCAlarms != \"\" && params.data.CCAlarms != null && params.data.CCSeverityLevel != \"\" && params.data.CCSeverityLevel != null) {\r\n if (params.data.CCSeverityLevel.toString() == \"1\") {\r\n return \"Severe\";\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"2\") {\r\n return \"Minor\";\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"3\") {\r\n return \"Informational\";\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"4\") {\r\n return \"Assigned\"; //RCNG-241 Renamed Normal to Assigned\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"5\") {\r\n return \"\";\r\n }\r\n }\r\n }\r\n return \"\";\r\n },\r\n\r\n statusIndicatorWithDescriptionForALM: (params, alarmsList) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.value.trim()) {\r\n case '1':\r\n imageElement.src = HighALM;\r\n break;\r\n case '2':\r\n imageElement.src = MediumALM;\r\n break;\r\n default:\r\n return \"\";\r\n\r\n }\r\n if (params.value.trim() == '1' || params.value.trim() == '2') {\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.data != null && params.data != undefined) {\r\n var lstAlerts = params.data.AlarmsList.split(',');\r\n var _alarmsList = \"\";\r\n $.each(lstAlerts, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n }\r\n //var anchorElement = document.createElement(\"span\");\r\n var _alarmDesc = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n _alarmsList = _alarmsList != \"\" ? _alarmsList + \"\\n\" + item + \" - \" + _alarmDesc : item + \" - \" + _alarmDesc;\r\n imageElement.title = _alarmsList;\r\n }\r\n });\r\n element.appendChild(imageElement);\r\n }\r\n }\r\n }\r\n return element;\r\n }\r\n\r\n return \"\";\r\n },\r\n EventDescriptionFormattersOld: (params, customerSpecificEventList, eventMasterList) => {\r\n var eventDesc = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined) {\r\n var reeferOEMTypeCd = params.data.ReeferOEMTypeCd;\r\n if (params.data.EventMasterID != null && params.data.EventMasterID != \"\" && params.data.EventMasterID != \"null\") {\r\n var eventlist = lodashfilter(customerSpecificEventList, function (item) {\r\n return item.EventMasterID === params.data.EventMasterID;\r\n });\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n var custSpecificEventList = lodashfilter(eventlist, function (item) {\r\n return item.CustomerID === custId;\r\n });\r\n var finalcustSpecificEventList = lodashfilter(custSpecificEventList, function (item) {\r\n return item.OEMType === reeferOEMTypeCd.toString().trim();\r\n });\r\n if (finalcustSpecificEventList != null && finalcustSpecificEventList.length) {\r\n eventDesc = finalcustSpecificEventList.length > 0 ? finalcustSpecificEventList[0].EventDescription.toString() : \"\";\r\n }\r\n else {\r\n var eventDescription = lodashfilter(eventMasterList, function (item) {\r\n return item.EventMasterID === params.data.EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n if (eventDescription[0].OverrideEventDesc != null) {\r\n var OperationalEventParams = params.data.EventMasterID;\r\n if (OperationalEventParams != null && OperationalEventParams != \"\") {\r\n eventDesc = eventDescription[0].OverrideEventDesc + OperationalEventParams;\r\n }\r\n } else {\r\n if (eventDescription[0].EventCd == \"ATP\" || eventDescription[0].EventCd == \"UTP\") {\r\n if (params.data.CustCd3P != null && params.data.CustCd3P != \"\" && params.data.CustName3P != null && params.data.CustName3P != \"\") {\r\n return eventDesc = eventDescription[0].EventDescription + params.data.CustCd3P + \" (\" + params.data.CustName3P + \")\";\r\n }\r\n }\r\n\r\n }\r\n return eventDesc = eventDescription[0].EventDescription;\r\n\r\n }\r\n\r\n }\r\n }\r\n return eventDesc;\r\n }\r\n\r\n return eventDesc;\r\n },\r\n //WI-26422 - added 2 params\r\n EventDescriptionFormatters: (params, customerSpecificEventList, eventMasterList, M_CustomerAssetTypeDeviceTypeSensorAlerts, Ref_SensorAlerts) => {\r\n var eventDesc = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != undefined) {\r\n var reeferOEMTypeCd = params.data.ReeferOEMTypeCd == null ? \"\" : params.data.ReeferOEMTypeCd; // WI 26532\r\n if (params.data.EventMasterID != null && params.data.EventMasterID != \"\" && params.data.EventMasterID != \"null\") {\r\n var eventlist = lodashfilter(customerSpecificEventList, function (item) {\r\n return item.EventMasterID === params.data.EventMasterID;\r\n });\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n var custSpecificEventList = lodashfilter(eventlist, function (item) {\r\n return item.CustomerID === custId;\r\n });\r\n var finalcustSpecificEventList = lodashfilter(custSpecificEventList, function (item) {\r\n return item.OEMType === reeferOEMTypeCd.toString().trim();\r\n });\r\n if (finalcustSpecificEventList != null && finalcustSpecificEventList.length) {\r\n eventDesc = finalcustSpecificEventList.length > 0 ? finalcustSpecificEventList[0].EventDescription.toString() : \"\";\r\n }\r\n else {\r\n var eventDescription = lodashfilter(eventMasterList, function (item) {\r\n return item.EventMasterID === params.data.EventMasterID;\r\n });\r\n\r\n /** WI-26422 - start */\r\n \r\n var resultSensorAlert = lodashfilter(Ref_SensorAlerts, function (item) {\r\n return item.EventMasterID === params.data.EventMasterID;\r\n });\r\n if (resultSensorAlert != null && resultSensorAlert.length > 0) {\r\n\r\n //WI-26422- to support devicetype 1020\r\n var resultSensorAlertText = lodashfilter(M_CustomerAssetTypeDeviceTypeSensorAlerts, function (item) {\r\n return item.SensorAlertCd === resultSensorAlert[0].SensorAlertCd && item.AssetTypeCd === \"R\"\r\n && item.DeviceTypeCd === params.data.DeviceType; \r\n });\r\n\r\n //not possible, false case, probably revisit again\r\n if (resultSensorAlertText != null && resultSensorAlertText.length === 0) {\r\n if (resultSensorAlert != null && resultSensorAlert != \"\") {\r\n return eventDesc = resultSensorAlert[0].MsgAlertText;\r\n }\r\n }\r\n //WI-26451\r\n if (resultSensorAlertText != null && resultSensorAlertText != \"\" && resultSensorAlertText.length === 1) {\r\n return eventDesc = resultSensorAlertText[0].SensorAlertText;\r\n }\r\n }\r\n \r\n /** WI-26422 - end */\r\n\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n if (eventDescription[0].OverrideEventDesc != null && eventDescription[0].OverrideEventDesc == true) {\r\n if (params.data.OEParams != null && params.data.OEParams != \"\" && params.data.OEParams.length > 0) { \r\n var OperationalEventParams = params.data.OEParams.trimEnd();\r\n if (OperationalEventParams != null && OperationalEventParams != \"\") {\r\n return eventDescription[0].EventDescription + OperationalEventParams; //WI26438 Operational event not shown properly in Status Grid\r\n }\r\n }\r\n }\r\n else {\r\n if (eventDescription[0].EventCd == \"ATP\" || eventDescription[0].EventCd == \"UTP\") {\r\n if (params.data.CustCd3P != null && params.data.CustCd3P != \"\" && params.data.CustName3P != null && params.data.CustName3P != \"\") {\r\n return eventDesc = eventDescription[0].EventDescription + params.data.CustCd3P + \" (\" + params.data.CustName3P + \")\";\r\n }\r\n }\r\n\r\n }\r\n return eventDesc = eventDescription[0].EventDescription;\r\n\r\n }\r\n\r\n }\r\n }\r\n return eventDesc;\r\n }\r\n\r\n return eventDesc;\r\n }, \r\n DLEventDescriptionFormatters: (params, customerSpecificEventList, eventMasterList) => {\r\n var eventDesc = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined) {\r\n var reeferOEMTypeCd = params.data.ReeferOEMTypeCd;\r\n if (params.data.DLEventMasterID != null && params.data.DLEventMasterID != \"\" && params.data.DLEventMasterID != \"null\") {\r\n var eventlist = lodashfilter(customerSpecificEventList, function (item) {\r\n return item.EventMasterID === params.data.DLEventMasterID;\r\n });\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n var custSpecificEventList = lodashfilter(eventlist, function (item) {\r\n return item.CustomerID === custId;\r\n });\r\n var finalcustSpecificEventList = lodashfilter(custSpecificEventList, function (item) {\r\n return item.OEMType === reeferOEMTypeCd.toString().trim();\r\n });\r\n if (finalcustSpecificEventList != null && finalcustSpecificEventList.length) {\r\n eventDesc = finalcustSpecificEventList.length > 0 ? finalcustSpecificEventList[0].EventDescription.toString() : \"\";\r\n }\r\n else {\r\n var eventDescription = lodashfilter(eventMasterList, function (item) {\r\n return item.EventMasterID === params.data.DLEventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) { \r\n if (eventDescription[0].OverrideEventDesc != null && eventDescription[0].OverrideEventDesc == true) {\r\n if (params.data.OEParams != null && params.data.OEParams != \"\" && params.data.OEParams.length > 0) {\r\n var OperationalEventParams = params.data.OEParams.trimEnd();\r\n if (OperationalEventParams != null && OperationalEventParams != \"\") {\r\n return eventDescription[0].EventDescription + OperationalEventParams; //WI26438 Operational event not shown properly in Status Grid\r\n }\r\n }\r\n }\r\n else {\r\n if (eventDescription[0].EventCd == \"ATP\" || eventDescription[0].EventCd == \"UTP\") {\r\n if (params.data.CustCd3P != null && params.data.CustCd3P != \"\" && params.data.CustName3P != null && params.data.CustName3P != \"\") {\r\n return eventDesc = eventDescription[0].EventDescription + params.data.CustCd3P + \" (\" + params.data.CustName3P + \")\";\r\n }\r\n }\r\n\r\n }\r\n return eventDesc = eventDescription[0].EventDescription;\r\n\r\n }\r\n\r\n }\r\n }\r\n return eventDesc;\r\n }\r\n\r\n return eventDesc;\r\n },\r\n PTIStateDescriptionFormatters: (params, preTripList) => {\r\n var ptiDescription = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined) {\r\n var pretripTestStateID = params.data.PretripTestStateID;\r\n if (pretripTestStateID != null && pretripTestStateID != \"\" && pretripTestStateID != \"null\" && pretripTestStateID != 0) {\r\n //var pretripstateId = reeferFormatter.PreTripList.Where(e => e.PretripTestStateID.Equals(Convert.ToByte(PTStateVal))).ToList();\r\n var pretripstateId = lodashfilter(preTripList, function (item) {\r\n return item.PretripTestStateID === pretripTestStateID;\r\n });\r\n if (pretripstateId != null && pretripstateId.length > 0) {\r\n ptiDescription = pretripstateId[0].DisplayText;\r\n }\r\n }\r\n return ptiDescription;\r\n }\r\n\r\n }, \r\n FirmWareDescriptionFormatters: (params, FirmWareDescList, VersionType) => {\r\n var FirmWareDescription = '-NA-';\r\n var tempRoundingValue = \"2\";\r\n if (params != null && params != undefined && params.data != null && params.data != undefined) {\r\n var RCDFirmwareVersion = params.data.RCDFirmwareVersion;\r\n var DeviceType = params.data.DeviceType;\r\n\r\n if (RCDFirmwareVersion != null && RCDFirmwareVersion != \"\" && RCDFirmwareVersion != \"null\" && DeviceType != null && DeviceType != \"\") {\r\n var FWDescription = lodashfilter(FirmWareDescList, function (item) {\r\n return item.ShortName.toUpperCase().trim() === RCDFirmwareVersion.toUpperCase().trim()\r\n && item.FirmwareVersionType.toUpperCase().trim() === VersionType.toUpperCase().trim()\r\n && item.DeviceTypeCD.toUpperCase().trim() === DeviceType.toUpperCase().trim();\r\n });\r\n if (FWDescription != null && FWDescription.length > 0) {\r\n FirmWareDescription = FWDescription[0].LongName;\r\n }\r\n else\r\n FirmWareDescription = params.data.RCDFirmwareVersion;\r\n }\r\n else {\r\n FirmWareDescription = '-NA-';\r\n\r\n }\r\n\r\n if ((DeviceType != null && DeviceType.trim() == \"CT4000\") && FirmWareDescription != '-NA-') {\r\n var tempVal = FirmWareDescription.split(\" \");\r\n var param = tempVal[1];\r\n if (param != null && param != undefined) {\r\n var val = parseFloat(param.toString());\r\n var firmwareRev = tempVal[0] + \" \" + val.toFixed(parseInt(tempRoundingValue));\r\n return firmwareRev;\r\n }\r\n }\r\n\r\n return FirmWareDescription;\r\n }\r\n\r\n return FirmWareDescription;\r\n },\r\n BootloaderFirmWareDescriptionFormatters: (params, FirmWareDescList, VersionType) => {\r\n var FirmWareDescription = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined) {\r\n var RCDBootloaderVersion = params.data.RCDBootloaderVersion;\r\n var DeviceType = params.data.DeviceType;\r\n\r\n if (RCDBootloaderVersion != null && RCDBootloaderVersion != \"\" && RCDBootloaderVersion != \"null\" && DeviceType != null && DeviceType != \"\") {\r\n var FWDescription = lodashfilter(FirmWareDescList, function (item) {\r\n return item.ShortName.toUpperCase().trim() === RCDBootloaderVersion.toUpperCase().trim()\r\n && item.FirmwareVersionType.toUpperCase().trim() === VersionType.toUpperCase().trim()\r\n && item.DeviceTypeCD.toUpperCase().trim() === DeviceType.toUpperCase().trim();\r\n });\r\n if (FWDescription != null && FWDescription.length > 0) {\r\n FirmWareDescription = FWDescription[0].LongName;\r\n }\r\n else\r\n FirmWareDescription = params.data.RCDBootloaderVersion;\r\n }\r\n else {\r\n FirmWareDescription = '-NA-';\r\n\r\n }\r\n return FirmWareDescription;\r\n }\r\n return FirmWareDescription;\r\n },\r\n MeshFirmWareDescriptionFormatters: (params, FirmWareDescList, VersionType) => {\r\n var FirmWareDescription = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined) {\r\n var RCDMeshFirmwareVersion = params.data.RCDMeshFirmwareVersion;\r\n var DeviceType = params.data.DeviceType;\r\n\r\n if (RCDMeshFirmwareVersion != null && RCDMeshFirmwareVersion != \"\" && RCDMeshFirmwareVersion != \"null\" && DeviceType != null && DeviceType != \"\") {\r\n var FWDescription = lodashfilter(FirmWareDescList, function (item) {\r\n return item.ShortName.toUpperCase().trim() === RCDMeshFirmwareVersion.toUpperCase().trim()\r\n && item.FirmwareVersionType.toUpperCase().trim() === VersionType.toUpperCase().trim()\r\n && item.DeviceTypeCD.toUpperCase().trim() === DeviceType.toUpperCase().trim();\r\n });\r\n if (FWDescription != null && FWDescription.length > 0) {\r\n FirmWareDescription = FWDescription[0].LongName;\r\n }\r\n else\r\n FirmWareDescription = params.data.RCDMeshFirmwareVersion;\r\n }\r\n else {\r\n FirmWareDescription = '-NA-';\r\n }\r\n return FirmWareDescription;\r\n }\r\n return FirmWareDescription;\r\n },\r\n\r\n UnitTypesListFormatters: (params, UnitTypesList) => {\r\n var UnitTypeCdDescription = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != undefined) {\r\n var UnitTypeCd = params.data.UnitTypeCd;\r\n\r\n if (UnitTypeCd != null && UnitTypeCd != \"\" && UnitTypeCd != 0) {\r\n var UnitTypeCdId = lodashfilter(UnitTypesList, function (item) {\r\n return item.UnitTypeCd === UnitTypeCd;\r\n });\r\n if (UnitTypeCdId != null && UnitTypeCdId.length > 0) {\r\n UnitTypeCdDescription = UnitTypeCdId[0].ColumnDisplay;\r\n }\r\n }\r\n }\r\n\r\n return UnitTypeCdDescription;\r\n },\r\n\r\n ControllerTypeCdFormatters: (params, ControllerTypeList) => {\r\n var ControllerTypeCdDescription = '-NA-';\r\n if (params != null && params != undefined && params.data != null && params.data != undefined) {\r\n var ControllerTypeCd = params.data.ControllerTypeCd;\r\n\r\n if (ControllerTypeCd != null && ControllerTypeCd != \"\" && ControllerTypeCd != 0) {\r\n var ControllerTypeCdId = lodashfilter(ControllerTypeList, function (item) {\r\n return item.ControllerTypeCd === ControllerTypeCd;\r\n });\r\n if (ControllerTypeCdId != null && ControllerTypeCdId.length > 0) {\r\n ControllerTypeCdDescription = ControllerTypeCdId[0].ColumnDisplay;\r\n }\r\n }\r\n }\r\n\r\n return ControllerTypeCdDescription;\r\n },\r\n\r\n\r\n statusALMSorting: (params) => {\r\n\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.MASeverityLevel != null && params.data.MASeverityLevel != undefined && params.data.MASeverityLevel != \"\") {\r\n switch (params.data.MASeverityLevel.trim()) {\r\n case '1':\r\n return \"1\";\r\n case '2':\r\n return \"2\";\r\n default:\r\n return \"3\";\r\n }\r\n }\r\n }\r\n return \"3\";\r\n },\r\n\r\n statusIndicatorWithDescriptionForALMForFilter: (params) => {\r\n var title = \"\";\r\n switch (params.data.MASeverityLevel.trim()) {\r\n case '1':\r\n title = \"Severe\";\r\n break;\r\n case '2':\r\n title = \"Minor\";\r\n break;\r\n default:\r\n title = \"\";\r\n break;\r\n }\r\n //if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n // if (params.data != null && params.data != undefined) {\r\n // var lstAlerts = params.data.AlarmsList.split(',');\r\n // var _alarmsList = \"\";\r\n // $.each(lstAlerts, function (index, item) {\r\n // if (item != \"\" && item != null) {\r\n // var alarmDescription = alarmsList.filter(e =>\r\n // e.AlarmAlias === item);\r\n // var _alarmDesc = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n // _alarmsList = _alarmsList != \"\" ? _alarmsList + \"\\n\" + item + \" - \" + _alarmDesc : item + \" - \" + _alarmDesc;\r\n // title = _alarmsList;\r\n // }\r\n // });\r\n // }\r\n //}\r\n\r\n return title;\r\n },\r\n\r\n runStateFormatter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.RunState != null && params.data.RunState != undefined) {\r\n if ((params.data.RunState.toString().toUpperCase().trim()) == 'I')\r\n return params.value = '';\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'S')\r\n return params.value = '';\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'X')\r\n return params.value = '';\r\n\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'O')\r\n return params.value = '';\r\n\r\n else\r\n return '-NA-';\r\n\r\n }\r\n\r\n return '-NA-';\r\n }\r\n },\r\n\r\n assetStateFormatter: (params) => {\r\n var element = document.createElement(\"span\");\r\n\r\n if (params.data != null && params.data != undefined) {\r\n var imageElement = document.createElement(\"img\");\r\n if (params.data.AssetState != null && params.data.AssetState != undefined) {\r\n var assetState = params.data.AssetState; \r\n switch (assetState.toUpperCase().trim()) {\r\n case 'A':\r\n element.className = \"ActiveRA\";\r\n imageElement.src = AssetStateActive;\r\n element.title = \"Active\";\r\n break;\r\n case 'D':\r\n element.className = \"DisconnectedRA\";\r\n imageElement.src = AssetStateDisconnected;\r\n element.title = \"Disconnected\";\r\n break;\r\n case 'R':\r\n element.className = \"RetiredRA\";\r\n imageElement.src = AssetStateRetired;\r\n element.title = \"Retired\";\r\n break;\r\n default:\r\n break;\r\n\r\n }\r\n }\r\n\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n\r\n return '-NA-';\r\n },\r\n\r\n RunstateSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.RunState != null && params.data.RunState != \"\" && params.data.RunState != undefined) {\r\n if (params.data.RunState == 'X')\r\n return \"1\";\r\n else if (params.data.RunState == 'I')\r\n return \"2\";\r\n else if (params.data.RunState == 'S')\r\n return \"3\";\r\n else if (params.data.RunState == 'O')\r\n return \"4\";\r\n else\r\n return \"5\";\r\n }\r\n return \"5\";\r\n }\r\n },\r\n\r\n runStateFormatterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.RunState != null && params.data.RunState != undefined) {\r\n if ((params.data.RunState.toString().toUpperCase().trim()) == 'I')\r\n return \"Running\";\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'S')\r\n return \"Standby\";\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'X')\r\n return \"Faulty\";\r\n\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'O')\r\n return \"Offline\";\r\n\r\n else\r\n return '-NA-';\r\n\r\n }\r\n\r\n return '-NA-';\r\n }\r\n }, \r\n\r\n TripstatusIndicator: (params) => {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var deviationFlg = '';\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n var imageElement = document.createElement(\"img\");\r\n var valueString = params.value.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n imageElement.src = TripInprogress;\r\n break;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n imageElement.src = TripCompletedDeviation; /* WI19591 checking Trip is deviated */\r\n else\r\n imageElement.src = TripCompleted;\r\n break;\r\n case 'D':\r\n imageElement.src = TripProblemetic;\r\n break;\r\n case 'P':\r\n imageElement.src = TripPending;\r\n break;\r\n case 'R':\r\n imageElement.src = TripDeleted;\r\n break;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n imageElement.src = TripCancelDeviation; /* WI19591 checking Trip is deviated */\r\n else\r\n imageElement.src = TripCancel;\r\n break;\r\n default:\r\n break;\r\n\r\n }\r\n }\r\n\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n return '-NA-';\r\n },\r\n\r\n TripSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != undefined && params.data != null) {\r\n if (params.data.TripStatusCdAndDFlag != null && params.data.TripStatusCdAndDFlag != undefined) {\r\n return params.data.TripStatusCdAndDFlag;\r\n }\r\n }\r\n }\r\n\r\n return '-NA-';\r\n },\r\n\r\n OEMTypeValueFormatterFieldName: (params) => {\r\n\r\n var oemType = \"-NA-\";\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != undefined) {\r\n switch (params.data.ReeferOEMTypeCd.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"D\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"S\":\r\n oemType = \"SC\";\r\n break;\r\n case \"T\":\r\n oemType = \"TK\";\r\n break;\r\n case \"G\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TA\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"U\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"K\":\r\n oemType = \"KLINGE\";\r\n break;\r\n case \"CARRIER\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"DAIKIN\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"STARCOOL\":\r\n oemType = \"SC\";\r\n break;\r\n case \"THERMOKING\":\r\n oemType = \"TK\";\r\n break;\r\n case \"GENMARK\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TAYLOR\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"UNKNOWN\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"OEM_KLINGE\":\r\n oemType = \"KLINGE\";\r\n break;\r\n default:\r\n oemType = '-NA-'\r\n }\r\n }\r\n else\r\n oemType = '-NA-';\r\n }\r\n else\r\n oemType = '-NA-';\r\n }\r\n else\r\n oemType = '-NA-';\r\n\r\n return oemType;\r\n },\r\n\r\n oemTypeFormatterForFilter: (params) => {\r\n\r\n var oemType = '';\r\n if (params != null && params != undefined && params.data != null && params.data != undefined && params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != undefined) {\r\n switch (params.data.ReeferOEMTypeCd.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"D\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"S\":\r\n oemType = \"SC\";\r\n break;\r\n case \"T\":\r\n oemType = \"TK\";\r\n break;\r\n case \"G\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TA\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"U\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"K\":\r\n oemType = \"KLINGE\";\r\n break;\r\n case \"CARRIER\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"DAIKIN\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"STARCOOL\":\r\n oemType = \"SC\";\r\n break;\r\n case \"THERMOKING\":\r\n oemType = \"TK\";\r\n break;\r\n case \"GENMARK\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TAYLOR\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"UNKNOWN\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"KLINGE\":\r\n oemType = \"KLINGE\";\r\n break;\r\n default:\r\n oemType = '-NA-';\r\n }\r\n }\r\n else oemType = \"-NA-\";\r\n return oemType;\r\n },\r\n\r\n TemperatureFormatterForBooking: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n var BookedTemperature = null;\r\n var TempUnit = null;\r\n if (params.value != null && params.value != '-NA-') { \r\n var strlstValues = params.value.split('@');\r\n BookedTemperature = strlstValues[0];\r\n TempUnit = strlstValues[1];\r\n if (TempUnit.toUpperCase() == \"N\")\r\n return \"Non-Running\";\r\n else if (TempUnit.toUpperCase() != tempUnitCd.toUpperCase()) {\r\n if (\"F\" == tempUnitCd.toUpperCase()) {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = ((tempValue * 9) / 5) + 32;\r\n var param = parseFloat(tempValue.toString()); \r\n //26515 - commented and added\r\n //return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(parseInt(tempRoundingValue)) : param.toFixed(1);\r\n }\r\n else {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = (tempValue - 32) * 5 / 9;\r\n var param = parseFloat(tempValue.toString()); \r\n //26515 - commented and added\r\n //return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(parseInt(tempRoundingValue)) : param.toFixed(1);\r\n }\r\n }\r\n else {\r\n //26515 - commented and added\r\n //return parseFloat(parseFloat(BookedTemperature.toString()).toFixed(parseInt(tempRoundingValue)));\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n var param = parseFloat(tempValue.toString());\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(1) : \"\"; \r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n TemperatureSortingFieldName: (params, FieldName) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != undefined && params.data != null) {\r\n\r\n switch (FieldName) {\r\n case 'RunningMode':\r\n return params.data.RunningMode != null && params.data.RunningMode != \"\" && params.data.RunningMode != \"null\" ? params.data.RunningMode : '-NA-';\r\n case 'SetPoint':\r\n return params.data.SetPoint != null && params.data.SetPoint != \"null\" ? params.data.SetPoint : '-NA-';\r\n case 'SupplyTemp1':\r\n return params.data.SupplyTemp1 != null && params.data.SupplyTemp1 != \"null\" ? params.data.SupplyTemp1 : '-NA-';\r\n case 'SensorSupplyTemp1':\r\n return params.data.SensorSupplyTemp1 != null && params.data.SensorSupplyTemp1 != \"null\" ? params.data.SensorSupplyTemp1 : '-NA-';\r\n case 'SupplyTemp2':\r\n return params.data.SupplyTemp2 != null && params.data.SupplyTemp2 != \"null\" ? params.data.SupplyTemp2 : '-NA-';\r\n case 'ReturnTemp1':\r\n return params.data.ReturnTemp1 != null && params.data.ReturnTemp1 != \"null\" ? params.data.ReturnTemp1 : '-NA-';\r\n case 'SensorReturnTemp1':\r\n return params.data.SensorReturnTemp1 != null && params.data.SensorReturnTemp1 != \"null\" ? params.data.SensorReturnTemp1 : '-NA-';\r\n case 'ReturnTemp2':\r\n return params.data.ReturnTemp2 != null && params.data.ReturnTemp2 != \"null\" ? params.data.ReturnTemp2 : '-NA-';\r\n case 'AmbientTemp':\r\n return params.data.AmbientTemp != null && params.data.AmbientTemp != \"null\" ? params.data.AmbientTemp : '-NA-';\r\n case 'Humidity':\r\n return params.data.Humidity != null && params.data.Humidity != \"null\" ? params.data.Humidity : '-NA-';\r\n case 'EvaporatorTemp':\r\n return params.data.EvaporatorTemp != null && params.data.EvaporatorTemp != \"null\" ? params.data.EvaporatorTemp : '-NA-';\r\n case 'CompressorSuctionTemp':\r\n return params.data.CompressorSuctionTemp != null && params.data.CompressorSuctionTemp != \"null\" ? params.data.CompressorSuctionTemp : '-NA-';\r\n\r\n case 'CompressorDischargeTemp':\r\n return params.data.CompressorDischargeTemp != null && params.data.CompressorDischargeTemp != \"null\" ? params.data.CompressorDischargeTemp : '-NA-';\r\n case 'CompressorDischargeTemp2':\r\n return params.data.CompressorDischargeTemp2 != null && params.data.CompressorDischargeTemp2 != \"null\" ? params.data.CompressorDischargeTemp2 : '-NA-';\r\n case 'EvaporatorInletSensor':\r\n return params.data.EvaporatorInletSensor != null && params.data.EvaporatorInletSensor != \"null\" ? params.data.EvaporatorInletSensor : '-NA-';\r\n case 'EvaporatorOutletSensor':\r\n return params.data.EvaporatorOutletSensor != null && params.data.EvaporatorOutletSensor != \"null\" ? params.data.EvaporatorOutletSensor : '-NA-';\r\n case 'EconomizerInTemp':\r\n return params.data.EconomizerInTemp != null && params.data.EconomizerInTemp != \"null\" ? params.data.EconomizerInTemp : '-NA-';\r\n case 'EconomizerOutTemp':\r\n return params.data.EconomizerOutTemp != null && params.data.EconomizerOutTemp != \"null\" ? params.data.EconomizerOutTemp : '-NA-';\r\n case 'CondenserTemperature':\r\n return params.data.CondenserTemperature != null && params.data.CondenserTemperature != \"null\" ? params.data.CondenserTemperature : '-NA-';\r\n case 'USDA3Temp':\r\n return params.data.USDA3Temp != null && params.data.USDA3Temp != \"null\" ? params.data.USDA3Temp : '-NA-';\r\n case 'USDA2Temp':\r\n return params.data.USDA2Temp != null && params.data.USDA2Temp != \"null\" ? params.data.USDA2Temp : '-NA-';\r\n case 'USDA1Temp':\r\n return params.data.USDA1Temp != null && params.data.USDA1Temp != \"null\" ? params.data.USDA1Temp : '-NA-';\r\n case 'Cargo4Temp':\r\n return params.data.Cargo4Temp != null && params.data.Cargo4Temp != \"null\" ? params.data.Cargo4Temp : '-NA-';\r\n case 'DeviceTemp':\r\n return params.data.DeviceTemp != null && params.data.DeviceTemp != \"null\" ? params.data.DeviceTemp : '-NA-';\r\n case 'TemperatureUnit':\r\n return params.data.TemperatureUnit != null && params.data.TemperatureUnit != \"null\" ? params.data.TemperatureUnit : '-NA-';\r\n case 'CTTempLimit':\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd.toUpperCase().trim() == \"D\") {\r\n if (params.data.ACTMode != null && params.data.ACTMode.toString().toUpperCase().trim() == \"TRUE\")\r\n return params.data.CTTempLimit != null && params.data.CTTempLimit != \"\" && params.data.CTTempLimit != \"null\" ? params.data.CTTempLimit : '-NA-';\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return params.data.CTTempLimit != null && params.data.CTTempLimit != \"\" && params.data.CTTempLimit != \"null\" ? params.data.CTTempLimit : '-NA-';\r\n case 'CTPostSetPoint':\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd.toUpperCase().trim() == \"D\") {\r\n if (params.data.ACTMode != null && params.data.ACTMode.toString().toUpperCase().trim() == \"TRUE\")\r\n return params.data.CTPostSetPoint != null && params.data.CTPostSetPoint != \"null\" ? params.data.CTPostSetPoint : '-NA-';//RCNG-1818\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return params.data.CTPostSetPoint != null && params.data.CTPostSetPoint != \"null\" ? params.data.CTPostSetPoint : '-NA-';//RCNG-1818\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n //if (param != null && param != undefined && param != \"null\") {\r\n // return param;\r\n //}\r\n //else\r\n // return '-NA-';\r\n }, \r\n\r\n TemperatureValueFormatter: (params) => { \r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var dd = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n if ((params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"ST9100\") && params.colDef.field ==\"DeviceTemp\") { \r\n //if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n /* return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)) :\r\n param.toFixed(1);*/\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(parseInt(tempRoundingValue)) : param.toFixed(1);\r\n }\r\n else\r\n /* return tempRoundingValue > 0 ? tempVal.toFixed(parseInt(tempRoundingValue)):\r\n param.toFixed(1);*/\r\n return tempRoundingValue > 0 ? tempVal.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n tempVal.toFixed(parseInt(tempRoundingValue)) : tempVal.toFixed(1);\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n\r\n sensorDataValueFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.value != \"-NA-\" && params.value != null && params.value != undefined) {\r\n if (!isNaN(params.value)) { // WI 26545\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var param = parseFloat(params.value.toString());\r\n // WI 26666 return param.toFixed(1).toString();\r\n //return params.value.toFixed(1).toString();\r\n return param.toFixed(1).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) : param.toFixed(1).toString();\r\n }\r\n }\r\n else\r\n return params.value; \r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n \r\n LineFrequencySorting: (params)=> {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.LineFrequency != null && params.data.LineFrequency != undefined && params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd !=undefined) {\r\n\t\t\t\t\tif(params.data.ReeferOEMTypeCd.toString().toUpperCase().trim() == \"D\" && (params.data.ControllerTypeCd == 27 || params.data.ControllerTypeCd == 28 || params.data.ControllerTypeCd == 32)) {\r\n if(params.data.LineFrequencyQualifier != null && (params.data.LineFrequencyQualifier == 0 || params.data.LineFrequencyQualifier == 1)) {\r\n if (params.data.LineFrequency.toString().trim() == \"-999\") \r\n return \"Unknown\";\r\n return parseFloat(params.data.LineFrequency).toFixed(1).toString();\r\n }\r\n else if (params.data.LineFrequencyQualifier != null && params.data.LineFrequencyQualifier == 8)\r\n {\r\n //var value = params.value;\r\n //if(value == 19)\r\n return \"High\";\r\n }\r\n else if (params.data.LineFrequencyQualifier != null && params.data.LineFrequencyQualifier == 9)\r\n {\r\n //var value = params.value;\r\n //if(value == 35)\r\n return \"Low\";\r\n } \r\n else \r\n return \"Unknown\";\r\n } \r\n else\r\n {\r\n if (params.data.LineFrequency != null && params.data.LineFrequency != undefined) {\r\n if (!isNaN(params.data.LineFrequency)) { // WI 26545\r\n if (params.data.LineFrequency.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var param = parseFloat(params.data.LineFrequency.toString());\r\n // WI 26666 return param.toFixed(1).toString();\r\n //return params.value.toFixed(1).toString();\r\n return param.toFixed(1).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) : param.toFixed(1).toString();\r\n }\r\n }\r\n else\r\n return params.data.LineFrequency;\r\n }\r\n }\r\n }\r\n else\r\n {\r\n if (params.data.LineFrequency != null && params.data.LineFrequency != undefined) {\r\n if (!isNaN(params.data.LineFrequency)) { // WI 26545\r\n if (params.data.LineFrequency.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var param = parseFloat(params.data.LineFrequency.toString());\r\n // WI 26666 return param.toFixed(1).toString();\r\n //return params.value.toFixed(1).toString();\r\n return param.toFixed(1).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) : param.toFixed(1).toString();\r\n }\r\n }\r\n else\r\n return params.data.LineFrequency;\r\n }\r\n } \r\n \r\n } \r\n }\r\n return '-NA-';\r\n },\r\n\r\n lineFrequencyFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.value != \"-NA-\" && params.value != null && params.value != undefined) {\r\n if(params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != undefined) {\r\n if(params.data.ReeferOEMTypeCd.toString().toUpperCase().trim() == \"D\" && (params.data.ControllerTypeCd == 27 || params.data.ControllerTypeCd == 28 || params.data.ControllerTypeCd == 32)) {\r\n if(params.data.LineFrequencyQualifier != null && (params.data.LineFrequencyQualifier == 0 || params.data.LineFrequencyQualifier == 1)) {\r\n if (params.value.toString().trim() == \"-999\") \r\n return \"Unknown\";\r\n return parseFloat(params.value).toFixed(1).toString();\r\n }\r\n else if (params.data.LineFrequencyQualifier != null && params.data.LineFrequencyQualifier == 8)\r\n {\r\n //var value = params.value;\r\n //if(value == 19)\r\n return \"High\";\r\n }\r\n else if (params.data.LineFrequencyQualifier != null && params.data.LineFrequencyQualifier == 9)\r\n {\r\n //var value = params.value;\r\n //if(value == 35)\r\n return \"Low\";\r\n } \r\n else \r\n return \"Unknown\";\r\n } \r\n else\r\n {\r\n if (!isNaN(params.value)) { // WI 26545\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var param = parseFloat(params.value.toString());\r\n // WI 26666 return param.toFixed(1).toString();\r\n //return params.value.toFixed(1).toString();\r\n return param.toFixed(1).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) : param.toFixed(1).toString();\r\n }\r\n }\r\n else\r\n return params.value;\r\n }\r\n }\r\n else\r\n {\r\n if (!isNaN(params.value)) { // WI 26545\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var param = parseFloat(params.value.toString());\r\n // WI 26666 return param.toFixed(1).toString();\r\n //return params.value.toFixed(1).toString();\r\n return param.toFixed(1).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) : param.toFixed(1).toString();\r\n }\r\n }\r\n else\r\n return params.value;\r\n }\r\n }\r\n //else\r\n return '-NA-';\r\n }\r\n //else\r\n return '-NA-';\r\n },\r\n\r\n sensorDataValueFormatterTwoDecimal: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.value != \"-NA-\" && params.value != null && params.value != undefined) {\r\n if (!isNaN(params.value)) { //WI 26802\r\n if (params.value.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n\r\n var param = parseFloat(params.value.toString());\r\n // WI 26666 return param.toFixed(2).toString();\r\n //return params.value.toFixed(2).toString();\r\n return param.toFixed(1).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) : param.toFixed(1).toString();\r\n }\r\n }\r\n else\r\n return params.value; \r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n sensorDataSortingFieldName: (params, FieldName) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n switch (FieldName) {\r\n case 'CO2Setpoint':\r\n return params.data.CO2Setpoint != null && params.data.CO2Setpoint != \"null\" ? params.data.CO2Setpoint : '-NA-';\r\n case 'HumiditySetpoint':\r\n return params.data.HumiditySetpoint != null && params.data.HumiditySetpoint != \"null\" ? params.data.HumiditySetpoint : '-NA-';\r\n case 'CO2Reading':\r\n return params.data.CO2Reading != null && params.data.CO2Reading != \"null\" ? params.data.CO2Reading : '-NA-';\r\n case 'O2Setpoint':\r\n return params.data.O2Setpoint != null && params.data.O2Setpoint != \"null\" ? params.data.O2Setpoint : '-NA-';\r\n case 'O2Reading':\r\n return params.data.O2Reading != null && params.data.O2Reading != \"null\" ? params.data.O2Reading : '-NA-';\r\n case 'CompositeSuctionPressure':\r\n return params.data.CompositeSuctionPressure != null && params.data.CompositeSuctionPressure != \"null\" ? params.data.CompositeSuctionPressure : '-NA-';\r\n case 'DischargePressure':\r\n return params.data.DischargePressure != null && params.data.DischargePressure != \"null\" ? params.data.DischargePressure : '-NA-';\r\n case 'CondenserPressure':\r\n return params.data.CondenserPressure != null && params.data.CondenserPressure != \"null\" ? params.data.CondenserPressure : '-NA-';\r\n case 'CondenserFanOutPut':\r\n return params.data.CondenserFanOutPut != null && params.data.CondenserFanOutPut != \"null\" ? params.data.CondenserFanOutPut : '-NA-';\r\n case 'LowSpeedEvaporatorFanOutPut':\r\n return params.data.LowSpeedEvaporatorFanOutPut != null && params.data.LowSpeedEvaporatorFanOutPut != \"null\" ? params.data.LowSpeedEvaporatorFanOutPut : '-NA-';\r\n case 'HighSpeedEvaporatorFanOutPut':\r\n return params.data.HighSpeedEvaporatorFanOutPut != null && params.data.HighSpeedEvaporatorFanOutPut != \"null\" ? params.data.HighSpeedEvaporatorFanOutPut : '-NA-';\r\n case 'HeaterOnTime':\r\n return params.data.HeaterOnTime != null && params.data.HeaterOnTime != \"null\" ? params.data.HeaterOnTime : '-NA-';\r\n case 'HotGasValveOpening':\r\n return params.data.HotGasValveOpening != null && params.data.HotGasValveOpening != \"null\" ? params.data.HotGasValveOpening : '-NA-';\r\n case 'EconomizerValveOpening':\r\n return params.data.EconomizerValveOpening != null && params.data.EconomizerValveOpening != \"null\" ? params.data.EconomizerValveOpening : '-NA-';\r\n case 'CompressorFrequency':\r\n return params.data.CompressorFrequency != null && params.data.CompressorFrequency != \"null\" ? params.data.CompressorFrequency : '-NA-';\r\n case 'VentPositionSensorCMH':\r\n return params.data.VentPositionSensorCMH != null && params.data.VentPositionSensorCMH != \"null\" ? params.data.VentPositionSensorCMH : '-NA-';\r\n case 'TotalCurrentDraw':\r\n return params.data.TotalCurrentDraw != null && params.data.TotalCurrentDraw != \"null\" ? params.data.TotalCurrentDraw : '-NA-';\r\n case 'LineVoltage1':\r\n return params.data.LineVoltage1 != null && params.data.LineVoltage1 != \"null\" ? params.data.LineVoltage1 : '-NA-';\r\n case 'LineVoltage2':\r\n return params.data.LineVoltage2 != null && params.data.LineVoltage2 != \"null\" ? params.data.LineVoltage2 : '-NA-';\r\n case 'LineVoltage3':\r\n return params.data.LineVoltage3 != null && params.data.LineVoltage3 != \"null\" ? params.data.LineVoltage3 : '-NA-';\r\n case 'CompressorCurrent':\r\n return params.data.CompressorCurrent != null && params.data.CompressorCurrent != \"null\" ? params.data.CompressorCurrent : '-NA-';\r\n case 'VFD':\r\n return params.data.VFD != null && params.data.VFD != \"null\" ? params.data.VFD : '-NA-';\r\n case 'LineFrequency':\r\n return params.data.LineFrequency != null && params.data.LineFrequency != \"null\" ? params.data.LineFrequency : '-NA-';\r\n case 'ReeferACPowerLevel':\r\n return params.data.ReeferACPowerLevel != null && params.data.ReeferACPowerLevel != \"null\" ? params.data.ReeferACPowerLevel : '-NA-';\r\n /* RCNG-169 case 'TripWiseExpiration':\r\n return params.data.TripWiseExpiration != null && params.data.TripWiseExpiration != \"null\" ? params.data.TripWiseExpiration : '-NA-';*/\r\n\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n //if (param != null && param != undefined && param != \"null\") {\r\n // return param;\r\n //}\r\n //else\r\n // return '-NA-';\r\n },\r\n\r\n HumiditySettingFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.Humidity != null && params.data.Humidity !== '' && params.data.Humidity != '-NA-') {\r\n \r\n if (params.data.Humidity.toString().trim() == \"0\")// || params.data.HumiditySetpointStatus == \"O\")\r\n return \"Off\";\r\n else if (params.data.Humidity.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else if (params.data.Humidity > 0 && params.data.Humidity <= 100)//RCNG-2963\r\n return params.data.Humidity.toFixed(1).toString();\r\n else if (params.data.Humidity > 100 && params.data.HumiditySetpointStatus == \"O\")\r\n return \"Off\";\r\n else\r\n return \"-NA-\"; \r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n\r\n HumiditySetpointFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n if(params.data.HumiditySetpointStatus != null && params.data.HumiditySetpointStatus != '') {\r\n if(params.data.HumiditySetpointStatus.toUpperCase().trim() == \"OFF\" || params.data.HumiditySetpointStatus == \"O\")//RCNG-4689\r\n return \"Off\";\r\n }\r\n if (params.value != \"-NA-\" && params.value != null && params.value != undefined) {\r\n if (params.value.toString().trim() == \"0\")\r\n return \"Off\";\r\n //else if (params.value.toString().trim() == \"-999\") \r\n else if (params.value > 0 && params.value <= 100)//RCNG-2963\r\n return params.value.toFixed(1).toString();\r\n else\r\n return \"OOR\";\r\n //else if (params.value > 100 || params.value.toString().trim() == \"-999\") {\r\n // return \"OOR\";\r\n //}\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n sensorDataPCondFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != '') {\r\n if (params.data.ReeferOEMTypeCd.trim() == 'C')\r\n return '-NA-';\r\n else {\r\n if (params.data.CondenserPressure != null && params.data.CondenserPressure != '-NA-') {\r\n if (params.data.CondenserPressure.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.data.CondenserPressure.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n\r\n sensorDataOpenExpFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != '') {\r\n if (params.data.ReeferOEMTypeCd.trim() == 'C')\r\n return '-NA-';\r\n else {\r\n if (params.data.EvaporatorExpansionValveOpening != null && params.data.EvaporatorExpansionValveOpening != '-NA-') {\r\n if (params.data.EvaporatorExpansionValveOpening.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.data.EvaporatorExpansionValveOpening.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n\r\n sensorDataOpenSucFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != '') {\r\n if (params.data.ReeferOEMTypeCd.trim() == 'C') {\r\n return '-NA-';\r\n }\r\n else {\r\n if (params.data.SuctionModulationValveOpening != null && params.data.SuctionModulationValveOpening != '' && params.data.SuctionModulationValveOpening != '-NA-') {\r\n if (params.data.SuctionModulationValveOpening.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params.data.SuctionModulationValveOpening.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n\r\n ControlledAtmosphereMode: (params) => {\r\n if (params.data != null && params.data != '-NA-' && params.data != undefined && params.data != '') {\r\n if (params.data.ControlledAtmosphereMode != null && params.data.ControlledAtmosphereMode != undefined && params.data.ControlledAtmosphereMode != '') {\r\n if (params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd != '') {\r\n if (params.data.ReeferOEMTypeCd.trim() == 'S') {\r\n\r\n if (params.data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"ON\")\r\n return \"CA On\";\r\n else if (params.data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"OFF\")\r\n return \"Off\";\r\n else if (params.data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"AV\")\r\n return \"AV On\";\r\n else if (params.data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"AVPLUS\")\r\n return \"AV+ On\";\r\n else\r\n return params.data.ControlledAtmosphereMode.toString();\r\n }\r\n else if (params.data.ControlledAtmosphereMode.toString().toUpperCase().trim() == \"UNITOFF\")\r\n return \"Unit Off\";\r\n else\r\n return params.data.ControlledAtmosphereMode.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n\r\n ThreePhaseCurrentSortingFieldName: (params, FieldName) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n\r\n if (FieldName === \"ThreePhaseCurrent\") {\r\n return params.data.ThreePhaseCurrent;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n\r\n },\r\n\r\n Current3PhaseFormatter: (params) => {\r\n var currentValue1 = \"\";\r\n var currentValue2 = \"\";\r\n var currentValue3 = \"\";\r\n if (params.value != null && params.value != \"-NA-\") {\r\n var phases = params.value.split(\",\");\r\n if (phases[0].toString().trim() == \"-999\")\r\n currentValue1 = \"OOR\";\r\n else {\r\n var param = parseFloat(phases[0].toString());\r\n currentValue1 = param.toFixed(0).toString().trim() == \"NaN\" ? \"\" : param.toFixed(1).toString().trim();//WI-26512-in else toFixed number was wrong\r\n //currentValue1 = phases[0].toString().trim();\r\n }\r\n \r\n if (phases[1].toString().trim() == \"-999\")\r\n currentValue2 = \"OOR\";\r\n else {\r\n var param = parseFloat(phases[1].toString());\r\n currentValue2 = param.toFixed(1).toString().trim() == \"NaN\" ? \"\" : param.toFixed(1).toString().trim();\r\n //currentValue2 = phases[1].toString().trim();\r\n }\r\n \r\n if (phases[2].toString().trim() == \"-999\")\r\n currentValue3 = \"OOR\";\r\n else {\r\n var param = parseFloat(phases[2].toString());\r\n currentValue3 = param.toFixed(2).toString().trim() == \"NaN\" ? \"\" : param.toFixed(1).toString().trim();//WI-26512-in else toFixed number was wrong\r\n //currentValue3 = phases[2].toString().trim();\r\n }\r\n \r\n\r\n return currentValue1 + \", \" + currentValue2 + \", \" + currentValue3;\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n\r\n AlarmDescriptionFormatter: (params, alarmsList) => {\r\n var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.AlarmsList != null && params.data.AlarmsList != undefined && params.data.AlarmsList != '') {\r\n var lstAlarms = params.data.AlarmsList.split(',');\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return element;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n },\r\n\r\n AlarmDescriptionSorting: (params, alarmsList) => {\r\n var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.AlarmsList != null && params.data.AlarmsList != undefined && params.data.AlarmsList != '' && params.data.AlarmsList != \"null\") {\r\n return params.data.AlarmsList;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }, \r\n \r\n CCAlarmAliasDescriptionSorting: (params, alarmsList) => {\r\n //var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CCAlarms != null && params.data.CCAlarms != undefined && params.data.CCAlarms != '' && params.data.CCAlarms != \"null\") {\r\n //if (params.data.CCAlarms.toString().endsWith(\",\")) //Added if condition code for RCNG-839\r\n var lstalarmcd: any = params.data.CCAlarms.split(',');\r\n var alarmalias: any = \"\";\r\n if (lstalarmcd.length > 0) {\r\n $.each(lstalarmcd, function (index, almCd) {\r\n var alarm = alarmsList.filter(e => e.AlarmCd === almCd);\r\n //if (alarm[0].AlarmAlias != \"\" && alarm[0].AlarmAlias != null) {\r\n if (alarm.length > 0) {//RCNG-2051\r\n alarmalias += alarm[0].AlarmAlias + \",\";\r\n }\r\n });\r\n\r\n return alarmalias.slice(0, -1);\r\n }\r\n\r\n var alarmcd = params.data.CCAlarms;\r\n var alarm = alarmsList.filter(e => e.AlarmCd === alarmcd);\r\n //if (alarm[0].AlarmAlias != \"\" && alarm[0].AlarmAlias != null) {\r\n if (alarm.length > 0) {//RCNG-2051\r\n return alarm[0].AlarmAlias;\r\n }\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n },\r\n\r\n CCAlarmDescriptionSorting: (params, alarmsList) => {\r\n //var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CCAlarms != null && params.data.CCAlarms != undefined && params.data.CCAlarms != '' && params.data.CCAlarms != \"null\") {\r\n if (params.data.CCAlarms.toString().endsWith(\",\")) //Added if condition code for RCNG-839\r\n return params.data.CCAlarms.slice(0, -1);\r\n else\r\n return params.data.CCAlarms;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }, \r\n\r\n OperatingModeFormatter: (params) => {\r\n var valueString = '-NA-';\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.RunningMode != null && params.data.RunningMode != undefined && params.data.RunningMode != '') {\r\n valueString = params.data.RunningMode.replace('/^\\s+/g', '');\r\n\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n return valueString;\r\n }\r\n }\r\n return '-NA-';\r\n\r\n },\r\n //Start RCNG-1818\r\n CTDurationFormatter: (params) => {\r\n if (params.value != null && params.value != 0) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CTRemainingTimeFormatter: (params) => {\r\n if (params.value != null && params.value != 0) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CTTimeFormatter: (params) => {\r\n if (params.value != null && params.value != 0) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n AirPumpRunHoursFormatter: (params) => {\r\n if (params.value != null) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CARunHoursFormatter: (params) => {\r\n if (params.value != null) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n PowerMeterFormatter: (params) => {\r\n if (params.value != null) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CASWVerFormatter: (params) => {\r\n if (params.value != null && params.value != 0) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n CompressorRunHoursFormatter: (params) => {\r\n if (params.value != null) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n //end RCNG-1818\r\n TripWiseExpirationFormatter: (params) => {\r\n if (params.value != null && params.value != 0) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DimiRemainTermFormatter: (params) => {\r\n if (params.value != null && params.value != undefined) {\r\n if (params.value.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params.value;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n preTripFormatter: (params) => {\r\n if (params.value != null && params.value != undefined) {\r\n if (params.value.toString().trim() != \"-NA-\" && params.value.toString().trim() != \"\") {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert-PTI\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n if (params.value == 'Passed') {\r\n return '';\r\n }\r\n else if (params.value == 'Failed') {\r\n return ' ';\r\n }\r\n else if (params.value == 'Aborted') {\r\n return '';\r\n }\r\n else if (params.value == 'Running') {\r\n return ' ';\r\n }\r\n else if (params.value == 'Skipped') {\r\n return '';\r\n }\r\n else if (params.value == 'Unknown') {\r\n return ' ';\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n\r\n PTResultSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.PTResult != null && params.data.PTResult != undefined) {\r\n if (params.data.PTResult.toString().trim() != \"-NA-\" && params.data.PTResult.toString().trim() != \"\") {\r\n\r\n switch (params.data.PTResult.toString().trim()) {\r\n case 'Passed':\r\n case 'OK':\r\n return \"Passed\";\r\n case 'Failed':\r\n case 'NG':\r\n return \"Failed\";\r\n case 'Aborted':\r\n return \"Aborted\";\r\n case 'Running':\r\n return \"Running\";\r\n case 'Skipped':\r\n return \"Skipped\";\r\n case 'Unknown':\r\n return \"Unknown\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n\r\n },\r\n\r\n TripWiseStatusFormatter: (params, TripWiseStatusList) => {\r\n var TripWiseStatusDescription = '-NA-';\r\n var TripWiseStatusID = null;\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined) {\r\n TripWiseStatusID = params.data.TripWiseStatusID;\r\n\r\n if (TripWiseStatusID != null) {\r\n if (TripWiseStatusList != null && TripWiseStatusList != undefined && TripWiseStatusList.length > 0) {\r\n var TripWiseStatusId = lodashfilter(TripWiseStatusList, function (item) {\r\n return item.TripWiseStatusID === TripWiseStatusID;\r\n });\r\n if (TripWiseStatusId != null && TripWiseStatusId.length > 0) {\r\n TripWiseStatusDescription = TripWiseStatusId[0].Description;\r\n\r\n if (TripWiseStatusDescription == 'Off') {\r\n return '';\r\n }\r\n else if (TripWiseStatusDescription == 'Expired') {\r\n return ' ';\r\n }\r\n else if (TripWiseStatusDescription == 'Check') {\r\n return '';\r\n }\r\n else if (TripWiseStatusDescription == 'Passed') {\r\n return ' ';\r\n }\r\n else if (TripWiseStatusDescription == 'Running') {\r\n return '';\r\n }\r\n else if (TripWiseStatusDescription == 'Unknown') {\r\n return '';\r\n }\r\n }\r\n } \r\n }\r\n }\r\n return TripWiseStatusDescription;\r\n },\r\n TripWiseStatusSorting: (params, TripWiseStatusList) => {\r\n var TripWiseStatusDescription = '-NA-';\r\n var TripWiseStatusID = null;\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined && params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd.toUpperCase().trim() != \"D\") {\r\n TripWiseStatusID = params.data.TripWiseStatusID;\r\n\r\n if (TripWiseStatusID != null) {\r\n if (TripWiseStatusList != null && TripWiseStatusList != undefined && TripWiseStatusList.length > 0) {\r\n var TripWiseStatusId = lodashfilter(TripWiseStatusList, function (item) {\r\n return item.TripWiseStatusID === TripWiseStatusID;\r\n });\r\n if (TripWiseStatusId != null && TripWiseStatusId.length > 0) {\r\n TripWiseStatusDescription = TripWiseStatusId[0].Description;\r\n }\r\n } \r\n }\r\n }\r\n else {\r\n if (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined){\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n TripWiseStatusDescription = 'Off';\r\n }\r\n else if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"ON\") {\r\n\r\n if (params.data.DimiResultActuator == \"Passed\" && params.data.DimiResultAlarm == \"Passed\" &&\r\n params.data.DimiResultOOR == \"Passed\" && params.data.DimiResultTerm == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((params.data.DimiResultTerm == \"Failed\") &&\r\n (params.data.DimiResultActuator == \"Passed\" || params.data.DimiResultActuator == \"Unknown\") &&\r\n (params.data.DimiResultAlarm == \"Passed\" || params.data.DimiResultAlarm == \"Unknown\") &&\r\n (params.data.DimiResultOOR == \"Passed\" || params.data.DimiResultOOR == \"Unknown\")) {\r\n TripWiseStatusDescription = \"Expired\";\r\n }\r\n else if ((params.data.DimiResultActuator == \"Unknown\" || params.data.DimiResultAlarm == \"Unknown\"\r\n || params.data.DimiResultOOR == \"Unknown\" || params.data.DimiResultTerm == \"Unknown\") &&\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\" || params.data.DimiResultOOR == \"Failed\") {\r\n TripWiseStatusDescription = \"Check\";\r\n }\r\n }\r\n }\r\n }\r\n return TripWiseStatusDescription;\r\n },\r\n doorQuickFilterFormatter: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.value == 1)\r\n return \"Open\";\r\n else if (param.value == 2)\r\n return \"Closed\";\r\n else if (param.value == 3)\r\n return \"Sensor Error\" //RCNG-1106\r\n else if (param.value == 4)\r\n return \"No Sensor\"\r\n else if (param.value == 5)\r\n return \"-NA-\"\r\n else\r\n return \"-NA-\";\r\n }\r\n },\r\n doorFormatterFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.EnableDoorSensor != null && params.data.EnableDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\";\r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n if (params.data.RCDStateReportedHistoryID != null && params.data.RCDStateReportedHistoryID != undefined && params.data.RCDStateReportedHistoryID != '')\r\n return \"Sensor Error\"; //RCNG-1106, RCNG-1141\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DevicedoorFormatterFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.AssetType != null && params.data.AssetType.toString().toUpperCase().trim() == \"R\") {\r\n if (params.data.EnableDoorSensor != null && params.data.EnableDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n //if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"Open\";\r\n //else\r\n // return \"Closed\";\r\n switch (params.data.DoorOpen.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\"\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n if (params.data.RCDStateReportedHistoryID != null && params.data.RCDStateReportedHistoryID != undefined && params.data.RCDStateReportedHistoryID != '')\r\n return \"Sensor Error\"; //RCNG-1106, RCNG-1141\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else if (params.data.AssetType != null && params.data.AssetType.toString().toUpperCase().trim() == \"D\") {\r\n if (params.data.HasDoorSensor != null && params.data.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n //if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"Open\";\r\n //else\r\n // return \"Closed\";\r\n switch (params.data.DoorOpen.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\"\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DoorFormatterSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.EnableDoorSensor != null && params.data.EnableDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"1\";\r\n else\r\n return \"2\";\r\n }\r\n else\r\n if (params.data.RCDStateReportedHistoryID != null && params.data.RCDStateReportedHistoryID != undefined && params.data.RCDStateReportedHistoryID != '')\r\n return \"3\"; //RCNG-1106,RCNG-1141\r\n else\r\n return '5';\r\n }\r\n else\r\n return \"4\";\r\n }\r\n else\r\n return '5';\r\n },\r\n DeviceDoorFormatterSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.AssetType != null && params.data.AssetType.toString().toUpperCase().trim() == \"R\") {\r\n if (params.data.EnableDoorSensor != null && params.data.EnableDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n //if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"1\";\r\n //else\r\n // return \"2\";\r\n switch (params.data.DoorOpen.toString().toUpperCase().trim()) {\r\n case \"OPN\": return \"1\";\r\n case \"CLS\": return \"2\";\r\n }\r\n }\r\n else\r\n if (params.data.RCDStateReportedHistoryID != null && params.data.RCDStateReportedHistoryID != undefined && params.data.RCDStateReportedHistoryID != '')\r\n return \"3\"; //RCNG-1106, RCNG-1141\r\n else\r\n return \"6\";\r\n }\r\n else\r\n return \"4\";\r\n }\r\n else if (params.data.AssetType != null && params.data.AssetType.toString().toUpperCase().trim() == \"D\") {\r\n if (params.data.HasDoorSensor != null && params.data.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n //if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"1\";\r\n //else\r\n // return \"2\";\r\n switch (params.data.DoorOpen.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"1\";\r\n case \"CLS\":\r\n return \"2\";\r\n case \"DIS\":\r\n return \"3\"\r\n case \"UNP\":\r\n return \"4\";\r\n case \"UNK\":\r\n return \"5\";\r\n }\r\n }\r\n else\r\n return \"5\";\r\n }\r\n else\r\n return \"4\";\r\n }\r\n else\r\n return \"6\";\r\n }\r\n else\r\n return \"6\";\r\n },\r\n doorFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.EnableDoorSensor != null && params.data.EnableDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\";\r\n else\r\n return \"Closed\";\r\n }\r\n else {\r\n if (params.data.RCDStateReportedHistoryID != null && params.data.RCDStateReportedHistoryID != undefined && params.data.RCDStateReportedHistoryID != '')\r\n return \"Sensor Error\"; //RCNG-1106,RCNG-1141\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n DevicedoorFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.AssetType != null && params.data.AssetType.toString().toUpperCase().trim() == \"R\") {\r\n if (params.data.EnableDoorSensor != null && params.data.EnableDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n //if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"Open\";\r\n //else\r\n // return \"Closed\";\r\n switch (params.data.DoorOpen.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\"\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n if (params.data.RCDStateReportedHistoryID != null && params.data.RCDStateReportedHistoryID != undefined && params.data.RCDStateReportedHistoryID != '')\r\n return \"Sensor Error\"; //RCNG-1106, RCNG-1141\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else if (params.data.AssetType != null && params.data.AssetType.toString().toUpperCase().trim() == \"D\") {\r\n if (params.data.HasDoorSensor != null && params.data.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.DoorOpen != null) {\r\n //if (params.data.DoorOpen.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"Open\";\r\n //else\r\n // return \"Closed\";\r\n switch (params.data.DoorOpen.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\"\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n //RCNG-1106,RCNG-1141\r\n DoorFormatterGrouping: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"Open\";\r\n else if (param == 2)\r\n return \"Closed\";\r\n else if (param == 3)\r\n return \"Sensor Error\"\r\n else if (param == 4)\r\n return \"No Sensor\"\r\n else if (param == 5)\r\n return \"*No Door\"\r\n }\r\n },\r\n DoorFormatterExcel: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return \"Open\";\r\n else if (param == 2)\r\n return \"Closed\";\r\n else if (param == 3)\r\n return \"Sensor Error\"\r\n else if (param == 4)\r\n return \"No Sensor\"\r\n else if (param == 5)\r\n return \"-NA-\"\r\n }\r\n },\r\n\r\n everFreshFormatter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.EverFRESH == true) {\r\n return 'On';\r\n }\r\n else if (params.data.EverFRESH == false)\r\n return 'Off';\r\n else\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n },\r\n everFreshQuickFilterFormatter: (param) => {\r\n if (param != null && param != undefined) {\r\n if (param.value == 1)\r\n return \"On\";\r\n else if (param.value == 2)\r\n return \"Off\";\r\n else\r\n return \"-NA-\";\r\n }\r\n },\r\n everFreshFormatterSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.EverFRESH != null) {\r\n if (params.data.EverFRESH == true)\r\n return '1';\r\n else\r\n return '2';\r\n }\r\n else\r\n return '3';\r\n }\r\n else\r\n return '3';\r\n },\r\n everFreshFormatterFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.EverFRESH != null) {\r\n if (params.data.EverFRESH == true)\r\n return \"On\";\r\n else\r\n return \"Off\";\r\n\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n}\r\n\r\nexport default reeferFormatters;","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControl } from './../sharedcomponents/EmailControl';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport Workbook from 'react-excel-workbook';\r\nimport $ from 'jquery';\r\nvar Excel = Exceljs.default;\r\n\r\nexport interface ToolBarState { \r\n exportFields: ExportFields; \r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\nconst emptyExportFields: ExportFields = { ExportData: '' };\r\n\r\nexport class GridToolBarGensetPopups extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n exportFields: emptyExportFields,\r\n excelData: [],\r\n headerData: [],\r\n isDownload: false,\r\n excelGridData: this.props.gridData,\r\n formName: this.props.formName,\r\n fileTitle: this.props.formName, sheetInfo: ''\r\n };\r\n\r\n self = this;\r\n } \r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n } \r\n \r\n \r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (self.props.gridData != undefined && self.props.gridData != null && self.props.gridData .length > 0) {\r\n arrData = typeof self.props.gridData != 'object' ? JSON.parse(self.props.gridData) : self.props.gridData;\r\n var r = self.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n $(\"#globalLoader\").show();\r\n if (self.props.parentchild == 'P') {\r\n uri = Excel.InitializeExportParentToXLSX(arrData, r, this.props.formName);\r\n self.state.exportFields.ExportData = JSON.stringify(uri); \r\n } else {\r\n uri = Excel.InitializeExportChildToXLSX(arrData, r, this.props.formName);\r\n self.state.exportFields.ExportData = JSON.stringify(uri); \r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(self.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closepopupModel() {\r\n $('#PopupEmailTo').hide();\r\n }\r\n\r\n EmailTo() {\r\n $('#PopupEmailTo').show();\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadPopUpExcel').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}","// @ts-nocheck\r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport GensetStatus from '../routecomponents/GensetStatus';\r\nimport { GensetStatusGrid } from '../childcomponents/GensetStatusGrid';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { GensetCellRender } from '../../actions/GensetCellRender';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBarGensetPopups } from '../sharedcomponents/GridToolBarGensetPopups';\r\nimport GensetFormatters from '../../actions/GensetFormatter';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport deletepng from '../../images/delete.png';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface GensetCommandsGridState {\r\n rowData: server.GensetStatusUI[];\r\n columnDefs: any[];\r\n Filters: GensetForwardCommandParams; \r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any; \r\n GridToolBarHtml: any;\r\n}\r\n\r\nvar colDefs;\r\nvar self;\r\n\r\n\r\nexport class GensetCommandsGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new GensetForwardCommandParams();\r\n var overlayTemplate = 'Loading...';\r\n this.state = {\r\n rowData: [], columnDefs: [], Filters: filterSet, \r\n overlayLoadingTemplate: overlayTemplate, pageSize: 25, gridApiParams: [],\r\n GridToolBarHtml: ''\r\n };\r\n\r\n self = this;\r\n }\r\n\r\n static submitCommands(commandName, paramValue, refreshGrid) {\r\n if (self.state.rowData.length > 0) {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedGensets = self.state.rowData;\r\n self.state.Filters.TempValue = paramValue;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetPostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n $('#globalLoader').hide();\r\n return;\r\n }\r\n }\r\n\r\n if ($('#confirmPopUpModel') != undefined) {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n }\r\n \r\n $(\"#contextMenuModel .btn-close\").click(); \r\n\r\n if (refreshGrid == \"home\")\r\n GensetStatusGrid.refreshDashboardGrid();\r\n else\r\n GensetStatus.refreshGensetStatusGrid();\r\n });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n \r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n colDefs = this.createColumnDefs(); \r\n var gensetData = nextprops.selectedGensets;\r\n if (gensetData != undefined && gensetData != null) {\r\n this.setState({ rowData: gensetData }, () => this.renderGridToolBar());\r\n } \r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n componentDidMount() {\r\n colDefs = this.createColumnDefs(); \r\n \r\n \r\n \r\n \r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n \r\n refreshGrid = () => {\r\n \r\n var selectedGensets = \"\";\r\n if (this.state.rowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.rowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.AssetNumber != null) {\r\n selectedGensets = selectedGensets == \"\" ? selectedValue.AssetNumber : selectedGensets + \",\" + selectedValue.AssetNumber;\r\n }\r\n });\r\n var gensetSearchFilters: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedReefer: selectedGensets, SelectedGeofence: '', SelectedInterval: '', SelectedGeofenceInside: '', SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: ''//WI-26881\r\n }; \r\n \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetStatusDataSP', { method: 'POST', body: JSON.stringify(gensetSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n }, () => {\r\n this.renderGridToolBar(); \r\n $('#globalLoader').hide(); \r\n });\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n \r\n }; \r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"AssetNumber\", width: 85, cellRenderer: GensetCellRender.removeIndicator }, \r\n { headerName: \"State\", field: \"IsPending\", width: 85, cellRenderer: GensetCellRender.stringTypeFormatter }, \r\n //{ headerName: \"CC\", field: \"CCSeverityLevelGenset\", width: 65, cellRenderer: Formatters.stringTypeFormatter }, \r\n { headerName: \"SW\", field: \"IgnitionOn\", width: 65, cellRenderer: GensetCellRender.gensetSwitchFormatterImg },\r\n { headerName: \"ENG\", field: \"GensetRunning\", width: 65, cellRenderer: GensetCellRender.gensetRunningFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: GensetCellRender.stringTypeFormatter },\r\n { headerName: \"OEM\", field: \"OEMTypeCD\", cellRenderer: GensetFormatters.oemTypeFormatterGensetForFilter, width: 130 },\r\n { headerName: \"Genset ID\", field: \"AssetNumber\", cellRenderer: GensetCellRender.stringTypeFormatter, width: 150 }, \r\n { headerName: \"Event\", field: \"EventDescription\", cellRenderer: GensetCellRender.stringTypeFormatter, width: 180 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 180 }, \r\n ];\r\n } \r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n //alert(this.state.pageSize);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml} \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass GensetForwardCommandParams {\r\n SelectedGensets: server.GensetStatusUI[];\r\n CommandName: string;\r\n\tTempValue: string; \r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","/// \r\nimport * as React from 'react';\r\nimport { GensetCommandsGrid } from '../../../childcomponents/GensetCommandsGrid';\r\n\r\nexport interface GensetPingGridState {\r\n SelectedGensets: any[],\r\n RowData: server.GensetStatusUI[],\r\n Filters: server.GensetForwardCommandParams,\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n}\r\n\r\nexport class GensetPingControl extends React.Component {\r\n constructor(props: any) {\r\n super(props); \r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedGensets: [], RowData: [], Filters: filterSet, IsCommandIssued: false, PrevSelectedItems: [] }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.gensetData != null && this.props.gensetData.length > 0) {\r\n this.setState({ RowData: this.props.gensetData }); \r\n } \r\n }\r\n\r\n submitPingCommand() {\r\n var command = \"PollUnit\";\r\n var refreshGrid = this.props.refreshGrid;\r\n GensetCommandsGrid.submitCommands(command, null, refreshGrid);\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.props.gensetData }, () => { this.props.IsCommandIssued(this.state.IsCommandIssued); this.props.PrevSelectedItems(this.props.gensetData) });\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n this.setState({ SelectedGensets: gensetData });\r\n var gensetData = nextprops.gensetData;\r\n if (gensetData != undefined && gensetData != null && gensetData.length > 0) {\r\n this.setState({ RowData: gensetData });\r\n } \r\n }\r\n \r\n\r\n setDefaultFilters() {\r\n var filters: server.GensetForwardCommandParams = {\r\n SelectedGensets: [], CommandName: \"PollUnit\", TempValue: \"\"\r\n };\r\n return filters;\r\n } \r\n\r\n public render() {\r\n return
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport $ from 'jquery';\r\nexport class PopupConfirmationWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n ok() {\r\n this.props.OkMethod();\r\n }\r\n \r\n closePopUp() {\r\n $(\"#popUpConfirmModel\").hide();\r\n }\r\n\r\n\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Confirmation
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.props.Message}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}\r\nexport class PopupConfirmWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n static close() {\r\n $(\"#popUpConfirmModel .close\").click();\r\n }\r\n static showConfirmBox(Message, OkMethod) {\r\n ReactDom.render(, document.getElementById('divMsgboxDynamicContent'));\r\n setTimeout(function () {\r\n $('#popUpConfirmModel').show();\r\n }, 50);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n }\r\n}","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow'; \r\nimport * as PopupConfirmWindow from './../sharedcomponents/PopupConfirmWindow';\r\nimport OrbcommLogo11 from '../../images/ORBCOMMLOGOR.svg';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport $ from 'jquery';\r\nimport logo1 from '../../images/newTitleOrb.png';\r\nimport logo2 from '../../images/login_bg1.jpg';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface ForgotState {\r\n UserName: string,\r\n Message: string\r\n}\r\n\r\nexport default class ForgotPassword extends React.Component, ForgotState> {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { UserName: '', Message: '' };\r\n }\r\n\r\n UsernameChange(event: React.FormEvent) {\r\n var userid = this.state.UserName;\r\n var Value: string = event.currentTarget.value;\r\n userid = Value;\r\n this.setState({\r\n UserName: userid\r\n });\r\n }\r\n\r\n ValidateNChangePassword() {\r\n if ((this.state.UserName == null || this.state.UserName == \"\")) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please enter Username\");//Email\r\n return;\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var uName = this.state.UserName;\r\n this.myRequest = new Request(Config.ApiBaseUrl + '/api/AuthUser/ResetPassword?email=' + uName);\r\n\r\n //fetch(this.myRequest)\r\n // .then((res) => res.json())\r\n // .then((data) => {\r\n RCUtils.fetchRetry(this.myRequest)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n this.setState({ Message: data });\r\n if (data == \"Success\") {\r\n var confirmationMessage = \"Password has been successfully reset. Temporary password will be sent to the user email address.\";\r\n PopupConfirmWindow.PopupConfirmWindow.showConfirmBox(confirmationMessage, this.redirectToLogin.bind(this));\r\n return;\r\n }\r\n else if (data == \"NotExist\") {\r\n PopupWindow.showErrorMessage(\"Error\", \"Invalid Username, please contact your fleet administrator / Orbcomm Customer Care.\");\r\n return;\r\n }\r\n else if (data == \"Error\") {\r\n PopupWindow.showErrorMessage(\"Error\", \"Error occurred while reset password.\");\r\n return;\r\n }\r\n else if (data == \"Inactive\") {\r\n PopupWindow.showErrorMessage(\"Error\", \"you are not authorized to use Maritime platform application.\");\r\n return;\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", data);\r\n return;\r\n }\r\n }).catch(err => {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n }\r\n }\r\n\r\n redirectToLogin() {\r\n PopupConfirmWindow.PopupConfirmWindow.close();\r\n this.props.history.push('/'); \r\n }\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n RedirectToLogin() {\r\n RCNGWindow.ConfirmWindow.close();\r\n this.props.history.push('/'); \r\n }\r\n\r\n CancelRequest() {\r\n this.props.history.push('/');\r\n }\r\n\r\n public render() {\r\n var divStyle = {\r\n backgroundImage: `url(${logo2})`\r\n }\r\n\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Maritime\r\n MARITIME \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.UsernameChange(e)} placeholder='Username' />\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n","module.exports = \"data:image/jpeg;base64,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\"","// @ts-nocheck\r\nimport $ from 'jquery';\r\nimport DateFormat from 'dateformat';\r\nimport RSSIUNK from '../images/RSSI/RSSI_UNK.png';\r\nimport RSSI1 from '../images/RSSI/RSSI_1.png';\r\nimport RSSI2 from '../images/RSSI/RSSI_2.png';\r\nimport RSSI3 from '../images/RSSI/RSSI_3.png';\r\nimport RSSI4 from '../images/RSSI/RSSI_4.png';\r\nimport RSSI5 from '../images/RSSI/RSSI_5.png';\r\nimport BatteryIndicator from '../images/BatteryIndicator.svg';\r\nimport DualColorBattery from '../images/DualColorBattery.svg';\r\nimport PlugSolid from '../images/PlugSolid.svg';\r\nimport UnPlug from '../images/Unplug.svg';\r\nimport powerOnGreen from '.././images/powerOnGreen.png';\r\nimport powerOffGrey from '../images/powerOffGrey.png';\r\nimport NotRunning from '../images/NotRunning.png';\r\nimport Running from '../images/Running.png';\r\nimport batterycritical from '../images/battery-critical.svg';\r\nimport batterylow from '../images/battery-low.svg';\r\nimport passed from '../images/passed.png';\r\nimport failed from '../images/failed.png';\r\nimport aborted from '../images/aborted.png';\r\nimport runningtime from '../images/running-time.png';\r\nimport Skipped from '../images/Skipped.png';\r\nimport questionMark from '../images/questionMark.png';\r\nimport powerOrange from '../images/powerOrange.png';\r\nimport PowerOffline from '../images/PowerOffline.png';\r\nimport batterynormal from '../images/battery-normal.svg';\r\nimport off from '../images/off.png';\r\nimport dataNotAvailable from '../images/DataNotAvailable.svg';\r\nimport lodashfilter from 'lodash/filter';\r\n\r\nimport DBP0 from '../images/DoorBattPct/0.svg';\r\nimport DBP10 from '../images/DoorBattPct/10.svg';\r\nimport DBP20 from '../images/DoorBattPct/20.svg';\r\nimport DBP30 from '../images/DoorBattPct/30.svg';\r\nimport DBP40 from '../images/DoorBattPct/40.svg';\r\nimport DBP50 from '../images/DoorBattPct/50.svg';\r\nimport DBP60 from '../images/DoorBattPct/60.svg';\r\nimport DBP70 from '../images/DoorBattPct/70.svg';\r\nimport DBP80 from '../images/DoorBattPct/80.svg';\r\nimport DBP90 from '../images/DoorBattPct/90.svg';\r\nimport DBP100 from '../images/DoorBattPct/100.svg';\r\n\r\n\r\nconst detailFormatters = {\r\n OEMTypeFormatter(params) {\r\n var oemType = '';\r\n if (params != null && params != undefined) {\r\n switch (params.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"D\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"S\":\r\n oemType = \"SC\";\r\n break;\r\n case \"T\":\r\n oemType = \"TK\";\r\n break;\r\n case \"U\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"CARRIER\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"DAIKIN\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"STARCOOL\":\r\n oemType = \"SC\";\r\n break;\r\n case \"THERMOKING\":\r\n oemType = \"TK\";\r\n break;\r\n case \"UNKNOWN\":\r\n oemType = \"UNK\";\r\n break;\r\n }\r\n }\r\n return oemType;\r\n },\r\n EventDescriptionFormatters: (params, customerSpecificEventList, eventMasterList) => {\r\n var eventDesc = '-NA-';\r\n if (params != null && params != undefined) {\r\n var reeferOEMTypeCd = params.ReeferOEMTypeCd;\r\n if (params.EventMasterID != null && params.EventMasterID != \"\" && params.EventMasterID != \"null\" && params.EventMasterID != undefined) {\r\n var eventlist = lodashfilter(customerSpecificEventList, function (item) {\r\n return item.EventMasterID === params.EventMasterID;\r\n });\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n var custSpecificEventList = lodashfilter(eventlist, function (item) {\r\n return item.CustomerID === custId;\r\n });\r\n var finalcustSpecificEventList = lodashfilter(custSpecificEventList, function (item) {\r\n return item.OEMType === reeferOEMTypeCd;\r\n });\r\n if (finalcustSpecificEventList != null && finalcustSpecificEventList.length) {\r\n eventDesc = finalcustSpecificEventList.length > 0 ? finalcustSpecificEventList[0].EventDescription.toString() : \"\";\r\n }\r\n else {\r\n var eventDescription = lodashfilter(eventMasterList, function (item) {\r\n return item.EventMasterID === params.EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) { \r\n if (eventDescription[0].OverrideEventDesc != null && eventDescription[0].OverrideEventDesc == true) {\r\n if (params.OEParams != null && params.OEParams != \"\" && params.OEParams.length > 0) {\r\n var OperationalEventParams = params.OEParams.trimEnd();\r\n if (OperationalEventParams != null && OperationalEventParams != \"\") {\r\n return eventDescription[0].EventDescription + OperationalEventParams; //WI26438 Operational event not shown properly in Status Grid\r\n }\r\n }\r\n }\r\n else {\r\n if (eventDescription[0].EventCd == \"ATP\" || eventDescription[0].EventCd == \"UTP\") {\r\n if (params.CustCd3P != null && params.CustCd3P != \"\" && params.CustName3P != null && params.CustName3P != \"\") {\r\n return eventDesc = eventDescription[0].EventDescription + params.CustCd3P + \" (\" + params.CustName3P + \")\";\r\n }\r\n }\r\n\r\n }\r\n return eventDesc = eventDescription[0].EventDescription;\r\n\r\n }\r\n\r\n }\r\n }\r\n return eventDesc;\r\n }\r\n\r\n return eventDesc;\r\n },\r\n UnitTypesListFormatters: (params, UnitTypesList) => {\r\n var UnitTypeCdDescription = '-NA-';\r\n if (params.UnitTypeCd != null && params.UnitTypeCd != \"\" && params.UnitTypeCd != \"null\" && params.UnitTypeCd != undefined) {\r\n var UnitTypeCd = params.UnitTypeCd;\r\n\r\n if (UnitTypeCd != null && UnitTypeCd != \"\" && UnitTypeCd != 0) {\r\n var UnitTypeCdId = lodashfilter(UnitTypesList, function (item) {\r\n return item.UnitTypeCd === UnitTypeCd;\r\n });\r\n if (UnitTypeCdId != null && UnitTypeCdId.length > 0) {\r\n UnitTypeCdDescription = UnitTypeCdId[0].ColumnDisplay;\r\n }\r\n }\r\n }\r\n\r\n return UnitTypeCdDescription;\r\n },\r\n OEMTypeFormatterDetail(params) {\r\n var oemType = '';\r\n if (params != null && params != undefined) {\r\n switch (params.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n oemType = \"Carrier\";\r\n break;\r\n case \"D\":\r\n oemType = \"Daikin\";\r\n break;\r\n case \"S\":\r\n oemType = \"Star Cool\";\r\n break;\r\n case \"T\":\r\n oemType = \"ThermoKing\";\r\n break;\r\n case \"U\":\r\n oemType = \"Unknown\";\r\n break;\r\n case \"CARRIER\":\r\n oemType = \"Carrier\";\r\n break;\r\n case \"DAIKIN\":\r\n oemType = \"Daikin\";\r\n break;\r\n case \"STARCOOL\":\r\n oemType = \"Star Cool\";\r\n break;\r\n case \"THERMOKING\":\r\n oemType = \"ThermoKing\";\r\n break;\r\n case \"UNKNOWN\":\r\n oemType = \"Unknown\";\r\n break;\r\n }\r\n }\r\n return oemType;\r\n },\r\n DateTypeFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(params.toString());\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n RSSIFormatter(params: any) {\r\n var imagePath = RSSIUNK;\r\n if (params != null && params != undefined && params != '') {\r\n\r\n if (params == 0)\r\n imagePath = RSSIUNK;\r\n else if (params <= -111)\r\n imagePath = RSSI1;\r\n else if (params >= -110 && params <= -100)\r\n imagePath = RSSI2;\r\n else if (params >= -99 && params <= -88)\r\n imagePath = RSSI3;\r\n else if (params >= -87 && params <= -76)\r\n imagePath = RSSI4;\r\n else if (params >= -75)\r\n imagePath = RSSI5;\r\n else\r\n imagePath = RSSIUNK;\r\n }\r\n\r\n return imagePath;\r\n },\r\n pwrStateFormatter(params: any) {\r\n\r\n if (params.RCDPowerSourceCd != null && params.RCDPowerSourceCd != undefined) {\r\n var imagePath = null;\r\n if (params.RCDPowerSourceCd.toString().toUpperCase().trim() == \"B\") {\r\n imagePath = BatteryIndicator;\r\n }\r\n else if (params.DeviceConfig.toString().toUpperCase().trim() == \"TRUE\" && params.RCDPowerSourceCd.toString().toUpperCase().trim() == \"A\") {\r\n\r\n imagePath = DualColorBattery;\r\n }\r\n else {\r\n imagePath = PlugSolid;\r\n }\r\n return imagePath;\r\n }\r\n return '';\r\n },\r\n gensetSwitchFormatterImg: (params) => {\r\n if (params != null && params != undefined) {\r\n var imagePath = null;\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n imagePath = powerOnGreen;\r\n else if (params.toString().toUpperCase().trim() == \"FALSE\")\r\n imagePath = powerOffGrey;\r\n return imagePath;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n gensetRunningFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n var imagePath = null;\r\n if (params.toString().toUpperCase().trim() == \"0\" || params.toString().toUpperCase().trim() == \"FALSE\")\r\n imagePath = NotRunning; //No\r\n else if (params.toString().toUpperCase().trim() == \"1\" || params.toString().toUpperCase().trim() == \"TRUE\")\r\n imagePath = Running; //Yes \r\n return imagePath;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n RcdPowerSourceFormatter(params: any) {\r\n var rcdPwrSource = '';\r\n if (params != null && params != undefined && params != '') {\r\n switch (params.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n rcdPwrSource = \"AC\";\r\n break;\r\n case \"B\":\r\n rcdPwrSource = \"Battery\";\r\n break;\r\n }\r\n }\r\n\r\n return rcdPwrSource;\r\n },\r\n AlarmListFormatter(params) {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.toString().endsWith(\",\")) {\r\n params = params.slice(0, -1);\r\n }\r\n\r\n return params;\r\n }\r\n else return \"\";\r\n },\r\n TemperatureFormatter(params: any) {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;//\"1\";\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null) {\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params);\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n var param = parseFloat(tempVal.toString());\r\n // WI 26666 return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(parseInt(tempRoundingValue)) : param.toFixed(1);\r\n }\r\n else\r\n //WI 26666 return parseFloat(params.toFixed(parseInt(tempRoundingValue)));\r\n return tempRoundingValue > 0 ? params.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n params.toFixed(parseInt(tempRoundingValue)) : params.toFixed(1);\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n TemperatureFormatterForDeviceTemp(params: any) {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;//\"1\";\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.DeviceTemp != null && params.DeviceTemp != undefined && params.DeviceTemp != '-NA-') {\r\n if (params.DeviceTemp.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params.DeviceTemp);\r\n if ((params.DeviceType != null && params.DeviceType != undefined && params.DeviceType.toString().toUpperCase().trim() == \"ST9100\")) {\r\n //if (tempVal == 0)\r\n return '-NA-';\r\n }\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return parseFloat(tempVal.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n GPSLatitudeFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.Latitude != null && params.Latitude != undefined && params.Latitude.toString() != \"\") {\r\n var lat = parseFloat(params.Latitude.toString());\r\n var param = parseFloat(lat.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\"\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n\r\n GPSLongitudeFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.Longitude != null && params.Longitude != undefined && params.Longitude.toString() != \"\") {\r\n var longitute = parseFloat(params.Longitude.toString());\r\n var param = parseFloat(longitute.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n\r\n GPSLatitudeFormatterForReefer: (params) => {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.GPSLatitude != null && params.GPSLatitude != undefined && params.GPSLatitude.toString() != \"\") {\r\n var lat = parseFloat(params.GPSLatitude.toString());\r\n var param = parseFloat(lat.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n\r\n GPSLongitudeFormatterForReefer: (params) => {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.GPSLongitude != null && params.GPSLongitude != undefined && params.GPSLongitude.toString() != \"\") {\r\n var longitute = parseFloat(params.GPSLongitude.toString());\r\n var param = parseFloat(longitute.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n\r\n TemperatureFormatterForBooking(params: any) {\r\n var tempRoundingValue = \"1\";\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n var BookedTemperature = null;\r\n var TempUnit = null;\r\n if (params != null) {\r\n var strlstValues = params.split('@');\r\n BookedTemperature = strlstValues[0];\r\n TempUnit = strlstValues[1];\r\n if (TempUnit.toUpperCase() == \"N\")\r\n return \"Non-Running\";\r\n else if (TempUnit.toUpperCase() != tempUnitCd.toUpperCase()) {\r\n if (\"F\" == tempUnitCd.toUpperCase()) {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = ((tempValue * 9) / 5) + 32;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = (tempValue - 32) * 5 / 9;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return BookedTemperature.toString();\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n OperatingModeFormatter: (params: any) => {\r\n var valueString = \"\";\r\n if (params != null && params != undefined && params != '') {\r\n valueString = params.replace('/^\\s+/g', '');\r\n\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n return valueString;\r\n }\r\n return valueString;\r\n\r\n },\r\n GetTempColumnFormatter() {\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (tempUnitCd.toUpperCase() == \"F\")\r\n return \"(°F)\";\r\n else\r\n return \"(°C)\";\r\n },\r\n GetTimeZoneFormatter() {\r\n var tempZoneCd = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneCd.trim();\r\n if (tempZoneCd != null && tempZoneCd != \"\")\r\n return \"(\" + tempZoneCd + \")\";\r\n },\r\n SensorDataFormatter(params: any) {\r\n if (params != null) {\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n\r\n return \"-NA-\";\r\n },\r\n LineFrequencyFormatter(LineFrequency: any, LineFrequencyQualifier: any, ReeferOEMTypeCd: any, ControllerTypeCd: any) {\r\n if (LineFrequency != null && LineFrequency != undefined) {\r\n if (ReeferOEMTypeCd.toString().toUpperCase().trim() == \"D\" && (ControllerTypeCd == 27 || ControllerTypeCd == 28 || ControllerTypeCd == 32)) {\r\n if (LineFrequencyQualifier != null && (LineFrequencyQualifier == 0 || LineFrequencyQualifier == 1)) {\r\n if (LineFrequency.toString().trim() == \"-999\")\r\n return \"Unknown\";\r\n return parseFloat(LineFrequency).toFixed(1).toString();\r\n }\r\n else\r\n if (LineFrequencyQualifier != null && LineFrequencyQualifier == 8) {\r\n //var value = params.value;\r\n //if(value == 19)\r\n return \"High\";\r\n }\r\n else if (LineFrequencyQualifier != null && LineFrequencyQualifier == 9) {\r\n //var value = params.value;\r\n //if(value == 35)\r\n return \"Low\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else {\r\n if (LineFrequency != null) {\r\n\r\n if (LineFrequency.toString().trim() == \"-999\") \r\n return \"OOR\";\r\n else\r\n return LineFrequency;\r\n }\r\n\r\n return \"-NA-\";\r\n }\r\n }\r\n else {\r\n if (LineFrequency != null) {\r\n\r\n if (LineFrequency.toString().trim() == \"-999\") \r\n return \"OOR\";\r\n else\r\n return LineFrequency;\r\n }\r\n\r\n return \"-NA-\";\r\n }\r\n },\r\n HumiditySetpointFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"0\")\r\n return \"Off\";\r\n else if (params.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n YesNoConverter(params: any) {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n if (params.toString().toUpperCase().trim() == \"0\" || params.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"1\" || params.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n\r\n return \"-NA-\";\r\n },\r\n BooleanConverter(params: any) {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n if (params.toString().toUpperCase().trim() == \"0\" || params.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"False\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"1\" || params.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"True\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n GuestReeferModeFormatter(params: any) {\r\n if (params != null) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Guest\";\r\n else\r\n return \"Standard\";\r\n }\r\n else\r\n return '';\r\n },\r\n DoorFormatter(params: any) {\r\n if (params.HasDoorSensor != null && params.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.Door1Open != null) {\r\n if (params.Door1Open.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\";\r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n },\r\n //RCNG-2227,2228\r\n DryDoorFormatter(params: any) {\r\n if (params.HasDoorSensor != null && params.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.Door1Open != null) {\r\n //if (params.Door1Open.toString().toUpperCase().trim() == \"TRUE\")\r\n // return \"Open\";\r\n //else\r\n // return \"Closed\";\r\n switch (params.Door1Open.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\"\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n },\r\n SecondsToTimeConverter(params: any) {\r\n if (params != null) {\r\n var val = parseInt(params);\r\n if (val != 0) {\r\n var hours = val / 60;\r\n var minutes = val % 60;\r\n return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n }\r\n else\r\n return val;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n reeferSecondsToTimeConverter(params: any) {\r\n\r\n if (params != null && params.GPSLastLock != null && params.GPSLastLock != undefined) { //RCNG-2691\r\n var val = parseInt(params.GPSLastLock);\r\n if (val != 0) {\r\n //var hours = val / 60;\r\n //var minutes = val % 60;\r\n //return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n\r\n if (params.DeviceType != null && params.DeviceType != undefined && params.DeviceType.toString().toUpperCase().trim() == \"ST9100\") {\r\n var minutesVal = val / 60;\r\n var hours = minutesVal / 60;\r\n var minutes = minutesVal % 60;\r\n var seconds = val % 60;\r\n return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":\" + parseInt(seconds.toString());\r\n }\r\n else {\r\n var hours = val / 60;\r\n var minutes = val % 60;\r\n return parseInt(hours.toString()) + \":\" + parseInt(minutes.toString()) + \":00\";\r\n }\r\n }\r\n else\r\n return val;\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n dryPwrStateFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n var imagePath = null;\r\n if (params.toString().toUpperCase().trim() == \"C\") {\r\n //imagePath = process.env.PUBLIC_URL + \"/images/battery-critical.svg\";\r\n imagePath = batterycritical;\r\n\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"L\") {\r\n\r\n imagePath = batterylow;\r\n }\r\n else {\r\n imagePath = batterynormal;\r\n\r\n }\r\n return imagePath;\r\n }\r\n return '';\r\n },\r\n DryBatteryPctFormatter(params) { \r\n if (params != null && params != undefined) {\r\n var battPct = (Math.round(params / 10.0)) * 10;\r\n switch (battPct){\r\n case 0:\r\n return DBP0;\r\n case 10:\r\n return DBP10;\r\n case 20:\r\n return DBP20;\r\n case 30:\r\n return DBP30;\r\n case 40:\r\n return DBP40;\r\n case 50:\r\n return DBP50;\r\n case 60:\r\n return DBP60;\r\n case 70:\r\n return DBP70;\r\n case 80:\r\n return DBP80;\r\n case 90:\r\n return DBP90;\r\n case 100:\r\n return DBP100;\r\n }\r\n }\r\n return '';\r\n },\r\n chassisBatteryStatusFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n var imagePath = null;\r\n if (params.toString().toUpperCase().trim() == \"C\") {\r\n imagePath = batterycritical;\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"L\") {\r\n imagePath = batterylow;\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"N\") {\r\n imagePath = batterynormal;\r\n }\r\n return imagePath;\r\n }\r\n return '';\r\n },\r\n SpeedConverter: (params) => {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"2\";\r\n var tempVal = parseFloat(params);\r\n var param = (tempVal / 1.609344);\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n Current3PhaseFormatter(params: any) {\r\n var currentValue1 = \"\";\r\n var currentValue2 = \"\";\r\n var currentValue3 = \"\";\r\n if (params != null) {\r\n var phases = params.split(\",\");\r\n if (phases[0].toString().trim() == \"-999\")\r\n currentValue1 = \"OOR\";\r\n else\r\n currentValue1 = phases[0].toString().trim();\r\n if (phases[1].toString().trim() == \"-999\")\r\n currentValue2 = \"OOR\";\r\n else\r\n currentValue2 = phases[1].toString().trim();\r\n if (phases[2].toString().trim() == \"-999\")\r\n currentValue3 = \"OOR\";\r\n else\r\n currentValue3 = phases[2].toString().trim();\r\n\r\n return currentValue1 + \", \" + currentValue2 + \", \" + currentValue3;\r\n }\r\n else\r\n return \"\";\r\n },\r\n StringFormater(params: any) {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n return params;\r\n }\r\n return \"-NA-\";\r\n },\r\n preTripFormatter(params: any) {\r\n var imagePath;\r\n if (params != null && params != undefined && params != '') {\r\n switch (params.toString().trim()) {\r\n case 'Passed':\r\n case 'OK':\r\n imagePath = passed;\r\n break;\r\n case 'Failed':\r\n case 'NG':\r\n imagePath = failed;\r\n break;\r\n case 'Aborted':\r\n imagePath = aborted;\r\n break;\r\n case 'Running':\r\n imagePath = runningtime;\r\n break;\r\n case 'Skipped':\r\n imagePath = Skipped;\r\n break;\r\n case 'Unknown':\r\n imagePath = questionMark;\r\n break;\r\n }\r\n }\r\n return imagePath;\r\n },\r\n gensetSwitchFormatter(params) {\r\n if (params != null && params != undefined) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"On\";\r\n else\r\n return \"Off\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n YesNoFormatter(params) {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n if (params.toString().toUpperCase().trim() == \"0\" || params.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"1\" || params.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n YearFromdateTypeFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n var eventdttm = new Date(params.toString());\r\n return eventdttm.getFullYear();\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n FloatFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n return params;\r\n }\r\n return \"-NA-\";\r\n },\r\n GPSHDOPFormatter(GPSHDOP: any, GPSLockState: any) {\r\n if (GPSHDOP != null && GPSHDOP != undefined) {\r\n if (GPSHDOP == \"null\" || GPSLockState == null || GPSLockState == '' || GPSLockState == \"UNLOCKED\")\r\n return '-NA-';\r\n else\r\n {\r\n var decimalPlaces = 2;\r\n var multiplier = Math.pow(10, decimalPlaces);\r\n return (Math.round(GPSHDOP * multiplier) / multiplier).toFixed(decimalPlaces);\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n GPSSatCountFloatFormatter(GPSSatelliteCount: any, GPSLockState: any) {\r\n if (GPSSatelliteCount != null && GPSSatelliteCount != undefined) {\r\n if (GPSSatelliteCount == \"null\" || GPSLockState == null || GPSLockState == '' || GPSLockState == \"UNLOCKED\")\r\n return '-NA-';\r\n else\r\n return GPSSatelliteCount;\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n GPSFloatFormatter(params: any) {\r\n if (params != null && params != undefined && params != 0) {\r\n return params;\r\n }\r\n return \"-NA-\";\r\n },\r\n fillLevelGalTrace: (params) => {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor != undefined\r\n && params.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params != null && params != undefined && params != '') {\r\n var tempRoundingValue = \"2\";\r\n if (params.FuelLevelQualifier != null && ((params.FuelLevelQualifier == 'A') || (params.FuelLevelQualifier == 'P'))) {\r\n return (params.FuelLevel != null) ? parseFloat(params.FuelLevel.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n }\r\n else {\r\n return params.FuelLevelQualifierDesc;\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n },\r\n BattVoltageFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"1\";\r\n return (params != null) ? parseFloat(params.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n fillLevelTrace: (params) => {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor != undefined\r\n && params.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.FuelLevelQualifier != null && ((params.FuelLevelQualifier == 'A') || (params.FuelLevelQualifier == 'P'))) {\r\n if (params.FuelLevelTierNumber != null) {\r\n return process.env.PUBLIC_URL + \"/images/FuelGaugeFractionImages/\" + params.FractionDisplayGif;\r\n }\r\n else {\r\n if (params.FuelLevelPct != null) {\r\n var tempRoundingValue = \"2\";\r\n return parseFloat(params.FuelLevelPct.toFixed(parseInt(tempRoundingValue))) + \" %\";\r\n }\r\n else {\r\n return \"FRU\";\r\n }\r\n }\r\n }\r\n else {\r\n if (params.FuelLevelQualifier == \"S\")\r\n return \"FSE\";\r\n else\r\n return params.FuelLevelQualifierDesc;\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n },\r\n AlertDescriptionFormatter: (params, alertsList) => {\r\n var element = \"\";\r\n if (params != null && params != undefined) {\r\n var lstAlerts = params.split(',');\r\n $.each(lstAlerts, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (alertsList != null && alertsList != undefined && alertsList.length > 0) {\r\n var alertDescription = alertsList.filter(e =>\r\n e.AlertCD === item.toString().trim());\r\n var anchorElement = alertDescription.length > 0 ? alertDescription[0].AlertDsc.toString() : \"\";\r\n if (element != \"\")\r\n element = element + \", \" + anchorElement;\r\n else\r\n element = anchorElement;\r\n }\r\n }\r\n });\r\n return element;\r\n }\r\n\r\n else return \"-NA-\";\r\n },\r\n pwrStateFormatterChassis: (params) => {\r\n if (params!= null && params != undefined) {\r\n var imagePath = null;\r\n if (params.toString().toUpperCase().trim() == \"B\") {\r\n imagePath = UnPlug;\r\n }\r\n else if(params.toString().toUpperCase().trim() == \"A\") {\r\n imagePath = PlugSolid;\r\n }\r\n return imagePath;\r\n }\r\n return '';\r\n },\r\n LoadedFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Loaded\";\r\n else\r\n return \"Empty\";\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n BrakeSignalFormatter: (params) => {\r\n\r\n return \"-NA-\";\r\n },\r\n DoorFormatterChassis: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.HasDoorSensor != null && params.HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.Door1OpenChassis != null) {\r\n if (params.Door1OpenChassis.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\";\r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n }\r\n else\r\n return '-NA-';\r\n }, \r\n runStateFormatter: (params) => {\r\n if (params != null && params != undefined) {\r\n var imagePath = null;\r\n if ((params.toString().toUpperCase().trim()) == 'I')\r\n return imagePath = powerOnGreen;\r\n\r\n else if ((params.toString().toUpperCase().trim()) == 'S')\r\n return imagePath = powerOffGrey;\r\n\r\n else if ((params.toString().toUpperCase().trim()) == 'X')\r\n return imagePath = powerOrange;\r\n\r\n else if ((params.toString().toUpperCase().trim()) == 'O')\r\n return imagePath = PowerOffline;\r\n\r\n else\r\n return '-NA-';\r\n }\r\n\r\n return '-NA-';\r\n },\r\n ModelNumberFormatter(params: any) {\r\n if (params != null && params != undefined) {\r\n if (params.ModelNumber != null && params.ModelNumber != '') {//RCNG-3024\r\n return params.ModelNumber;//RCNG-3024\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n },\r\n tripWISEStatusFormatter(params: any) {\r\n var imagePath;\r\n if (params != null && params != undefined && params != '') {\r\n switch (params.toString().trim()) {\r\n case 'Off':\r\n imagePath = off;\r\n break;\r\n case 'Expired':\r\n imagePath = aborted;\r\n break;\r\n case 'Check':\r\n imagePath = failed;\r\n break;\r\n case 'Passed':\r\n imagePath = passed;\r\n break;\r\n case 'Running':\r\n imagePath = runningtime;\r\n break;\r\n case 'Unknown':\r\n imagePath = questionMark;\r\n break; \r\n case 'Data Not Available':\r\n imagePath = dataNotAvailable;\r\n break;\r\n }\r\n }\r\n return imagePath;\r\n },\r\n}\r\n\r\nexport default detailFormatters;","// @ts-nocheck\r\nimport $ from 'jquery';\r\nimport DateFormat from 'dateformat';\r\n\r\nimport NotRunning from '../images/NotRunning.png';\r\nimport Running from '../images/Running.png';\r\n\r\nconst gensetFormatter = {\r\n gensetSwitchFormatterImg: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.IgnitionOn != null && params.data.IgnitionOn != undefined) {\r\n if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"TRUE\")\r\n return '
    ';\r\n else if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"FALSE\")\r\n return '
    ';\r\n else\r\n return '';\r\n }\r\n //return params.value;\r\n }\r\n\r\n return '';\r\n },\r\n\r\n gensetSwitchSorting: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.IgnitionOn != null && params.data.IgnitionOn != undefined) {\r\n if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"1\";\r\n else if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"FALSE\")\r\n return \"0\"\r\n else\r\n return \"2\";\r\n }\r\n }\r\n\r\n return \"2\";\r\n },\r\n\r\n gensetSwitchFormatterImgForFilter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.IgnitionOn != null && params.data.IgnitionOn != undefined) {\r\n if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"TRUE\")\r\n return 'ON';\r\n else if (params.data.IgnitionOn.toString().toUpperCase().trim() == \"FALSE\")\r\n return 'OFF';\r\n else\r\n return '';\r\n }\r\n //return params.value;\r\n }\r\n\r\n return '';\r\n },\r\n\r\n gensetRunningFormatter: (params) => {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.HasOilPressureSwitch != null && params.data.GensetRunning != null) {\r\n if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n\r\n if (params.data.OEMTypeCD != null && params.data.OEMTypeCD.toString().toUpperCase().trim() == \"C\") {\r\n return '';\r\n }\r\n else {\r\n if (params.data.GensetRunning.toString().toUpperCase().trim() == \"0\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"FALSE\")\r\n imageElement.src = NotRunning; //No\r\n else if (params.data.GensetRunning.toString().toUpperCase().trim() == \"1\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"TRUE\")\r\n imageElement.src = Running; //Yes\r\n else\r\n return '';\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n }\r\n else\r\n return '';\r\n }\r\n else\r\n return '';\r\n }\r\n else\r\n return '';\r\n },\r\n\r\n EngineSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasOilPressureSwitch != null && params.data.GensetRunning != null) {\r\n if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.OEMTypeCD != null && params.data.OEMTypeCD.toString().toUpperCase().trim() == \"C\") {\r\n return \"2\";\r\n }\r\n else {\r\n if (params.data.GensetRunning.toString().toUpperCase().trim() == \"0\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"FALSE\")\r\n return \"0\";\r\n else if (params.data.GensetRunning.toString().toUpperCase().trim() == \"1\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"1\";\r\n else\r\n return \"2\";\r\n }\r\n }\r\n else\r\n return \"2\";\r\n }\r\n return \"2\";\r\n }\r\n },\r\n\r\n gensetRunningFormatterForFilter: (params) => {\r\n var title = \"\";\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.HasOilPressureSwitch != null && params.data.GensetRunning != null) {\r\n if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.OEMTypeCD != null && params.data.OEMTypeCD.toString().toUpperCase().trim() == \"C\") {\r\n title = '';\r\n }\r\n else {\r\n if (params.data.GensetRunning.toString().toUpperCase().trim() == \"0\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"FALSE\")\r\n title = \"Not Running\"; //No\r\n else if (params.data.GensetRunning.toString().toUpperCase().trim() == \"1\" || params.data.GensetRunning.toString().toUpperCase().trim() == \"TRUE\")\r\n title = \"Running\"; //Yes\r\n else\r\n title = '';\r\n }\r\n }\r\n else\r\n title = '';\r\n }\r\n else\r\n title = '';\r\n }\r\n else\r\n title = '';\r\n\r\n return title;\r\n },\r\n\r\n oemTypeFormatterGensetForFilter: (params) => {\r\n var oemType = '';\r\n if (params.data != null && params.data != undefined && params.data.OEMTypeCD != null && params.data.OEMTypeCD != undefined) {\r\n switch (params.data.OEMTypeCD.toString().toUpperCase().trim()) {\r\n case \"C\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"D\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"S\":\r\n oemType = \"SC\";\r\n break;\r\n case \"T\":\r\n oemType = \"TK\";\r\n break;\r\n case \"G\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TA\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"U\":\r\n oemType = \"UNK\";\r\n break;\r\n case \"CARRIER\":\r\n oemType = \"CAR\";\r\n break;\r\n case \"DAIKIN\":\r\n oemType = \"DKN\";\r\n break;\r\n case \"STARCOOL\":\r\n oemType = \"SC\";\r\n break;\r\n case \"THERMOKING\":\r\n oemType = \"TK\";\r\n break;\r\n case \"GENMARK\":\r\n oemType = \"GMK\";\r\n break;\r\n case \"TAYLOR\":\r\n oemType = \"TLR\";\r\n break;\r\n case \"UNKNOWN\":\r\n oemType = \"UNK\";\r\n break;\r\n default:\r\n oemType = '-NA-';\r\n }\r\n }\r\n else oemType = \"-NA-\";\r\n return oemType;\r\n },\r\n\r\n fuelSensorTrace: (params) => {\r\n\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor != undefined\r\n && params.data.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params.data.FuelLevelQualifier == \"\" || params.data.FuelLevelQualifier == null) {\r\n return \"-NA-\";\r\n }\r\n else {\r\n\r\n if (params.data.FuelLevelQualifier == \"C\" || params.data.FuelLevelQualifier == \"N\" ||\r\n params.data.FuelLevelQualifier == \"S\" || params.data.FuelLevelQualifier == \"U\") {\r\n return params.data.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n return \"Present\";\r\n }\r\n\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n\r\n FuelSensorSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor != undefined\r\n && params.data.HasFuelSensor === false) {\r\n return 0;\r\n }\r\n else {\r\n if (params.data.FuelLevelQualifier == \"\" || params.data.FuelLevelQualifier == null) {\r\n return -1;\r\n }\r\n else {\r\n if (params.data.FuelLevelQualifier == \"C\") return 1;\r\n else if (params.data.FuelLevelQualifier == \"N\") return 2;\r\n else if (params.data.FuelLevelQualifier == \"S\") return 4;\r\n else if (params.data.FuelLevelQualifier == \"U\") return 5;\r\n else return 3;\r\n }\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n FuelSensorQuickFilterFormatter: (param) => {\r\n if (param != null && param != undefined && param != '') {\r\n switch (param.value.toString()) {\r\n case \"0\": return \"No Sensor\";\r\n case \"1\": return \"Config Error\";\r\n case \"2\": return \"Not Configured\";\r\n case \"3\": return \"Present\";\r\n case \"4\": return \"Sensor Error\";\r\n case \"5\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Sensor\";\r\n }\r\n }\r\n return \"*No Fuel Sensor\"; \r\n },\r\n\r\n fillLevelGalTrace: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor != undefined\r\n && params.data.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n var tempRoundingValue = \"2\";\r\n if (params.data.FuelLevelQualifier != null && ((params.data.FuelLevelQualifier == 'A') ||\r\n (params.data.FuelLevelQualifier == 'P'))) {\r\n return (params.data.FuelLevel != null) ? parseFloat(params.data.FuelLevel.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n }\r\n else {\r\n return params.data.FuelLevelQualifierDesc;\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n },\r\n\r\n FuelLevelGalSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor != undefined\r\n && params.data.HasFuelSensor === false) {\r\n return -6;\r\n }\r\n else {\r\n var tempRoundingValue = \"2\";\r\n if (params.data.FuelLevelQualifier != null && ((params.data.FuelLevelQualifier == 'A') || (params.data.FuelLevelQualifier == 'P'))) {\r\n return (params.data.FuelLevel != null) ? parseFloat(params.data.FuelLevel.toFixed(parseInt(tempRoundingValue))) : -7;\r\n }\r\n else {\r\n if (params.data.FuelLevelQualifier != null) {\r\n if (params.data.FuelLevelQualifier == \"C\") return -5;\r\n else if (params.data.FuelLevelQualifier == \"N\") return -4;\r\n else if (params.data.FuelLevelQualifier == \"S\") return -3;\r\n else if (params.data.FuelLevelQualifier == \"U\") return -1;\r\n else return -2;\r\n }\r\n }\r\n }\r\n return -7;\r\n }\r\n },\r\n\r\n fillLevelTrace: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor != undefined\r\n && params.data.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.data.FuelLevelQualifier != null && ((params.data.FuelLevelQualifier == 'A') || (params.data.FuelLevelQualifier == 'P'))) {\r\n if (params.data.FuelLevelTierNumber != null) {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n imageElement.src = \"../images/FuelFractionImages/\" + params.data.FractionDisplayGif;\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n else {\r\n if (params.data.FuelLevelPct != null) {\r\n var tempRoundingValue = \"2\";\r\n return parseFloat(params.data.FuelLevelPct.toFixed(parseInt(tempRoundingValue))) + \" %\";\r\n }\r\n else {\r\n return 'Fuel Reading Unavailable';\r\n }\r\n }\r\n }\r\n else {\r\n if (params.data.FuelLevelQualifier == \"S\")\r\n return 'Sensor Error';\r\n else\r\n return params.data.FuelLevelQualifierDesc;\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n\r\n }\r\n else\r\n return '-NA-';\r\n },\r\n\r\n FuelLevelSorting: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor != undefined\r\n && params.data.HasFuelSensor === false) {\r\n return -7;\r\n }\r\n else {\r\n if (params.data.HasFuelSensor != null && params.data.HasFuelSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n\r\n if (params.data.FuelLevelQualifier != null && ((params.data.FuelLevelQualifier == 'A') || (params.data.FuelLevelQualifier == 'P'))) {\r\n if (params.data.FuelLevelTierNumber != null) {\r\n return params.data.FuelLevelTierNumber;\r\n }\r\n else {\r\n if (params.data.FuelLevelPct != null) {\r\n var tempRoundingValue = \"2\";\r\n return parseFloat(params.data.FuelLevelPct.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else return -5;\r\n }\r\n }\r\n else {\r\n if (params.data.FuelLevelQualifier == \"C\") return -6;\r\n else if (params.data.FuelLevelQualifier == \"N\") return -4;\r\n else if (params.data.FuelLevelQualifier == \"S\") return -3;\r\n else if (params.data.FuelLevelQualifier == \"U\") return -1;\r\n else return -2;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return -8;\r\n },\r\n\r\n FuelLevelGalQuickFilterFormatter: (param) => {\r\n if (param != null && param != undefined && param != '') {\r\n if (param.value < 0) {\r\n switch (param.value.toString()) {\r\n case \"-6\": return \"No Sensor\";\r\n case \"-5\": return \"Config Error\";\r\n case \"-4\": return \"Not Configured\";\r\n case \"-3\": return \"Sensor Error\";\r\n case \"-2\": return \"Sensor Error\";\r\n case \"-1\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Level (gal.)\";\r\n }\r\n }\r\n else\r\n return param.value;\r\n }\r\n },\r\n\r\n FuelLevelQuickFilterFormatter: (params) => {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.value < 0) {\r\n switch (params.toString()) {\r\n case \"-7\": return \"No Sensor\";\r\n case \"-6\": return \"Config Error\";\r\n case \"-5\": return \"Fuel Reading Unavailable\";\r\n case \"-4\": return \"Not Configured\";\r\n case \"-3\": return \"Sensor Error\";\r\n case \"-2\": return \"Sensor Error\";\r\n case \"-1\": return \"Unknown\";\r\n default:\r\n return \"*No Fuel Level\";\r\n }\r\n }\r\n else {\r\n var image: any = params.value;\r\n if (image > 17)\r\n return params.value;\r\n else\r\n image = params.value - 1;\r\n\r\n if (image == 0)\r\n image = \"E\";\r\n else if (image == 16)\r\n image = \"F\";\r\n\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-alert\";\r\n var imageElement = document.createElement(\"img\");\r\n imageElement.src = \"../images/FuelFractionImages/\" + image + \".png\";\r\n element.appendChild(imageElement);\r\n return element;\r\n }\r\n\r\n } \r\n },\r\n\r\n YesNoConverterForFilter: (params) => {\r\n if (params.data != null && params.data != undefined && params.data != '' && params.data.HasOilPressureSwitch != null && params.data.HasOilPressureSwitch != undefined && params.data.HasOilPressureSwitch != '') {\r\n if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"0\" || params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"1\" || params.data.HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n },\r\n\r\n gensetSpeedValueFormatter: (params) => {\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var speedUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).SpeedUnitCd.trim();\r\n if (params.value != '-NA-') {\r\n if (speedUnitCd.toLowerCase() == \"kmh\") {\r\n var param = params.value;\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempVal = parseFloat(params.value);\r\n var param1 = (tempVal / 1.609344);\r\n return parseFloat(param1.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n}\r\n\r\nexport default gensetFormatter;","import $ from 'jquery';\r\nimport lodashfilter from 'lodash/filter';\r\nimport lodashEqual from 'lodash/isEqual';\r\nvar Config: any = require('../Config.json');\r\n\r\nvar self = this;\r\nconst userRights = {\r\n checkVisibility: (params: string) => {\r\n var visibilitySetting = 'show';\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(params)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting = 'hidden';\r\n }\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkMenuItemVisibility: (rightId: string) => {\r\n var visibilitySetting = [];\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n //RCNG-1478\r\n checkMenuItemVisibilityGT1030: (params, contextMenuItem: string, rightId: string) => {\r\n var visibilitySetting = [];\r\n var visible = true;\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visible = false;\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n if (visible) {\r\n var selectedRows = params.api.getSelectedRows();\r\n var selectedUserData = [];\r\n var visibilitySetting = [];\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedUserData.push(selectedRow);\r\n });\r\n }\r\n var isGT1030Found;\r\n isGT1030Found = selectedUserData.filter(x => x.AssetState == 'A' && x.DeviceType != null && x.DeviceType.trim() == 'GT1030');\r\n if (isGT1030Found.length > 0) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n else\r\n return visibilitySetting;\r\n return visibilitySetting;\r\n },\r\n\r\n checkMenuItemResetPasswordVisibility: (params, rightId: string) => {\r\n var visibilitySetting = [];\r\n var selectedUserData = [];\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var checkOktaUser: any = JSON.parse(sessionStorage.getItem('UserInfo')).SSOSignInType;\r\n var selectedRows = params.api.getSelectedRows();\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedUserData.push(selectedRow);\r\n });\r\n }\r\n\r\n if (checkOktaUser == \"Okta\" && (selectedUserData[0].OKTASignInOverrideOption == \"A\" || selectedUserData[0].OKTASignInOverrideOption == \"R\")) {\r\n visibilitySetting.push('hidden');\r\n return visibilitySetting;\r\n }\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkOktaUserMenuVisiblity: (params, rightId: string) => {\r\n var selectedRows = params.api.getSelectedRows();\r\n //var customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;\r\n var selectedUserData = [];\r\n var visibilitySetting = [];\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedUserData.push(selectedRow);\r\n });\r\n }\r\n if (selectedUserData.length > 1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n else if (selectedUserData.length == 1) {\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1 || selectedUserData[0].OKTASignInOverrideOption == null || selectedUserData[0].OKTASignInOverrideOption.trim() == '') {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n //RCNG-1229-s\r\n checkAzureUserMenuVisiblity: (params, rightId: string) => {\r\n var selectedRows = params.api.getSelectedRows();\r\n //var customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;\r\n var selectedUserData = [];\r\n var visibilitySetting = [];\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedUserData.push(selectedRow);\r\n });\r\n }\r\n if (selectedUserData.length > 1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n else if (selectedUserData.length == 1) {\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1 || selectedUserData[0].AzureSignInOverrideOption == null ||\r\n selectedUserData[0].AzureSignInOverrideOption == '') {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n //RCNG-1229-E\r\n checkMenuItemDisabledForChassis(params, cmdStr) {\r\n var isDisabled = false;\r\n var selectedChassisData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedChassisData.push(selectedRow);\r\n });\r\n }\r\n if (selectedChassisData.length > 1) {\r\n if (cmdStr === \"CurrentDetails\" || cmdStr === \"ThirdPartyAccess\") {\r\n isDisabled = true;\r\n }\r\n } else if (selectedChassisData.length == 1) {\r\n if (cmdStr === \"UnAssign\" || cmdStr === \"Assign\") {\r\n if (selectedChassisData != null && selectedChassisData != undefined) {\r\n if (selectedChassisData[0].customername != \"\") {\r\n if (selectedChassisData[0].customername === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n if (cmdStr === \"UnAssign\") {\r\n isDisabled = true;\r\n }\r\n }\r\n //else { //RCNG-1175\r\n // if (cmdStr === \"Assign\") {\r\n // isDisabled = true;\r\n // }\r\n //}\r\n }\r\n }\r\n }\r\n\r\n }\r\n return isDisabled;\r\n },\r\n checkMenuItemDisabledForDry(params, cmdStr) {\r\n var isDisabled = false;\r\n var selectedDryData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedDryData.push(selectedRow);\r\n });\r\n }\r\n if (selectedDryData.length > 1) {\r\n if (cmdStr === \"CurrentDetails\" || cmdStr === \"ThirdPartyAccess\") {\r\n isDisabled = true;\r\n }\r\n } else if (selectedDryData.length == 1) {\r\n if (cmdStr === \"UnAssign\" || cmdStr === \"Assign\") {\r\n if (selectedDryData != null && selectedDryData != undefined) {\r\n if (selectedDryData[0].customername != \"\") {\r\n if (selectedDryData[0].customername === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n if (cmdStr === \"UnAssign\") {\r\n isDisabled = true;\r\n }\r\n }\r\n //else { //RCNG-1175\r\n // if (cmdStr === \"Assign\") {\r\n // isDisabled = true;\r\n // }\r\n //}\r\n }\r\n }\r\n }\r\n\r\n }\r\n return isDisabled;\r\n },\r\n checkMenuItemDisabledForGenset(params, cmdStr) {\r\n var isDisabled = false;\r\n var selectedGensetData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedGensetData.push(selectedRow);\r\n });\r\n }\r\n if (selectedGensetData.length > 1) {\r\n if (cmdStr === \"CurrentDetails\" || cmdStr === \"ThirdPartyAccess\") {\r\n isDisabled = true;\r\n }\r\n } else if (selectedGensetData.length == 1) {\r\n if (cmdStr === \"UnAssign\" || cmdStr === \"Assign\") {\r\n if (selectedGensetData != null && selectedGensetData != undefined) {\r\n if (selectedGensetData[0].CustomerName != \"\") {\r\n if (selectedGensetData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n if (cmdStr === \"UnAssign\") {\r\n isDisabled = true;\r\n }\r\n }\r\n //else {//RCNG-1175\r\n // if (cmdStr === \"Assign\") {\r\n // isDisabled = true;\r\n // }\r\n //}\r\n }\r\n }\r\n }\r\n\r\n }\r\n //var forwardCommandParam = JSON.stringify(selectedGensetData);\r\n //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetAssetAssigned3rdParty';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data == \"assigned\") {\r\n // if (cmdStr === \"Assign\") {\r\n // isDisabled = true;\r\n // }\r\n // }\r\n // else if (data == \"unassigned\") {\r\n // if (cmdStr === \"UnAssign\") {\r\n // isDisabled = true;\r\n // }\r\n // }\r\n // else {\r\n // if (cmdStr === \"ThirdPartyAccess\") {\r\n // isDisabled = true;\r\n // } \r\n // }\r\n // });\r\n return isDisabled;\r\n },\r\n checkMenuItemVisibilitybyData: (rightId: string, params, cmdStr, refControllertypes: any) => {\r\n var dCXDownloads;\r\n dCXDownloads = JSON.parse(sessionStorage.getItem('customerDetails')).DCXDownloads;\r\n var tripWISEReport;\r\n tripWISEReport = JSON.parse(sessionStorage.getItem('customerDetails')).TripWISEreport;\r\n var visibilitySetting = [];\r\n var hide = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isFromVessel = 0;\r\n var isSekstantFound = 0;\r\n var isLynxFound = 0;\r\n var isMPModelFound = 0;\r\n var isCT35ML5Found = 0;\r\n var isCT36ML5Found = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n if (val.VesselCd != undefined && val.VesselCd != null)\r\n isFromVessel = isFromVessel + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'Sekstant') {\r\n isSekstantFound = isSekstantFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {\r\n isLynxFound = isLynxFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3500') {//IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT35ML5Found = isCT35ML5Found + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3600') {//IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT36ML5Found = isCT36ML5Found + 1;\r\n }\r\n }\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if (val.ReeferOEMTypeCd.trim() == 'T') {\r\n if (val.UnitTypeCd != null && val.UnitTypeCd != undefined && val.UnitTypeCd != '') {\r\n if (val.UnitTypeCd.trim() == 'TA' || val.UnitTypeCd.trim() == 'TM' || val.UnitTypeCd.trim() == 'TR') {\r\n isMPModelFound = isMPModelFound + 1;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n var isGuestFound;\r\n isGuestFound = selectedReeferData.filter(row => row.DeviceConfig == true);\r\n\r\n\r\n if (isCT4Found > 0) {\r\n var eligibleForShow = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'O2', 'StartDefrost', 'ChgDefrostInterval', 'RebootReeferController', 'ChangeReeferID', 'GetAssetId', 'EnableDoorSensor'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n var eligibleTWReportForShowHide = ['GetTripWISEReport', 'ShowTripWISEReport'];\r\n if (eligibleTWReportForShowHide.indexOf(cmdStr) !== -1) {\r\n if (tripWISEReport == true)\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n }\r\n if (isDeviceTypeFound > 0) {\r\n var eligibleForShow = ['Ping', 'DeviceReset', 'O2', 'StartDefrost', 'ChgDefrostInterval', 'RebootReeferController', 'ChangeReeferID'];//, 'GetAssetId'\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['SetReportingInterval', 'DeviceResetToDefaults', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'GetDataLog', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'ScheduledPre-Trip', 'GetPre-TripResults', 'ShowPre-TripResults', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings', 'DeviceConfiguration',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA', 'GetAssetId', 'GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isLynxFound > 0) {\r\n var eligibleForShow = ['O2', 'CO2', 'Humidity', 'StartDefrost', 'Temperature', 'ChgDefrostInterval',\r\n 'RebootReeferController', 'ChangeReeferID', 'GetDataLog', 'ShowPre-TripResults'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere',\r\n 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'StopPre-Trip', 'Update',\r\n 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'DeviceConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'FreshAirType', 'ChilledandCA', 'GetAssetId',\r\n 'EnableDoorSensor', 'GuestReeferconfiguration', 'AssignPANId', 'ScheduledPre-Trip', 'GetPre-TripResults'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n var eligibleTWReportForShowHide = ['GetTripWISEReport', 'ShowTripWISEReport'];\r\n if (eligibleTWReportForShowHide.indexOf(cmdStr) !== -1) {\r\n if (tripWISEReport == true)\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n }\r\n if (isCT35ML5Found > 0) {\r\n var eligibleForShow = ['Humidity','StartDefrost', 'ChgDefrostInterval'];//, 'GetAssetId'\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Ping','AssignPANId', 'DeviceReset', 'RebootReeferController', 'ChangeReeferID', 'O2','CO2','SetReportingInterval', 'DeviceResetToDefaults', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'GetDataLog', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'ScheduledPre-Trip', 'GetPre-TripResults', 'ShowPre-TripResults', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings', 'DeviceConfiguration',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA', 'GetAssetId', 'GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isCT36ML5Found > 0) {\r\n var eligibleForShow = ['Humidity', 'StartDefrost', 'ChgDefrostInterval', 'GetDataLog'];//, 'GetAssetId'\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Ping', 'AssignPANId', 'DeviceReset', 'RebootReeferController', 'ChangeReeferID', 'O2', 'CO2', 'SetReportingInterval', 'DeviceResetToDefaults', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'ScheduledPre-Trip', 'GetPre-TripResults', 'ShowPre-TripResults', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings', 'DeviceConfiguration',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA', 'GetAssetId', 'GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isSekstantFound > 0 && selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S')) {\r\n var eligibleForShow = ['O2', 'CO2', 'Humidity', 'GetDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1)\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n\r\n var customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;\r\n var eligibleForHide = ['DeviceConfiguration', 'EnableDoorSensor']; // WI 26604 added 'EnableDoorSensor' access only for SO User\r\n if (eligibleForHide.indexOf(cmdStr) !== -1 && customerTypeCd != \"SO\") {\r\n hide = true;\r\n }\r\n if (selectedReeferData.length > 1) {\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length) {\r\n if (isGuestFound.length == selectedReeferData.length) {\r\n if (cmdStr === 'Humidity') {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length) {\r\n var eligibleForHide = ['O2', 'CO2', 'CAFull', 'CAFunctionTest'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length) {\r\n if (isSekstantFound > 0) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['Chilled', 'O2', 'CO2', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n if (isSekstantFound > 0) {\r\n var eligibleForShow = ['Humidity', 'GetDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Chilled', 'O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['Chilled', 'O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['ControlledAtmosphere'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length) {\r\n var eligibleForShow = ['CAFull', 'CAFunctionTest'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C' && row.DeviceConfig == true).length)) {\r\n\r\n if (isSekstantFound > 0 && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length == isSekstantFound && selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n var eligibleForShow = ['O2', 'CO2'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C' && row.ReeferOEMTypeCd && row.DeviceConfig == true).length) {\r\n var eligibleForHide = ['SetDataLogInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) {\r\n var eligibleForHide = ['ChgDefrostInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length != (isCT4Found) || isFromVessel > 0) {//isDeviceTypeFound +\r\n var eligibleForHide = ['GetAssetId']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length != isCT4Found) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n\r\n if (selectedReeferData.length != isLynxFound) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length == isLynxFound) {\r\n var eligibleForShow = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n }\r\n else {\r\n var ReeferOEMTypeCd = \"\";\r\n if (selectedReeferData[0].ReeferOEMTypeCd != null)\r\n ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd;\r\n var IsGuest = selectedReeferData[0].DeviceConfig;\r\n if (ReeferOEMTypeCd.trim() == 'D') {\r\n var eligibleForHide = ['O2', 'CO2', 'CAFull', 'CAFunctionTest'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if (ReeferOEMTypeCd.trim() == 'S') {\r\n if (isSekstantFound > 0) {\r\n var eligibleForHide = ['Chilled', 'ChgDefrostInterval', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['O2', 'CO2', 'Chilled', 'ChgDefrostInterval', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if ((ReeferOEMTypeCd.trim() == 'C' && IsGuest) || (ReeferOEMTypeCd.trim() == 'S') || (ReeferOEMTypeCd.trim() == 'D')) {\r\n\r\n if (!(isSekstantFound > 0 && ReeferOEMTypeCd.trim() == 'S')) {\r\n var eligibleForHide = ['O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C' && IsGuest) {\r\n var eligibleForHide = ['SetDataLogInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C' || ReeferOEMTypeCd.trim() == 'T') {\r\n var eligibleForHide = ['ControlledAtmosphere', 'CAFull', 'CAFunctionTest', 'Frozen', 'CA', 'ChilledandCA', 'Chilled'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (!(isCT4Found > 0)) {//isDeviceTypeFound > 0 ||\r\n var eligibleForHide = ['GetAssetId']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isFromVessel > 0) {\r\n var eligibleForHide = ['GetAssetId']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (!(isCT4Found > 0)) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (!(isLynxFound > 0)) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isLynxFound > 0) {\r\n var eligibleForShow = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n }\r\n\r\n //RCNG - 3641\r\n //if (cmdStr === 'ShowTripWISEReport' || cmdStr === 'GetTripWISEReport') {\r\n // if (tripWISEReport == true) {\r\n // var supportedDeviceTypes = [\"CT4000\", \"TripLink\"];\r\n // if (selectedReeferData.length > 1) {\r\n // var result = selectedReeferData.filter(x => x.DeviceType.trim() == \"CT4000\" || x.DeviceType.trim() == \"TripLink\");\r\n // if (selectedReeferData.length != result.length)\r\n // hide = true;\r\n // else\r\n // hide = false;\r\n // }\r\n // else {\r\n // if (selectedReeferData[0].DeviceType.trim() == \"CT4000\" || selectedReeferData[0].DeviceType.trim() == 'TripLink')\r\n // hide = false;\r\n // else\r\n // hide = true;\r\n // }\r\n // }\r\n //}\r\n\r\n if (isMPModelFound > 0) {\r\n var eligibleForHide = ['SynctoDevice', 'SetDataLogInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n //else { // Commented else code for WI 26604 \r\n // hide = false; \r\n //}\r\n }\r\n\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n if (isValueExits != -1 && hide) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n return visibilitySetting;\r\n },\r\n checkMenuItemVisibilitybyDataForTDD: (rightId: string, params, cmdStr, refControllertypes: any, ShowTDDForCT36ML5: boolean, ShowTDDForCT35ML5: boolean) => {\r\n var dCXDownloads;\r\n dCXDownloads = JSON.parse(sessionStorage.getItem('customerDetails')).DCXDownloads;\r\n var tripWISEReport;\r\n tripWISEReport = JSON.parse(sessionStorage.getItem('customerDetails')).TripWISEreport;\r\n var visibilitySetting = [];\r\n var hide = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isFromVessel = 0;\r\n var isSekstantFound = 0;\r\n var isLynxFound = 0;\r\n var isMPModelFound = 0;\r\n var isCT35ML5Found = 0;\r\n var isCT36ML5Found = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n if (val.VesselCd != undefined && val.VesselCd != null)\r\n isFromVessel = isFromVessel + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'Sekstant') {\r\n isSekstantFound = isSekstantFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {\r\n isLynxFound = isLynxFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3500' || val.DeviceType.toString().trim().toUpperCase() == 'CT3600') {//IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT35ML5Found = isCT35ML5Found + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3600') {//IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT36ML5Found = isCT36ML5Found + 1;\r\n }\r\n }\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if (val.ReeferOEMTypeCd.trim() == 'T') {\r\n if (val.UnitTypeCd != null && val.UnitTypeCd != undefined && val.UnitTypeCd != '') {\r\n if (val.UnitTypeCd.trim() == 'TA' || val.UnitTypeCd.trim() == 'TM' || val.UnitTypeCd.trim() == 'TR') {\r\n isMPModelFound = isMPModelFound + 1;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n var isGuestFound;\r\n isGuestFound = selectedReeferData.filter(row => row.DeviceConfig == true);\r\n\r\n\r\n if (isCT4Found > 0) {\r\n var eligibleForShow = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'O2', 'StartDefrost', 'ChgDefrostInterval', 'RebootReeferController', 'ChangeReeferID', 'GetAssetId', 'EnableDoorSensor'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n var eligibleTWReportForShowHide = ['GetTripWISEReport', 'ShowTripWISEReport'];\r\n if (eligibleTWReportForShowHide.indexOf(cmdStr) !== -1) {\r\n if (tripWISEReport == true)\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n }\r\n if (isDeviceTypeFound > 0) {\r\n var eligibleForShow = ['Ping', 'DeviceReset', 'O2', 'StartDefrost', 'ChgDefrostInterval', 'RebootReeferController', 'ChangeReeferID'];//, 'GetAssetId'\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['SetReportingInterval', 'DeviceResetToDefaults', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'GetDataLog', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'ScheduledPre-Trip', 'GetPre-TripResults', 'ShowPre-TripResults', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings', 'DeviceConfiguration',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA', 'GetAssetId', 'GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isLynxFound > 0) {\r\n var eligibleForShow = ['O2', 'CO2', 'Humidity', 'StartDefrost', 'Temperature', 'ChgDefrostInterval',\r\n 'RebootReeferController', 'ChangeReeferID', 'GetDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere',\r\n 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'StopPre-Trip', 'Update',\r\n 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'DeviceConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'FreshAirType', 'ChilledandCA', 'GetAssetId',\r\n 'EnableDoorSensor', 'GuestReeferconfiguration', 'AssignPANId', 'ScheduledPre-Trip', 'GetPre-TripResults', 'ShowPre-TripResults'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n var eligibleTWReportForShowHide = ['GetTripWISEReport', 'ShowTripWISEReport'];\r\n if (eligibleTWReportForShowHide.indexOf(cmdStr) !== -1) {\r\n if (tripWISEReport == true)\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n }\r\n if (isCT35ML5Found > 0) {\r\n var eligibleForShow = ['Humidity', 'StartDefrost', 'ChgDefrostInterval', 'GetDataLog'];//, 'GetAssetId'\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Ping', 'AssignPANId', 'DeviceReset', 'RebootReeferController', 'ChangeReeferID', 'O2', 'CO2', 'SetReportingInterval', 'DeviceResetToDefaults', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'ScheduledPre-Trip', 'GetPre-TripResults', 'ShowPre-TripResults', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings', 'DeviceConfiguration',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA', 'GetAssetId', 'GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n if (cmdStr === 'GetDataLog') {\r\n if (!ShowTDDForCT35ML5)\r\n hide = true;\r\n }\r\n }\r\n if (isCT36ML5Found > 0) {\r\n var eligibleForShow = ['Humidity', 'StartDefrost', 'ChgDefrostInterval', 'GetDataLog'];//, 'GetAssetId'\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Ping', 'AssignPANId', 'DeviceReset', 'RebootReeferController', 'ChangeReeferID', 'O2', 'CO2', 'SetReportingInterval', 'DeviceResetToDefaults', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere', 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest'\r\n , 'StopPre-Trip', 'ScheduledPre-Trip', 'GetPre-TripResults', 'ShowPre-TripResults', 'Update', 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings', 'DeviceConfiguration',\r\n 'AssetConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'ChilledandCA', 'GetAssetId', 'GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n if (cmdStr === 'GetDataLog') {\r\n if (!ShowTDDForCT36ML5)\r\n hide = true;\r\n }\r\n }\r\n if (isSekstantFound > 0 && selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S')) {\r\n var eligibleForShow = ['O2', 'CO2', 'Humidity', 'GetDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1)\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n\r\n var customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;\r\n var eligibleForHide = ['DeviceConfiguration', 'EnableDoorSensor']; // WI 26604 added 'EnableDoorSensor' access only for SO User\r\n if (eligibleForHide.indexOf(cmdStr) !== -1 && customerTypeCd != \"SO\") {\r\n hide = true;\r\n }\r\n if (selectedReeferData.length > 1) {\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length) {\r\n if (isGuestFound.length == selectedReeferData.length) {\r\n if (cmdStr === 'Humidity') {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length) {\r\n var eligibleForHide = ['O2', 'CO2', 'CAFull', 'CAFunctionTest'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length) {\r\n if (isSekstantFound > 0) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['Chilled', 'O2', 'CO2', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n if (isSekstantFound > 0) {\r\n var eligibleForShow = ['Humidity', 'GetDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Chilled', 'O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['Chilled', 'O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['ControlledAtmosphere'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length) {\r\n var eligibleForShow = ['CAFull', 'CAFunctionTest'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C' && row.DeviceConfig == true).length)) {\r\n\r\n if (isSekstantFound > 0 && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length == isSekstantFound && selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n var eligibleForShow = ['O2', 'CO2'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C' && row.ReeferOEMTypeCd && row.DeviceConfig == true).length) {\r\n var eligibleForHide = ['SetDataLogInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) {\r\n var eligibleForHide = ['ChgDefrostInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'S').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'T').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if ((selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length > 0) && (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length > 0) && selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'D').length + selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() == 'C').length)) {\r\n var eligibleForHide = ['Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length != (isCT4Found) || isFromVessel > 0) {//isDeviceTypeFound +\r\n var eligibleForHide = ['GetAssetId']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length != isCT4Found) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n\r\n if (selectedReeferData.length != isLynxFound) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length == isLynxFound) {\r\n var eligibleForShow = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n }\r\n else {\r\n var ReeferOEMTypeCd = \"\";\r\n if (selectedReeferData[0].ReeferOEMTypeCd != null)\r\n ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd;\r\n var IsGuest = selectedReeferData[0].DeviceConfig;\r\n if (ReeferOEMTypeCd.trim() == 'D') {\r\n var eligibleForHide = ['O2', 'CO2', 'CAFull', 'CAFunctionTest'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else if (ReeferOEMTypeCd.trim() == 'S') {\r\n if (isSekstantFound > 0) {\r\n var eligibleForHide = ['Chilled', 'ChgDefrostInterval', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else {\r\n var eligibleForHide = ['O2', 'CO2', 'Chilled', 'ChgDefrostInterval', 'Frozen', 'CA', 'ChilledandCA'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if ((ReeferOEMTypeCd.trim() == 'C' && IsGuest) || (ReeferOEMTypeCd.trim() == 'S') || (ReeferOEMTypeCd.trim() == 'D')) {\r\n\r\n if (!(isSekstantFound > 0 && ReeferOEMTypeCd.trim() == 'S')) {\r\n var eligibleForHide = ['O2', 'CO2'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C' && IsGuest) {\r\n var eligibleForHide = ['SetDataLogInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C' || ReeferOEMTypeCd.trim() == 'T') {\r\n var eligibleForHide = ['ControlledAtmosphere', 'CAFull', 'CAFunctionTest', 'Frozen', 'CA', 'ChilledandCA', 'Chilled'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (!(isCT4Found > 0)) {//isDeviceTypeFound > 0 ||\r\n var eligibleForHide = ['GetAssetId']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isFromVessel > 0) {\r\n var eligibleForHide = ['GetAssetId']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (!(isCT4Found > 0)) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport', 'EnableDoorSensor']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (!(isLynxFound > 0)) {\r\n var eligibleForHide = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isLynxFound > 0) {\r\n var eligibleForShow = ['GetTripWISEReport', 'ShowTripWISEReport']\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n }\r\n }\r\n\r\n //RCNG - 3641\r\n //if (cmdStr === 'ShowTripWISEReport' || cmdStr === 'GetTripWISEReport') {\r\n // if (tripWISEReport == true) {\r\n // var supportedDeviceTypes = [\"CT4000\", \"TripLink\"];\r\n // if (selectedReeferData.length > 1) {\r\n // var result = selectedReeferData.filter(x => x.DeviceType.trim() == \"CT4000\" || x.DeviceType.trim() == \"TripLink\");\r\n // if (selectedReeferData.length != result.length)\r\n // hide = true;\r\n // else\r\n // hide = false;\r\n // }\r\n // else {\r\n // if (selectedReeferData[0].DeviceType.trim() == \"CT4000\" || selectedReeferData[0].DeviceType.trim() == 'TripLink')\r\n // hide = false;\r\n // else\r\n // hide = true;\r\n // }\r\n // }\r\n //}\r\n\r\n if (isMPModelFound > 0) {\r\n var eligibleForHide = ['SynctoDevice', 'SetDataLogInterval'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n //else { // Commented else code for WI 26604 \r\n // hide = false; \r\n //}\r\n }\r\n\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n if (isValueExits != -1 && hide) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n return visibilitySetting;\r\n },\r\n //RCNG-3145\r\n checkTripWISEVisibilitybyData:(rightId: string, params, cmdStr, tripWiseSupport:any) => {\r\n var tripWISEReport;\r\n tripWISEReport = JSON.parse(sessionStorage.getItem('customerDetails')).TripWISEreport;\r\n var visibilitySetting = [];\r\n var hide = true;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n //RCNG - 3641\r\n if (cmdStr === 'ShowTripWISEReport' || cmdStr === 'GetTripWISEReport') {\r\n if (tripWISEReport == true) {\r\n if (selectedReeferData.filter(x => x.DeviceType === undefined || x.DeviceType === null).length == 0) {\r\n if (selectedReeferData.length > 1) {\r\n var result = selectedReeferData.filter(x => tripWiseSupport.includes(x.DeviceType.toUpperCase()));\r\n if (selectedReeferData.length != result.length)\r\n hide = true;\r\n else\r\n hide = false;\r\n }\r\n else {\r\n if (tripWiseSupport.includes(selectedReeferData[0].DeviceType.toUpperCase()))\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //if (isMPModelFound > 0) {\r\n // var eligibleForHide = ['SynctoDevice', 'SetDataLogInterval'];\r\n // if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n // hide = true;\r\n // }\r\n // //else { // Commented else code for WI 26604 \r\n // // hide = false; \r\n // //}\r\n //}\r\n\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n if (isValueExits != -1 && hide) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n return visibilitySetting;\r\n },\r\n //getCCAlarmStatus(selectedReeferData) {\r\n // var isDisabled = false;\r\n // var forwardCommandParams = JSON.stringify(selectedReeferData);\r\n // var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetCCAlarmStatus';\r\n // var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data) {\r\n // return isDisabled = false;\r\n // }\r\n // else {\r\n // return isDisabled = true;\r\n // }\r\n // });\r\n //},\r\n //async checkMenuItemClearSetPointDisabled(params) {\r\n // // var isClearSetPointDisabled = true;\r\n // var selectedReeferData = [];\r\n // var selectedRows = params.api.getSelectedRows();\r\n // selectedRows.forEach(function (selectedRow, index) {\r\n // selectedReeferData.push(selectedRow);\r\n // });\r\n // var result = await this.getCCAlarmStatus(selectedReeferData);\r\n // return result;\r\n // //var forwardCommandParams = JSON.stringify(selectedReeferData);\r\n // //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetCCAlarmStatus';\r\n // //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // //fetch(request)\r\n // // .then(RCUtils.handleError)\r\n // // .then(response => response.json() as Promise)\r\n // // .then(data => {\r\n // // if (data) {\r\n // // isClearSetPointDisabled = false;\r\n // // }\r\n // // else {\r\n // // isClearSetPointDisabled = true;\r\n // // }\r\n // // });\r\n // // return isClearSetPointDisabled;\r\n //},\r\n checkCCAssignSubMenuItemDisabled(params, ccProfileId, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n if (selectedReeferData.length > 1) {\r\n return Isdisabled;\r\n }\r\n else {\r\n if (cmdStr === \"AssigntoCargoCare\") {\r\n var checkProfileId = selectedReeferData[0].CargoCareCustomerProfileID;\r\n if (checkProfileId == ccProfileId)\r\n Isdisabled = true;\r\n\r\n return Isdisabled;\r\n }\r\n }\r\n\r\n return Isdisabled;\r\n },\r\n\r\n checkClearCargoCareAlertsSubMenuItemDisabled(params, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n if (selectedReeferData.length > 1) {\r\n return Isdisabled;\r\n }\r\n else {\r\n if (cmdStr === \"ClearCargoCareAlerts\") {\r\n Isdisabled = true;\r\n if (selectedReeferData[0].CCAlarms != null && selectedReeferData[0].CCAlarms != \"\") {\r\n if (selectedReeferData[0].IsCargoCare)\r\n Isdisabled = false;\r\n else\r\n Isdisabled = true;\r\n }\r\n\r\n return Isdisabled;\r\n }\r\n }\r\n\r\n return Isdisabled;\r\n },\r\n checkMenuItemDisabledForDefrost(params, cmdStr, refControllertypes: any) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var isGuestFound;\r\n isGuestFound = selectedReeferData.filter(row => row.DeviceConfig == true);\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isLynxDeviceFound = 0;\r\n var isCT35ML5Found = 0;\r\n var isCT36ML5Found = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {\r\n isLynxDeviceFound = isLynxDeviceFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3500' || val.DeviceType.toString().trim().toUpperCase() == 'CT3600') { //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT35ML5Found = isCT35ML5Found + 1;\r\n }\r\n //if (val.DeviceType.toString().trim().toUpperCase() == 'CT3600') { //IOT Token ML5 on CT 35/36\r\n // var controllerDesc = \"\";\r\n // var controllertype = lodashfilter(refControllertypes, function (item) {\r\n // return item.ControllerTypeCd === val.ControllerTypeCd;\r\n // });\r\n // if (controllertype.length > 0 && controllertype != null) {\r\n // controllerDesc = controllertype[0].ControllerDesc;\r\n // }\r\n // if (controllerDesc == 'ML5')\r\n // isCT36ML5Found = isCT36ML5Found + 1;\r\n //}\r\n }\r\n });\r\n //RCNG-41 start\r\n if (cmdStr === \"RetireOrReactivate\") {\r\n var isActiveFound = 0;\r\n var isDisconnectedFound = 0;\r\n var isRetiredFound = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.AssetState != null && val.AssetState != undefined) {\r\n if (val.AssetState.toString().trim() == 'A') {\r\n isActiveFound = isActiveFound + 1;\r\n }\r\n if (val.AssetState.toString().trim() == 'D') {\r\n isDisconnectedFound = isDisconnectedFound + 1;\r\n }\r\n if (val.AssetState.toString().trim() == 'R') {\r\n isRetiredFound = isRetiredFound + 1;\r\n }\r\n }\r\n });\r\n\r\n if ((isActiveFound > 0 || isDisconnectedFound > 0) && isRetiredFound > 0) {\r\n Isdisabled = true;\r\n }\r\n }\r\n //RCNG-41 end\r\n //RCNG-820\r\n //if (cmdStr === \"EditVoyage\") {\r\n // if (selectedReeferData != null && selectedReeferData != undefined && selectedReeferData.length > 1) {\r\n // var depVVCs = [];\r\n // var arrVVCs = [];\r\n // var arrVessel = [];\r\n // var arrLifeCycleCD = [];\r\n // $.each(selectedReeferData, function (i, val) {\r\n // if (val.DepartingVVC != null && val.DepartingVVC != undefined) {\r\n // depVVCs.push(val.DepartingVVC.toString().trim());\r\n // }\r\n // if (val.ArrivingVVC != null && val.ArrivingVVC != undefined) {\r\n // arrVVCs.push(val.ArrivingVVC.toString().trim());\r\n // }\r\n // if (val.VesselCd != null && val.VesselCd != undefined) {\r\n // arrVessel.push(val.VesselCd.toString().trim());\r\n // }\r\n // if (val.LifecycleCd != null && val.LifecycleCd != undefined) {\r\n // arrLifeCycleCD.push(val.LifecycleCd.toString().trim());\r\n // }\r\n // });\r\n // const allEqual = arr => arr.every(v => v === arr[0])\r\n // if (!allEqual(depVVCs) || !allEqual(arrVVCs) || !allEqual(arrVessel) || !allEqual(arrLifeCycleCD)) {\r\n // Isdisabled = true;\r\n // }\r\n // }\r\n //}\r\n if (cmdStr === \"ClearSetPoint\") {\r\n Isdisabled = true;\r\n if (selectedReeferData[0].IsSetPoint != null) {\r\n\r\n if (selectedReeferData[0].IsSetPoint === 1)\r\n Isdisabled = false;\r\n else if (selectedReeferData[0].IsSetPoint === 0)\r\n Isdisabled = true;\r\n }\r\n\r\n return Isdisabled;\r\n //var forwardCommandParams = JSON.stringify(selectedReeferData);\r\n //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetCCAlarmStatus';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data) {\r\n // Isdisabled = false;\r\n // }\r\n // else {\r\n // Isdisabled = true;\r\n // }\r\n // });\r\n }\r\n\r\n if (cmdStr === \"CurrentDetails\") {\r\n Isdisabled = false;\r\n if (selectedReeferData[0].ReeferID == null || selectedReeferData[0].ReeferID == undefined || selectedReeferData[0].ReeferID == '')\r\n Isdisabled = true;\r\n }\r\n\r\n if (selectedReeferData.length > 1) {\r\n var isAssignCargo = selectedReeferData[0].IsCargoCare;\r\n if (cmdStr === \"CurrentDetails\" || cmdStr === \"ShowPreTripResults\" || cmdStr === \"ConfirmControllerSwap\" || cmdStr === \"BookingandAccess\" || cmdStr === \"ChangeReeferID\" || cmdStr === \"ShowTripWISEReport\" || cmdStr === \"NewBookingandAccess\") {\r\n Isdisabled = true;\r\n }\r\n\r\n if (isGuestFound.length > 0) {\r\n if (cmdStr === \"SetReportingInterval\")\r\n Isdisabled = true;\r\n\r\n }\r\n if (selectedReeferData[0].TripStatusCd != null) {\r\n if (dflag) {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = false;\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n }\r\n else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n if (isAssignCargo) {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = false;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = true;\r\n }\r\n else {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = true;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = false;\r\n }\r\n if (cmdStr === 'Humidity') {\r\n if ((isCT4Found > 0 || isDeviceTypeFound > 0 || isLynxDeviceFound > 0) && (isDeviceTypeFound + isCT4Found + isLynxDeviceFound) != selectedReeferData.length) {\r\n Isdisabled = true;\r\n }\r\n }\r\n if (cmdStr === 'ChgDefrostInterval') {\r\n if ((isCT35ML5Found > 0) && (isCT35ML5Found) != selectedReeferData.length) {\r\n Isdisabled = true;\r\n }\r\n }\r\n if (isLynxDeviceFound > 0) {\r\n var eligibleForShow = ['O2', 'CO2', 'StartDefrost', 'Temperature', 'ChgDefrostInterval', 'RebootReeferController',\r\n 'Defrost', 'GetTripWISEReport'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n Isdisabled = false;\r\n }\r\n var eligibleForHide = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere',\r\n 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'StopPre-Trip', 'Update',\r\n 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'DeviceConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'FreshAirType', 'ChilledandCA', 'GetAssetId',\r\n 'EnableDoorSensor', 'GuestReeferconfiguration', 'AssignPANId', 'StartPre-Trip', 'ChangeReeferID'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n Isdisabled = true;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n var ReeferOEMTypeCd = \"\";\r\n var dflag = selectedReeferData[0].DeviationFlg;\r\n var csflag = selectedReeferData[0].ControllerSerialNumberChgFlag;\r\n var isAssignCargo = selectedReeferData[0].IsCargoCare;\r\n if (selectedReeferData[0].ReeferOEMTypeCd != null)\r\n ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd;\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != '') {\r\n if (ReeferOEMTypeCd.toString().trim() == 'U') {\r\n if (cmdStr === \"Defrost\" || cmdStr === \"StartPre-Trip\" || cmdStr === \"StopPre-Trip\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'TR') {\r\n if (cmdStr === \"Verify\")\r\n Isdisabled = true;\r\n }\r\n if ((ReeferOEMTypeCd.trim() == 'S') || (ReeferOEMTypeCd.trim() == 'T')) {\r\n if (cmdStr === \"ChgDefrostInterval\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C' && (isGuestFound.length > 0)) {\r\n if (cmdStr === \"ChgDefrostInterval\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'T' || ReeferOEMTypeCd.trim() == 'U') {\r\n if (cmdStr === \"ShowPreTripResults\") {\r\n if (ReeferOEMTypeCd.trim() == 'T') {\r\n if (selectedReeferData[0].OEMModel != null && selectedReeferData[0].OEMModel != undefined && selectedReeferData[0].OEMModel != '') {\r\n if (selectedReeferData[0].OEMModel != 'MP3000' && selectedReeferData[0].OEMModel != 'MP3000A') {\r\n Isdisabled = true;\r\n }\r\n }\r\n else\r\n Isdisabled = true;\r\n }\r\n else\r\n Isdisabled = true;\r\n }\r\n }\r\n }\r\n else {\r\n if (cmdStr === \"ShowPreTripResults\")\r\n Isdisabled = true;\r\n }\r\n //if (cmdStr === \"Unassign\") {\r\n // Isdisabled = true;\r\n\r\n // var validateBookingID = false;\r\n // if (selectedReeferData[0].BookingNumber != null) {\r\n // //var lastBookDissociatedEventMasterId = lodashfilter(self.state.reeferFormatter.EventMasterList, function (item) {\r\n // // return item.EventCd.toUpperCase().trim() === \"BDR\";\r\n // //});\r\n\r\n // //var lastBookDeletedEventMasterId = lodashfilter(self.state.reeferFormatter.EventMasterList, function (item) {\r\n // // return item.EventCd.toUpperCase().trim() === \"BDD\";\r\n // //});\r\n\r\n // //var lastBookingEventDetails = [];\r\n // //if (lastBookDissociatedEventMasterId != null)\r\n // // lastBookingEventDetails.push(lastBookDissociatedEventMasterId[0].EventMasterID);\r\n // //if (lastBookDeletedEventMasterId != null)\r\n // // lastBookingEventDetails.push(lastBookDeletedEventMasterId[0].EventMasterID);\r\n // //if (lastBookingEventDetails.length > 0 && lastBookingEventDetails[0].LastBookingEventMasterId != null && lastBookingEventDetails[0].LastBookingEventMasterId.length > 0) {\r\n // // for (var lastBookingID in lastBookingEventDetails) {\r\n // // if (selectedReeferData[0].EventMasterID == parseInt(lastBookingEventDetails[0].LastBookingEventMasterId[lastBookingID])) {\r\n // // validateBookingID = true;\r\n // // }\r\n // // }\r\n // //}\r\n // //if (selectedReeferData.length > 0 && selectedReeferData[0].LastBookingEventMasterId != null && selectedReeferData[0].LastBookingEventMasterId.length > 0) {\r\n // // for (var lastBookingID in selectedReeferData[0].LastBookingEventMasterId) {\r\n // // if (selectedReeferData[0].EventMasterID == parseInt(selectedReeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n // // validateBookingID = true;\r\n // // }\r\n // // }\r\n // //}\r\n // }\r\n // //if (selectedReeferData[0].BookingNumber != null && !self.ValidateBookingID(selectedReeferData)) {\r\n // if (selectedReeferData[0].BookingNumber != null && !validateBookingID) {\r\n // Isdisabled = false;\r\n // }\r\n // else {\r\n // //var forwardCommandParam = JSON.stringify(selectedReeferData);\r\n // //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetUnitAssigned3rdParty';\r\n // //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // //fetch(request)\r\n // // .then(RCUtils.handleError)\r\n // // .then(response => response.json() as Promise)\r\n // // .then(data => {\r\n // // if (data) {\r\n // // if (cmdStr === \"Unassign\")\r\n // // Isdisabled = false;\r\n // // }\r\n // // else {\r\n // // if (cmdStr === \"Unassign\")\r\n // // Isdisabled = true;\r\n // // }\r\n // // });\r\n // if (selectedReeferData != null && selectedReeferData != undefined) {\r\n // if (selectedReeferData[0].CustomerName != \"\") {\r\n // if (selectedReeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n // Isdisabled = true;\r\n // } else {\r\n // Isdisabled = false;\r\n // }\r\n // }\r\n // }\r\n // }\r\n //}\r\n if (isAssignCargo) {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = false;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = true;\r\n }\r\n else {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = true;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = false;\r\n }\r\n if (csflag) {\r\n if (cmdStr === \"ConfirmControllerSwap\")\r\n Isdisabled = false;\r\n }\r\n if (selectedReeferData[0].TripStatusCd != null) {\r\n if (dflag) {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = false;\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n\r\n if (isLynxDeviceFound > 0) {\r\n var eligibleForShow = ['O2', 'CO2', 'Humidity', 'StartDefrost', 'Temperature', 'ChgDefrostInterval', 'RebootReeferController',\r\n 'ChangeReeferID', 'Defrost', 'GetTripWISEReport', 'ShowTripWISEReport', 'StartPre-Trip'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n Isdisabled = false;\r\n }\r\n var eligibleForHide = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere',\r\n 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'StopPre-Trip', 'Update',\r\n 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'DeviceConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'FreshAirType', 'ChilledandCA', 'GetAssetId',\r\n 'EnableDoorSensor', 'GuestReeferconfiguration', 'AssignPANId'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n Isdisabled = true;\r\n }\r\n }\r\n\r\n }\r\n return Isdisabled;\r\n },\r\n checkMenuItemDisabledForTDD(params, cmdStr, refControllertypes: any) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var isGuestFound;\r\n isGuestFound = selectedReeferData.filter(row => row.DeviceConfig == true);\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isCT35ML5Found = 0;\r\n var isCT36ML5Found = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3500') { //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT35ML5Found = isCT35ML5Found + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3600') { //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT36ML5Found = isCT36ML5Found + 1;\r\n }\r\n }\r\n });\r\n if (selectedReeferData.length > 1) {\r\n if (cmdStr === 'ReeferDataLog') {\r\n if ((isCT36ML5Found > 0 || isCT35ML5Found > 0) && (isCT36ML5Found + isCT35ML5Found) != selectedReeferData.length) {\r\n Isdisabled = true;\r\n }\r\n }\r\n }\r\n return Isdisabled;\r\n },\r\n checkMenuItemDisabled(params, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var isGuestFound;\r\n isGuestFound = selectedReeferData.filter(row => row.DeviceConfig == true);\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isLynxDeviceFound = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {\r\n isLynxDeviceFound = isLynxDeviceFound + 1;\r\n }\r\n }\r\n });\r\n //RCNG-41 start\r\n if (cmdStr === \"RetireOrReactivate\") {\r\n var isActiveFound = 0;\r\n var isDisconnectedFound = 0;\r\n var isRetiredFound = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.AssetState != null && val.AssetState != undefined) {\r\n if (val.AssetState.toString().trim() == 'A') {\r\n isActiveFound = isActiveFound + 1;\r\n }\r\n if (val.AssetState.toString().trim() == 'D') {\r\n isDisconnectedFound = isDisconnectedFound + 1;\r\n }\r\n if (val.AssetState.toString().trim() == 'R') {\r\n isRetiredFound = isRetiredFound + 1;\r\n }\r\n }\r\n });\r\n\r\n if ((isActiveFound > 0 || isDisconnectedFound > 0) && isRetiredFound > 0) {\r\n Isdisabled = true;\r\n }\r\n }\r\n //RCNG-41 end\r\n //RCNG-820\r\n //if (cmdStr === \"EditVoyage\") {\r\n // if (selectedReeferData != null && selectedReeferData != undefined && selectedReeferData.length > 1) {\r\n // var depVVCs = [];\r\n // var arrVVCs = [];\r\n // var arrVessel = [];\r\n // var arrLifeCycleCD = [];\r\n // $.each(selectedReeferData, function (i, val) {\r\n // if (val.DepartingVVC != null && val.DepartingVVC != undefined) {\r\n // depVVCs.push(val.DepartingVVC.toString().trim());\r\n // }\r\n // if (val.ArrivingVVC != null && val.ArrivingVVC != undefined) {\r\n // arrVVCs.push(val.ArrivingVVC.toString().trim());\r\n // }\r\n // if (val.VesselCd != null && val.VesselCd != undefined) {\r\n // arrVessel.push(val.VesselCd.toString().trim());\r\n // }\r\n // if (val.LifecycleCd != null && val.LifecycleCd != undefined) {\r\n // arrLifeCycleCD.push(val.LifecycleCd.toString().trim());\r\n // }\r\n // });\r\n // const allEqual = arr => arr.every(v => v === arr[0])\r\n // if (!allEqual(depVVCs) || !allEqual(arrVVCs) || !allEqual(arrVessel) || !allEqual(arrLifeCycleCD)) {\r\n // Isdisabled = true;\r\n // }\r\n // }\r\n //}\r\n if (cmdStr === \"ClearSetPoint\") {\r\n Isdisabled = true;\r\n if (selectedReeferData[0].IsSetPoint != null) {\r\n\r\n if (selectedReeferData[0].IsSetPoint === 1)\r\n Isdisabled = false;\r\n else if (selectedReeferData[0].IsSetPoint === 0)\r\n Isdisabled = true;\r\n }\r\n\r\n return Isdisabled;\r\n //var forwardCommandParams = JSON.stringify(selectedReeferData);\r\n //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetCCAlarmStatus';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data) {\r\n // Isdisabled = false;\r\n // }\r\n // else {\r\n // Isdisabled = true;\r\n // }\r\n // });\r\n }\r\n\r\n if (cmdStr === \"CurrentDetails\") {\r\n Isdisabled = false;\r\n if (selectedReeferData[0].ReeferID == null || selectedReeferData[0].ReeferID == undefined || selectedReeferData[0].ReeferID == '')\r\n Isdisabled = true;\r\n }\r\n\r\n if (selectedReeferData.length > 1) {\r\n var isAssignCargo = selectedReeferData[0].IsCargoCare;\r\n if (cmdStr === \"CurrentDetails\" || cmdStr === \"ShowPreTripResults\" || cmdStr === \"ConfirmControllerSwap\" || cmdStr === \"BookingandAccess\" || cmdStr === \"ChangeReeferID\" || cmdStr === \"ShowTripWISEReport\" || cmdStr === \"NewBookingandAccess\") {\r\n Isdisabled = true;\r\n }\r\n\r\n if (isGuestFound.length > 0) {\r\n if (cmdStr === \"SetReportingInterval\")\r\n Isdisabled = true;\r\n\r\n }\r\n if (selectedReeferData[0].TripStatusCd != null) {\r\n if (dflag) {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = false;\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n }\r\n else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n if (isAssignCargo) {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = false;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = true;\r\n }\r\n else {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = true;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = false;\r\n }\r\n if (cmdStr === 'Humidity') {\r\n if ((isCT4Found > 0 || isDeviceTypeFound > 0 || isLynxDeviceFound > 0) && (isDeviceTypeFound + isCT4Found + isLynxDeviceFound) != selectedReeferData.length) {\r\n Isdisabled = true;\r\n }\r\n }\r\n if (isLynxDeviceFound > 0) {\r\n var eligibleForShow = ['O2', 'CO2', 'StartDefrost', 'Temperature', 'ChgDefrostInterval', 'RebootReeferController',\r\n 'Defrost', 'GetTripWISEReport'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n Isdisabled = false;\r\n }\r\n var eligibleForHide = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere',\r\n 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'StopPre-Trip', 'Update',\r\n 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'DeviceConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'FreshAirType', 'ChilledandCA', 'GetAssetId',\r\n 'EnableDoorSensor', 'GuestReeferconfiguration', 'AssignPANId', 'StartPre-Trip', 'ChangeReeferID'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n Isdisabled = true;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n var ReeferOEMTypeCd = \"\";\r\n var dflag = selectedReeferData[0].DeviationFlg;\r\n var csflag = selectedReeferData[0].ControllerSerialNumberChgFlag;\r\n var isAssignCargo = selectedReeferData[0].IsCargoCare;\r\n if (selectedReeferData[0].ReeferOEMTypeCd != null)\r\n ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd;\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != '') {\r\n if (ReeferOEMTypeCd.toString().trim() == 'U') {\r\n if (cmdStr === \"Defrost\" || cmdStr === \"StartPre-Trip\" || cmdStr === \"StopPre-Trip\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'TR') {\r\n if (cmdStr === \"Verify\")\r\n Isdisabled = true;\r\n }\r\n if ((ReeferOEMTypeCd.trim() == 'S') || (ReeferOEMTypeCd.trim() == 'T')) {\r\n if (cmdStr === \"ChgDefrostInterval\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C' && (isGuestFound.length > 0)) {\r\n if (cmdStr === \"ChgDefrostInterval\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'T' || ReeferOEMTypeCd.trim() == 'U') {\r\n if (cmdStr === \"ShowPreTripResults\") {\r\n if (ReeferOEMTypeCd.trim() == 'T') {\r\n if (selectedReeferData[0].OEMModel != null && selectedReeferData[0].OEMModel != undefined && selectedReeferData[0].OEMModel != '') {\r\n if (selectedReeferData[0].OEMModel != 'MP3000' && selectedReeferData[0].OEMModel != 'MP3000A') {\r\n Isdisabled = true;\r\n }\r\n }\r\n else\r\n Isdisabled = true;\r\n }\r\n else\r\n Isdisabled = true;\r\n }\r\n }\r\n }\r\n else {\r\n if (cmdStr === \"ShowPreTripResults\")\r\n Isdisabled = true;\r\n }\r\n //if (cmdStr === \"Unassign\") {\r\n // Isdisabled = true;\r\n\r\n // var validateBookingID = false;\r\n // if (selectedReeferData[0].BookingNumber != null) {\r\n // //var lastBookDissociatedEventMasterId = lodashfilter(self.state.reeferFormatter.EventMasterList, function (item) {\r\n // // return item.EventCd.toUpperCase().trim() === \"BDR\";\r\n // //});\r\n\r\n // //var lastBookDeletedEventMasterId = lodashfilter(self.state.reeferFormatter.EventMasterList, function (item) {\r\n // // return item.EventCd.toUpperCase().trim() === \"BDD\";\r\n // //});\r\n\r\n // //var lastBookingEventDetails = [];\r\n // //if (lastBookDissociatedEventMasterId != null)\r\n // // lastBookingEventDetails.push(lastBookDissociatedEventMasterId[0].EventMasterID);\r\n // //if (lastBookDeletedEventMasterId != null)\r\n // // lastBookingEventDetails.push(lastBookDeletedEventMasterId[0].EventMasterID);\r\n // //if (lastBookingEventDetails.length > 0 && lastBookingEventDetails[0].LastBookingEventMasterId != null && lastBookingEventDetails[0].LastBookingEventMasterId.length > 0) {\r\n // // for (var lastBookingID in lastBookingEventDetails) {\r\n // // if (selectedReeferData[0].EventMasterID == parseInt(lastBookingEventDetails[0].LastBookingEventMasterId[lastBookingID])) {\r\n // // validateBookingID = true;\r\n // // }\r\n // // }\r\n // //}\r\n // //if (selectedReeferData.length > 0 && selectedReeferData[0].LastBookingEventMasterId != null && selectedReeferData[0].LastBookingEventMasterId.length > 0) {\r\n // // for (var lastBookingID in selectedReeferData[0].LastBookingEventMasterId) {\r\n // // if (selectedReeferData[0].EventMasterID == parseInt(selectedReeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n // // validateBookingID = true;\r\n // // }\r\n // // }\r\n // //}\r\n // }\r\n // //if (selectedReeferData[0].BookingNumber != null && !self.ValidateBookingID(selectedReeferData)) {\r\n // if (selectedReeferData[0].BookingNumber != null && !validateBookingID) {\r\n // Isdisabled = false;\r\n // }\r\n // else {\r\n // //var forwardCommandParam = JSON.stringify(selectedReeferData);\r\n // //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetUnitAssigned3rdParty';\r\n // //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // //fetch(request)\r\n // // .then(RCUtils.handleError)\r\n // // .then(response => response.json() as Promise)\r\n // // .then(data => {\r\n // // if (data) {\r\n // // if (cmdStr === \"Unassign\")\r\n // // Isdisabled = false;\r\n // // }\r\n // // else {\r\n // // if (cmdStr === \"Unassign\")\r\n // // Isdisabled = true;\r\n // // }\r\n // // });\r\n // if (selectedReeferData != null && selectedReeferData != undefined) {\r\n // if (selectedReeferData[0].CustomerName != \"\") {\r\n // if (selectedReeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n // Isdisabled = true;\r\n // } else {\r\n // Isdisabled = false;\r\n // }\r\n // }\r\n // }\r\n // }\r\n //}\r\n if (isAssignCargo) {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = false;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = true;\r\n }\r\n else {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = true;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = false;\r\n }\r\n if (csflag) {\r\n if (cmdStr === \"ConfirmControllerSwap\")\r\n Isdisabled = false;\r\n }\r\n if (selectedReeferData[0].TripStatusCd != null) {\r\n if (dflag) {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = false;\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n\r\n if (isLynxDeviceFound > 0) {\r\n var eligibleForShow = ['O2', 'CO2', 'Humidity', 'StartDefrost', 'Temperature', 'ChgDefrostInterval', 'RebootReeferController',\r\n 'ChangeReeferID', 'Defrost', 'GetTripWISEReport', 'ShowTripWISEReport', 'StartPre-Trip'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n Isdisabled = false;\r\n }\r\n var eligibleForHide = ['DeviceResetToDefaults', 'Ping', 'DeviceReset', 'SynctoDevice', 'ClockSyncSettings', 'ControlledAtmosphere',\r\n 'SetDataLogInterval', 'Chilled', 'Frozen', 'CA', 'CAFull', 'CAFunctionTest', 'StopPre-Trip', 'Update',\r\n 'Verify', 'MultipleSetpoints', 'AutomaticColdTreatment', 'ChangeZigbeeConfigSettings',\r\n 'AssetConfiguration', 'DeviceConfiguration', 'Get-FreshAirType', 'Set-FreshAirType', 'FreshAirType', 'ChilledandCA', 'GetAssetId',\r\n 'EnableDoorSensor', 'GuestReeferconfiguration', 'AssignPANId'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n Isdisabled = true;\r\n }\r\n }\r\n\r\n }\r\n return Isdisabled;\r\n },\r\n checkMenuItemDisabledforDimiSetting(params, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n var isZestiaModelFound = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if (val.ReeferOEMTypeCd.trim().toUpperCase() == 'D') {\r\n if (val.UnitTypeCd != null && val.UnitTypeCd != undefined && val.UnitTypeCd != '') {\r\n if (val.UnitTypeCd.trim().toUpperCase() == 'DV' || val.UnitTypeCd.trim().toUpperCase() == 'DA' || val.UnitTypeCd.trim().toUpperCase() == 'DB') {\r\n isZestiaModelFound = isZestiaModelFound + 1;\r\n }\r\n }\r\n }\r\n }\r\n \r\n });\r\n\r\n\r\n if (isZestiaModelFound == 0 || isZestiaModelFound != selectedReeferData.length) {\r\n var eligibleForHide = ['OEMPTI','FanSpeed'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n Isdisabled = true;\r\n }\r\n }\r\n return Isdisabled;\r\n },\r\n checkMenuItemUnAssignDisabled(params, cmdStr, EventMasterList) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var isGuestFound;\r\n isGuestFound = selectedReeferData.filter(row => row.DeviceConfig == true);\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n }\r\n }\r\n });\r\n if (cmdStr === \"ClearSetPoint\") {\r\n Isdisabled = true;\r\n if (selectedReeferData[0].IsSetPoint != null) {\r\n\r\n if (selectedReeferData[0].IsSetPoint === 1)\r\n Isdisabled = false;\r\n else if (selectedReeferData[0].IsSetPoint === 0)\r\n Isdisabled = true;\r\n }\r\n\r\n return Isdisabled;\r\n //var forwardCommandParams = JSON.stringify(selectedReeferData);\r\n //var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetCCAlarmStatus';\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data) {\r\n // Isdisabled = false;\r\n // }\r\n // else {\r\n // Isdisabled = true;\r\n // }\r\n // });\r\n }\r\n\r\n if (selectedReeferData.length > 1) {\r\n var isAssignCargo = selectedReeferData[0].IsCargoCare;\r\n if (cmdStr === \"CurrentDetails\" || cmdStr === \"ShowPreTripResults\" || cmdStr === \"ConfirmControllerSwap\" || cmdStr === \"BookingandAccess\" || cmdStr === \"NewBookingandAccess\" || cmdStr === \"ChangeReeferID\" || cmdStr === \"ShowTripWISEReport\") {\r\n Isdisabled = true;\r\n }\r\n\r\n if (isGuestFound.length > 0) {\r\n if (cmdStr === \"SetReportingInterval\")\r\n Isdisabled = true;\r\n\r\n }\r\n if (selectedReeferData[0].TripStatusCd != null) {\r\n if (dflag) {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = false;\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n }\r\n else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n if (isAssignCargo) {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = false;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = true;\r\n }\r\n else {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = true;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = false;\r\n }\r\n if (cmdStr === 'Humidity') {\r\n if ((isCT4Found > 0 || isDeviceTypeFound > 0) && (isDeviceTypeFound + isCT4Found) != selectedReeferData.length) {\r\n Isdisabled = true;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n var ReeferOEMTypeCd = \"\";\r\n var dflag = selectedReeferData[0].DeviationFlg;\r\n var csflag = selectedReeferData[0].ControllerSerialNumberChgFlag;\r\n var isAssignCargo = selectedReeferData[0].IsCargoCare;\r\n if (selectedReeferData[0].ReeferOEMTypeCd != null)\r\n ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd;\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != '') {\r\n if (ReeferOEMTypeCd.toString().trim() == 'U') {\r\n if (cmdStr === \"Defrost\" || cmdStr === \"StartPre-Trip\" || cmdStr === \"StopPre-Trip\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'TR') {\r\n if (cmdStr === \"Verify\")\r\n Isdisabled = true;\r\n }\r\n if ((ReeferOEMTypeCd.trim() == 'S') || (ReeferOEMTypeCd.trim() == 'T')) {\r\n if (cmdStr === \"ChgDefrostInterval\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'C' && (isGuestFound.length > 0)) {\r\n if (cmdStr === \"ChgDefrostInterval\")\r\n Isdisabled = true;\r\n }\r\n if (ReeferOEMTypeCd.trim() == 'T' || ReeferOEMTypeCd.trim() == 'U') {\r\n if (cmdStr === \"ShowPreTripResults\") {\r\n if (ReeferOEMTypeCd.trim() == 'T') {\r\n if (selectedReeferData[0].OEMModel != null && selectedReeferData[0].OEMModel != undefined && selectedReeferData[0].OEMModel != '') {\r\n if (selectedReeferData[0].OEMModel != 'MP3000' && selectedReeferData[0].OEMModel != 'MP3000A') {\r\n Isdisabled = true;\r\n }\r\n }\r\n else\r\n Isdisabled = true;\r\n }\r\n else\r\n Isdisabled = true;\r\n }\r\n }\r\n }\r\n else {\r\n if (cmdStr === \"ShowPreTripResults\")\r\n Isdisabled = true;\r\n }\r\n if (cmdStr === \"Unassign\") {\r\n Isdisabled = true;\r\n\r\n var validateBookingID = false; var EventCd = \"\"\r\n if (selectedReeferData[0].BookingNumber != null) {\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === selectedReeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n EventCd = eventDescription[0].EventCd;\r\n }\r\n }\r\n if (selectedReeferData[0].BookingNumber != null && EventCd != \"BDR\") {\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (selectedReeferData != null && selectedReeferData != undefined) {\r\n if (selectedReeferData[0].CustomerName != \"\") {\r\n if (selectedReeferData[0].CustomerName === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName) {\r\n Isdisabled = true;\r\n } else {\r\n Isdisabled = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (cmdStr === \"NewBookingEdit\" || cmdStr === \"ViewBooking\") {\r\n Isdisabled = true;\r\n\r\n var validateBookingID = false; var EventCd = \"\"\r\n if (selectedReeferData[0].BookingNumber != null) {\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === selectedReeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n EventCd = eventDescription[0].EventCd;\r\n }\r\n }\r\n if (selectedReeferData[0].BookingNumber != null && EventCd != \"BDR\") {\r\n Isdisabled = false;\r\n }\r\n }\r\n if (cmdStr === \"NewBookingCreate\") {\r\n Isdisabled = true;\r\n var EventCd = \"\"\r\n if (selectedReeferData[0].BookingNumber != null) {\r\n var eventDescription = lodashfilter(EventMasterList, function (item) {\r\n return item.EventMasterID === selectedReeferData[0].EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n EventCd = eventDescription[0].EventCd;\r\n }\r\n if (EventCd == \"BDR\")\r\n Isdisabled = false;\r\n else\r\n Isdisabled = true;\r\n }\r\n else\r\n Isdisabled = false;\r\n\r\n }\r\n if (isAssignCargo) {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = false;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = true;\r\n }\r\n else {\r\n if (cmdStr === \"UnassignfromCargoCare\")\r\n Isdisabled = true;\r\n if (cmdStr === \"AssigntoCargoCare\")\r\n Isdisabled = false;\r\n }\r\n if (csflag) {\r\n if (cmdStr === \"ConfirmControllerSwap\")\r\n Isdisabled = false;\r\n }\r\n if (selectedReeferData[0].TripStatusCd != null) {\r\n if (dflag) {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = false;\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n } else {\r\n if (cmdStr === \"ClearDeviation\")\r\n Isdisabled = true;\r\n }\r\n\r\n }\r\n return Isdisabled;\r\n },\r\n checkMenuItemDisassociate(params, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isActiveAssociation = selectedReeferData[0].IsActive;\r\n if (isActiveAssociation == \"Active\") {\r\n if (cmdStr === \"Disassociate\")\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (cmdStr === \"Disassociate\")\r\n Isdisabled = true;\r\n }\r\n return Isdisabled;\r\n },\r\n checkMenuItemVisibilityMultiple: (params: string) => {\r\n var configState = false;\r\n var visibilitySetting = [];\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n var paramsArray = params.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n\r\n if (rights != null && rights != undefined) {\r\n if (params.length > 0) {\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!configState) {\r\n visibilitySetting.push('hidden');\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkMenuItemVisibilityMultipleInventory: (params: string, params2: any, menuItemName: string) => {\r\n var configState = false;\r\n var visibilitySetting = [];\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n var paramsArray = params.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n\r\n if (rights != null && rights != undefined) {\r\n if (params.length > 0) {\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!configState) {\r\n visibilitySetting.push('hidden');\r\n }\r\n else if (configState) {\r\n //RCNG-41 start\r\n var selectedReeferData: any = [];\r\n var selectedRows = params2.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isActiveFound = 0;\r\n var isDisconnectedFound = 0;\r\n var isRetiredFound = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.AssetState != null && val.AssetState != undefined) {\r\n if (val.AssetState.toString().trim() == 'A') {\r\n isActiveFound = isActiveFound + 1;\r\n }\r\n if (val.AssetState.toString().trim() == 'D') {\r\n isDisconnectedFound = isDisconnectedFound + 1;\r\n }\r\n if (val.AssetState.toString().trim() == 'R') {\r\n isRetiredFound = isRetiredFound + 1;\r\n }\r\n }\r\n });\r\n if ((isActiveFound > 0 || isDisconnectedFound > 0) && menuItemName == \"Reactivate\") {\r\n visibilitySetting.push('hidden');\r\n }\r\n else if (isRetiredFound > 0 && menuItemName == \"Retire\") {\r\n visibilitySetting.push('hidden');\r\n }\r\n else if ((isActiveFound > 0 || isDisconnectedFound > 0) && isRetiredFound > 0) {\r\n visibilitySetting.push('hidden');\r\n }\r\n //RCNG-41 end\r\n\r\n //if (params2 != null && params2 != undefined && params2.node != null && params2.node != undefined\r\n // && params2.node.data != null && params2.node.data != undefined) {\r\n\r\n // if (menuItemName == \"Reactivate\" &&\r\n // (params2.node.data.AssetState === \"A\" || params2.node.data.AssetState === \"D\")) {\r\n // visibilitySetting.push('hidden');\r\n // }\r\n // else if (menuItemName == \"Retire\" && params2.node.data.AssetState === \"R\"){\r\n // visibilitySetting.push('hidden');\r\n // }\r\n\r\n //}\r\n\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkCommandMenuItemVisibilityMultiple: (param1: string, param2: any) => {\r\n var configState = false;\r\n var visibilitySetting = [];\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n var paramsArray = param1.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n\r\n if (rights != null && rights != undefined) {\r\n if (param1.length > 0) {\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n {\r\n var isST9100Present = false;\r\n var selectedReeferData = [];\r\n var selectedRows = param2.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'ST9100') {\r\n isST9100Present = true;\r\n }\r\n }\r\n });\r\n }\r\n if (!configState || isST9100Present) {\r\n visibilitySetting.push('hidden');\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkMenuItemDisabledForCommands: (param1: any, param2: string) => { // Added this methos for RCNG-1842\r\n var Isdisabled = false;\r\n var isArrowspotPresent = false;\r\n var selectedReeferData = [];\r\n var selectedRows = param1.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'ARROWTRACK' || val.DeviceType.toString().trim().toUpperCase() == 'CT1000') {//RCNG-1932 //RCNG-2591\r\n isArrowspotPresent = true;\r\n }\r\n }\r\n });\r\n\r\n if (isArrowspotPresent) {\r\n Isdisabled = true;\r\n }\r\n\r\n return Isdisabled;\r\n },\r\n //RCNG-3056\r\n checkMenuItemDisabledForLynxCommands: (param1: any, param2: string, enableLynxCommands: boolean, enableCT35ML5Commands: boolean, refControllertypes: any) => { // Added this methos for RCNG-1842\r\n var Isdisabled = false;\r\n var isArrowspotPresent = false;\r\n var isLynxPresent = false;\r\n var isCT35ML5Present = false;\r\n var isCT36ML5Present = false;\r\n var selectedReeferData = [];\r\n var selectedRows = param1.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'ARROWTRACK' || val.DeviceType.toString().trim().toUpperCase() == 'CT1000') {//RCNG-1932 //RCNG-2591\r\n isArrowspotPresent = true;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {//RCNG-3056\r\n isLynxPresent = true;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3500') {//RCNG-3425 //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT35ML5Present = true;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3600') {//RCNG-3425 //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT36ML5Present = true;\r\n }\r\n }\r\n });\r\n\r\n if (isArrowspotPresent) {\r\n Isdisabled = true;\r\n return Isdisabled;\r\n }\r\n if (isLynxPresent) {\r\n if (enableLynxCommands)\r\n Isdisabled = false;\r\n else {\r\n Isdisabled = true;\r\n return Isdisabled;\r\n }\r\n }\r\n if (isCT35ML5Present) {\r\n if (enableCT35ML5Commands)\r\n Isdisabled = false;\r\n else {\r\n Isdisabled = true;\r\n return Isdisabled;\r\n }\r\n }\r\n if (isCT36ML5Present) {\r\n Isdisabled = false;\r\n return Isdisabled;\r\n }\r\n return Isdisabled;\r\n },\r\n checkMenuItemDisabledForRcdCommands: (param1: any, param2: string, enableLynxCommands: boolean, enableCT35ML5Commands: boolean) => { // Added this methos for RCNG-1842\r\n var Isdisabled = false;\r\n var isArrowspotPresent = false;\r\n var isCT35ML5Present = false;\r\n var isCT36ML5Present = false;\r\n var selectedReeferData = [];\r\n var selectedRows = param1.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'ARROWTRACK' || val.DeviceType.toString().trim().toUpperCase() == 'CT1000' || val.DeviceType.toString().trim().toUpperCase() == 'CT1010') {//RCNG-1932 //RCNG-2591\r\n isArrowspotPresent = true;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {//RCNG-1932 //RCNG-2591\r\n if (enableLynxCommands == false)\r\n isArrowspotPresent = true;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'SEKSTANT') {//RCNG-3429\r\n isArrowspotPresent = true;\r\n }\r\n //RCNG-3425\r\n if ((val.DeviceType.toString().trim().toUpperCase() == 'CT3500' || val.DeviceType.toString().trim().toUpperCase() == 'CT3600') && val.ControllerDesc.toString().trim().toUpperCase() == 'ML5') { //IOT Token ML5 on CT 35 / 36\r\n //if (enableCT35ML5Commands == false)\r\n isArrowspotPresent = true;\r\n }\r\n }\r\n });\r\n\r\n if (isArrowspotPresent) {\r\n Isdisabled = true;\r\n }\r\n return Isdisabled;\r\n },\r\n\r\n checkMenuItemDisabledForDryEditAsset: (param1: any) => {\r\n var Isdisabled = false;\r\n var isDryAssetPresent = false;\r\n var selectedReeferData = [];\r\n var selectedRows = param1.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT1000' || val.DeviceType.toString().trim().toUpperCase() == 'CT1010') {//RCNG-1932 //RCNG-3860\r\n isDryAssetPresent = true;\r\n }\r\n }\r\n });\r\n\r\n if (!isDryAssetPresent) {\r\n Isdisabled = true;\r\n }\r\n\r\n return Isdisabled;\r\n },\r\n checkMenuItemVisibilityMultipleByData: (rightId: string, params, cmdStr, refControllertypes: any) => {\r\n var visibilitySetting = [];\r\n var dCXDownloads;\r\n dCXDownloads = JSON.parse(sessionStorage.getItem('customerDetails')).DCXDownloads;\r\n var hide = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isSekstantFound = 0;\r\n var isLynxFound = 0;\r\n var isCT35ML5Found = 0;\r\n var isCT36ML5Found = 0;\r\n var isZestiaModelFound = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n }\r\n //if (val.DeviceType.toString().trim() == 'CT4000') {\r\n // isCT4Found = isCT4Found + 1;\r\n //}\r\n if (val.DeviceType.toString().trim() == 'Sekstant') {\r\n isSekstantFound = isSekstantFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {\r\n isLynxFound = isLynxFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3500') { //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT35ML5Found = isCT35ML5Found+1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3600') { //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT36ML5Found = isCT36ML5Found + 1;\r\n }\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if (val.ReeferOEMTypeCd.trim().toUpperCase() == 'D') {\r\n if (val.UnitTypeCd != null && val.UnitTypeCd != undefined && val.UnitTypeCd != '') {\r\n if (val.UnitTypeCd.trim().toUpperCase() == 'DV' || val.UnitTypeCd.trim().toUpperCase() == 'DA' || val.UnitTypeCd.trim().toUpperCase() == 'DB') {\r\n isZestiaModelFound = isZestiaModelFound + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n if (isCT4Found > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferModelConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n if (isLynxFound > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost', 'ReeferPreTrip', 'ReeferDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock',\r\n 'ReeferModelConfiguration', 'Reporting'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n if (isDeviceTypeFound > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferDataLog', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n\r\n if (isSekstantFound > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'ReeferDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Reporting', 'Defrost', 'QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isCT35ML5Found > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Reporting','QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferDataLog', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n if (isCT36ML5Found > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost', 'ReeferDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Reporting', 'QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n var customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;\r\n var eligibleForHide = ['GuestReeferconfiguration', 'ChangeZigbeeConfigSettings', 'AssignPANId', 'DeviceConfiguration', 'AssetConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1 && customerTypeCd != \"SO\") {\r\n hide = true;\r\n }\r\n if (selectedReeferData.length > 1) {\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() != 'C').length)) {\r\n var eligibleForHide = ['ReeferModelConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() != 'S').length)) {\r\n var eligibleForHide = ['FreshAirType'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n\r\n\r\n } else {\r\n var ReeferOEMTypeCd = \"\";\r\n if (selectedReeferData[0].ReeferOEMTypeCd != null)\r\n ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd;\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined && ReeferOEMTypeCd.toString().trim() != 'C') {\r\n var eligibleForHide = ['ReeferModelConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined && ReeferOEMTypeCd.toString().trim() != 'S') {\r\n var eligibleForHide = ['FreshAirType'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n //if (isZestiaModelFound == 0 || isZestiaModelFound != selectedReeferData.length) {\r\n // var eligibleForHide = ['OEMPTI'];\r\n // if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n // hide = true;\r\n // }\r\n //}\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n var configState = false;\r\n var paramsArray = rightId.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n\r\n if (rights != null && rights != undefined) {\r\n if (rightId.length > 0) {\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!configState) {\r\n visibilitySetting.push('hidden');\r\n }\r\n if (configState && hide) {\r\n visibilitySetting.push('hidden');\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkMenuItemVisibilityMultipleByDataForTDD: (rightId: string, params, cmdStr, refControllertypes: any, ShowTDDForCT36ML5: boolean, ShowTDDForCT35ML5: boolean) => {\r\n var visibilitySetting = [];\r\n var dCXDownloads;\r\n dCXDownloads = JSON.parse(sessionStorage.getItem('customerDetails')).DCXDownloads;\r\n var hide = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isSekstantFound = 0;\r\n var isLynxFound = 0;\r\n var isCT35ML5Found = 0;\r\n var isCT36ML5Found = 0;\r\n var isZestiaModelFound = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n }\r\n //if (val.DeviceType.toString().trim() == 'CT4000') {\r\n // isCT4Found = isCT4Found + 1;\r\n //}\r\n if (val.DeviceType.toString().trim() == 'Sekstant') {\r\n isSekstantFound = isSekstantFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'TRIPLINK') {\r\n isLynxFound = isLynxFound + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3500') { //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT35ML5Found = isCT35ML5Found + 1;\r\n }\r\n if (val.DeviceType.toString().trim().toUpperCase() == 'CT3600') { //IOT Token ML5 on CT 35/36\r\n var controllerDesc = \"\";\r\n var controllertype = lodashfilter(refControllertypes, function (item) {\r\n return item.ControllerTypeCd === val.ControllerTypeCd;\r\n });\r\n if (controllertype.length > 0 && controllertype != null) {\r\n controllerDesc = controllertype[0].ControllerDesc;\r\n }\r\n if (controllerDesc == 'ML5')\r\n isCT36ML5Found = isCT36ML5Found + 1;\r\n }\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if (val.ReeferOEMTypeCd.trim().toUpperCase() == 'D') {\r\n if (val.UnitTypeCd != null && val.UnitTypeCd != undefined && val.UnitTypeCd != '') {\r\n if (val.UnitTypeCd.trim().toUpperCase() == 'DV' || val.UnitTypeCd.trim().toUpperCase() == 'DA' || val.UnitTypeCd.trim().toUpperCase() == 'DB') {\r\n isZestiaModelFound = isZestiaModelFound + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n if (isCT4Found > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferModelConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n if (isLynxFound > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost', 'ReeferPreTrip', 'ReeferDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock',\r\n 'ReeferModelConfiguration', 'Reporting'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n if (isDeviceTypeFound > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferDataLog', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n\r\n }\r\n\r\n if (isSekstantFound > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'ReeferDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Reporting', 'Defrost', 'QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (isCT35ML5Found > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost', 'ReeferDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Reporting', 'QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n if (cmdStr === 'ReeferDataLog') {\r\n if (!ShowTDDForCT35ML5)\r\n hide = true;\r\n }\r\n\r\n }\r\n if (isCT36ML5Found > 0) {\r\n var eligibleForShow = ['ChangeSetpoints', 'Defrost', 'ReeferDataLog'];\r\n if (eligibleForShow.indexOf(cmdStr) !== -1) {\r\n hide = false;\r\n }\r\n var eligibleForHide = ['Reporting', 'QueryReeferInventory', 'GuestReeferconfiguration', 'FreshAirType', 'Clock', 'ReeferModelConfiguration', 'ReeferPreTrip'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n if (cmdStr === 'ReeferDataLog') {\r\n if (!ShowTDDForCT36ML5)\r\n hide = true;\r\n }\r\n }\r\n var customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;\r\n var eligibleForHide = ['GuestReeferconfiguration', 'ChangeZigbeeConfigSettings', 'AssignPANId', 'DeviceConfiguration', 'AssetConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1 && customerTypeCd != \"SO\") {\r\n hide = true;\r\n }\r\n if (selectedReeferData.length > 1) {\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() != 'C').length)) {\r\n var eligibleForHide = ['ReeferModelConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (selectedReeferData.length == (selectedReeferData.filter(row => row.ReeferOEMTypeCd && row.ReeferOEMTypeCd.trim() != 'S').length)) {\r\n var eligibleForHide = ['FreshAirType'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n\r\n\r\n } else {\r\n var ReeferOEMTypeCd = \"\";\r\n if (selectedReeferData[0].ReeferOEMTypeCd != null)\r\n ReeferOEMTypeCd = selectedReeferData[0].ReeferOEMTypeCd;\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined && ReeferOEMTypeCd.toString().trim() != 'C') {\r\n var eligibleForHide = ['ReeferModelConfiguration'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n if (ReeferOEMTypeCd != null && ReeferOEMTypeCd != undefined && ReeferOEMTypeCd.toString().trim() != 'S') {\r\n var eligibleForHide = ['FreshAirType'];\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n //if (isZestiaModelFound == 0 || isZestiaModelFound != selectedReeferData.length) {\r\n // var eligibleForHide = ['OEMPTI'];\r\n // if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n // hide = true;\r\n // }\r\n //}\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n var configState = false;\r\n var paramsArray = rightId.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n\r\n if (rights != null && rights != undefined) {\r\n if (rightId.length > 0) {\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!configState) {\r\n visibilitySetting.push('hidden');\r\n }\r\n if (configState && hide) {\r\n visibilitySetting.push('hidden');\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkMenuItemVisibilityForDeviceStatus: (rightId: string, params, cmdStr) => {\r\n var visibilitySetting = [];\r\n var hide = false;\r\n var selectedReeferData = [];\r\n var Isdisabled = false;\r\n var selectedRows = params.api.getSelectedRows();\r\n var isDeviceTypeFound = 0;\r\n var isCT4Found = 0;\r\n var isM2C = 0;\r\n var IsDryDevice = 0;\r\n var isFromVessel = 0;\r\n var isGuestFound;\r\n var isST9100Device = 0;\r\n var isGT1030Device = 0;\r\n if (selectedRows[0].DeviceType != null && selectedRows[0].DeviceType != undefined) {\r\n if (selectedRows[0].DeviceType.toString().trim() == 'WG1' || selectedRows[0].DeviceType.toString().trim() == 'WG2' || selectedRows[0].DeviceType.toString().trim() == 'X47' || selectedRows[0].DeviceType.toString().trim() == 'X48') {\r\n isM2C = isM2C + 1;\r\n }\r\n if (selectedRows[0].DeviceType.toString().trim() == 'X47' || selectedRows[0].DeviceType.toString().trim() == 'X48' || selectedRows[0].DeviceType.toString().trim() == 'GT1200' || selectedRows[0].DeviceType.toString().trim() == 'GT1020') {\r\n IsDryDevice = IsDryDevice + 1;\r\n }\r\n if (selectedRows[0].DeviceType.toString().trim() == 'CT5000') {\r\n isDeviceTypeFound = isDeviceTypeFound + 1;\r\n }\r\n if (selectedRows[0].DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n if (selectedRows[0].VesselCd != undefined && selectedRows[0].VesselCd != null)\r\n isFromVessel = isFromVessel + 1;\r\n }\r\n if (selectedRows[0].DeviceType.toString().trim() == 'ST9100') {\r\n isST9100Device = isST9100Device + 1;\r\n }\r\n if (selectedRows[0].DeviceType.toString().trim() == 'GT1030') {\r\n isGT1030Device = isGT1030Device + 1;\r\n }\r\n }\r\n isGuestFound = selectedRows.filter(row => row.DeviceConfig == true);\r\n if ((IsDryDevice > 0 || isST9100Device > 0 || isGT1030Device > 0) && cmdStr == 'Commands') {\r\n hide = true;\r\n }\r\n else {\r\n if (cmdStr == 'Device Reset To Defaults') {\r\n if (isDeviceTypeFound > 0 || isM2C > 0)\r\n hide = true;\r\n }\r\n if (cmdStr == 'Reporting Interval') {\r\n if (isDeviceTypeFound > 0 || isM2C > 0 || isGuestFound.length > 0)\r\n hide = true;\r\n }\r\n if (cmdStr == 'Device Reset') {\r\n if (isM2C > 0)\r\n hide = true;\r\n }\r\n if (cmdStr == 'Get Asset ID') {\r\n if (!(isCT4Found > 0 && isFromVessel <= 0))//isDeviceTypeFound > 0 ||\r\n hide = true;\r\n }\r\n if (cmdStr == 'Assign PAN Id') {\r\n if (isCT4Found > 0 || isDeviceTypeFound > 0 || isM2C > 0 || JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd != 'SO')\r\n hide = true;\r\n }\r\n if (cmdStr == 'Device Configuration') {\r\n if (isDeviceTypeFound > 0 || isM2C > 0 || JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd != 'SO')\r\n hide = true;\r\n }\r\n if (cmdStr == 'Assign') {\r\n if (JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd != 'SO')\r\n hide = true;\r\n }\r\n }\r\n\r\n if (rightId == null) {\r\n if (hide) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n else {\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n var configState = false;\r\n var paramsArray = rightId.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n if (rights != null && rights != undefined) {\r\n if (rightId.length > 0) {\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!configState) {\r\n //visibilitySetting.push('hidden');\r\n visibilitySetting.push('d-none');\r\n }\r\n if (configState && hide) {\r\n //visibilitySetting.push('hidden');\r\n visibilitySetting.push('d-none');\r\n }\r\n }\r\n return visibilitySetting;\r\n },\r\n\r\n checkMenuItemDisabledFromCCProfileStatus(params, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedRowData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedRowData.push(selectedRow);\r\n });\r\n if (selectedRowData.length > 1) {\r\n var isActiveFound;\r\n isActiveFound = selectedRowData.filter(row => row.StateCd == 'A');\r\n var isInActiveFound;\r\n isInActiveFound = selectedRowData.filter(row => row.StateCd == 'I');\r\n if (isActiveFound.length > 0 && isInActiveFound.length > 0) {\r\n if (cmdStr == 'ActivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeactivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeleteProfile')\r\n Isdisabled = true;\r\n\r\n }\r\n else if (isActiveFound.length > 0 && isInActiveFound.length == 0) {\r\n if (cmdStr == 'ActivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeactivateProfile')\r\n Isdisabled = false;\r\n else if (cmdStr == 'DeleteProfile')\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (cmdStr == 'ActivateProfile')\r\n Isdisabled = false;\r\n else if (cmdStr == 'DeactivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeleteProfile')\r\n Isdisabled = false;\r\n }\r\n }\r\n else {\r\n if (selectedRowData[0].StateCd == 'A') {\r\n if (cmdStr == 'ActivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeactivateProfile')\r\n Isdisabled = false;\r\n else if (cmdStr == 'DeleteProfile')\r\n Isdisabled = false;\r\n }\r\n else if (selectedRowData[0].StateCd == 'I') {\r\n if (cmdStr == 'ActivateProfile')\r\n Isdisabled = false;\r\n else if (cmdStr == 'DeactivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeleteProfile')\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (cmdStr == 'ActivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeactivateProfile')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeleteProfile')\r\n Isdisabled = true;\r\n }\r\n }\r\n\r\n return Isdisabled;\r\n },\r\n\r\n checkMenuItemDisabledFromGroupStatus(params, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedRowData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedRowData.push(selectedRow);\r\n });\r\n\r\n if (selectedRowData.length > 1) {\r\n var isActiveFound;\r\n isActiveFound = selectedRowData.filter(row => row.IsActive == true);\r\n var isInActiveFound;\r\n isInActiveFound = selectedRowData.filter(row => row.IsActive == false);\r\n if (isActiveFound.length > 0 && isInActiveFound.length > 0) {\r\n if (cmdStr == 'ActivateGroup')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeactivateGroup')\r\n Isdisabled = true;\r\n }\r\n else if (isActiveFound.length > 0 && isInActiveFound.length == 0) {\r\n if (cmdStr == 'ActivateGroup')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeactivateGroup')\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (cmdStr == 'ActivateGroup')\r\n Isdisabled = false;\r\n else if (cmdStr == 'DeactivateGroup')\r\n Isdisabled = true;\r\n }\r\n }\r\n else {\r\n if (selectedRowData[0].IsActive == true) {\r\n if (cmdStr == 'ActivateGroup')\r\n Isdisabled = true;\r\n else if (cmdStr == 'DeactivateGroup')\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (cmdStr == 'ActivateGroup')\r\n Isdisabled = false;\r\n else if (cmdStr == 'DeactivateGroup')\r\n Isdisabled = true;\r\n }\r\n }\r\n\r\n return Isdisabled;\r\n },\r\n checkMenuItemDisabledFromUserstatus(params, cmdStr) {\r\n var Isdisabled = false;\r\n var selectedRowData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedRowData.push(selectedRow);\r\n });\r\n if (cmdStr == 'UpdateUser') {\r\n if (selectedRowData.length > 1)\r\n Isdisabled = true;\r\n else\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (selectedRowData.length > 1) {\r\n var isActiveFound;\r\n isActiveFound = selectedRowData.filter(row => row.IsActive == true);\r\n var isInActiveFound;\r\n isInActiveFound = selectedRowData.filter(row => row.IsActive == false);\r\n if (isActiveFound.length > 0 && isInActiveFound.length > 0) {\r\n if (cmdStr == 'ActivateUser')\r\n Isdisabled = true;\r\n else if (cmdStr == 'InactivateUser')\r\n Isdisabled = true;\r\n else if (cmdStr == 'ResetPassword')\r\n Isdisabled = true;\r\n }\r\n else if (isActiveFound.length > 0 && isInActiveFound.length == 0) {\r\n if (cmdStr == 'ActivateUser')\r\n Isdisabled = true;\r\n else if (cmdStr == 'InactivateUser')\r\n Isdisabled = false;\r\n else if (cmdStr == 'ResetPassword')\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (cmdStr == 'ActivateUser')\r\n Isdisabled = false;\r\n else if (cmdStr == 'InactivateUser')\r\n Isdisabled = true;\r\n else if (cmdStr == 'ResetPassword')\r\n Isdisabled = true;\r\n }\r\n }\r\n else {\r\n if (selectedRowData[0].IsActive == true) {\r\n if (cmdStr == 'ActivateUser')\r\n Isdisabled = true;\r\n else if (cmdStr == 'InactivateUser')\r\n Isdisabled = false;\r\n else if (cmdStr == 'ResetPassword')\r\n Isdisabled = false;\r\n }\r\n else {\r\n if (cmdStr == 'ActivateUser')\r\n Isdisabled = false;\r\n else if (cmdStr == 'InactivateUser')\r\n Isdisabled = true;\r\n else if (cmdStr == 'ResetPassword')\r\n Isdisabled = true;\r\n }\r\n }\r\n }\r\n return Isdisabled;\r\n },\r\n checkVisibilityInvisible: (params: string) => {\r\n var visibilitySetting = '';\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(params)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting = 'invisible';\r\n }\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkVisibilityMultipleInvisible: (params: string) => {\r\n var visibilitySetting = 'show';\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n var configState = false;\r\n var paramsArray = params.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n\r\n if (rights != null && rights != undefined) {\r\n if (params.length > 0) {\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!configState) {\r\n visibilitySetting = 'invisible';\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkVisibilityMultiple: (params: string) => {\r\n var visibilitySetting = 'show';\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var isCustomAttributesEnable = JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable;\r\n var rights = JSON.parse(userRights);\r\n var configState = false;\r\n var paramsArray = params.split(',').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n if (rights != null && rights != undefined) {\r\n if (params.length > 0) {\r\n\r\n $.each(paramsArray, function (i, j) {\r\n var m = $.inArray(j.toString(), rights);\r\n if (j == 164) {\r\n if (m != -1 && isCustomAttributesEnable == true)\r\n configState = true;\r\n }\r\n else {\r\n if (m != -1) {\r\n configState = true;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!configState) {\r\n visibilitySetting = 'hidden';\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n checkVisibilityMultipleInventory: (params: string) => {\r\n var visibilitySetting = 'show';\r\n visibilitySetting = 'hidden';\r\n return visibilitySetting;\r\n },\r\n checkMenuItemDisableForCommandStatus(params) {\r\n var isDisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n }\r\n\r\n var isCT4Found = 0;\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT4000') {\r\n isCT4Found = isCT4Found + 1;\r\n }\r\n }\r\n });\r\n\r\n if (selectedReeferData.length > 1) {\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.Status.trim().toUpperCase() == 'AWAITINGPREREQUISITES' || row.Status.trim().toUpperCase() == 'PENDING' || row.Status.trim().toUpperCase() == 'RETRY' || row.Status.trim().toUpperCase() == 'AWAITINGSYNC'\r\n || row.Status.trim().toUpperCase() == 'SENTTOVC' || row.Status.trim().toUpperCase() == 'COMMANDACCEPTEDBYRCD').length) {\r\n if ((selectedReeferData.filter(row => row.Status.trim().toUpperCase() == 'PENDING' || row.Status.trim().toUpperCase() == 'RETRY').length > 0)\r\n && (selectedReeferData.filter(row => (row.CommandTypeCd == 'DGS' || row.CommandTypeCd == 'RFR') && (row.DeviceType != null && row.DeviceType.toString().trim() == 'CT4000')).length > 0)\r\n ) { isDisabled = true; }\r\n else if ((selectedReeferData.filter(row => row.Status.trim().toUpperCase() == 'COMMANDACCEPTEDBYRCD').length > 0)\r\n && (selectedReeferData.filter(row => (row.VesselCd == null)).length > 0)\r\n ) { isDisabled = true; }\r\n else\r\n isDisabled = false;\r\n }\r\n else {\r\n isDisabled = true;\r\n }\r\n }\r\n else {\r\n var dflag = selectedReeferData[0].Status;\r\n var commandTypeCd = selectedReeferData[0].CommandTypeCd;\r\n var vesselCd = selectedReeferData[0].VesselCd;\r\n if (dflag.trim().toUpperCase() == 'AWAITINGPREREQUISITES' || dflag.trim().toUpperCase() == 'PENDING' || dflag.trim().toUpperCase() == 'RETRY' || dflag.trim().toUpperCase() == 'AWAITINGSYNC'\r\n || dflag.trim().toUpperCase() == 'SENTTOVC' || (dflag.trim().toUpperCase() == 'COMMANDACCEPTEDBYRCD' && vesselCd != null)) {\r\n if ((dflag.trim().toUpperCase() == 'PENDING' || dflag.trim().toUpperCase() == 'RETRY')\r\n && (commandTypeCd == 'DGS' || commandTypeCd == 'RFR')\r\n && isCT4Found > 0) { isDisabled = true; }\r\n else\r\n isDisabled = false;\r\n } else {\r\n isDisabled = true;\r\n }\r\n }\r\n\r\n return isDisabled;\r\n },\r\n checkMenuDeploymentDetails(params) {\r\n var isDisabled = false;\r\n var selectedRows = params.api.getSelectedRows();\r\n if (selectedRows.length > 1)\r\n isDisabled = true;\r\n else\r\n isDisabled = false;\r\n\r\n return isDisabled;\r\n },\r\n checkMenuEditDeployment(params) {\r\n var isDisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length > 1)\r\n return true;\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n }\r\n\r\n var EditCnt = 0;\r\n $.each(selectedReeferData, function (index, item) {\r\n if (item.DeploymentStatus == \"Pending\" || item.DeploymentStatus == \"In Progress\") {\r\n EditCnt++;\r\n }\r\n });\r\n\r\n if (EditCnt == selectedReeferData.length) {\r\n isDisabled = false;\r\n }\r\n else {\r\n isDisabled = true;\r\n }\r\n\r\n return isDisabled;\r\n },\r\n checkMenuDeleteDeployment(params) {\r\n var isDisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n }\r\n\r\n var DeleteCnt = 0;\r\n $.each(selectedReeferData, function (index, item) {\r\n if (item.DeploymentStatus == \"Pending\") {\r\n DeleteCnt++;\r\n }\r\n });\r\n if (DeleteCnt == selectedReeferData.length) {\r\n isDisabled = false;\r\n }\r\n else {\r\n isDisabled = true;\r\n }\r\n\r\n return isDisabled;\r\n },\r\n checkMenuStopDeployment(params) {\r\n var isDisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n }\r\n\r\n var StopCnt = 0;\r\n $.each(selectedReeferData, function (index, item) {\r\n if (item.DeploymentStatus == \"In Progress\") {\r\n StopCnt++;\r\n }\r\n });\r\n\r\n if (StopCnt == selectedReeferData.length) {\r\n isDisabled = false;\r\n }\r\n else {\r\n isDisabled = true;\r\n }\r\n\r\n return isDisabled;\r\n },\r\n checkMenuStatisticsDeployment(params) {\r\n var isDisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length > 1)\r\n return true;\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n }\r\n\r\n var StatisticCnt = 0;\r\n $.each(selectedReeferData, function (index, item) {\r\n if (item.DeploymentStatus != \"Pending\") {\r\n StatisticCnt++;\r\n }\r\n });\r\n\r\n if (StatisticCnt == selectedReeferData.length) {\r\n isDisabled = false;\r\n }\r\n else {\r\n isDisabled = true;\r\n }\r\n\r\n return isDisabled;\r\n },\r\n checkMenuEditFileRepository(params) {\r\n var isDisabled = false;\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length > 1)\r\n isDisabled = true;\r\n else {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n if (selectedRow.data.IsDeployed == false)\r\n isDisabled = false\r\n else\r\n isDisabled = true;\r\n }\r\n\r\n return isDisabled;\r\n },\r\n checkMenuDeleteFileRepository(params) {\r\n var isDisabled = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n }\r\n\r\n var selectedDeployedCount = 0;\r\n $.each(selectedReeferData, function (index, item) {\r\n if (item.IsDeployed == false) {\r\n selectedDeployedCount++;\r\n }\r\n });\r\n\r\n if (selectedDeployedCount == selectedReeferData.length) {\r\n isDisabled = false;\r\n }\r\n else {\r\n isDisabled = true;\r\n }\r\n\r\n return isDisabled;\r\n },\r\n checkMenuItemVisibilityForPTWidget: (rightId: string, params, cmdStr) => {\r\n var tripWISEReport;\r\n tripWISEReport = JSON.parse(sessionStorage.getItem('customerDetails')).TripWISEreport;\r\n var visibilitySetting = [];\r\n var hide = false;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n var isCT4AndLynkFound = 0;\r\n\r\n $.each(selectedReeferData, function (i, val)\r\n {\r\n if (val.DeviceType != null && val.DeviceType != undefined) {\r\n if (val.DeviceType.toString().trim() == 'CT4000' || val.DeviceType.toString().trim() == 'TripLINK') {\r\n isCT4AndLynkFound = isCT4AndLynkFound + 1;\r\n }\r\n }\r\n });\r\n\r\n if (isCT4AndLynkFound > 0) {\r\n var eligibleTWReportForShowHide = ['ShowTripWISEReport'];\r\n if (eligibleTWReportForShowHide.indexOf(cmdStr) !== -1) {\r\n if (tripWISEReport == true)\r\n hide = false;\r\n else\r\n hide = true;\r\n }\r\n }\r\n\r\n\r\n if (selectedReeferData.length > 1) {\r\n\r\n var eligibleForHide = ['ShowTripWISEReport']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n else {\r\n if (!(isCT4AndLynkFound > 0)) {\r\n var eligibleForHide = ['ShowTripWISEReport']\r\n if (eligibleForHide.indexOf(cmdStr) !== -1) {\r\n hide = true;\r\n }\r\n }\r\n }\r\n\r\n var userRights: any = sessionStorage.getItem('userRights');\r\n var rights = JSON.parse(userRights);\r\n if (rights != null && rights != undefined) {\r\n var rightValue = [parseInt(rightId)];\r\n var isValueExits = $.inArray(rightValue.toString(), rights);\r\n if (isValueExits == -1) {\r\n visibilitySetting.push('hidden');\r\n }\r\n if (isValueExits != -1 && hide) {\r\n visibilitySetting.push('hidden');\r\n }\r\n }\r\n\r\n return visibilitySetting;\r\n },\r\n\r\n}\r\n\r\nexport default userRights;","// @ts-nocheck\r\n/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\n//import Bing from '../../actions/ReeferMapCallout.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMapCallout.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport MapCallout from '../../actions/MapCallout';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../actions/Formatters';\r\nimport DryFormatters from '../../actions/DryFormatter';\r\nimport { DryCellRenderer } from '../../actions/DryCellRenderer';\r\nimport $ from 'jquery';\r\n\r\nimport DateFormat from 'dateformat';\r\nimport moment from 'moment';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGConfirmWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { GridToolBarExcel } from '../sharedcomponents/GridToolBarExcel';\r\nimport lodashfilter from 'lodash/filter';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\n//import '../../../node_modules/react-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface DryGridState {\r\n rowData: DryUnitHistoryUI[],\r\n columnDefs: any[],\r\n Filters: DryHistoryFilter,\r\n mapState: string,\r\n overlayLoadingTemplate: any,\r\n pageSize: any,\r\n gridApiParams: any,\r\n PreferenceDTTM: any,\r\n selectedDataItems: any[],\r\n IsLocationEstimated: boolean,\r\n DashboardPreferenceId: any;\r\n DashboardWidgetsSearch: any[];\r\n IsReadOnly: any;\r\n RevisionNum: any;\r\n geoZonesEnabled: boolean;\r\n geoZonesImage: boolean;\r\n}\r\n\r\nvar self;\r\nvar reeferCurrentStatus;\r\nvar selectedReefer = [];\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar functionId;\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar dryAssetSensors: any[];\r\n\r\nexport class DryMapGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.initHistoryFilters();//new DryHistoryFilter();\r\n functionId = 49; // functionId for DryHistory Grid\r\n //var columnDefs = this.createColumnDefs();\r\n columnDefs2 = this.createColumnDefs();\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomerDeviceTypeSensor');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.renderCustomerDeviceTypeSensorColumns(data);\r\n });\r\n var overlayTemplate = 'Loading...';\r\n reeferCurrentStatus = [];\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n if (this.props.historyData != undefined && this.props.historyData != null) {\r\n reeferCurrentStatus.push(this.props.historyData[0]);\r\n this.state = {\r\n rowData: this.props.historyData[0],\r\n columnDefs: [],\r\n Filters: filterSet,\r\n mapState: \"CurrentLocation\",\r\n overlayLoadingTemplate: overlayTemplate,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n selectedDataItems: [],\r\n IsLocationEstimated: false,\r\n DashboardWidgetsSearch: [],\r\n IsReadOnly: false,\r\n DashboardPreferenceId: 0,\r\n RevisionNum: 0,\r\n geoZonesEnabled: true,\r\n geoZonesImage: true\r\n };\r\n }\r\n else\r\n this.state = {\r\n rowData: [], columnDefs: [], Filters: filterSet, mapState: \"CurrentLocation\", overlayLoadingTemplate: overlayTemplate\r\n , pageSize: 25\r\n , gridApiParams: []\r\n , PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm)\r\n , selectedDataItems: []\r\n , IsLocationEstimated: false\r\n , DashboardWidgetsSearch: []\r\n , IsReadOnly: false\r\n , DashboardPreferenceId: 0\r\n , RevisionNum: 0\r\n };\r\n //this.PopulateReeferenceData();//WI-21810:QA_IE_Event description is displayed as 'NA' in reefer map screen\r\n this.GetDefaultGridPreferenceColumns();\r\n this.populateDefaultDates();\r\n self = this;\r\n }\r\n \r\n GetDefaultGridPreferenceColumns() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n {\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n if(defaultPreferenceName.length>0) \r\n this.setState({ DashboardPreferenceId: defaultPreferenceName[0].DashboardPreferenceId, IsReadOnly: defaultPreferenceName[0].IsReadOnly, RevisionNum: defaultPreferenceName[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n this.setState({ DashboardPreferenceId: dashboardLayouts[0].DashboardPreferenceId, IsReadOnly: dashboardLayouts[0].IsReadOnly, RevisionNum: dashboardLayouts[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n }\r\n } \r\n }); \r\n }\r\n\r\n initHistoryFilters() {\r\n var dryHistoryFilter = new DryHistoryFilter();\r\n dryHistoryFilter.AssetNumber = '';\r\n dryHistoryFilter.DeviceNumber = '';\r\n dryHistoryFilter.EventCode = '';\r\n dryHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n dryHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n\r\n return dryHistoryFilter;\r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns(customerDeviceTypeSensor: any) {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n if (customerDeviceTypeSensor != null && customerDeviceTypeSensor != undefined)\r\n dryAssetSensors = customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'D');\r\n\r\n if (dryAssetSensors != null && dryAssetSensors != undefined && dryAssetSensors.length > 0) {\r\n //var door1Column = { headerName: \"Door\", field: \"Door1Open\", cellRenderer: DryFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) };\r\n //generatedColumns.push(door1Column);\r\n\r\n $.each(dryAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n populateDefaultDates() {\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n\r\n onGridReady(params: any) {\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n //this.gridApi.sizeColumnsToFit();\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var gridPreferencesData: any = self.state.DashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 17);\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api);\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"DryMap\");\r\n }, 3000);\r\n }\r\n\r\n refreshGrid = () => {\r\n if (this.state.mapState == \"DryTrace\") {\r\n this.populateSelectedReefersDates();\r\n this.bindDryHistoryData();\r\n MapCallout.UpdateGensetGridName(\"DryTrace\");\r\n }\r\n else {\r\n this.populateDefaultDates();\r\n this.bindReeferCurrentData();\r\n MapCallout.UpdateGensetGridName(\"dry\");\r\n }\r\n };\r\n\r\n onGridSelectionChanged(params: any) {\r\n self.setState({ IsLocationEstimated: false });\r\n var selectedRows = params.api.getSelectedRows();\r\n if (selectedRows != null && selectedRows != undefined) {\r\n if (self.state.mapState == \"CurrentLocation\") {\r\n //selectedRows.forEach(function (selectedRow, index) {\r\n // MapCallout.DisplayDrySelectedPushpin(selectedRow);\r\n // selectedReefer = [];\r\n // selectedReefer.push(selectedRow);\r\n //});\r\n setTimeout(() => { self.showSelectedPushin(selectedRows); }, 500);//RCNG-1355\r\n }\r\n else\r\n self.BindMapPushPin(selectedRows);\r\n\r\n self.setState({\r\n selectedDataItems: selectedRows\r\n });\r\n }\r\n }\r\n\r\n showSelectedPushin(selectedRows: any) {\r\n selectedRows.forEach(function (selectedRow, index) {\r\n MapCallout.DisplayDrySelectedPushpin(selectedRow);\r\n selectedReefer = [];\r\n selectedReefer.push(selectedRow);\r\n });\r\n }\r\n\r\n BindMapPushPin(selectedRows: any) {\r\n var selectedRowsWithCoords = lodashfilter(selectedRows, function (item) {\r\n return item.GPSCoords != null && item.GPSCoords != undefined && item.GPSCoords.toString() != \"\";\r\n });\r\n if (selectedRowsWithCoords != null && selectedRowsWithCoords.length > 0)\r\n MapCallout.DisplayDrySelectedPushpin(selectedRowsWithCoords[0]);\r\n else {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData.length > 0) {\r\n var selectedRowIndex = self.state.rowData.findIndex(row => row.DCHistoryID === selectedRows[0].DCHistoryID);\r\n if (selectedRowIndex != -1) {\r\n if (selectedRowIndex == self.state.rowData.length - 1) {\r\n MapCallout.DisplayDrySelectedPushpin(selectedRows[0]);\r\n }\r\n else {\r\n for (var rowIndex = selectedRowIndex + 1; rowIndex < self.state.rowData.length; rowIndex++) {\r\n var rowCurrentData = self.state.rowData[rowIndex];\r\n if (rowCurrentData.GPSCoords != null && rowCurrentData.GPSCoords != undefined && rowCurrentData.GPSCoords.toString() != \"\") {\r\n self.setState({ IsLocationEstimated: true });\r\n selectedRows[0].Latitude = rowCurrentData.Latitude;\r\n selectedRows[0].Longitude = rowCurrentData.Longitude;\r\n MapCallout.DisplayDrySelectedPushpin(selectedRows[0]);\r\n break;\r\n }\r\n else if (rowIndex == self.state.rowData.length - 1) {\r\n MapCallout.DisplayDrySelectedPushpin(selectedRows[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n populateSelectedReefersDates() {\r\n if (selectedReefer[0].EventDTTM != null && selectedReefer[0].EventDTTM != \"\") {\r\n //var toDTTM = DateFormat(new Date(selectedReefer[0].EventDTTM), 'mm/dd/yyyy');\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currenttoDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var toDTTM = Formatters.DateTimeFormatter(selectedReefer[0].EventDTTM);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n else {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n self.state.Filters.AssetNumber = selectedReefer[0].AssetMasterID;\r\n self.state.Filters.DeviceNumber = selectedReefer[0].DeviceNumber;\r\n self.state.Filters.EventCode = selectedReefer[0].EventCode;\r\n //var CurrentReefers = \"\";\r\n //var CurrentReefersList = [];\r\n //reeferCurrentStatus[0].forEach(function (item, index) {\r\n // CurrentReefersList.push(item.UnitMasterID);\r\n //});\r\n\r\n //CurrentReefers = CurrentReefersList.join(\",\");\r\n //this.state.Filters.Units = CurrentReefers;\r\n }\r\n\r\n bindDryHistoryData() {\r\n self.state.gridApiParams.showLoadingOverlay();\r\n MapCallout.ClearMapPushpins();\r\n self.setState({ IsLocationEstimated: false });\r\n var fromDate = moment(new Date(this.state.Filters.FromDate)).startOf('day').toString();\r\n var toDate = moment(new Date(this.state.Filters.ToDate)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n MapCallout.BindDryTraceMapPushpins(data, \"dryTrace\");\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n\r\n this.setState({\r\n rowData: data\r\n });\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.hideOverlay();\r\n });\r\n }\r\n onCellClickedCopy(event) {\r\n coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n coppiedData = event.value;\r\n }\r\n\r\n bindReeferCurrentData() {\r\n $('#globalLoader').show();\r\n var CurrentReefers = \"\";\r\n var CurrentReefersList = [];\r\n reeferCurrentStatus[0].forEach(function (item, index) {\r\n CurrentReefersList.push(item.AssetNumber);\r\n });\r\n\r\n CurrentReefers = CurrentReefersList.join(\",\");\r\n var reeferSearchFilters: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedReefer: CurrentReefers, SelectedGeofence: '', SelectedInterval: '', SelectedGeofenceInside: '', SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: ''\r\n };//WI-26881\r\n //var filterset: server.AdvancedGensetSearchFilters = {\r\n // CustomerTypeCode: null, CustomerID: null, AssetType: null, AssetNumber: self.state.Filters.AssetNumber, ServerFence: null, DeviceFence: null, Region: null, City: null, State: null, ZipCode: null, Country: null, Geofence: null, POI: null, Oem: null, ReportingInterval: null, GeofenceInside: null\r\n //};\r\n //var filterParams = JSON.stringify(filterset);\r\n var filterParams = JSON.stringify(reeferSearchFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.setState({\r\n rowData: data\r\n });\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n if (data.length > 0) {\r\n MapCallout.BindDryTraceMapPushpins(data, \"Dry\");\r\n MapCallout.DisplayDrySelectedPushpin(data[0]);\r\n }\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n ApplyDryHistorySearch() {\r\n var message = this.ValidateHistoryDates();\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n self.state.gridApiParams.showLoadingOverlay();\r\n MapCallout.ClearMapPushpins();\r\n self.setState({ IsLocationEstimated: false });\r\n var fromDate = moment(new Date(this.state.Filters.FromDate)).startOf('day').toString();\r\n var toDate = moment(new Date(this.state.Filters.ToDate)).endOf('day').toString();\r\n this.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n MapCallout.BindDryTraceMapPushpins(data, \"dryTrace\");\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n this.setState({\r\n rowData: data\r\n });\r\n });\r\n }\r\n\r\n ValidateHistoryDates() {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = this.state.Filters.FromDate;\r\n var toDttm = this.state.Filters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n { headerName: \"PWR\", field: \"DryPWR\", width: 70, cellRenderer: DryCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BATT\", field: \"BatteryPct\", cellRenderer: DryCellRenderer.BatteryPctFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VSL\", field: \"VesselCd\", width: 80, cellRenderer: DryCellRenderer.StringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", tooltipField: \"TripNameAndStatus\", width: 70, cellRenderer: DryCellRenderer.TripstatusIndicator, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Latest Event\",\r\n children: [\r\n { headerName: \"Dry ID\", field: \"AssetNumber\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Event\", field: \"EventDescription\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: 'Last Reported Device Data',\r\n children: [\r\n { headerName: \"Door\", field: \"Door1Open\", cellRenderer: DryFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"Door1EventDttm\", cellRenderer: Formatters.dateTypeFormatter, width: 170, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {headerName: \"Inside temp \", field: \"InsideTemp\", headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"InsideTemp\"); }, cellRenderer: DryFormatters.TemperatureValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)}, \r\n //{ headerName: \"Device Data Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DeviceDataTime\", cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence\", field: \"FenceName\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence ID\", field: \"FenceNameID\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence\", field: \"BackendGeofenceName\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"Region Fence\", field: \"RegionGeofence\", cellRenderer: DryCellRenderer.StringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"Region Fence ID\", field: \"RegionGeofenceName\", cellRenderer: DryCellRenderer.StringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Geofence fevision\", field: \"GeofenceDefinitionRevision\", cellRenderer: Formatters.floatTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Address\", field: \"Address\", cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"City\", field: \"City\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"State\", field: \"State\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Country\", field: \"Country\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Zip\", field: \"ZipCode\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Battery (V)\", field: \"DeviceBattery\", cellRenderer: Formatters.BattVoltageFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, cellRenderer: DryCellRenderer.GPSCoordsFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", cellRenderer: Formatters.secondsToTimeConverter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc acc (m)\", field: \"PositionAccuracy\", valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSAcctypeSorting(params.data.PositionAccuracy); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc HDOP\", field: \"DryGPSHDOP\", valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.DryGPSHDOP, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc sat ct\", field: \"DryGPSSatelliteCount\", valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.DryGPSSatelliteCount, params.data.GPSLockState); }, cellRenderer: DryCellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MNC\", field: \"MNC\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device FW\", field: \"FirmwareVersion\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device bat (V)\", field: \"BattVoltage\", cellRenderer: Formatters.BattVoltageFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Lux\", field: \"Illumination\", cellRenderer: Formatters.LuxValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Bat mode\", field: \"BatteryMode\", valueGetter: (params) => { return Formatters.BatteryModeFormatter(params); }, cellRenderer: Formatters.BatteryModeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"Door bat\", field: \"Door1BattPct\", cellRenderer: DryCellRenderer.DoorBattPctFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"ICCID\", field: \"ICCID\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"EUI\", field: \"EUI\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Cell signal\", field: \"RSSI\", cellRenderer: DryCellRenderer.RSSITypeFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Speed\", field: \"DrySpeed\", headerValueGetter: Formatters.SpeedHeaderFormatter, cellRenderer: DryFormatters.SpeedConverter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Miles\", field: \"Miles\", cellRenderer: Formatters.floatTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device type\", field: \"DeviceType\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", cellRenderer: DryCellRenderer.StringTypeFormatter, width: 180, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Device Gravity Vector Status',\r\n children: [\r\n { headerName: \"X Axis\", field: \"XAxis\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"XAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 180 },\r\n { headerName: \"Y Axis\", field: \"YAxis\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"YAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 180 },\r\n { headerName: \"Z Axis\", field: \"ZAxis\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZAxis\"); }, cellRenderer: Formatters.GravityVectorValueFormatter, width: 180 }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n updateReeferMapDimensions() {\r\n $(\"#reeferMapGrid-height\").css('min-height', $(window).height() - 401);\r\n $(\"#reeferMapGrid-height\").css('max-height', $(window).height() - 401);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateReeferMapDimensions.bind(this));\r\n }\r\n\r\n radioButtonChange(value) {\r\n if (value == \"DryTrace\") {\r\n $('#geoZones').hide();\r\n this.populateSelectedReefersDates();\r\n this.bindDryHistoryData(); \r\n this.setState({ mapState: value });\r\n MapCallout.UpdateGensetGridName(\"DryTrace\"); \r\n document.getElementById(\"lblCurrentLocation\").classList.remove(\"active\");\r\n document.getElementById(\"lblDryTrace\").classList.add(\"active\");\r\n }\r\n else {\r\n $('#geoZones').show(); \r\n this.populateDefaultDates();\r\n this.bindReeferCurrentData(); \r\n this.setState({ mapState: value });\r\n MapCallout.UpdateGensetGridName(\"dry\"); \r\n document.getElementById(\"lblDryTrace\").classList.remove(\"active\");\r\n document.getElementById(\"lblCurrentLocation\").classList.add(\"active\");\r\n }\r\n }\r\n\r\n ShowFullMap() {\r\n $(\"#Container1\").hide();\r\n $(\"#Container2\").hide();\r\n $(\"#Container3\").hide();\r\n $(\"#reeferMapGrid-height\").css('min-height', $(window).height() - 102);\r\n $(\"#reeferMapGrid-height\").css('max-height', $(window).height() - 102);\r\n $(\"#reeferMapGrid-height\").css(\"border\", \"none\");\r\n $(\"#dvFullScreen\").css(\"display\", \"none\");\r\n $(\"#dvResizeScreen\").css(\"display\", \"block\");\r\n $('.ReeferMapCallout').addClass('m-2');\r\n $('#geoZones').removeClass('dryMap-geoZones');\r\n $('#geoZones').addClass('dryMap-geoZones-fullScreen');\r\n }\r\n\r\n MinimizeMap() {\r\n $(\"#Container1\").show();\r\n $(\"#Container2\").show();\r\n $(\"#Container3\").show();\r\n $(\"#reeferMapGrid-height\").css('min-height', $(window).height() - 401);\r\n $(\"#reeferMapGrid-height\").css('max-height', $(window).height() - 401);\r\n $(\"#reeferMapGrid-height\").css(\"border\", \"1px solid #045976\");\r\n $(\"#dvFullScreen\").css(\"display\", \"block\");\r\n $(\"#dvResizeScreen\").css(\"display\", \"none\");\r\n $('.ReeferMapCallout').removeClass('m-2');\r\n $('#geoZones').removeClass('dryMap-geoZones-fullScreen');\r\n $('#geoZones').addClass('dryMap-geoZones');\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n navigateToNextCell(params: any) {\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always on of the 4 keys above\";\r\n }\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function (item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function () {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"DryMap\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGConfirmWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNumConfirm.bind(this, dashboardPreferenceId), self.closeRevisionConfirmation.bind(this));\r\n }\r\n\r\n refreshRevisionNumConfirm(dashboardPreferenceId: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n $('#globalLoader').hide(); \r\n });\r\n }\r\n\r\n refreshRevisionNum(dashboardPreferenceId: any) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n });\r\n }\r\n closeRevisionConfirmation() {\r\n RCNGConfirmWindow.ConfirmWindow.close();\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n From\r\n\r\n \r\n\r\n To\r\n\r\n \r\n\r\n\r\n\r\n {\r\n this.state.mapState == 'CurrentLocation' ?\r\n \r\n :\r\n \r\n }\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.mapState == 'CurrentLocation' ?\r\n \r\n :\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.geoZonesEnabled == true ? \r\n : \r\n }\r\n
    \r\n {this.state.IsLocationEstimated == true ?
    Location estimated
    : ''}\r\n
    \r\n
    \r\n
    ;\r\n }\r\n\r\n showGeoZonesLayer() {\r\n this.setState({ geoZonesEnabled: false });\r\n MapCallout.BindGeoZonesLayer();\r\n }\r\n\r\n hideGeoZonesLayer() {\r\n this.setState({ geoZonesEnabled: true });\r\n MapCallout.DisposeGeozonesLayer();\r\n }\r\n\r\n static UpdateFenceImage(src:any) {\r\n if (src == \"A\")\r\n self.setState({ geoZonesImage: false });\r\n else\r\n self.setState({ geoZonesImage: true });\r\n }\r\n\r\n public componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsForDrys('158');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n MapCallout.InitializeMap(\"reeferMapGrid-height\");\r\n this.updateReeferMapDimensions();\r\n window.addEventListener(\"resize\", this.updateReeferMapDimensions.bind(this));\r\n document.getElementById(\"lblDryTrace\").classList.remove(\"active\");\r\n document.getElementById(\"lblCurrentLocation\").classList.add(\"active\");\r\n\r\n $(\"#dvResizeScreen\").css(\"display\", \"none\");\r\n setTimeout(() => { this.loadTraceMapPushpins(); }, 500);\r\n\r\n }\r\n }\r\n\r\n loadTraceMapPushpins() {\r\n MapCallout.BindDryTraceMapPushpins(reeferCurrentStatus[0], \"dry\");\r\n }\r\n\r\n public componentDidUpdate() {\r\n if (this.state.mapState == 'CurrentLocation') {\r\n $('#dtFromDate *').attr('disabled', 'disabled');\r\n $('#dtToDate *').attr('disabled', 'disabled');\r\n $('#dtFromDate').css('pointer-events', 'none');\r\n $('#dtToDate').css('pointer-events', 'none');\r\n }\r\n else {\r\n $('#dtFromDate *').removeAttr('disabled');\r\n $('#dtToDate *').removeAttr('disabled');\r\n $('#dtFromDate').css('pointer-events', 'auto');\r\n $('#dtToDate').css('pointer-events', 'auto');\r\n }\r\n }\r\n}\r\n\r\nclass DryHistoryFilter {\r\n AssetNumber: string;\r\n DeviceNumber: string;\r\n FromDate: string;\r\n ToDate: string;\r\n EventCode: string;\r\n}\r\n\r\ninterface DryMasterStatus {\r\n DryCurrentConditionId: number;\r\n EventDTTM?: Date;\r\n StrEventDTTM: string;\r\n CreatedDTTM?: Date;\r\n EventDescription: string;\r\n AssetNumber: string;\r\n FenceName: string;\r\n BackendGeofenceName: string;\r\n RegionGeofence: string;\r\n RegionGeofenceName: string;\r\n GeofenceDefinitionRevision: string;\r\n City: string;\r\n State: string;\r\n Country: string;\r\n ZipCode: string;\r\n BattVoltage: number;\r\n GPSCoords: string;\r\n StrGPSDTTM: string;\r\n GPSHDOP: string;\r\n GPSSatelliteCount: string;\r\n CountryName: string;\r\n MNC: string;\r\n TowerLocalizationAreaCode: string;\r\n TowerBaseStationID: string;\r\n RCDID: string;\r\n FirmwareVersion: string;\r\n DeviceBattery: string;\r\n MSISDN: string;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n EUI: string;\r\n RSSI: string;\r\n Speed: number;\r\n DeviceConfig: string;\r\n DeviceType: string;\r\n RCDReportingInterval: string;\r\n CustomerName: string;\r\n ErrorMessage: string;\r\n AssetMasterID: number;\r\n Sensor1Value: number;\r\n Sensor2Value: number;\r\n Sensor3Value: number;\r\n Sensor4Value: number;\r\n Sensor5Value: number;\r\n Sensor6Value: number;\r\n Sensor7Value: number;\r\n Sensor8Value: number;\r\n PositionAccuracy?: number;\r\n}\r\ninterface DryUnitHistoryUI {\r\n DCConditionLogID: number;\r\n EventDTTM?: Date;\r\n StrEventDTTM: string;\r\n Latitude?: number;\r\n Longitude?: number;\r\n EventCD: string;\r\n IsAlarm?: boolean;\r\n CreatedDTTM?: Date;\r\n RCDID: string;\r\n FirmwareVersion: string;\r\n EventDescription: string;\r\n AssetNumber: string;\r\n Speed?: number;\r\n GPSHDOP?: number;\r\n GPSSatelliteCount?: number;\r\n GPSLockState: string;\r\n GeofenceDefinitionRevision?: number;\r\n GPSDTTM?: Date;\r\n StrGPSDTTM: string;\r\n BattVoltage?: number;\r\n BackUpBattVoltage?: number;\r\n ExtBattVoltage?: number;\r\n LSCallFlag: string;\r\n BackendGeofenceName: string;\r\n RSSI?: number;\r\n ManufacturedDate?: Date;\r\n FenceID: string;\r\n FenceName: string;\r\n City: string;\r\n State: string;\r\n RegionGeofenceName: string;\r\n HasAlarm?: boolean;\r\n AlertCount?: number;\r\n ZipCode: string;\r\n Country: string;\r\n CustomerName: string;\r\n GPSCoords: string;\r\n AssetOemDsc: string;\r\n CountryName: string;\r\n MNC: string;\r\n TowerLocalizationAreaCode: string;\r\n TowerBaseStationID: string;\r\n RCDReportingInterval?: number;\r\n MSISDN: string;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n EUI: string;\r\n DeviceConfig?: boolean;\r\n DeviceType: string;\r\n CCSeverityLevelDC: string;\r\n VesselCd: string;\r\n GPSLastLock: string;\r\n FenceNameID: string;\r\n RegionGeofenceNameID: string;\r\n BackendGeofenceNameID: string;\r\n CommentExistsDC: string;\r\n AssetMasterID: number;\r\n Sensor1Value: number;\r\n Sensor2Value: number;\r\n Sensor3Value: number;\r\n Sensor4Value: number;\r\n Sensor5Value: number;\r\n Sensor6Value: number;\r\n Sensor7Value: number;\r\n Sensor8Value: number;\r\n BatteryPct: number;\r\n}\r\n\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF0WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTExLTA3VDE2OjU4OjE0KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTExLTA3VDE2OjU4OjE0KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMS0wN1QxNjo1ODoxNCswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3MDgwNzlhZS1jMmU5LTNlNDUtOWZlYy0xZDA3MWY5YmRmY2YiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDphMDBlN2I1MC0yYTlhLTZlNDUtYmQxMS0wOGVkZWRkOTIwOTIiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1MWM1OGY4MC1kMWE3LTY5NDgtODVkNi0yMDUzNjQyZDM0YmMiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MWM1OGY4MC1kMWE3LTY5NDgtODVkNi0yMDUzNjQyZDM0YmMiIHN0RXZ0OndoZW49IjIwMTktMTEtMDdUMTY6NTg6MTQrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NzA4MDc5YWUtYzJlOS0zZTQ1LTlmZWMtMWQwNzFmOWJkZmNmIiBzdEV2dDp3aGVuPSIyMDE5LTExLTA3VDE2OjU4OjE0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CEi5KwAAAY9JREFUOI2t1btqFVEUxvHfhCOoTYp0FgnhVIGksFFQhKQXxQum9PIMClqJzxBsDghaCl7goEVQSaGFRSQhhSJY+wIpTDQ4FrPmZDmZTBTywWbW2vtbfzZ79qwpyrJ0mOpB8aDo8lzF04gX8Ww/Y3m/NNYyfxxzKZ/FWIzZND8X3r/UBE5jFRuY79j1fHhWo6YVOIE3mIn8dgewXpuJmok24AD9iDex1AFcCo+oGTSBp3A54t+4iOUO4DIuhVfUns7AW8n8BCsdsFrv8DjlNzNwIS0M/LsepXghA/ObWv8P4KcUT2fgkXjuYLtRtLlPDD+jZqRePL/jROR9fEueh/ga8dsGsN9gjHb4PpkWG0VbeBVjq7GWvR8z8HlauINJB2syvLVeZOBLfI54HK8PgE6FZzzyL03gDq6rDpmqCazjbgM8hXtYs9sofuFGMBRlWeb2dUHVqo42dvQDpb3dZRvXMKS9fQ1xRtVJso61wDZwtobV6tmrNZzEeVzBOdWVoroaH1TnNbT7LY9UHPYv4A9ZeVfOK/+IBgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF0WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTExLTA3VDE2OjU5OjAyKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTExLTA3VDE2OjU5OjAyKzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMS0wN1QxNjo1OTowMiswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiMTJiYTlkMC1mMjNmLWVkNDEtYWY3NC0yNDdiNTg4OTI3NTYiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDplZTAyOTQ4OS05ZjRiLTg2NGQtOTIyOS03YmI3MmNhMjk5YTUiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiYzFkZjIyNS1hMmQxLTMyNGYtYWU0Ny04ZDk5NGViMTRhZGIiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYzFkZjIyNS1hMmQxLTMyNGYtYWU0Ny04ZDk5NGViMTRhZGIiIHN0RXZ0OndoZW49IjIwMTktMTEtMDdUMTY6NTk6MDIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YjEyYmE5ZDAtZjIzZi1lZDQxLWFmNzQtMjQ3YjU4ODkyNzU2IiBzdEV2dDp3aGVuPSIyMDE5LTExLTA3VDE2OjU5OjAyKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+x1N/NgAAAZhJREFUOI2t1T9rFGEQx/FPwlloEySdRUK4KpAUNgqKkPSCqJGUGl+DglbHNfoCgs2BoKXgHwhaBA0WWoicJKQwCCli4xsIStTgWezc3WRz2SjkBw87s/ObL8uzz84OdTodR6kaNJvNKs8cnkQ8j6cHGRuNhuEB909gOuVTGI41le5Ph3ePysAJtLGOmYqnnglPO3oGAkfxGpOR36oAdmuT0TM6CNhCPeJtLFYAF8Mjelpl4BlcifgPLmG5AriMy+EVvWcz8GYyP8bbClhXK3iU8oUMnE2Fln/XwxTPZmB+U2v/AfyU4okMPBbXXfwsNW0fEMOv6OmpFtdvOBV5HZvJ8wBfIn5TAtZLjN4Tvkum+VLTDl7G2inVsvdDBj5LhdsYc7jGwtvV8wx8gc8Rj+DVIdDx8IxEvlEG7uK6YpMphsAa7pTA47iLVf1B8Rs3grHn02vjmv4+ncR9fMUPfMcW7kWN4kTM4WMXUp42SzinmCRZx+0fVes4Hz091ezXKk7jIq7iguJIURyN94r9WtL/lnsaOupfwF9qRVXdoJwdrwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAYAAACN1PRVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFwmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wOC0yNlQxMjoxODoyNCswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wOC0yNlQxMjoxODoyNCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDgtMjZUMTI6MTg6MjQrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzYzNTk2ZDUtMTc5YS1kZDRiLThhZmYtOTc3NzA4NjQwYzM4IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6Mjc4NTc3ODktN2NlNy02ZjQ3LThiNzItYmZiZWQ2MDMxY2UyIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZGUzNWQzNWItOTQwYS00OTQwLTlkYmYtMzE5YWNlZjRhZDkwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZGUzNWQzNWItOTQwYS00OTQwLTlkYmYtMzE5YWNlZjRhZDkwIiBzdEV2dDp3aGVuPSIyMDE5LTA4LTI2VDEyOjE4OjI0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjM1OTZkNS0xNzlhLWRkNGItOGFmZi05Nzc3MDg2NDBjMzgiIHN0RXZ0OndoZW49IjIwMTktMDgtMjZUMTI6MTg6MjQrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+His17AAAArZJREFUSInNlr1LG2Ecxz/R9iRoFDQmSg0pCjGmxdEMapq6ONShQ2kHByOU/gcixbFDse6dBOPg0E4OWVzkiDrEMbQxCUQMsWhiFGwUMaU+HbxLznhn40tfvnBwz++e3/dzz/tjEkLwt3Svijr1gB8YALyAG7ABOSAORIBVQAaOr3QSQhg9khDijRAiJapTSqkvGXmaDLrRDSwC3QBL0SzyRp711AHxnQLZw1PsTXW42y30dTXj77Ey3GtXcxPAc6XVF6QHcwNR4P5ybI9gOM3CWoazK8a2xmRitN9BwOdkyNMK8APorQRWwkqgWXmLmVCS5O6RIaRSrrYGJkZcvPY/1AVqYZIC6p6Vt3j76Qv5QrFqkCqrReL9q8cqMKEAiwA1mnoBoHs5tsdMKHkjEEC+UGQmlGQ5tgfnYx5Qv6mwemASIBhOX6vr9JTcPSIYTqvFScW/BPMDnUvRLAtrmVuBVC2sZViKZgE6Ff8SbABA3sgbzjqzVMvYoBN5ykfu4zPkKR9jg07MUq1u/TMhkDfyanEAyjuIF2A9dWD4py+9Hbx74cHRYgbgSWMdnbZ6AOZX0ro5Gj+vtmVugPhOwRA27nOWQKocLWbGfU7DHI2fWwuzAWQPTw0TH3U0Xite4WfTwnIA9qY6w8Sv29+vFa/wy2lhcQB3u8UwcS6cJrN/ciGW2T9hLqw/XhV+cShPkAjwtK+rWV2Ml/Q5sg2cj53ngYXYtwJz4XQprqe+rmb1NaKFrQL4e6x8CCV1p/9J8SfzK2nDmVepGpMJf49VLa5CuRtlYHO4185ov6Mqs99ptN+hHjubin8JdgxMAwR8TlxtDbcCudoaCJSXxLTif2EjDgKJIU8rEyMurBbpRiCrRWJixKWeawnFF/iH59kl4J8+qbXARe74DvJf3K60urN7YzWwO9MvKELbnswwbI0AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAANymlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wOC0xNlQxNToyNTozOCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMjAtMDUtMThUMTM6NDI6NTQrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjAtMDUtMThUMTM6NDI6NTQrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OWFkYjE1YmMtNWU1My1iMjRkLWI2ZTEtMDcwZWQ4MWU1ZTdkIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NzAyMDIzODktOWFmYi0wZDRkLWE1ZGItNzhjY2U2Y2E1OTZjIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3IiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlhSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6WVJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgZXhpZjpDb2xvclNwYWNlPSIxIiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjQiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSIyNCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3IiBzdEV2dDp3aGVuPSIyMDE5LTA4LTE2VDE1OjI1OjM4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYjcwZjA1YS1lNTQ4LTkwNDAtYThkYS1jNDkwZTcwMmJmMmUiIHN0RXZ0OndoZW49IjIwMTktMDgtMTZUMTU6Mjc6MjkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmUxMTc4YTk3LWUwNGMtYzA0Mi1hYWU5LWQxZWJiMTIwYmMxZCIgc3RFdnQ6d2hlbj0iMjAxOS0wOC0xNlQxODo0MDo0MCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTgxNDhhYTUtYWExMi0yYzQ4LWI5ZTYtMDA3Mzc3Zjc2ZmQxIiBzdEV2dDp3aGVuPSIyMDE5LTA4LTE2VDE4OjQwOjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpmMGU4NjUwMi02MTcwLWMxNDgtODQ3OC1lN2Q5Y2UyNmM2MTQiIHN0RXZ0OndoZW49IjIwMTktMDgtMTlUMTA6NDM6MTcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmJhYTdkMTQ4LTg5NDEtYjc0Yi05Y2JjLWJkZjRiNWVlMjA3YyIgc3RFdnQ6d2hlbj0iMjAxOS0wOC0xOVQxMDo0MzoxNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OWFkYjE1YmMtNWU1My1iMjRkLWI2ZTEtMDcwZWQ4MWU1ZTdkIiBzdEV2dDp3aGVuPSIyMDIwLTA1LTE4VDEzOjQyOjU0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYwZTg2NTAyLTYxNzAtYzE0OC04NDc4LWU3ZDljZTI2YzYxNCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjRhNGMxZTAzLWQ0ZWYtZDA0OS05MWVjLTI3NTZlOWEzZmM5NSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjE5YjBmMjBiLWJiYWYtMjA0My1iMzYwLTU0OWMyYzg0YTBjNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpiA/j8AAAI0SURBVEiJtZQ5aFVREIa/LC9GTUI0GDWNaCEp1E5FxYBgYaGNhSAoNhZGS0EtBDFgkSKCTSK4gIUggmAbEMXEBbFwgSCSRSQSIYJNEFGS91m8eXi4vPuyiAPDubP9/x1mzqlR+Z9Su4Cc5cBx4AnwDZgGBoEjQOO81Wo1bVXvmi8Daks1jGrgjeqtDOCP0FSuqoWlEBxSvydAL9Vu9Yz6OvFPqV1LIehLQEbUjiS2UR1P4hfzcPKGXAesSew7wFRifwbuJfbavBnnEQjMJfa2Cjlbku/iYgmKwKfEPgycBZqBVuACcCCJp7mZX82fwf4YYFl+qTNxzib+cXX7YmcAMARMJHYD0BRnXeKfBN4spoP16iV1yIXLU/Wcuqzamh5UH2QKx9R3arECaFF9oY4mvo9qv7o5SzCYJP1W71uaQY26S/1SgWBM7VRrLV3KR5n47TJBX1JwXm3PtqleV+eS4jm1t0LeVkvPy8/Iu4L6KowdFQqILjrUyYRgVG2OWKWarsgbqgWexbwvZ+ZfAFbH3k8BNyndD4FrwEzE2oB2YEXU1QA98T2M2qROBOPuzJ+0hNZYel1n1K8Rq4/YOktDLXdzIrBG1LoyUG84H+e0XNZT6rEK/vo429TpwDppskUF9UME9s1DUk1vBMbDsi8N9kTw+RLB9/j3vnRWIkB9GwlH1U3qBnVVjq5M6grq+6gdSDGzBKf9NxnOdlafWc3+OPcCO+NRa8l5xhqS1ZwFhoHubNIfZI8xTai8EX4AAAAASUVORK5CYII=\"","import * as React from 'react';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { EmailControlExcelPreference } from './../sharedcomponents/EmailControlExcelPreference';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nimport Workbook from 'react-excel-workbook';\r\nimport { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\n//import { EmailControlExcelPreference } from './EmailControlExcelPreference.js';\r\nvar Excel = Exceljs.default;\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderGridPreferenceHtml: any;\r\n renderExportToExcelHTML: any;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridPTIToolBar extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName,\r\n sheetInfo: '', renderGridPreferenceHtml: '', renderExportToExcelHTML: ''\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderETEConfirmationWindowControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n return ;\r\n }\r\n\r\n renderEmailControl() {\r\n return ;\r\n }\r\n\r\n modelDialogHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderEmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogGridPreferenceHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Grid Preference
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderGridPreferenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogExportToExcelHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Export To Excel
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderExportToExcelHTML}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n \r\n ExportToExcel() { \r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString: any = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData:[], ColumnData: []};\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName); \r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName); \r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } \r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n } \r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#DashboardStatus_' + this.props.formName).hide();\r\n }\r\n\r\n EmailTo(functionId: any, widgetId: any) {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ReeferStatusGrid\" || this.props.formName == \"ReeferHistoryGrid\" || this.props.formName == \"PTResultGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.formName,\r\n this.props.parentchild, functionId, widgetId, this.props.gridApiParams, this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n if (this.props.formName == \"PTResultGrid\") {\r\n this.props.renderGridPreferenceDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName);\r\n }\r\n else {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n\r\n ExportToExcelNew(functionId: any, widgetId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"PTResultGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData, this.props.colDefs, this.props.colDefs2, this.props.parentchild);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl(functionId, widgetId) });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadPTIExcel').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {(this.props.formName == \"PTResultGrid\") ?\r\n : \"\"}\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n
    \r\n {this.modelDialogHtml()}\r\n {this.modelDialogGridPreferenceHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
    \r\n }\r\n}","/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Select from 'react-select';\r\nimport \"./../../../node_modules/react-select/dist/react-select.css\"\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport $ from 'jquery';\r\n//import * as moment from 'moment';\r\nimport moment from 'moment';\r\nimport DateFormat from 'dateformat';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { GridPTIToolBar } from '../sharedcomponents/GridPTIToolBar';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker'; \r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { ReeferStatusGrid } from '../childcomponents/ReeferStatusGrid';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport UserRights from '../../actions/UserRights';\r\n\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface PTResultGridState {\r\n loading: boolean;\r\n rowData: server.USP_GetPTResults[];\r\n Filters: server.PTResultFilters;\r\n columnDefs: any[];\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n reeferFormatter: server.ReeferFormatter;\r\n buttonState: boolean;\r\n PreferenceDTTM: any;\r\n dropDownVCInfo: server.VesselInformation[];\r\n dropDownGeoInfo: server.GeofenceData[];\r\n selectedVesselID: number;\r\n selectedGoeID: number;\r\n selectedGoeTag: string;\r\n isClearable: boolean;\r\n PTReport: string;\r\n ReportReeferId: string;\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n TWReport: string;\r\n}\r\nvar self;\r\nvar customerTypeCd;\r\nvar custId;\r\nvar coppiedData;\r\nvar currentMousePos = { x: -1, y: -1 };\r\nvar columnDefs2;\r\nvar functionId;\r\nexport class PTResultGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;//this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;//this.props.loggedInUserData.User.Customer.CustomerId;\r\n var filterSet = this.setDefaultFilters();\r\n var overlayTemplate = 'Loading...';\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var columnDefs = this.createColumnDefs();\r\n this.state = {\r\n loading: true,\r\n rowData: [],\r\n columnDefs: columnDefs,\r\n overlayLoadingTemplate: overlayTemplate,\r\n Filters: filterSet,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n reeferFormatter: this.props.propsReeferFormatterData,\r\n buttonState: false,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n dropDownVCInfo: [],\r\n dropDownGeoInfo: [],\r\n selectedVesselID: 0,\r\n selectedGoeID: 0,\r\n selectedGoeTag: null,\r\n isClearable: true,\r\n PTReport: '',\r\n ReportReeferId: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: '',\r\n modelTitle: '',\r\n popUpHtml: '',\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n TWReport: ''\r\n };\r\n functionId = 66; // functionId for PTResults Grid\r\n self = this;\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.PTResultFilters = {\r\n FromDate: null, ToDate: null,//RCNG-3323\r\n GeofenceTag: null, VesselID: null, GeofenceHistoryUserDataID: null, CustomerID: null, CustomerTypeCd: null, AssetState: null\r\n };\r\n return filters;\r\n }\r\n\r\n componentDidMount() {\r\n //columnDefs2 = this.createColumnDefs();\r\n //var customColDefs = this.createColumnDefs();\r\n //var customChild = customColDefs[0].children.filter(x => x.headerName != \"TW\" && x.headerName != \"TW Time\");\r\n //columnDefs2 = [{ headerName: \"\", children: customChild }];\r\n \r\n \r\n \r\n \r\n //Excel.draggableModalPopup(document.getElementById(\"contextMenuModel-PTR\"));\r\n Excel.preventDefault();\r\n this.renderDateFields();\r\n this.loadData();\r\n self.enableDisableSearchButton(false);\r\n //$('#PTR-grid .ag-column-hover').contextmenu(function (e) {\r\n // var relX = e.pageX - $('#PTR-grid .ag-column-hover').offset().left;\r\n // var relY = e.pageY - $('#PTR-grid .ag-column-hover').offset().top;\r\n // //$(\".context-menu-PTR\").toggle(100).css({\r\n // // top: relY + 12,\r\n // // left: relX + 10\r\n // //});\r\n // var relativeY = 120;\r\n // var relativeX = 120;\r\n // $(\".context-menu-PTR\").css({\r\n // top: relativeY + \"px\",\r\n // left: relativeX + \"px\",\r\n // position: \"absolute\"\r\n // });\r\n\r\n // $(\"#contextmenu-PTR\").hide();\r\n // e.preventDefault();\r\n //});\r\n //$(document).mousemove(function (event) {\r\n // currentMousePos.x = event.pageX;\r\n // currentMousePos.y = event.pageY;\r\n // event.preventDefault();\r\n //});\r\n //var reeferStatusGridRowsCount = this.props.getReeferStatusGridRows;\r\n //if (reeferStatusGridRowsCount > 0) {\r\n // $('#liShowinReeferGrid').removeClass('disabled');\r\n // $('#liShowinReeferGrid').addClass('enabled');\r\n //} else {\r\n // $('#liShowinReeferGrid').removeClass('enabled');\r\n // $('#liShowinReeferGrid').addClass('disabled');\r\n //}\r\n }\r\n \r\n onGridReady(params: any) {\r\n //$('#globalLoader').show();\r\n params.api.showLoadingOverlay();\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 8);\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n //$('#globalLoader').hide();\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"PTResultGrid\");\r\n }\r\n\r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 8);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"PTResultGrid\");\r\n }, 3000); \r\n }\r\n\r\n showGridPreferenceColumns() {\r\n var gridApi = self.state.gridApiParams;\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 8);\r\n var defaultColumns = gridApi.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApi.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n $('#globalLoader').hide();\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, gridApi, gridPreferencesData, \"PTResultGrid\");\r\n }\r\n\r\n refreshGrid = () => {\r\n self.state.gridApiParams.showLoadingOverlay();\r\n this.loadData();\r\n };\r\n\r\n static RefreshPTResultsGrid() {\r\n if (self != null && self != undefined) {\r\n self.state.gridApiParams.showLoadingOverlay();\r\n self.loadData();\r\n }\r\n }\r\n\r\n getPTResultDetails() {\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n self.state.gridApiParams.showLoadingOverlay();\r\n this.loadData();\r\n }\r\n\r\n static ClearHistoryGridData() {\r\n\r\n\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n self.enableDisableSearchButton(false);\r\n }\r\n\r\n static refreshDataGrid() {\r\n self.setState({\r\n rowData: self.state.rowData\r\n });\r\n };\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n }\r\n\r\n createColumnDefs() {\r\n var GeofenceType = JSON.parse(sessionStorage.getItem('UserInfo')).CustomerFenceTypeCd;\r\n if (GeofenceType == \"B\") {\r\n return [ \r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: '',\r\n children: [\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferID); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); },\r\n tooltip: Formatters.toolTipFormatter, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 55, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.PTIType); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", cellRenderer: Formatters.dateTypeFormatter, width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterPTRDateTimeForFilter(params); } }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, field: \"TWState\",\r\n valueGetter: (params) => { return Formatters.TripWiseSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.TwStateForFilter(params); } },\r\n cellRenderer: ReeferCellRenderer.TripWiseFormatter, width: 50, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TWTime\", cellRenderer: Formatters.dateTypeFormatter, width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTWTimeForFilter(params); } }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Geofence\", field: \"ServerGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ServerGeofence); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Vessel\", field: \"VesselName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.VesselName); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n else if (GeofenceType == \"D\") {\r\n return [ \r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: '',\r\n children: [\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferID); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); },\r\n tooltip: Formatters.toolTipFormatter, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 55, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.PTIType); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", enableRowGroup: true,\r\n cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterPTRDateTimeForFilter(params); } }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI\", field: \"TWState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.TripWiseSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.TwStateForFilter(params); } },\r\n cellRenderer: ReeferCellRenderer.TripWiseFormatter, width: 50, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TWTime\", enableRowGroup: true, cellClass: 'myExcelStyle',\r\n sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter, width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTWTimeForFilter(params); } }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Geofence\", field: \"DeviceGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceGeofence); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Vessel\", field: \"VesselName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.VesselName); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n else if (GeofenceType == \"S\") {\r\n return [ \r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: '',\r\n children: [\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferID); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); },\r\n tooltip: Formatters.toolTipFormatter, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 55, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.PTIType); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", enableRowGroup: true, cellClass: 'myExcelStyle',\r\n sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter, width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterPTRDateTimeForFilter(params); } }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI\", field: \"TWState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.TripWiseSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.TwStateForFilter(params); } },\r\n cellRenderer: ReeferCellRenderer.TripWiseFormatter, width: 50, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TWTime\", enableRowGroup: true, cellClass: 'myExcelStyle',\r\n sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter, width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTWTimeForFilter(params); } }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence\", field: \"DeviceGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceGeofence); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"ServerGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ServerGeofence); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Vessel\", field: \"VesselName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.VesselName); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n else {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: '',\r\n children: [\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferID); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); },\r\n tooltip: Formatters.toolTipFormatter, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 55, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.PTIType); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", enableRowGroup: true, cellClass: 'myExcelStyle',\r\n sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter, width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterPTRDateTimeForFilter(params); } }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI\", field: \"TWState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.TripWiseSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.TwStateForFilter(params); } },\r\n cellRenderer: ReeferCellRenderer.TripWiseFormatter, width: 50, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TWTime\", enableRowGroup: true, cellClass: 'myExcelStyle',\r\n sortable: true, filter: true, resizable: true, cellRenderer: Formatters.dateTypeFormatter, width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTWTimeForFilter(params); } }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Geofence\", field: \"GeofenceTag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.GeofenceTag); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Vessel\", field: \"VesselName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.VesselName); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.filter(x => x.colId == fieldName);\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;\r\n\r\n if (fieldValue == \"-NA-\" || fieldValue == \"-999\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n\r\n case \"PTResult\":\r\n return ReeferCellRenderer.PTResultGrouping(fieldValue);\r\n case \"TWState\":\r\n {\r\n var ReeferOemTypeCd = null; var DimiResultActuator = null; var DimiResultAlarm = null; var DimiResultOOR = null; var DimiMode = null; var DimiResultTerm = null;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOemTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOemTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n DimiMode = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiMode;\r\n DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm; //Added DimiResultTerm\r\n }\r\n return ReeferCellRenderer.TripWiseGrouping(fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm, DimiMode);\r\n }\r\n case \"PTRDateTime\":\r\n case \"TWTime\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n default:\r\n return fieldValue;\r\n }\r\n\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n navigateToNextCell(params: any) {\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always on of the 4 keys above\";\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.FromDate;\r\n var toDttm = filters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n //if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n // return \"From date should not be greater than current date.\";\r\n\r\n //if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n // return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n renderDateFields() {\r\n var currentDateFilters = this.state.Filters;\r\n if (currentDateFilters.ToDate != null && currentDateFilters.ToDate != undefined) {\r\n var toDTTM = DateFormat(new Date(currentDateFilters.ToDate), 'mm/dd/yyyy');\r\n var fromDTTM = DateFormat(new Date(currentDateFilters.FromDate), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 29);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n loadData() {\r\n //var varcolumnDefs = this.createColumnDefs();\r\n columnDefs2 = this.createColumnDefs();\r\n //var customColDefs = this.createColumnDefs();\r\n //var customChild = customColDefs[0].children.filter(x => x.headerName != \"TW\" && x.headerName != \"TW Time\");\r\n //columnDefs2 = [{ headerName: \"\", children: customChild }];\r\n this.state.Filters.AssetState = this.props.assetState;\r\n this.state.Filters.CustomerID = custId;\r\n this.state.Filters.CustomerTypeCd = customerTypeCd;\r\n this.state.Filters.GeofenceHistoryUserDataID = this.state.selectedGoeID;\r\n if (this.state.selectedGoeID > 0)\r\n this.state.Filters.GeofenceTag = this.state.selectedGoeTag;\r\n else\r\n this.state.Filters.GeofenceTag = null;\r\n this.state.Filters.VesselID = this.state.selectedVesselID;\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n\r\n //$(\"#globalLoader\").show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetPTResult', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.state.gridApiParams.hideOverlay();\r\n if (data.PTResultsData.length == 0)// RCNG-5070 OMP QA2: \"No Rows To Show\" caption is not showing in all grids in dashboard\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n self.setState({\r\n rowData: data.PTResultsData,\r\n dropDownVCInfo: data.VesselInfoData,\r\n dropDownGeoInfo: data.GeofenceInfoData,\r\n //columnDefs: varcolumnDefs,//customColDefs,\r\n loading: false\r\n });\r\n //$(\"#globalLoader\").hide();\r\n });\r\n }\r\n /* start RCNG-16 */\r\n static GetPTResultsByAssetState(selectedAssetStates: any) {\r\n //if (selectedAssetStates == \"\")\r\n // selectedAssetStates = \"A,D,R\";\r\n self.state.gridApiParams.showLoadingOverlay();\r\n self.state.Filters.AssetState = selectedAssetStates;//RCNG-52\r\n var filterParams = JSON.stringify(self.state.Filters);//RCNG-52\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetPTResult', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTResultsByAssetState?AssetState=' + selectedAssetStates;\r\n //var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n \r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.state.gridApiParams.hideOverlay();\r\n self.setState({\r\n rowData: data.PTResultsData,\r\n dropDownVCInfo: data.VesselInfoData,\r\n dropDownGeoInfo: data.GeofenceInfoData,\r\n //columnDefs: varcolumnDefs,//customColDefs,\r\n loading: false\r\n });\r\n //$(\"#globalLoader\").hide();\r\n });\r\n }\r\n /* end RCNG-16 */\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild);\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n coppiedData = event.value;\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu-PTR\").hide();\r\n $(\"#contextmenu-PTR\").hide();\r\n } \r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n getContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"ReeferID\",self.state.selectedItems);\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var reeferID = selectedrowNode.data.ReeferID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.ReeferID === reeferID)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var reeferStatusGridRowsCount = self.props.getReeferStatusGridRows;\r\n var disableShowinReeferGrid = false;\r\n if (reeferStatusGridRowsCount > 0) {\r\n disableShowinReeferGrid = false;\r\n } else {\r\n disableShowinReeferGrid = true;\r\n }\r\n var result = [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.ptResultContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n }\r\n },\r\n //'copy',\r\n {\r\n name: 'Show Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTIReport();\r\n },\r\n },\r\n {\r\n name: 'Show TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWReport();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityForPTWidget('206', params, 'ShowTripWISEReport'), \r\n },\r\n {\r\n name: 'Select in Reefer Grid',\r\n action: () => {\r\n this.showInReeferGrid();\r\n },\r\n disabled: disableShowinReeferGrid,\r\n }, \r\n ];\r\n return result;\r\n }; \r\n\r\n //getContextMenuItems(params: any) {\r\n // var flag = false;\r\n // var reeferStatusGridRowsCount = self.props.getReeferStatusGridRows;\r\n // if (reeferStatusGridRowsCount > 0) {\r\n // $('#liShowinReeferGrid').removeClass('disabled');\r\n // $('#liShowinReeferGrid').addClass('enabled');\r\n // } else {\r\n // $('#liShowinReeferGrid').removeClass('enabled');\r\n // $('#liShowinReeferGrid').addClass('disabled');\r\n // }\r\n // var selected = params.api.getFocusedCell();\r\n // var selectedrowNode = params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n\r\n // var resortitem = tempArray[selected.rowIndex];\r\n // var reeferid = resortitem.data.ReeferID;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.ReeferID === reeferid)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n \r\n // //$(\".context-menu-PTR\").show(); $(\"#contextmenu-PTR\").show();\r\n // Excel.preventDefault();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n\r\n // $(document).contextmenu(function (e) {\r\n // var divmenuwidth = 390;\r\n // var offset = $(\"#PTR-grid .ag-column-hover\").offset();\r\n // if ((typeof (offset) != 'undefined') && offset != null) {\r\n // if (offset.left > 400) {\r\n // divmenuwidth = 390;\r\n // } else if (offset.left > 890) {\r\n // divmenuwidth = 690;\r\n // } else {\r\n // divmenuwidth = 40;\r\n // }\r\n // }\r\n // /// var relativeX = (e.pageX - offset.left);\r\n // var relativeY = (e.pageY - offset.top + 50);\r\n // var relativeX = e.pageX - divmenuwidth;\r\n\r\n // if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n // relativeX = relativeX - (divmenuwidth + 5);\r\n // }\r\n // var height = $(window).height() - 200;\r\n // var halfheight = ($(window).height()) / 2;\r\n // if (height < relativeY) {\r\n // relativeY = (relativeY - halfheight) + 20;\r\n // }\r\n // $(\".context-menu-PTR\").css({\r\n // top: relativeY + \"px\",\r\n // left: relativeX + \"px\",\r\n // position: \"absolute\"\r\n // });\r\n // $(\"#contextmenu-PTR\").show();\r\n // $(\".context-menu-PTR\").show();\r\n\r\n // });\r\n\r\n\r\n // $(\"#PTR-grid .ag-cell\").unbind(\"contextmenu-PTR\");\r\n // $(\"#PTR-grid .ag-cell\").bind('contextmenu-PTR', function (e) {\r\n\r\n // var flag = false;\r\n // var selected = params.api.getFocusedCell();\r\n // var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n // var tempArray = [];// if sort is clicked save in temp array\r\n // params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n // tempArray.push(rowNode);\r\n // });\r\n // var resortitem = tempArray[selected.rowIndex];\r\n // var sortflage = false;\r\n // var reeferid = resortitem.data.ReeferID;\r\n // params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n // if ((NewrowNode.data.ReeferID === reeferid)) {\r\n // selectedrowNode = NewrowNode;\r\n // return false;\r\n // }\r\n // });\r\n // $.each(self.state.selectedItems, function (index, item) {\r\n // if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n // flag = true;\r\n // return false;\r\n // }\r\n // });\r\n // if (!flag)\r\n // params.api.deselectAll();\r\n // params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n // var reSized = self.props.isResizeClicked;\r\n // if (JSON.stringify(reSized) === 'false') {\r\n // var divmenuwidth = 180;\r\n // } else {\r\n // var divmenuwidth = 20;\r\n // }\r\n // var divmenuwidth = 390;\r\n // var offset = $(\"#PTR-grid .ag-column-hover\").offset();\r\n // if ((typeof (offset) != 'undefined') && offset != null) {\r\n // if (offset.left > 400) {\r\n // divmenuwidth = 390;\r\n // } else {\r\n // divmenuwidth = 40;\r\n // }\r\n // }\r\n // /// var relativeX = (e.pageX - offset.left);\r\n // var relativeY = (e.pageY - offset.top);\r\n // //var relativeX = e.pageX - divmenuwidth;\r\n // var relativeX = (e.pageX - offset.left);\r\n\r\n // if (relativeX > ($(window).width() - (divmenuwidth + 5))) {\r\n // relativeX = relativeX - (divmenuwidth + 5);\r\n // }\r\n // var height = $(window).height();\r\n // var halfheight = ($(window).height()) / 2;\r\n\r\n // if (JSON.stringify(reSized) === 'false') {\r\n // // click on below window half height make to Y top to static value 140px\r\n // if (relativeY > 140) {\r\n // relativeY = 140;\r\n // }\r\n // } else {\r\n // var height = $(window).height() - 200;\r\n // var halfheight = ($(window).height()) / 2;\r\n // if ((window as any).clipboardData) {\r\n // if (height < relativeY + 60) {\r\n // //if IE Browser \r\n // relativeY = (relativeY - 150);\r\n // }\r\n // }\r\n // else if (height < relativeY + 378) {\r\n // relativeY = (relativeY - 135);\r\n // }\r\n // }\r\n // $(\".context-menu\").css({\r\n // top: relativeY + \"px\",\r\n // left: relativeX + \"px\",\r\n // position: \"absolute\"\r\n // });\r\n // $(\"#contextmenu-PTR\").show();\r\n // $(\".context-menu-PTR\").show();\r\n // e.preventDefault();\r\n // return false;\r\n // });\r\n\r\n // $(document).contextmenu(function () {\r\n // return false;\r\n // });\r\n\r\n // $(document).bind('contextmenu-PTR click', function () {\r\n // $(\".context-menu-PTR\").hide();\r\n // });\r\n\r\n // $('.context-menu-PTR').bind('contextmenu-PTR', function () {\r\n // return false;\r\n // });\r\n // $('.context-menu-PTR').on('click', 'li', function () {\r\n // $(\".context-menu-PTR\").hide();\r\n // });\r\n //}\r\n\r\n disableDropDownMenuCollapse() {\r\n $('.disable-collapse').addClass('open');\r\n };\r\n\r\n onSelectionChanged(params: any) {\r\n $(\"#contextmenu-PTR\").show();\r\n //var rights = self.props.loggedInUserData.User.Customer.Rights;\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n }\r\n\r\n\r\n VesselChange(event: React.FormEvent) {\r\n var vesselID: string = event.currentTarget.value;\r\n var index = event.currentTarget.selectedIndex;\r\n //var vesselName: string = event.currentTarget[index].text;\r\n this.setState({\r\n selectedVesselID: parseInt(vesselID)\r\n });\r\n }\r\n\r\n GeofenceChange(event) {\r\n if (event != null) {\r\n var geofID: string = event.value;\r\n var geofName: string = event.label;\r\n this.setState({\r\n selectedGoeID: parseInt(geofID),\r\n selectedGoeTag: geofName\r\n });\r\n }\r\n else {\r\n this.setState({\r\n selectedGoeID: null,\r\n selectedGoeTag: null\r\n });\r\n }\r\n }\r\n\r\n handleCheck(e) {\r\n $('.apply-ptresults').addClass('open');\r\n }\r\n\r\n ptResultContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Copy\": this.ptResultDetailsCopyAction();\r\n break;\r\n }\r\n }\r\n\r\n ptResultDetailsCopyAction() {\r\n //var result = this.copyToClipboard(coppiedData);\r\n self.state.gridApiParams.clipboardService.copyDataToClipboard(coppiedData);\r\n }\r\n showInReeferGrid() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n var reeferStatusGridRowsCount = this.props.getReeferStatusGridRows;\r\n if (reeferStatusGridRowsCount > 0) {\r\n ReeferStatusGrid.ShowCurrentPTRSelectedReefer(reeferData[0]);\r\n }\r\n }\r\n\r\n }\r\n\r\n popUpGetPTIReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ PTReport: result }, () => { self.props.getCommandPopupPTReport(this.state.PTReport); });\r\n this.setState({ ReportReeferId: reeferData[0].ReeferID }, () => { self.props.getCommandPopupReportReeferId(this.state.ReportReeferId); });\r\n $('#globalLoader').hide();\r\n if (this.state.PTReport == null || this.state.PTReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'Pre-Trip Report', popUpHtml:
    }, () => { self.props.getCommandPopupTitleReport(this.state.modelTitle); self.props.getCommandPopupContentReport(this.state.popUpHtml); });\r\n $('#btnTriggerReport').click();\r\n }\r\n });\r\n }\r\n }\r\n\r\n popUpGetTWReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetTripWISEReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ TWReport: result, ReportReeferId: reeferData[0].ReeferID }, () => { this.bindTWReport(); });\r\n });\r\n }\r\n }\r\n bindTWReport() {\r\n self.props.getCommandPopupTWReport(this.state.TWReport);\r\n self.props.getCommandPopupReportReeferId(this.state.ReportReeferId);\r\n $('#globalLoader').hide();\r\n if (this.state.TWReport == null || this.state.TWReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No TripWISE reports have been collected for this reefer. Execute the ‘Get TripWISE Report’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'TripWISE Report', popUpHtml:
    }, () => { self.props.getCommandPopupTitleReport(this.state.modelTitle); self.props.getCommandPopupContentReport(this.state.popUpHtml); });\r\n $('#btnTriggerReportTW').click();\r\n }\r\n }\r\n\r\n\r\n //copyToClipboard(text) {\r\n // if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n // return (window as any).clipboardData.setData(\"Text\", text);\r\n\r\n // } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n // var textarea = document.createElement(\"textarea\");\r\n // textarea.textContent = text;\r\n // textarea.style.position = \"fixed\";\r\n // document.body.appendChild(textarea);\r\n // textarea.select();\r\n // try {\r\n // return document.execCommand(\"copy\");\r\n // } catch (ex) {\r\n // return false;\r\n // } finally {\r\n // document.body.removeChild(textarea);\r\n // }\r\n // }\r\n //}\r\n \r\n \r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n\r\n var GeofenceDefinitions = this.state.dropDownGeoInfo;\r\n\r\n if (GeofenceDefinitions != undefined && GeofenceDefinitions != null && GeofenceDefinitions.length > 0) {\r\n var GeofenceDefinationOptions = GeofenceDefinitions.map(function (geofence) {\r\n return (\r\n { value: geofence.FenceID, label: geofence.Tag }\r\n );\r\n });\r\n }\r\n\r\n return
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\n\r\n\r\n","import * as React from 'react';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from './PopupWindow';\r\nimport $ from 'jquery';\r\nimport MultiSelectListBox from 'react-multiselect-listbox';\r\nimport UserRights from './../../../src/actions/UserRights';\r\nimport { AssetSearch } from './../../../src/actions/CCWizardEmpties'; //'../../actions/CCWizardEmpties.js'\r\nimport forIn from 'lodash/forIn';\r\nvar Config: any = require('../../Config.json');\r\n\r\nexport interface SearchControlsPreference {\r\n selectedSearchControls: any;\r\n}\r\nvar self;\r\nvar hasReefers: boolean = false;\r\nvar hasGensets: boolean = false;\r\nvar hasDrys: boolean = false;\r\nvar hasChassis: boolean = false;\r\nvar assetCount = 0;\r\nvar showOem: boolean = false;\r\nvar showInvState: boolean = false;\r\n\r\nexport class SearchPreferenceControl extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n selectedSearchControls:[]\r\n };\r\n assetCount = 0;\r\n var customer = JSON.parse(sessionStorage.getItem('customerDetails'));\r\n if (customer != null && customer != undefined) {\r\n if (customer.HasReefer && customer.GroupsRights.includes('Reefers')) {\r\n assetCount += 1;\r\n showOem = true;\r\n showInvState = true;\r\n hasReefers = true;\r\n }\r\n if (customer.HasGenset && customer.GroupsRights.includes('Gensets')) {\r\n assetCount += 1;\r\n showOem = true;\r\n hasGensets = true;\r\n }\r\n if (customer.HasDry && customer.GroupsRights.includes('Dry')) {\r\n assetCount += 1;\r\n showInvState = true;\r\n hasDrys = true;\r\n }\r\n if (customer.HasChassis && customer.GroupsRights.includes('Chassis')) {\r\n assetCount += 1;\r\n hasChassis = true;\r\n }\r\n }\r\n self = this;\r\n\r\n }\r\n getSearchControls = () => {\r\n let options = [];\r\n var cargoCareProfileRight = UserRights.checkMenuItemVisibility('247')[0];\r\n forIn(AssetSearch, function (value, key) {\r\n if (((cargoCareProfileRight == \"hidden\") && key == \"CargoCareProfile\")\r\n || (!hasReefers && key == \"BookingNumber\")\r\n || (assetCount == 1 && key == \"AssetTypes\")\r\n || (!showOem && key == \"OEM\")\r\n || (!showInvState && key == \"InventoryState\")\r\n ) {\r\n // dont push \r\n }\r\n else{\r\n options.push({desc: value, value:key})\r\n }\r\n });\r\n \r\n return options;\r\n };\r\n componentDidMount() {\r\n this.LoadSavedSearchItems();\r\n }\r\n LoadSavedSearchItems() {\r\n $('#globalLoader').show();\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var url = Config.ApiBaseUrl + '/api/User/GetUserSearchControlsPreference?dashboardPreferenceId='+dashboardPreferenceId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"\") {\r\n let optionsArray = this.getSearchControls();\r\n let Initialdata = optionsArray.map(i => i.value);\r\n this.setState({ selectedSearchControls: Initialdata }, () => { $('#globalLoader').hide() });\r\n }\r\n else {\r\n if(UserRights.checkMenuItemVisibility('247')[0] == \"hidden\")\r\n {\r\n const index = data.indexOf('CargoCareProfile');\r\n if (index > -1) { \r\n data.splice(index, 1);\r\n } \r\n }\r\n this.setState({ selectedSearchControls: data }, () => { $('#globalLoader').hide() }); \r\n }\r\n });\r\n }\r\n\r\n componentWillReceiveProps() {\r\n this.LoadSavedSearchItems();\r\n } \r\n\r\n handleCancel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n handleResetSearchPreferences() {\r\n this.setState({\r\n selectedSearchControls: this.getSearchControls().map(i => i.value)\r\n })\r\n }\r\n\r\n handleSaveSearchPreferences() {\r\n if (self.state.selectedSearchControls.length == 0)\r\n {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one search field to save search preference.\");\r\n }\r\n else {\r\n this.onSubmit();\r\n }\r\n \r\n }\r\n onSubmit() {\r\n if (self.state.selectedSearchControls.length > 0) {\r\n $('#globalLoader').show();\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var url = Config.ApiBaseUrl + '/api/User/SaveSearchPreference';\r\n var SearchPreferenceData: any = { DashboardPreferenceId : dashboardPreferenceId, SelectedSearchControls: self.state.selectedSearchControls };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(SearchPreferenceData), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n //Save and Close \r\n this.props.saveAndCloseSearchPreferenceDialog(); \r\n }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one search field to save search preference.\");\r\n }\r\n \r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n Fields to Show\r\n\r\n Fields to Hide \r\n\r\n
    \r\n
    \r\n\r\n >)\",\r\n removeAll: \"Remove All (<<)\",\r\n selectedInfo: \"Selected Search Fields\"\r\n }}\r\n sortable={true}\r\n options={this.getSearchControls()}\r\n textField=\"desc\"\r\n valueField=\"value\"\r\n value={this.state.selectedSearchControls}\r\n rowHeight={50}\r\n onSelect={({ item, sortedList }) => { \r\n this.setState({ selectedSearchControls: sortedList.map(i => i.value) });\r\n }}\r\n onRemove={({ item }) => {\r\n if(item.value == \"AssetID\")\r\n {\r\n PopupWindow.showErrorMessage(\"Alert\", \" 'Asset Id' is mandatory and cannot be moved.\");\r\n return;\r\n }\r\n else{\r\n this.setState({ selectedSearchControls: [...this.state.selectedSearchControls.filter(i => i !== item.value)] });\r\n }\r\n }}\r\n onSelectAll={selectedItems => {\r\n const selected = [\r\n ...this.state.selectedSearchControls,\r\n ...selectedItems.map(item => item.value)\r\n ];\r\n this.setState({\r\n selectedSearchControls: selected\r\n })\r\n }}\r\n onRemoveAll={() => { \r\n this.setState({\r\n selectedSearchControls: ['AssetID']\r\n })\r\n }}\r\n onSort={({ sortedList }) =>\r\n this.setState({\r\n selectedSearchControls: [...sortedList.map(i => i.value)]\r\n })\r\n }\r\n \r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\n\r\n","import * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { EmailControl } from './../sharedcomponents/EmailControl';\r\n\r\ninterface EmailState {\r\n EmailHtml: any;\r\n}\r\n\r\nexport class SharedEmailPopUp extends React.Component{\r\n constructor(props: any) {\r\n super(props); \r\n this.state = { EmailHtml: '' };\r\n this.renderEmailControl(this.props.gridData, this.props.colDefs, this.props.formName, this.props.parentChild);\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.gridData.length == 0) {\r\n $('#dashBoardEmailPopUp').hide();\r\n }\r\n else {\r\n $('#dashBoardEmailPopUp').show();\r\n }\r\n\r\n this.renderEmailControl(nextProps.gridData, nextProps.colDefs, nextProps.formName, nextProps.parentChild);\r\n }\r\n\r\n closeToolBarModel() {\r\n $('.GridToolBarParent').removeAttr('disabled');\r\n $('#dashBoardEmailPopUp').hide();\r\n }\r\n\r\n renderEmailControl(gridData: any, colDefs: any, formName: string, parentChild:string) {\r\n this.setState({ EmailHtml: this.returnEmailPopUp(gridData, colDefs, formName, parentChild) });\r\n }\r\n\r\n returnEmailPopUp(gridData: any, colDefs: any, formName: string, parentChild: string) {\r\n return ;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.gridData.length == 0) {\r\n $('#dashBoardEmailPopUp').hide();\r\n }\r\n else {\r\n $('#dashBoardEmailPopUp').show(); \r\n } \r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.EmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n} ","import * as React from 'react';\r\n\r\ninterface SaveSearchState {\r\n //sample\r\n Prop1: any\r\n Prop2: any\r\n}\r\n\r\nexport class SaveSearch extends React.Component {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = { Prop1: '', Prop2: '' };\r\n }\r\n\r\n //CancelHandler() {\r\n // RCNGWindow.ConfirmWindow.showConfirmBox(\"You are going to exist. Are you sure you want to continue?\", this.onOkCancel.bind(this), this.onCancelWizard.bind(this));\r\n // //this.props.cancelForm();\r\n //}\r\n\r\n //onOkCancel() {\r\n // this.props.cancelForm();\r\n //}\r\n\r\n //onCancelWizard() {\r\n // RCNGWindow.ConfirmWindow.close();\r\n //}\r\n\r\n public render() {\r\n\r\n return
    \r\n\r\n
    \r\n
      \r\n
    • Saved searches are unique to each platform user.
    • \r\n
    • To save search criteria for later use, select Create New Saved Search in the Saved Searches list. The platform will ask for a search name. After the search is executed, the search name will become an entry in the Saved Searches list. Later, whenever the search name is selected, the platform will recall and fill out the search criteria.
    • \r\n
    • To change the search criteria for a saved search, select the search name from the Saved Searches list and change the search criteria as desired. When the search is executed, the platform will ask if the saved search should be updated with the current search criteria.
    • \r\n
    • To delete a saved search, select the delete icon next to the search name in the Saved Searches list. The platform will ask for confirmation before deleting the saved search.
    • \r\n
    • To have the platform execute a default search at the time a dashboard is loaded, check “Default” when creating or changing a saved search while you are viewing the desired Dashboard.
    • \r\n
    • If a default search is enabled and a default is no longer desired, select the default search name from the Saved Searches list and uncheck “Default”. The platform will ask for confirmation before making the search a standard, non-default search.
    • \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    ;\r\n }\r\n}","// @ts-nocheck\r\n/// \r\n/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n//import { RouteComponentProps } from 'react-router';\r\nimport * as Highcharts from 'highcharts';\r\n//import * as ReactGridLayout from \"react-grid-layout\"\r\nimport { Responsive, WidthProvider } from 'react-grid-layout';\r\nimport 'react-grid-layout/css/styles.css';\r\nimport 'react-resizable/css/styles.css';\r\nimport { ReeferMap } from '../childcomponents/ReeferMap';\r\nimport { ReeferHistoryGrid } from '../childcomponents/ReeferHistoryGrid';\r\nimport { PTResultGrid } from '../childcomponents/PTResults';\r\nimport { ReeferStatusGrid } from '../childcomponents/ReeferStatusGrid';\r\nimport { ReeferStatusSSRMGrid } from '../childcomponents/ReeferStatusSSRMGrid';\r\nimport { GensetStatusGrid } from '../childcomponents/GensetStatusGrid';\r\nimport { ReeferToggleButtonsFilter } from '../childcomponents/ReeferToggleButtonsFilter';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport UserRights from '../../actions/UserRights';\r\n//import '@progress/kendo-theme-default/dist/all.css';\r\n//import { Grid } from '@progress/kendo-grid-react-wrapper'; \r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as HomeStore from '../../store/Home';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\nimport $ from 'jquery';\r\nimport Switch from 'react-toggle-switch';\r\nimport uniq from 'lodash/uniq';\r\nimport forEach from 'lodash/forEach';\r\nimport reject from 'lodash/reject';\r\nimport find from 'lodash/find';\r\nimport indexOf from 'lodash/indexOf';\r\nimport map from 'lodash/map';\r\nimport isEqual from 'lodash/isEqual';\r\n//import { ReeferHistory } from './widgets/ReeferHistory';\r\n//import { ReeferGrid } from \"./widgets/ReeferGrid\";\r\nimport { NavMenu } from '../NavMenu';\r\nimport { AdvanceSearch } from '../childcomponents/AdvanceSearch';\r\nimport { GensetHistoryGrid } from '../childcomponents/GensetHistoryGrid';\r\nimport { SharedEmailPopUp } from '../sharedcomponents/SharedEmailPopUp';\r\nimport { GridPreferenceControl } from '../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from '../sharedcomponents/GridColumnPreferences';\r\nimport { SearchPreferenceControl } from '../sharedcomponents/SearchPreferenceControl';\r\nimport { AddGeofence } from '../sharedcomponents/AddGeofence';\r\nimport { EditGeofence } from '../sharedcomponents/AddGeofence';\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport difference from 'lodash/difference';\r\nimport { ReeferTemperatureGraph } from '../childcomponents/ReeferTemperatureGraph';\r\nimport { TemperatureGraph } from '../childcomponents/TemperatureGraph';\r\nimport { GensetMonitorGraph } from '../childcomponents/GensetMonitorGraph';\r\n// Imports for Dry\r\nimport { DryStatusSSRMGrid } from '../childcomponents/DryStatusSSRMGrid';\r\n//import { DryStatusGrid } from '../childcomponents/DryStatusGrid';\r\nimport { DryHistoryGrid } from '../childcomponents/DryHistoryGrid';\r\nimport { ChassisStatusGrid } from '../childcomponents/ChassisStatusGrid';\r\nimport { ChassisHistoryGrid } from '../childcomponents/ChassisHistoryGrid';\r\n// WI-23795\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\n\r\nimport { SaveSearch } from '../childcomponents/SaveSearch';\r\nimport { isNullOrUndefined } from 'util';\r\nimport ReactSwitch from 'react-switch';\r\nimport GRPO from '../../images/Total GRD/GRPO.png';\r\nimport GLON from '../../images/Total GRD/GLON.png';\r\nimport GRPOFF from '../../images/Total GRD/GRPOFF.png';\r\nimport GLPO from '../../images/Total GRD/GLPO.png';\r\nimport DryNotReporting from '../../images/Total GRD/DryNotReporting.png';\r\nimport DrytReporting from '../../images/Total GRD/DrytReporting.png';\r\nimport animatedloader from '../../images/animated-loader.gif';\r\nimport DrySettings from '../../images/DrySettings.png';\r\nimport GensetSettings from '../../images/GensetSettings.png';\r\nimport ReeferSettings from '../../images/ReeferSettings.png';\r\nimport Chassis from '../../images/Chassis.svg';\r\nimport NotPoweredInGeofence from '../../images/TotalChassis/NotPoweredInGeofence.svg';\r\nimport NotPoweredNotInGeofence from '../../images/TotalChassis/NotPoweredNotInGeofence.svg';\r\nimport PoweredInGeofence from '../../images/TotalChassis/PoweredInGeofence.svg';\r\nimport PoweredNotInGeofence from '../../images/TotalChassis/PoweredNotInGeofence.svg';\r\nimport TotalDryInsideGeofence from '../../images/TotalChassis/TotalDryInsideGeofence.svg';\r\nimport TotalDryOutSideGeofence from '../../images/TotalChassis/TotalDryOutSideGeofence.svg';\r\n\r\nimport { GensetToggleButtonsFilter } from '../childcomponents/GensetToggleButtonsFilter';\r\nimport { ChassisStatusToggleButtonsFilter } from '../childcomponents/ChassisStatusToggleButtonsFilter';\r\nimport { DryStatusToggleButtonsFilter } from '../childcomponents/DryStatusToggleButtonsFilter';\r\nimport * as RCNGConfirmWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport Select from 'react-select';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport { CargoCareProfiles } from './CargoCareProfiles';\r\nimport { debug } from 'console';\r\nconst deletepng = require('../../images/delete.png');\r\n\r\n\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar enableReeferStatusGrid = false;\r\nvar isLastSearchAdvanced = false;\r\nvar gridHeight: any;\r\nvar isSaved: boolean = false;\r\nexport interface HomeState {\r\n loading: boolean;\r\n contents: any;\r\n date: Date;\r\n Reefersummary: server.ReeferStatusSummaryModel;\r\n CargoCareProfileAlertssummary: server.USP_GetCargocareProfileAlerts_Result[];\r\n DefaultCargoCareProfileAlertssummary: server.USP_GetCargocareProfileAlerts_Result[];\r\n Gensetsummary: server.GensetStatusSummaryModel;\r\n Drysummary: server.DryStatusSummaryModel;\r\n Chassissummary: server.ChassisStatusSummaryModel;\r\n selectedValue: string;\r\n Filters: server.ReeferSearchFilters;\r\n breakpoint: any;\r\n layouts: {};\r\n Defaultlayouts: {};\r\n DashBoardItems: Array;\r\n WGSwitchAll: WGSwitch;\r\n Oldlayouts: {};\r\n isFullscreen: boolean;\r\n FullscreenItem: DashBoardItem;\r\n EmailFilters: EmailFields;\r\n isLayoutUpdated: boolean;\r\n isLayoutLoaded: boolean;\r\n ExtensionForGridHeader: string;\r\n ExtensionForGraphHeader: string;\r\n ExtensionForGensetGridHeader: string;\r\n ExtensionForDryGridHeader: string;\r\n ExtensionForChassisGridHeader: string;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n selectedItems: any[];\r\n lastWidgetName: string;\r\n emailPopUpHtml: any;\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n ReportReeferId: string;\r\n PTReport: string;\r\n EmailData: any;\r\n ColumnDefs: any;\r\n SourceForm: string;\r\n ParentOrChild: string;\r\n temperatureGraphHtml: any;\r\n gensetMonitorGraphHtml: any;\r\n gridPreferenceHtml: any;\r\n formName: any;\r\n searchPreferenceHtml: any;\r\n addGeofenceHtml: any;\r\n addGeofenceTitle: string;\r\n geofenceData: any[];\r\n graphReeferId: string;\r\n graphGensetId: string;\r\n CurrentReeferGridRows: number;\r\n CurrentDryGridRows: number;\r\n CustomAttributes: server.CustomAttributes[];\r\n CustomerDeviceTypeSensor: any[];\r\n SaveSearchHtml: any;//WI-23795\r\n ExportToExcelHTML: any;\r\n FunctionID: any;\r\n ColumnDefs2: any;\r\n gridApiParams: any;\r\n isIncludeRowGroup: boolean;\r\n assetTypeSensors: any[];\r\n TWReport: string;\r\n EnableServerSide: boolean;\r\n isFenceAssets: boolean;\r\n PrevReeferFilters: server.ReeferSearchFilters;\r\n //CurrentUserCustomer: server.CurrentUserCustomer;\r\n stayOpen: boolean;\r\n disabled: boolean;\r\n removeSelected: boolean;\r\n rtl: boolean;\r\n AssetStates: any[];\r\n SelectedAssetStatesCC: string; /* RCNG 14*/\r\n SelectedAssetStatesMA: string; /* RCNG 13*/\r\n SelectedAssetStatesPTR: string; /* RCNG 16 */\r\n SelectedAssetStatesTotalReefers: string; /* RCNG 17 */\r\n SelectedAssetStatesTotalDrys: string; /* RCNG 863 */\r\n SelectedAssetStatesTotalGensets: string; /* RCNG 1452 */\r\n CargoCareProfiles: any[];\r\n CargoCareProfilesSelected: any[];\r\n CargoCareProfilesSelectedDefault: any[];\r\n UserPreferenceId: any;\r\n SearchLoadingIsInProgress: boolean;\r\n DashboardPreferenceId: any;\r\n IsReadOnly: any;\r\n DashboardWidgetsSearch: any[];\r\n DashboardLayouts: any[];\r\n LayoutPreference: any[];\r\n RevisionNum: any;\r\n WidgetId: any;\r\n}\r\nvar self;\r\nvar totalWidgetSearch: boolean = false;//WI26412\r\nvar loaderState: any = false;\r\nvar hasReefers: boolean = false;\r\nvar hasGensets: boolean = false;\r\nvar hasDrys: boolean = false;\r\nvar hasChassis: boolean = false;\r\nvar defaultInventory: any;\r\nvar CCLabelInformational: any;\r\nvar CCLabelMinor: any;\r\nvar CCLabelSevere: any;\r\nvar ReeferAlarmLabelMinor: any;\r\nvar ReeferAlarmLabelSevere: any;\r\nvar resizeAdvSearchToggle: boolean = false;\r\nvar wgMicroalarms: any\r\nvar wgHistogram: any\r\nvar wgAllreefers: any\r\nvar wgReeferGrid: any\r\nvar wgReeferHistory: any\r\nvar wgReeferTempGraph: any\r\nvar wgPTResult: any\r\nvar wgCargoCare: any\r\nvar wgGensetHistogram: any\r\nvar wgAllGensets: any\r\nvar wgGensetGrid: any\r\nvar wgGensetHistory: any\r\nvar wgDryHistogram: any\r\nvar wgAllDrys: any\r\nvar wgDryGrid: any\r\nvar wgDryHistory: any\r\nvar wgChassisHistogram: any\r\nvar wgAllChassis: any\r\nvar wgChassisGrid: any\r\nvar wgChassisHistory: any\r\nvar isSOLogedin: boolean = false;\r\nvar isSaveLayout: boolean = false;\r\nvar filterDefault: server.ReeferSearchFilters = {\r\n SelectedCountry: null, SelectedAssetTypes: null, SelectedAssetStates: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedOem: null, SelectedReefer: null, SelectedVesselCode: null, StatusFilters: [], CustomAttributeFilters: {}, AllReefers: null,\r\n SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null //WI-26881\r\n};\r\n\r\ntype HomeProps =\r\n HomeStore.HomeState\r\n & UserDetailState.UserState\r\n & typeof HomeStore.actionCreators\r\n & RouteComponentProps<{}>;\r\n// Wire up the React component to the Redux store\r\n\r\nconst assetStates = [\r\n { label: \"Active\", value: 'A' },\r\n { label: \"Disconnected\", value: 'D' },\r\n { label: \"Retired\", value: 'R' },\r\n];\r\n\r\n\r\nexport class Home extends React.PureComponent {\r\n refreshInterval: number;\r\n timer: any;\r\n gensetTimer: any;\r\n dryTimer: any;\r\n chassisTimer: any;\r\n ptResultsTimer: any;\r\n CCSummaryTimer: any;//RCNG-60\r\n MASummaryTimer: any;//RCNG-60\r\n TotalReeferStatusTimer: any;//RCNG-60\r\n myRequest: any;\r\n chartHistogram: Highcharts.ChartObject;\r\n chartmicro: Highcharts.ChartObject;\r\n chartcargo: Highcharts.ChartObject;\r\n chartGensetHistogram: Highcharts.ChartObject;\r\n chartDryHistogram: Highcharts.ChartObject;\r\n chartChassisHistogram: Highcharts.ChartObject;\r\n lglayout: any;\r\n allLayouts: any;\r\n DbItems: any;\r\n isLayOutLoadingBySetDefault: boolean;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.refreshInterval = 150000;//300000;\r\n this.wrapperRef = React.createRef();\r\n this.handleClickOutside = this.handleClickOutside.bind(this);\r\n //var sm: server.ReeferStatusSummaryModel = {};\r\n var filter: server.ReeferSearchFilters = this.props.searchFilters;\r\n var customer = JSON.parse(sessionStorage.getItem('customerDetails'));\r\n defaultInventory = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;\r\n CCLabelInformational = customer.preferenceDetails.CCLabelInformational != null ? customer.preferenceDetails.CCLabelInformational != '' ? customer.preferenceDetails.CCLabelInformational : 'Informational' : 'Informational';\r\n CCLabelMinor = customer.preferenceDetails.CCLabelMinor != null ? customer.preferenceDetails.CCLabelMinor != '' ? customer.preferenceDetails.CCLabelMinor : 'Minor' : 'Minor';\r\n CCLabelSevere = customer.preferenceDetails.CCLabelSevere != null ? customer.preferenceDetails.CCLabelSevere != '' ? customer.preferenceDetails.CCLabelSevere : 'Severe' : 'Severe';\r\n ReeferAlarmLabelMinor = customer.preferenceDetails.ReeferAlarmLabelMinor != null ? customer.preferenceDetails.ReeferAlarmLabelMinor != '' ? customer.preferenceDetails.ReeferAlarmLabelMinor : 'Minor' : 'Minor';\r\n ReeferAlarmLabelSevere = customer.preferenceDetails.ReeferAlarmLabelSevere != null ? customer.preferenceDetails.ReeferAlarmLabelSevere != '' ? customer.preferenceDetails.ReeferAlarmLabelSevere : 'Severe' : 'Severe';\r\n if (customer != null && customer != undefined) {\r\n if (customer.GroupsRights != null && customer.GroupsRights != undefined) //RCNG 940 \r\n {\r\n if (customer.HasReefer && customer.GroupsRights.includes('Reefers'))\r\n hasReefers = true\r\n if (customer.HasGenset && customer.GroupsRights.includes('Gensets'))\r\n hasGensets = true;\r\n if (customer.HasDry && customer.GroupsRights.includes('Dry'))\r\n hasDrys = true;\r\n if (customer.HasChassis && customer.GroupsRights.includes('Chassis'))\r\n hasChassis = true;\r\n //26495\r\n if (hasReefers) {\r\n clearTimeout(this.ptResultsTimer);\r\n //RCNG-60 start\r\n clearTimeout(this.CCSummaryTimer);\r\n clearTimeout(this.MASummaryTimer);\r\n clearTimeout(this.TotalReeferStatusTimer);\r\n //RCNG-60 end\r\n }\r\n }\r\n if (customer.CustomerTypeCd == \"SO\") {\r\n isSOLogedin = true;\r\n } else {\r\n isSOLogedin = false;\r\n }\r\n }\r\n\r\n //Loading cache data\r\n //if (this.props.reeferStatus.length === 0) {\r\n if (hasReefers) {\r\n this.props.requestReeferFormatters();\r\n this.props.requestReeferConfigTypes();\r\n }\r\n this.props.requestRefApplicationParams();\r\n this.props.requestTripWISESupport();\r\n //}\r\n\r\n this.state = {\r\n loading: true, contents: \"\", date: new Date(), Reefersummary: {}, CargoCareProfileAlertssummary: [], Gensetsummary: {}, Drysummary: {}, Chassissummary: {}, selectedValue: \"\", Filters: filter, breakpoint: {}, Defaultlayouts: {}, layouts: {}, DashBoardItems: new Array(),\r\n WGSwitchAll: new WGSwitch(), Oldlayouts: {}, isFullscreen: false, FullscreenItem: new DashBoardItem(), EmailFilters: new EmailFields(), isLayoutUpdated: false, isLayoutLoaded: false,\r\n ExtensionForGridHeader: \"\", ExtensionForGraphHeader: \"\", ExtensionForGensetGridHeader: '', ExtensionForDryGridHeader: '', ExtensionForChassisGridHeader: '', modelTitle: '', popUpHtml: '', selectedItems: [], lastWidgetName: '', emailPopUpHtml: '', modelTitleReport: '', popUpHtmlReport: '', ReportReeferId: '', PTReport: '',\r\n EmailData: '', ColumnDefs: '', SourceForm: '', ParentOrChild: '', temperatureGraphHtml: '', gensetMonitorGraphHtml: '', gridPreferenceHtml: '', formName: '', searchPreferenceHtml: '', addGeofenceHtml: '', addGeofenceTitle: '', geofenceData: [], graphReeferId: '', graphGensetId: '', CurrentReeferGridRows: 0, CurrentDryGridRows: 0, CustomAttributes: []\r\n , SaveSearchHtml: '', ExportToExcelHTML: '', FunctionID: 0, ColumnDefs2: '', gridApiParams: [], isIncludeRowGroup: false, CustomerDeviceTypeSensor: [], assetTypeSensors: [],\r\n TWReport: '', EnableServerSide: JSON.parse(sessionStorage.getItem('UserInfo')).IsEnableServerSide, isFenceAssets: false, PrevReeferFilters: filterDefault\r\n , stayOpen: false, disabled: false, removeSelected: false, rtl: false, AssetStates: assetStates,\r\n SelectedAssetStatesCC: JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState,///RCNG-70\r\n SelectedAssetStatesMA: JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState,///RCNG-70\r\n SelectedAssetStatesPTR: JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState,///RCNG-70\r\n SelectedAssetStatesTotalReefers: JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState, ///RCNG-70\r\n SelectedAssetStatesTotalGensets: 'A',\r\n SelectedAssetStatesTotalDrys: 'A'//JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState ///RCNG-1123\r\n , CargoCareProfiles: [], DefaultCargoCareProfileAlertssummary: [], CargoCareProfilesSelected: [], CargoCareProfilesSelectedDefault: [], UserPreferenceId: 0\r\n , SearchLoadingIsInProgress: false, DashboardPreferenceId: 0, DashboardWidgetsSearch: [], LayoutPreference: 'Default', DashboardLayouts: [],\r\n IsReadOnly: false, RevisionNum: 0, WidgetId:0\r\n };\r\n\r\n\r\n if (JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomAttributes');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CustomAttributes: data });\r\n });\r\n }\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetCargoCareCustomerProfilesAdvanceSearch');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CargoCareProfiles: data });\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomerDeviceTypeSensor');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CustomerDeviceTypeSensor: data });\r\n });\r\n\r\n self = this;\r\n\r\n this.SetLayout = this.SetLayout.bind(this);\r\n this.setGridHeader = this.setGridHeader.bind(this);\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').hide();\r\n }\r\n\r\n loadDefaultWGSwitch() {\r\n this.isLayOutLoadingBySetDefault = true;\r\n this.state.WGSwitchAll.AdvancedSearch = true;\r\n this.state.WGSwitchAll.ReeferMaps = true;\r\n this.state.WGSwitchAll.CargoCare = true;\r\n\r\n if (hasReefers) {\r\n this.state.WGSwitchAll.ReeferGrid = true;\r\n this.state.WGSwitchAll.ReeferHistoryGrid = true;\r\n this.state.WGSwitchAll.ReeferTempGraph = true;\r\n this.state.WGSwitchAll.PTResultGrid = true;\r\n this.state.WGSwitchAll.MicroaAlarms = true;\r\n this.state.WGSwitchAll.Histogram = true;\r\n this.state.WGSwitchAll.TotalReefers = true;\r\n }\r\n if (hasGensets) {\r\n this.state.WGSwitchAll.GensetGrid = true;\r\n this.state.WGSwitchAll.GensetHistoryGrid = true;\r\n this.state.WGSwitchAll.GensetHistogram = true;\r\n this.state.WGSwitchAll.TotalGensets = true;\r\n }\r\n if (hasDrys) {\r\n this.state.WGSwitchAll.DryGrid = true;\r\n this.state.WGSwitchAll.DryHistoryGrid = true;\r\n this.state.WGSwitchAll.DryHistogram = true;\r\n this.state.WGSwitchAll.TotalDrys = true;\r\n }\r\n if (hasChassis) {\r\n this.state.WGSwitchAll.ChassisGrid = true;\r\n this.state.WGSwitchAll.ChassisHistoryGrid = true;\r\n this.state.WGSwitchAll.ChassisHistogram = true;\r\n this.state.WGSwitchAll.TotalChassis = true;\r\n }\r\n this.isLayOutLoadingBySetDefault = false;\r\n }\r\n\r\n loadLayoutDefaultValues() {\r\n //var wgAdvSearch: any = UserRights.checkMenuItemVisibility('225');\r\n //var wgReeferMap: any = UserRights.checkMenuItemVisibility('226');\r\n\r\n wgMicroalarms = UserRights.checkMenuItemVisibility('245');\r\n wgHistogram = UserRights.checkMenuItemVisibility('242');\r\n wgAllreefers = UserRights.checkMenuItemVisibility('239');\r\n wgReeferGrid = UserRights.checkMenuItemVisibility('240');\r\n wgReeferHistory = UserRights.checkMenuItemVisibility('241');\r\n wgReeferTempGraph = UserRights.checkMenuItemVisibility('243');\r\n wgPTResult = UserRights.checkMenuItemVisibility('244');\r\n wgCargoCare = UserRights.checkMenuItemVisibility('246');\r\n\r\n wgGensetHistogram = UserRights.checkMenuItemVisibility('238');\r\n wgAllGensets = UserRights.checkMenuItemVisibility('235');\r\n wgGensetGrid = UserRights.checkMenuItemVisibility('236');\r\n wgGensetHistory = UserRights.checkMenuItemVisibility('237');\r\n\r\n wgDryHistogram = UserRights.checkMenuItemVisibility('230');\r\n wgAllDrys = UserRights.checkMenuItemVisibility('227');\r\n wgDryGrid = UserRights.checkMenuItemVisibility('228');\r\n wgDryHistory = UserRights.checkMenuItemVisibility('229');\r\n\r\n wgChassisHistogram = UserRights.checkMenuItemVisibility('234');\r\n wgAllChassis = UserRights.checkMenuItemVisibility('231');\r\n wgChassisGrid = UserRights.checkMenuItemVisibility('232');\r\n wgChassisHistory = UserRights.checkMenuItemVisibility('233');\r\n\r\n var wgHistogramY = 26, wgAllPosY = 0, wgStatusPosY = 31, wgHistoryPosY = 46, wgTempGraphPosY = 51;\r\n\r\n var defaulLayout = [\r\n { \"minW\": 12, \"minH\": 7.0, \"w\": 12, \"h\": 12.7, \"x\": 0, \"y\": 0, \"i\": \"wgAdvSearch\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"minW\": 12, \"minH\": 13.5, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": 24, \"i\": \"wgReeferMap\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true, }\r\n ];\r\n\r\n //defaulLayout = defaulLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n if (hasReefers && !hasGensets && !hasDrys && !hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n }\r\n else if (!hasReefers && hasGensets && !hasDrys && !hasChassis) {\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n }\r\n else if (!hasReefers && !hasGensets && hasDrys && !hasChassis) {\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n }\r\n else if (!hasReefers && !hasGensets && !hasDrys && hasChassis) {\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n }\r\n else if (hasReefers && hasGensets && hasDrys && !hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n\r\n wgHistogramY = wgMicroalarms[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllreefers[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgReeferGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgReeferHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n\r\n wgStatusPosY = wgGensetGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 48;\r\n wgHistoryPosY = wgGensetHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 48;\r\n\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n }\r\n else if (hasReefers && hasGensets && !hasDrys && hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n\r\n wgHistogramY = wgMicroalarms[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllreefers[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgReeferGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgReeferHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n\r\n wgStatusPosY = wgGensetGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 48;\r\n wgHistoryPosY = wgGensetHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 48;\r\n\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n }\r\n else if (hasReefers && !hasGensets && hasDrys && hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n\r\n wgHistogramY = wgMicroalarms[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllreefers[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgReeferGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgReeferHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n\r\n wgStatusPosY = wgDryGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 48;\r\n wgHistoryPosY = wgDryHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 48;\r\n\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n }\r\n else if (!hasReefers && hasGensets && hasDrys && hasChassis) {\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n\r\n wgHistogramY = wgGensetHistogram[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllGensets[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgGensetGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgGensetHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n\r\n wgStatusPosY = wgDryGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 48;\r\n wgHistoryPosY = wgDryHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 48;\r\n\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n }\r\n else if (hasReefers && hasGensets && !hasDrys && !hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n\r\n wgHistogramY = wgMicroalarms[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllreefers[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgReeferGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgReeferHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n }\r\n else if (hasReefers && !hasGensets && hasDrys && !hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n\r\n wgHistogramY = wgMicroalarms[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllreefers[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgReeferGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgReeferHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n }\r\n else if (hasReefers && !hasGensets && !hasDrys && hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n\r\n wgHistogramY = wgMicroalarms[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllreefers[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgReeferGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgReeferHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n }\r\n else if (!hasReefers && hasGensets && !hasDrys && hasChassis) {\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n\r\n wgHistogramY = wgGensetHistogram[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllGensets[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgGensetGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgGensetHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n }\r\n else if (!hasReefers && !hasGensets && hasDrys && hasChassis) {\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n\r\n wgHistogramY = wgDryHistogram[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllDrys[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgDryGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgDryHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n }\r\n else if (!hasReefers && hasGensets && hasDrys && !hasChassis) {\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n\r\n wgHistogramY = wgGensetHistogram[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllGensets[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgGensetGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgGensetHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n }\r\n else if (hasReefers && hasGensets && hasDrys && hasChassis) {\r\n var reeferLayout = [\r\n { \"hasRight\": wgMicroalarms[0], \"minW\": 12, \"minH\": 10.3, \"w\": 12, \"h\": 10.3, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgMicroalarms\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": 49, \"i\": \"wgHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllreefers[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllreefers\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgReeferGrid[0], \"minW\": 28, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgReeferGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferHistory[0], \"minW\": 34, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgReeferHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgReeferTempGraph[0], \"minW\": 30, \"minH\": 16.1, \"w\": 37.5, \"h\": 16.1, \"x\": 12, \"y\": wgTempGraphPosY, \"i\": \"wgReeferTempGraph\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgPTResult[0], \"minW\": 12, \"minH\": 13.5, \"w\": 12, \"h\": 14.5, \"x\": 0, \"y\": 55, \"i\": \"wgPTResult\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgCargoCare[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 17, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 17, \"x\": 0, \"y\": 51, \"i\": \"wgCargoCare\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n reeferLayout = reeferLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(reeferLayout);\r\n\r\n wgHistogramY = wgMicroalarms[0] == \"hidden\" ? wgHistogramY : wgHistogramY + 35;\r\n wgAllPosY = wgAllreefers[0] == \"hidden\" ? wgAllPosY : wgAllPosY + 8;\r\n wgStatusPosY = wgReeferGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 31;\r\n wgHistoryPosY = wgReeferHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 32;\r\n\r\n var gensetLayout = [\r\n { \"hasRight\": wgGensetHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgGensetHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllGensets[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllGensets\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgGensetGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgGensetGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgGensetHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgGensetHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n gensetLayout = gensetLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(gensetLayout);\r\n\r\n wgStatusPosY = wgGensetGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 48;\r\n wgHistoryPosY = wgGensetHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 48;\r\n\r\n var dryLayout = [\r\n { \"hasRight\": wgDryHistogram[0], \"minW\": 12, \"minH\": 9.7, \"w\": 12, \"h\": 9.7, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgDryHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllDrys[0], \"minW\": 12, \"minH\": 7.1, \"w\": 12, \"h\": 7.1, \"x\": 0, \"y\": wgAllPosY, \"i\": \"wgAllDrys\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgDryGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgDryGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgDryHistory[0], \"minW\": 27, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgDryHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n dryLayout = dryLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(dryLayout);\r\n\r\n wgStatusPosY = wgDryGrid[0] == \"hidden\" ? wgStatusPosY : wgStatusPosY + 56;\r\n wgHistoryPosY = wgDryHistory[0] == \"hidden\" ? wgHistoryPosY : wgHistoryPosY + 56;\r\n\r\n var chassisLayout = [\r\n { \"hasRight\": wgChassisHistogram[0], \"minW\": 12, \"minH\": 10.8, \"w\": 12, \"h\": 10.8, \"x\": 0, \"y\": wgHistogramY, \"i\": \"wgChassisHistogram\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgAllChassis[0], \"minW\": 37, \"minH\": 4.3, \"w\": 37.5, \"h\": 4.3, \"x\": 12, \"y\": wgAllPosY, \"i\": \"wgAllChassis\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false },\r\n { \"hasRight\": wgChassisGrid[0], \"minW\": 21, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgStatusPosY, \"i\": \"wgChassisGrid\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true },\r\n { \"hasRight\": wgChassisHistory[0], \"minW\": 30, \"minH\": 11, \"w\": 37.5, \"h\": 14.5, \"x\": 12, \"y\": wgHistoryPosY, \"i\": \"wgChassisHistory\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": true }\r\n ];\r\n\r\n chassisLayout = chassisLayout.filter(x => x.hasRight != 'hidden');\r\n\r\n defaulLayout = defaulLayout.concat(chassisLayout);\r\n\r\n }\r\n\r\n this.lglayout = defaulLayout;\r\n this.allLayouts = { lg: this.lglayout };\r\n\r\n var defaultDbItems = [\r\n { Key: \"wgAdvSearch\", Layout: this.GetItemLayout(\"wgAdvSearch\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false, IsPinned: false },\r\n { Key: \"wgReeferMap\", Layout: this.GetItemLayout(\"wgReeferMap\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false }\r\n ];\r\n\r\n //defaultDbItems = defaultDbItems.filter(x => x.hasRight != 'hidden');\r\n\r\n var reeferDbItems = [\r\n { hasRight: wgMicroalarms[0], Key: \"wgMicroalarms\", Layout: this.GetItemLayout(\"wgMicroalarms\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgHistogram[0], Key: \"wgHistogram\", Layout: this.GetItemLayout(\"wgHistogram\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgAllreefers[0], Key: \"wgAllreefers\", Layout: this.GetItemLayout(\"wgAllreefers\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgReeferGrid[0], Key: \"wgReeferGrid\", Layout: this.GetItemLayout(\"wgReeferGrid\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgReeferHistory[0], Key: \"wgReeferHistory\", Layout: this.GetItemLayout(\"wgReeferHistory\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgReeferTempGraph[0], Key: \"wgReeferTempGraph\", Layout: this.GetItemLayout(\"wgReeferTempGraph\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgPTResult[0], Key: \"wgPTResult\", Layout: this.GetItemLayout(\"wgPTResult\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgCargoCare[0], Key: \"wgCargoCare\", Layout: this.GetItemLayout(\"wgCargoCare\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n ];\r\n\r\n var gensetDbItems = [\r\n { hasRight: wgGensetHistogram[0], Key: \"wgGensetHistogram\", Layout: this.GetItemLayout(\"wgGensetHistogram\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgAllGensets[0], Key: \"wgAllGensets\", Layout: this.GetItemLayout(\"wgAllGensets\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgGensetGrid[0], Key: \"wgGensetGrid\", Layout: this.GetItemLayout(\"wgGensetGrid\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgGensetHistory[0], Key: \"wgGensetHistory\", Layout: this.GetItemLayout(\"wgGensetHistory\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false }\r\n ];\r\n\r\n var dryDbItems = [\r\n { hasRight: wgAllDrys[0], Key: \"wgAllDrys\", Layout: this.GetItemLayout(\"wgAllDrys\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgDryGrid[0], Key: \"wgDryGrid\", Layout: this.GetItemLayout(\"wgDryGrid\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgDryHistory[0], Key: \"wgDryHistory\", Layout: this.GetItemLayout(\"wgDryHistory\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgDryHistogram[0], Key: \"wgDryHistogram\", Layout: this.GetItemLayout(\"wgDryHistogram\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false }\r\n ];\r\n\r\n var chassisDbItems = [\r\n { hasRight: wgAllChassis[0], Key: \"wgAllChassis\", Layout: this.GetItemLayout(\"wgAllChassis\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgChassisGrid[0], Key: \"wgChassisGrid\", Layout: this.GetItemLayout(\"wgChassisGrid\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgChassisHistory[0], Key: \"wgChassisHistory\", Layout: this.GetItemLayout(\"wgChassisHistory\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false },\r\n { hasRight: wgChassisHistogram[0], Key: \"wgChassisHistogram\", Layout: this.GetItemLayout(\"wgChassisHistogram\", this.allLayouts), Enabled: false, IsVisible: true, IsFullscreen: false }\r\n ];\r\n\r\n if (hasReefers) {\r\n reeferDbItems = reeferDbItems.filter(x => x.hasRight != 'hidden');\r\n defaultDbItems = defaultDbItems.concat(reeferDbItems);\r\n }\r\n\r\n if (hasGensets) {\r\n gensetDbItems = gensetDbItems.filter(x => x.hasRight != 'hidden');\r\n defaultDbItems = defaultDbItems.concat(gensetDbItems);\r\n }\r\n\r\n if (hasDrys) {\r\n dryDbItems = dryDbItems.filter(x => x.hasRight != 'hidden');\r\n defaultDbItems = defaultDbItems.concat(dryDbItems);\r\n }\r\n\r\n if (hasChassis) {\r\n chassisDbItems = chassisDbItems.filter(x => x.hasRight != 'hidden');\r\n defaultDbItems = defaultDbItems.concat(chassisDbItems);\r\n }\r\n\r\n this.DbItems = defaultDbItems;\r\n }\r\n\r\n setGridHeader(reeferId: string) {\r\n var headerToBeAppended = '';\r\n var graphHeaderToBeAppended = '';\r\n if (reeferId != '' && reeferId != undefined) {\r\n headerToBeAppended = '- Trace of ' + reeferId.slice(0, 4).concat(' ').concat(reeferId.slice(4, 10)).concat(' ').concat(reeferId.slice(10, 11));\r\n graphHeaderToBeAppended = '- ' + reeferId.slice(0, 4).concat(' ').concat(reeferId.slice(4, 10)).concat(' ').concat(reeferId.slice(10, 11));\r\n }\r\n this.setState({ ExtensionForGridHeader: headerToBeAppended, ExtensionForGraphHeader: graphHeaderToBeAppended });\r\n }\r\n\r\n setGensetGridHeader(assetId: string) {\r\n var headerToBeAppended = ''\r\n if (assetId != '' && assetId != undefined) {\r\n headerToBeAppended = '- Trace of ' + assetId;\r\n }\r\n self.setState({ ExtensionForGensetGridHeader: headerToBeAppended });\r\n }\r\n\r\n setDryGridHeader(assetId: string) {\r\n var headerToBeAppended = ''\r\n if (assetId != '' && assetId != undefined) {\r\n headerToBeAppended = '- Trace of ' + assetId;\r\n }\r\n self.setState({ ExtensionForDryGridHeader: headerToBeAppended });\r\n }\r\n\r\n setChassisGridHeader(assetId: string) {\r\n var headerToBeAppended = ''\r\n if (assetId != '' && assetId != undefined) {\r\n headerToBeAppended = '- Trace of ' + assetId;\r\n }\r\n self.setState({ ExtensionForChassisGridHeader: headerToBeAppended });\r\n }\r\n\r\n clearHistoryGridHeaders() {\r\n this.setState({ ExtensionForGridHeader: '', ExtensionForGraphHeader: '', ExtensionForGensetGridHeader: '', ExtensionForDryGridHeader: '', ExtensionForChassisGridHeader: '' });\r\n }\r\n\r\n clearGridHeaderExtension() {\r\n this.setState({ ExtensionForGridHeader: '', ExtensionForGraphHeader: '' });\r\n }\r\n\r\n clearGensetGridHeaderExtension() {\r\n this.setState({ ExtensionForGensetGridHeader: '' });\r\n }\r\n clearDryGridHeaderExtension() {\r\n this.setState({ ExtensionForDryGridHeader: '' });\r\n }\r\n clearChassisGridHeaderExtension() {\r\n this.setState({ ExtensionForChassisGridHeader: '' });\r\n }\r\n\r\n handleWidgetCheckTotalReefers(e) {\r\n //$('.widget-applySettingsTotalReefers').addClass('open');\r\n $('.widgetbgTotalReefers').parent().addClass('widgetbgZindex');\r\n }\r\n\r\n handleWidgetCheckTotalGensets(e) {\r\n //$('.widget-applySettingsTotalReefers').addClass('open');\r\n $('.widgetbgTotalGensets').parent().addClass('widgetbgZindex');\r\n }\r\n\r\n //WI RCNG-84 start\r\n onAllReefersClick(e) {\r\n isSaveLayout = true;\r\n $('.widgetbgTotalReefers').parent().addClass('widgetbgZindex');\r\n $('.widgetbgTotalGensets').parent().removeClass('widgetbgZindex');\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv').css(\"display\", \"block\");\r\n }\r\n onAllReefersClickClose(e) {\r\n $('#drop-down-inv').css(\"display\", \"none\");\r\n }\r\n\r\n onTGWidgetClick(e) {\r\n isSaveLayout = true;\r\n $('.widgetbgTotalGensets').parent().addClass('widgetbgZindex');\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-TG').css(\"display\", \"block\");\r\n }\r\n onTGWidgetClickClose(e) {\r\n $('#drop-down-inv-TG').css(\"display\", \"none\");\r\n }\r\n\r\n onFleetOverviewClick(e) {\r\n isSaveLayout = true;\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-fleet-overview').css(\"display\", \"block\");\r\n }\r\n onFleetOverviewClickClose(e) {\r\n $('#drop-down-inv-fleet-overview').css(\"display\", \"none\");\r\n }\r\n onPTIWidgetClick(e) {\r\n isSaveLayout = true;\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-pti').css(\"display\", \"block\");\r\n }\r\n onPTIWidgetClickClose(e) {\r\n $('#drop-down-inv-pti').css(\"display\", \"none\");\r\n }\r\n onMAWidgetClick(e) {\r\n isSaveLayout = true;\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-ma').css(\"display\", \"block\");\r\n }\r\n onMAWidgetClickClose(e) {\r\n $('#drop-down-inv-ma').css(\"display\", \"none\");\r\n }\r\n onCCWidgetClick(e) {\r\n isSaveLayout = true;\r\n $('#CCProfileFilter').css(\"display\", \"none\");\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-cc').css(\"display\", \"block\");\r\n }\r\n onCCWidgetClickClose(e) {\r\n $('#drop-down-inv-cc').css(\"display\", \"none\");\r\n }\r\n\r\n onCCProfileFilterClickClose(e) {\r\n $('#CCProfileFilter').css(\"display\", \"none\");\r\n }\r\n\r\n onCCProfileFilterClick(e) {\r\n isSaveLayout = true;\r\n //console.log(\"onCCProfileFilterClick: \"+isSaveLayout);\r\n setTimeout(() => {\r\n self.BindCargoCareProfileFilters();\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-cc').css(\"display\", \"none\");\r\n $('#CCProfileFilter').css(\"display\", \"block\");\r\n }, 100);\r\n }\r\n\r\n onDFOWidgetClick(e) {\r\n isSaveLayout = true;\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-DFO').css(\"display\", \"block\");\r\n }\r\n onDFOWidgetClickClose(e) {\r\n $('#drop-down-inv-DFO').css(\"display\", \"none\");\r\n }\r\n\r\n onGFOWidgetClick(e) {\r\n isSaveLayout = true;\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-GFO').css(\"display\", \"block\");\r\n }\r\n onGFOWidgetClickClose(e) {\r\n $('#drop-down-inv-GFO').css(\"display\", \"none\");\r\n }\r\n\r\n\r\n onTDWidgetClick(e) {\r\n isSaveLayout = true;\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-TD').css(\"display\", \"block\");\r\n\r\n }\r\n onTDWidgetClickClose(e) {\r\n $('#drop-down-inv-TD').css(\"display\", \"none\");\r\n }\r\n\r\n //WI RCNG-84 end\r\n FromEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedFrom = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n updateHomepageGridDimensions() {\r\n $(\"#homepage-grid-container\").css('min-height', $(window).height() - 49);\r\n $(\"#homepage-grid-container\").css('height', $(window).height() - 49);\r\n $(\"#homepage-grid-container\").css('max-height', $(window).height() - 49);\r\n }\r\n\r\n loadUserDashboardLayout(preferenceData: any, dashboardPreferenceId: any, isReadOnly: any, revisionNum: any) {\r\n if (isNullOrUndefined(preferenceData)) {\r\n self.setState({ Defaultlayouts: this.allLayouts, DashBoardItems: this.DbItems, layouts: this.allLayouts, DashboardPreferenceId: dashboardPreferenceId }, () => { this.CreateOrUpdateDashboard(); });\r\n sessionStorage.setItem('DashboardPreferenceId', dashboardPreferenceId);\r\n }\r\n else {\r\n var genericWidgets = [\"wgAdvSearch\", \"wgReeferMap\"];\r\n var gensetWidgets = [\"wgAllGensets\", \"wgGensetHistogram\", \"wgGensetGrid\", \"wgGensetHistory\"];\r\n var reeferWidgets = [\"wgAllreefers\", \"wgHistogram\", \"wgReeferGrid\", \"wgReeferHistory\", \"wgReeferTempGraph\", \"wgMicroalarms\", \"wgPTResult\"];\r\n var dryWidgets = [\"wgAllDrys\", \"wgDryHistogram\", \"wgDryGrid\", \"wgDryHistory\"];\r\n var chassisWidgets = [\"wgAllChassis\", \"wgChassisHistogram\", \"wgChassisGrid\", \"wgChassisHistory\"];\r\n var cargoCareWidgets = [\"wgCargoCare\"];\r\n var dashBoardItems = [];\r\n var UserPreference = JSON.parse(preferenceData);\r\n var breakpoints = ['lg', 'md', 'sm', 'xs', 'xxs'];\r\n var userLayouts = { 'lg': '', 'md': '', 'sm': '', 'xs': '', 'xxs': '' };\r\n forEach(UserPreference.layouts, function (value, key) {\r\n forEach(breakpoints, function (bv, bk) {\r\n if (key == bv) {\r\n userLayouts[bv] = UserPreference.layouts[bv];\r\n }\r\n });\r\n });\r\n\r\n forEach(UserPreference.DashBoardItems, function (value, index) {\r\n\r\n var wgKey: any = self.DbItems.filter(x => x.Key == value.Key);\r\n if (wgKey.length != 0) {\r\n if ($.inArray(value.Key, genericWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n\r\n if (hasGensets) {\r\n if ($.inArray(value.Key, gensetWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (hasReefers) {\r\n if ($.inArray(value.Key, reeferWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (hasDrys) {\r\n if ($.inArray(value.Key, dryWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (hasChassis) {\r\n if ($.inArray(value.Key, chassisWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (wgCargoCare[0] != \"hidden\") {\r\n if ($.inArray(value.Key, cargoCareWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n }\r\n });\r\n\r\n\r\n if (dashBoardItems.length > 0) {\r\n dashBoardItems = uniq(dashBoardItems);\r\n var DbItemsList = self.DbItems;\r\n var DbItemsKeys = DbItemsList.map(({ Key }) => Key);\r\n var dashBoardItemsKeys = dashBoardItems.map(({ Key }) => Key);\r\n\r\n var diffFound = difference(DbItemsKeys, dashBoardItemsKeys);\r\n\r\n self.setState({\r\n Defaultlayouts: (UserPreference.Defaultlayouts == undefined) ? self.allLayouts : self.allLayouts,\r\n DashBoardItems: (UserPreference.DashBoardItems == undefined) ? self.DbItems : dashBoardItems,\r\n layouts: (UserPreference.layouts == undefined) ? userLayouts : UserPreference.layouts,\r\n WGSwitchAll: (UserPreference.WGSwitchAll == undefined) ? self.state.WGSwitchAll : UserPreference.WGSwitchAll,\r\n DashboardPreferenceId: dashboardPreferenceId, IsReadOnly: isReadOnly, RevisionNum: revisionNum\r\n });\r\n sessionStorage.setItem('DashboardPreferenceId', dashboardPreferenceId);\r\n if (diffFound.length > 0) {\r\n setTimeout(() => {\r\n forEach(diffFound, function (item) {\r\n switch (item) {\r\n case \"wgAdvSearch\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, AdvancedSearch: false } });\r\n break;\r\n case \"wgReeferMap\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferMaps: false } });\r\n break;\r\n case \"wgAllGensets\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalGensets: false } });\r\n break;\r\n case \"wgGensetHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, GensetHistogram: false } });\r\n break;\r\n case \"wgGensetGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, GensetGrid: false } });\r\n break;\r\n case \"wgGensetHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, GensetHistoryGrid: false } });\r\n break;\r\n case \"wgAllreefers\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalReefers: false } });\r\n break;\r\n case \"wgHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, Histogram: false } });\r\n break;\r\n case \"wgReeferGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferGrid: false } });\r\n break;\r\n case \"wgReeferHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferHistoryGrid: false } });\r\n break;\r\n case \"wgReeferTempGraph\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferTempGraph: false } });\r\n break;\r\n case \"wgMicroalarms\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, MicroaAlarms: false } });\r\n break;\r\n case \"wgPTResult\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, PTResultGrid: false } });\r\n break;\r\n case \"wgAllDrys\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalDrys: false } });\r\n break;\r\n case \"wgDryHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, DryHistogram: false } });\r\n break;\r\n case \"wgDryGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, DryGrid: false } });\r\n break;\r\n case \"wgDryHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, DryHistoryGrid: false } });\r\n break;\r\n case \"wgAllChassis\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalChassis: false } });\r\n break;\r\n case \"wgChassisHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ChassisHistogram: false } });\r\n break;\r\n case \"wgChassisGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ChassisGrid: false } });\r\n break;\r\n case \"wgChassisHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ChassisHistoryGrid: false } });\r\n break;\r\n case \"wgCargoCare\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, CargoCare: false } });\r\n break;\r\n }\r\n });\r\n }, 500);\r\n\r\n }\r\n }\r\n else {\r\n\r\n self.setState({\r\n Defaultlayouts: (UserPreference.Defaultlayouts == undefined) ? self.allLayouts : self.allLayouts,\r\n DashBoardItems: (UserPreference.DashBoardItems == undefined) ? self.DbItems : UserPreference.DashBoardItems,\r\n layouts: (UserPreference.layouts == undefined) ? userLayouts : UserPreference.layouts,\r\n WGSwitchAll: (UserPreference.WGSwitchAll == undefined) ? self.state.WGSwitchAll : UserPreference.WGSwitchAll,\r\n DashboardPreferenceId: dashboardPreferenceId, IsReadOnly: isReadOnly, RevisionNum: revisionNum\r\n });\r\n sessionStorage.setItem('DashboardPreferenceId', dashboardPreferenceId);\r\n }\r\n }\r\n setTimeout(() => {\r\n self.setState({ isLayoutLoaded: true }, () => { self.restoreWidgetsLoaders(); });\r\n if (isReadOnly)\r\n self.pinAllDashboardWidgets(true);\r\n else\r\n self.pinAllDashboardWidgets(false);\r\n }, 2000);// intial waiting time for layouts load\r\n\r\n }\r\n\r\n applyLayoutPreferences(preferenceData: any, dashboardPreferenceId: any, isReadOnly: any, revisionNum: any) {\r\n if (isNullOrUndefined(preferenceData)) {\r\n self.setState({ Defaultlayouts: this.allLayouts, DashBoardItems: this.DbItems, layouts: this.allLayouts, DashboardPreferenceId: dashboardPreferenceId });\r\n sessionStorage.setItem('DashboardPreferenceId', dashboardPreferenceId);\r\n }\r\n else {\r\n var genericWidgets = [\"wgAdvSearch\", \"wgReeferMap\"];\r\n var gensetWidgets = [\"wgAllGensets\", \"wgGensetHistogram\", \"wgGensetGrid\", \"wgGensetHistory\"];\r\n var reeferWidgets = [\"wgAllreefers\", \"wgHistogram\", \"wgReeferGrid\", \"wgReeferHistory\", \"wgReeferTempGraph\", \"wgMicroalarms\", \"wgPTResult\"];\r\n var dryWidgets = [\"wgAllDrys\", \"wgDryHistogram\", \"wgDryGrid\", \"wgDryHistory\"];\r\n var chassisWidgets = [\"wgAllChassis\", \"wgChassisHistogram\", \"wgChassisGrid\", \"wgChassisHistory\"];\r\n var cargoCareWidgets = [\"wgCargoCare\"];\r\n var dashBoardItems = [];\r\n var UserPreference = JSON.parse(preferenceData);\r\n var breakpoints = ['lg', 'md', 'sm', 'xs', 'xxs'];\r\n var userLayouts = { 'lg': '', 'md': '', 'sm': '', 'xs': '', 'xxs': '' };\r\n forEach(UserPreference.layouts, function (value, key) {\r\n forEach(breakpoints, function (bv, bk) {\r\n if (key == bv) {\r\n userLayouts[bv] = UserPreference.layouts[bv];\r\n }\r\n });\r\n });\r\n\r\n forEach(UserPreference.DashBoardItems, function (value, index) {\r\n\r\n var wgKey: any = self.DbItems.filter(x => x.Key == value.Key);\r\n if (wgKey.length != 0) {\r\n if ($.inArray(value.Key, genericWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n\r\n if (hasGensets) {\r\n if ($.inArray(value.Key, gensetWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (hasReefers) {\r\n if ($.inArray(value.Key, reeferWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (hasDrys) {\r\n if ($.inArray(value.Key, dryWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (hasChassis) {\r\n if ($.inArray(value.Key, chassisWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n if (wgCargoCare[0] != \"hidden\") {\r\n if ($.inArray(value.Key, cargoCareWidgets) !== -1)\r\n dashBoardItems.push(value);\r\n }\r\n }\r\n });\r\n\r\n\r\n if (dashBoardItems.length > 0) {\r\n dashBoardItems = uniq(dashBoardItems);\r\n var DbItemsList = self.DbItems;\r\n var DbItemsKeys = DbItemsList.map(({ Key }) => Key);\r\n var dashBoardItemsKeys = dashBoardItems.map(({ Key }) => Key);\r\n\r\n var diffFound = difference(DbItemsKeys, dashBoardItemsKeys);\r\n\r\n self.setState({\r\n Defaultlayouts: (UserPreference.Defaultlayouts == undefined) ? self.allLayouts : self.allLayouts,\r\n DashBoardItems: (UserPreference.DashBoardItems == undefined) ? self.DbItems : dashBoardItems,\r\n layouts: (UserPreference.layouts == undefined) ? userLayouts : UserPreference.layouts,\r\n WGSwitchAll: (UserPreference.WGSwitchAll == undefined) ? self.state.WGSwitchAll : UserPreference.WGSwitchAll,\r\n DashboardPreferenceId: dashboardPreferenceId, IsReadOnly: isReadOnly, RevisionNum: revisionNum\r\n });\r\n sessionStorage.setItem('DashboardPreferenceId', dashboardPreferenceId);\r\n\r\n if (diffFound.length > 0) {\r\n setTimeout(() => {\r\n forEach(diffFound, function (item) {\r\n switch (item) {\r\n case \"wgAdvSearch\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, AdvancedSearch: false } });\r\n break;\r\n case \"wgReeferMap\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferMaps: false } });\r\n break;\r\n case \"wgAllGensets\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalGensets: false } });\r\n break;\r\n case \"wgGensetHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, GensetHistogram: false } });\r\n break;\r\n case \"wgGensetGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, GensetGrid: false } });\r\n break;\r\n case \"wgGensetHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, GensetHistoryGrid: false } });\r\n break;\r\n case \"wgAllreefers\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalReefers: false } });\r\n break;\r\n case \"wgHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, Histogram: false } });\r\n break;\r\n case \"wgReeferGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferGrid: false } });\r\n break;\r\n case \"wgReeferHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferHistoryGrid: false } });\r\n break;\r\n case \"wgReeferTempGraph\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ReeferTempGraph: false } });\r\n break;\r\n case \"wgMicroalarms\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, MicroaAlarms: false } });\r\n break;\r\n case \"wgPTResult\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, PTResultGrid: false } });\r\n break;\r\n case \"wgAllDrys\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalDrys: false } });\r\n break;\r\n case \"wgDryHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, DryHistogram: false } });\r\n break;\r\n case \"wgDryGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, DryGrid: false } });\r\n break;\r\n case \"wgDryHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, DryHistoryGrid: false } });\r\n break;\r\n case \"wgAllChassis\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, TotalChassis: false } });\r\n break;\r\n case \"wgChassisHistogram\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ChassisHistogram: false } });\r\n break;\r\n case \"wgChassisGrid\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ChassisGrid: false } });\r\n break;\r\n case \"wgChassisHistory\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ChassisHistoryGrid: false } });\r\n break;\r\n case \"wgCargoCare\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, CargoCare: false } });\r\n break;\r\n }\r\n });\r\n }, 500);\r\n }\r\n self.applyDashboardWidgetsPreferences(dashboardPreferenceId);\r\n }\r\n else {\r\n\r\n self.setState({\r\n Defaultlayouts: (UserPreference.Defaultlayouts == undefined) ? self.allLayouts : self.allLayouts,\r\n DashBoardItems: (UserPreference.DashBoardItems == undefined) ? self.DbItems : UserPreference.DashBoardItems,\r\n layouts: (UserPreference.layouts == undefined) ? userLayouts : UserPreference.layouts,\r\n WGSwitchAll: (UserPreference.WGSwitchAll == undefined) ? self.state.WGSwitchAll : UserPreference.WGSwitchAll,\r\n DashboardPreferenceId: dashboardPreferenceId, IsReadOnly: isReadOnly, RevisionNum: revisionNum\r\n });\r\n sessionStorage.setItem('DashboardPreferenceId', dashboardPreferenceId);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n //$('#globalLoader').hide();\r\n self.setState({ isLayoutLoaded: true }, () => { self.restoreWidgetsLoaders(); });\r\n if (isReadOnly)\r\n self.pinAllDashboardWidgets(true);\r\n else\r\n self.pinAllDashboardWidgets(false);\r\n isSaveLayout = false;\r\n }, 2000);// intial waiting time for layouts load\r\n }\r\n\r\n applyDashboardWidgetsPreferences(dashboardPreferenceId: any) {\r\n this.BindCharts();\r\n this.UpdateCharts(false);\r\n //if(this.state.WGSwitchAll.CargoCare == true) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetDashboardWidgetsSearches?dashboardPreferenceId=' + dashboardPreferenceId);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data.length > 0) {\r\n self.RefreshDashboardGrids(data);\r\n var widgetSearchPreferences: any = data.filter(x => x.DashboardWidgetId == 9);\r\n //var ccProfilePreferences: any = widgetSearchPreferences[0].SearchData;\r\n var filterCCProfileAlertssummary: any[] = [];\r\n var selectedCargoCareProfiles: any = JSON.parse(widgetSearchPreferences[0].SearchData);\r\n forEach(selectedCargoCareProfiles, function (value, key) {\r\n var selectedCCProfiles = self.state.DefaultCargoCareProfileAlertssummary.filter(x => x.CargoCareCustomerProfileCode == value);\r\n if (selectedCCProfiles.length > 0) {\r\n filterCCProfileAlertssummary.push(selectedCCProfiles[0]);\r\n }\r\n });\r\n //$('#headerLoader').hide();\r\n self.setState({ CargoCareProfileAlertssummary: filterCCProfileAlertssummary, CargoCareProfilesSelected: selectedCargoCareProfiles, DashboardWidgetsSearch: data }, () => {\r\n self.UpdateCargoChart();\r\n //this.UpdateCharts();\r\n self.applyAdvanceSearchPreferences(dashboardPreferenceId);\r\n self.setState({ loading: false });\r\n });\r\n\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n });\r\n //}\r\n }\r\n\r\n\r\n RefreshDashboardGrids(data: any) {\r\n AdvanceSearch.RestoreAdvanceSearchControls();\r\n if (this.state.WGSwitchAll.ReeferGrid)\r\n ReeferStatusGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.ReeferHistoryGrid)\r\n ReeferHistoryGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.GensetGrid)\r\n GensetStatusGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.GensetHistoryGrid)\r\n GensetHistoryGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.DryGrid)\r\n DryStatusSSRMGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.DryHistoryGrid)\r\n DryHistoryGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.ChassisGrid)\r\n ChassisStatusGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.ChassisHistoryGrid)\r\n ChassisHistoryGrid.refreshGridReady(data);\r\n if (this.state.WGSwitchAll.PTResultGrid)\r\n PTResultGrid.refreshGridReady(data);\r\n\r\n }\r\n\r\n componentDidMount() {\r\n\r\n window.addEventListener(\"resize\", this.updateHomepageGridDimensions.bind(this));\r\n setTimeout(() => { this.updateHomepageGridDimensions() }, 200);\r\n document.addEventListener(\"mousedown\", this.handleClickOutside);\r\n $('#wgheadermenu').html('');\r\n $(\"#menuwg\").detach().appendTo('#wgheadermenu');\r\n $('#wglayoutmenu').html('');\r\n $(\"#menuLayout\").detach().appendTo('#wglayoutmenu');\r\n\r\n var parent = this;\r\n if (JSON.parse(sessionStorage.getItem('SSRM')) == null && JSON.parse(sessionStorage.getItem('SSRM')) == undefined) {\r\n sessionStorage.setItem('SSRM', JSON.parse(sessionStorage.getItem('UserInfo')).IsEnableServerSide);\r\n self.setState({ EnableServerSide: JSON.parse(sessionStorage.getItem('UserInfo')).IsEnableServerSide });\r\n } else {\r\n self.setState({ EnableServerSide: JSON.parse(sessionStorage.getItem('SSRM')) });\r\n }\r\n this.loadDefaultWGSwitch();\r\n this.loadLayoutDefaultValues();\r\n\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var requestUrl: any;\r\n if (dashboardPreferenceId != null && dashboardPreferenceId != undefined)\r\n requestUrl = '/api/User/GetUserLayoutByDashboardPreferenceId?DashboardPreferenceId=' + dashboardPreferenceId;\r\n else\r\n requestUrl = '/api/User/GetUserDashboardLayouts';\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + requestUrl);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.DashboardLayouts != null && data.DashboardLayouts.length > 0) {\r\n var defaultPreferenceName: any;\r\n if (dashboardPreferenceId != null && dashboardPreferenceId != undefined)\r\n defaultPreferenceName = data.DashboardLayouts.filter(x => x.DashboardPreferenceId == dashboardPreferenceId);\r\n else\r\n defaultPreferenceName = data.DashboardLayouts.filter(x => x.IsDefault == 1);\r\n if (defaultPreferenceName.length > 0) {\r\n this.loadUserDashboardLayout(defaultPreferenceName[0].PreferenceData, defaultPreferenceName[0].DashboardPreferenceId, defaultPreferenceName[0].IsReadOnly, defaultPreferenceName[0].RevisionNum);\r\n //NavMenu.UpdateLayoutState(defaultPreferenceName[0].PreferenceName, data.DashboardLayouts);\r\n this.setState({\r\n LayoutPreference: defaultPreferenceName[0].PreferenceName, DashboardLayouts: data.DashboardLayouts,\r\n DashboardWidgetsSearch: data.DashboardWidgetsSearch\r\n });\r\n }\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n this.loadUserDashboardLayout(dashboardLayouts[0].PreferenceData, dashboardLayouts[0].DashboardPreferenceId, dashboardLayouts[0].IsReadOnly, dashboardLayouts[0].RevisionNum);\r\n //NavMenu.UpdateLayoutState(dashboardLayouts[0].PreferenceName, data.DashboardLayouts);\r\n this.setState({\r\n LayoutPreference: dashboardLayouts[0].PreferenceName, DashboardLayouts: data.DashboardLayouts,\r\n DashboardWidgetsSearch: data.DashboardWidgetsSearch\r\n });\r\n }\r\n }\r\n else {\r\n\r\n this.loadUserDashboardLayout(null, 0, false, 0);\r\n }\r\n //this.setState({ DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n });\r\n\r\n if (hasReefers) {\r\n setTimeout(() => {\r\n //var myRequest = new Request(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummary'); \r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalReefers;\r\n if (selectedAssetStates == null || selectedAssetStates == \"\")\r\n selectedAssetStates = \"A,D,R\";\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/TotalReeferStatusSummary?AssetState=' + selectedAssetStates;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummary') //RCNG-70\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //$('#headerLoader').hide();\r\n this.setState({ Reefersummary: data });\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/CargoCareProfileAlerts?AssetState=' + selectedAssetStates;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummary') //RCNG-70\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(ccdata => {\r\n $('#cargoCareLoader').show();//RCNG-3409\r\n //$('#headerLoader').hide();\r\n this.GetUserProfileFilters(ccdata);\r\n\r\n });\r\n //this.BindCharts();\r\n //this.UpdateCharts();\r\n // this.setState({ loading: false });\r\n });\r\n\r\n // start RCNG-60\r\n //this.timer = setInterval(\r\n // () => this.tick(),\r\n // this.refreshInterval\r\n //);\r\n //end RCNG-60\r\n //console.log(\"SearchLoadingIsInProgress\");\r\n //console.log(this.state.SearchLoadingIsInProgress);\r\n if (wgPTResult[0] != \"hidden\") {\r\n this.ptResultsTimer = setInterval(\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"PTR Result setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n if (this.state.SelectedAssetStatesPTR == null || this.state.SelectedAssetStatesPTR == \"\")\r\n this.setState({ SelectedAssetStatesPTR: defaultInventory }, () => { this.PTResultsTick() })\r\n else {\r\n this.PTResultsTick();\r\n }\r\n }\r\n else {\r\n //console.log(\"PTR Result setInterval else part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n }\r\n },\r\n this.refreshInterval\r\n );\r\n }\r\n ////RCNG-60\r\n if (wgCargoCare[0] != \"hidden\") {\r\n this.CCSummaryTimer = setInterval(\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"CargoCare setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n\r\n if (this.state.SelectedAssetStatesCC == null || this.state.SelectedAssetStatesCC == \"\")\r\n this.setState({ SelectedAssetStatesCC: defaultInventory }, () => { $('#cargoCareLoader').show(); this.ReeferStatusSummaryCC() })\r\n else {\r\n $('#cargoCareLoader').show();\r\n this.ReeferStatusSummaryCC();\r\n }\r\n }\r\n else {\r\n //console.log(\"CargoCare setInterval else part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n }\r\n },\r\n this.refreshInterval\r\n );\r\n }\r\n if (wgMicroalarms[0] != \"hidden\") {\r\n this.MASummaryTimer = setInterval(\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"Microalarms setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n\r\n if (this.state.SelectedAssetStatesMA == null || this.state.SelectedAssetStatesMA == \"\")\r\n this.setState({ SelectedAssetStatesMA: defaultInventory }, () => { $('#microAlarmLoader').show(); this.ReeferStatusSummaryMA(true) })\r\n else {\r\n $('#microAlarmLoader').show();\r\n this.ReeferStatusSummaryMA(true);\r\n }\r\n }\r\n else {\r\n //console.log(\"Microalarms setInterval else part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n }\r\n },\r\n this.refreshInterval\r\n );\r\n }\r\n //if (wgAllreefers[0] != \"hidden\") {\r\n this.TotalReeferStatusTimer = setInterval(\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"TotalReeferStatus setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n\r\n\r\n if (this.state.SelectedAssetStatesTotalReefers == null || this.state.SelectedAssetStatesTotalReefers == \"\")\r\n this.setState({ SelectedAssetStatesTotalReefers: defaultInventory }, () => { $('#totalReefersLoader').show(); $('#headerLoader').show(); this.TotalReeferStatusSummary(false) })\r\n else {\r\n $('#totalReefersLoader').show();\r\n $('#headerLoader').show();\r\n this.TotalReeferStatusSummary(false);\r\n }\r\n }\r\n else {\r\n //console.log(\"TotalReeferStatus setInterval else part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n }\r\n },\r\n this.refreshInterval\r\n );\r\n //}\r\n //end RCNG-60\r\n }, 200);\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n }\r\n\r\n if (hasGensets) {\r\n setTimeout(() => {\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalGensets;\r\n if (selectedAssetStates == null || selectedAssetStates == \"\")\r\n selectedAssetStates = \"A\";\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetStatusSummary?AssetState=' + selectedAssetStates)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //$('#GensetheaderLoader').hide();\r\n this.setState({ Gensetsummary: data });\r\n this.BindGensetCharts();\r\n this.UpdateGensetCharts();\r\n this.setState({ loading: false });\r\n });\r\n\r\n this.gensetTimer = setInterval(\r\n\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"Genset setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n\r\n this.GensetTick()\r\n }\r\n else {\r\n //console.log(\"Genset setInterval else part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n }\r\n },\r\n this.refreshInterval\r\n );\r\n }, 200);\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n }\r\n\r\n if (hasDrys) {\r\n setTimeout(() => {\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalDrys; //this.state.SelectedAssetStatesCC;\r\n if (selectedAssetStates == null || selectedAssetStates == \"\")\r\n selectedAssetStates = \"A\";\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusSummary?AssetState=' + selectedAssetStates)\r\n\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //$('#DryheaderLoader').hide(); \r\n this.setState({ Drysummary: data });\r\n this.BindDryCharts();\r\n this.UpdateDryCharts();\r\n\r\n this.setState({ loading: false });\r\n });\r\n\r\n this.dryTimer = setInterval(\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"Dry setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n\r\n this.DryTick();\r\n }\r\n else {\r\n //console.log(\"Dry setInterval else part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n }\r\n },\r\n this.refreshInterval\r\n );\r\n }, 200);\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n }\r\n\r\n if (hasChassis) {\r\n setTimeout(() => {\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisStatusSummary')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //$('#ChassisheaderLoader').hide();\r\n this.setState({ Chassissummary: data });\r\n this.BindChassisCharts();\r\n this.UpdateChassisCharts();\r\n this.setState({ loading: false });\r\n });\r\n\r\n this.chassisTimer = setInterval(\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"Chassis setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n\r\n this.ChassisTick();\r\n }\r\n else {\r\n //console.log(\"Chassis setInterval else part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n }\r\n },\r\n this.refreshInterval\r\n );\r\n }, 200);\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n }\r\n\r\n }\r\n\r\n applyAdvanceSearchPreferences(dashboardPreferenceId: any) {\r\n var searchPreference: any = \"\";\r\n var widgetSearchPreferences: any = [];\r\n if (this.state.DashboardWidgetsSearch.length > 0)\r\n widgetSearchPreferences = this.state.DashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 1);\r\n if (widgetSearchPreferences.length > 0)\r\n searchPreference = widgetSearchPreferences[0].SearchData;\r\n if (searchPreference != \"\") {\r\n\r\n var searchFilters: any = JSON.parse(searchPreference);\r\n AdvanceSearch.applyAdvanceSearchPreferences(searchFilters, dashboardPreferenceId);\r\n }\r\n else {\r\n setTimeout(() => {\r\n $(\"#globalLoader\").hide();\r\n }, 2000);\r\n }\r\n }\r\n\r\n GetUserCCPProfileFiltersWhenAllUncheked() {\r\n var url = Config.ApiBaseUrl + '/api/User/GetUserProfileFilters';\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data != \"\") {\r\n var profileFilters: any;\r\n profileFilters = JSON.parse(data);\r\n this.setState({ CargoCareProfilesSelected: profileFilters }, () => {\r\n\r\n let CCP: any = self.state.CargoCareProfilesSelected;\r\n forEach(CCP, function (value, key) {\r\n if (CCP.length > 0) {\r\n let chkprofileId: any = 'chk_' + value;\r\n $(\"input[id='\" + chkprofileId + \"']\").prop('checked', true);\r\n }\r\n else {\r\n var chkprofileId: any = 'chk_' + value;\r\n $(\"input[id='\" + chkprofileId + \"']\").prop('checked', false);\r\n }\r\n });\r\n\r\n let chkSelectAll = document.getElementById(\"chkSelectAllProfile\");\r\n let checkboxes = document.getElementsByName('chkProfile');\r\n\r\n var numberOfCheckboxes = $(\"input:checkbox[name=chkProfile]\").length;\r\n var numberOfCheckboxesChecked = $(\"input:checkbox[name=chkProfile]:checked\").length;\r\n\r\n if (numberOfCheckboxes == numberOfCheckboxesChecked)\r\n chkSelectAll.checked = true;\r\n else\r\n chkSelectAll.checked = false\r\n\r\n });\r\n }\r\n });\r\n }\r\n\r\n GetUserProfileFilters(ccdata: any) {\r\n var ccProfilePreferences: any = \"\";\r\n var widgetSearchPreferences: any = [];\r\n if (this.state.DashboardWidgetsSearch.length > 0)\r\n widgetSearchPreferences = this.state.DashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 9);\r\n if (widgetSearchPreferences.length > 0)\r\n ccProfilePreferences = widgetSearchPreferences[0].SearchData;\r\n\r\n if (ccProfilePreferences == \"\") {\r\n var ccProfilesData: any = ccdata.map(x => x.CargoCareCustomerProfileCode);\r\n this.setState({ CargoCareProfileAlertssummary: ccdata, DefaultCargoCareProfileAlertssummary: ccdata, CargoCareProfilesSelected: ccProfilesData }, () => {\r\n this.BindCharts();\r\n this.UpdateCharts(false);\r\n this.setState({ loading: false });\r\n });\r\n }\r\n else {\r\n var profileFilters: any = JSON.parse(ccProfilePreferences);\r\n var filterCCProfileAlertssummary: any[] = [];\r\n forEach(profileFilters, function (value, key) {\r\n var selectedCCProfiles = ccdata.filter(x => x.CargoCareCustomerProfileCode == value);\r\n if (selectedCCProfiles.length > 0) {\r\n filterCCProfileAlertssummary.push(selectedCCProfiles[0]);\r\n }\r\n });\r\n this.setState({ CargoCareProfileAlertssummary: filterCCProfileAlertssummary, DefaultCargoCareProfileAlertssummary: ccdata, CargoCareProfilesSelected: profileFilters }, () => {\r\n this.BindCharts();\r\n this.UpdateCharts(false);\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n }\r\n\r\n PTResultsTick() {\r\n if (this.state.WGSwitchAll.PTResultGrid)\r\n PTResultGrid.RefreshPTResultsGrid();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n\r\n if (nextProps.SearchLoadingIsInProgress != null && nextProps.SearchLoadingIsInProgress != undefined) {\r\n //console.log(\"In Component will receive props, value of SearchLoadingIsInProgress is \" + nextProps.SearchLoadingIsInProgress);\r\n this.setState({ ...this.state, SearchLoadingIsInProgress: nextProps.SearchLoadingIsInProgress })\r\n }\r\n\r\n //this.SetDryWidgetState();\r\n }\r\n\r\n hideWidgetsLoader() {\r\n $('.loader-bg').hide();\r\n }\r\n\r\n handleClickOutside(event) {\r\n if(this.wrapperRef.current !=null && this.wrapperRef.current!=undefined){\r\n if (this.wrapperRef && !this.wrapperRef.current.contains(event.target)) {\r\n $(\"#tooglePopupSettings\").hide();\r\n } \r\n } \r\n this.CloseInventoryStatePopUp(event);//RCNG-4931\r\n this.ClosePTRResultsPopUp(event);//RCNG-4112\r\n this.CloseSettingsPopUp(event); //RCNG-4252\r\n }\r\n CloseSettingsPopUp(event) {\r\n if (event.srcElement.className == 'loader-global'|| event.srcElement.className == 'nav-link btn dropdown-toggle' || event.srcElement.className == 'nav-link btn dropdown-toggle show' || event.srcElement.id == 'Spgear'\r\n || (event.srcElement.className.includes != undefined && event.srcElement.className.includes('switch'))\r\n || event.srcElement.className == 'vstack gap-2'\r\n || event.srcElement.className == 'img-responsive chassis_svg' || event.srcElement.className=='widzetText'\r\n || event.srcElement.className == 'list-group-item d-flex ' || event.srcElement.className == 'widgetSettingsCircle goldColor'\r\n || event.srcElement.className == 'fas fa-chart-pie' || event.srcElement.className == 'widgetSettingsCircle purple-color'\r\n || event.srcElement.className == 'd-flex gap-2 px-2 pb-2' || event.srcElement.className == 'list-group' || event.srcElement.className == 'widgetSettingsCircle blue-color'\r\n || event.srcElement.className == 'dropdown-menu dropdown-menu-end set-default-layout show' || event.srcElement.className == 'widgetSettingsCircle green-color'\r\n || event.srcElement.className == 'list-group-item' || event.srcElement.className == 'widgetSettingsCircle black-color' || event.srcElement.className == 'fas fa-search-plus'\r\n || event.srcElement.className == 'img-responsive' || event.srcElement.className == 'list-group DynamicTotalReefersHeight'\r\n || event.srcElement.className == 'fas fa-history' || event.srcElement.id == 'btn_DefaultLayOut' \r\n || event.srcElement.className == 'fas fa-bell' || event.srcElement.className == 'fas fa-clipboard-check'\r\n || event.srcElement.className == 'aggrid-icons-bg' || event.srcElement.className == 'fas fa-map-marked-alt'\r\n || event.srcElement.className == 'fas fa-th' || event.srcElement.className == 'fas fa-bell-plus' || event.srcElement.className == 'fas fa-analytics'|| event.srcElement.className=='') {\r\n var isToggle = $('#lnktoggle').hasClass('nav-link btn dropdown-toggle show');\r\n if (isToggle) {\r\n $('#lnktoggle').removeClass('show');\r\n $('#divToggle').css(\"display\", \"none\");\r\n }\r\n }\r\n else {\r\n $('#lnktoggle').removeClass('show');\r\n $('#divToggle').removeClass('show');\r\n $('#divToggle').css(\"display\", \"none\");\r\n\r\n }\r\n }\r\n ClosePTRResultsPopUp(event) {\r\n\r\n if (event.srcElement.className == 'dropdown-menu dropdown-menu-end disable-collapse show' || event.srcElement.className == 'PTI-datetime' ||\r\n event.srcElement.className == 'col-form-label' || event.srcElement.className == 'Select-placeholder' || event.srcElement.className == 'form-select'\r\n || event.srcElement.className == 'col-md-10' || event.srcElement.className == 'col-md-12' || event.srcElement.className == 'col-md-12 grid-select-control'\r\n || event.srcElement.className == 'col-form-label' || event.srcElement.className == 'float-end' || event.srcElement.className == 'date-picker'\r\n || event.srcElement.className == 'row mt-2' || event.srcElement.className == 'col-md-2 pe-0 text-md-end' || event.srcElement.className == 'Select-option is-focused' || event.srcElement.className == 'Select-clear'\r\n || event.srcElement.id == 'btn_Search' || event.srcElement.className == 'Select-arrow-zone' || event.srcElement.className == ''\r\n || event.srcElement.className == 'Select-clear-zone' || event.srcElement.className == 'PTI-datetime react-datepicker-ignore-onclickoutside'\r\n || event.srcElement.className == 'btn btn-outline-secondary dropdown-toggle btn-sm' || event.srcElement.className == 'btn btn-outline-secondary dropdown-toggle btn-sm show'\r\n || event.srcElement.className == 'mx-1' || (event.srcElement.className.includes != undefined && event.srcElement.className.includes('react-datepicker__day react-datepicker__day')) || (event.srcElement.className.includes != undefined && event.srcElement.className.includes('react-datepicker'))) {\r\n }\r\n else {\r\n $('#PTRPopUP').removeClass('show');\r\n $('#PTRPopUP').css(\"display\", \"none\");\r\n }\r\n }\r\n //RCNG-4931\r\n CloseInventoryStatePopUp(event) {\r\n if (event.srcElement.id == 'drop-down-inv-pti' || event.srcElement.id == 'btn_inv-pti' || event.srcElement.className == 'AssetSettinsText'\r\n || event.srcElement.className == 'inv-state' || event.srcElement.id == 'react-select-7--value' || event.srcElement.className == 'Select-arrow-zone'\r\n || event.srcElement.className == 'Select-placeholder' || event.srcElement.className == 'Select-control' || event.srcElement.className == 'Select-clear'\r\n || event.srcElement.id == 'react-select-7--option-0' || event.srcElement.id == 'react-select-7--option-1'\r\n || event.srcElement.id == 'react-select-7--option-2' || event.srcElement.className == 'Select-value-icon'\r\n\r\n || event.srcElement.id == 'drop-down-inv-TD' || event.srcElement.id == 'btn_inv-TD'\r\n || event.srcElement.id == 'react-select-15--value'\r\n || event.srcElement.id == 'react-select-14--option-0' || event.srcElement.id == 'react-select-14--option-1'\r\n || event.srcElement.id == 'react-select-14--option-2' ||\r\n\r\n event.srcElement.id == 'drop-down-inv-fleet-overview' || event.srcElement.id == 'btn_inv-fleet-overview'\r\n || event.srcElement.id == 'react-select-3--value'\r\n || event.srcElement.id == 'react-select-3--option-0' || event.srcElement.id == 'react-select-3--option-1'\r\n || event.srcElement.id == 'react-select-3--option-2'\r\n\r\n || event.srcElement.id == 'drop-down-inv-DFO' || event.srcElement.id == 'btn_inv-DFO'\r\n || event.srcElement.id == 'react-select-15--value'\r\n || event.srcElement.id == 'react-select-15--option-0' || event.srcElement.id == 'react-select-15--option-1'\r\n || event.srcElement.id == 'react-select-15--option-2'\r\n\r\n || event.srcElement.id == 'drop-down-inv-cc' || event.srcElement.id == 'btn_inv-cc'\r\n || event.srcElement.id == 'react-select-9--value'\r\n || event.srcElement.id == 'react-select-9--option-0' || event.srcElement.id == 'react-select-9--option-1'\r\n || event.srcElement.id == 'react-select-9--option-2'\r\n\r\n\r\n || event.srcElement.id == 'drop-down-inv-ma' || event.srcElement.id == 'btn_inv-ma'\r\n || event.srcElement.id == 'react-select-2--value'\r\n || event.srcElement.id == 'react-select-2--option-0' || event.srcElement.id == 'react-select-2--option-1'\r\n || event.srcElement.id == 'react-select-2--option-2'\r\n\r\n || event.srcElement.id == 'drop-down-inv-GFO' || event.srcElement.id == 'btn_inv-GFO'\r\n || event.srcElement.id == 'react-select-10--value'\r\n || event.srcElement.id == 'react-select-10--option-0' || event.srcElement.id == 'react-select-10--option-1'\r\n || event.srcElement.id == 'react-select-10--option-2'\r\n\r\n || event.srcElement.id == 'drop-down-inv' || event.srcElement.id == 'btn_inv-TR'\r\n || event.srcElement.id == 'react-select-4--value'\r\n || event.srcElement.id == 'react-select-4--option-0' || event.srcElement.id == 'react-select-4--option-1'\r\n || event.srcElement.id == 'react-select-4--option-2'\r\n\r\n || event.srcElement.id == 'drop-down-inv-TG' || event.srcElement.id == 'btn_inv-TG'\r\n || event.srcElement.id == 'react-select-11--value'\r\n || event.srcElement.id == 'react-select-11--option-0' || event.srcElement.id == 'react-select-11--option-1'\r\n || event.srcElement.id == 'react-select-11--option-2'\r\n || (event.srcElement.id.includes != undefined && event.srcElement.id.includes('react-select')) \r\n ) {\r\n //$('#drop-down-inv-pti').css(\"display\", \"none\");\r\n }\r\n else {\r\n\r\n $('#drop-down-inv-pti').css(\"display\", \"none\");\r\n $('#drop-down-inv-TD').css(\"display\", \"none\");\r\n $('#drop-down-inv-fleet-overview').css(\"display\", \"none\");\r\n $('#drop-down-inv-DFO').css(\"display\", \"none\");\r\n $('#drop-down-inv-cc').css(\"display\", \"none\");\r\n $('#drop-down-inv-ma').css(\"display\", \"none\");\r\n $('#drop-down-inv-GFO').css(\"display\", \"none\");\r\n $('#drop-down-inv').css(\"display\", \"none\");\r\n $('#drop-down-inv-TG').css(\"display\", \"none\");\r\n }\r\n }\r\n componentWillUnmount() {\r\n\r\n document.removeEventListener(\"mousedown\", this.handleClickOutside);\r\n $('#wgheadermenu').html('');\r\n $('#wglayoutmenu').html('');\r\n clearTimeout(this.timer);\r\n if (hasGensets)\r\n clearTimeout(this.gensetTimer);\r\n if (hasDrys)\r\n clearTimeout(this.dryTimer);\r\n if (hasChassis)\r\n clearTimeout(this.chassisTimer);\r\n //26495\r\n if (hasReefers) {\r\n if (wgPTResult[0] != \"hidden\") {\r\n clearTimeout(this.ptResultsTimer);\r\n }\r\n // start RCNG-60\r\n if (wgCargoCare[0] != \"hidden\") {\r\n clearTimeout(this.CCSummaryTimer);\r\n }\r\n clearTimeout(this.MASummaryTimer);\r\n //if (wgAllreefers[0] != \"hidden\") {\r\n clearTimeout(this.TotalReeferStatusTimer);\r\n //}\r\n //end RCNG-60\r\n }\r\n\r\n window.removeEventListener(\"resize\", this.updateHomepageGridDimensions.bind(this));\r\n\r\n }\r\n\r\n LoadPreferencesToDefault() {\r\n this.isLayOutLoadingBySetDefault = true;\r\n this.loadLayoutDefaultValues();\r\n this.state.WGSwitchAll.AdvancedSearch = true;\r\n this.state.WGSwitchAll.ReeferMaps = true;\r\n this.state.WGSwitchAll.CargoCare = true;\r\n\r\n if (hasReefers) {\r\n this.state.WGSwitchAll.ReeferGrid = true;\r\n this.state.WGSwitchAll.ReeferHistoryGrid = true;\r\n this.state.WGSwitchAll.ReeferTempGraph = true;\r\n this.state.WGSwitchAll.PTResultGrid = true;\r\n this.state.WGSwitchAll.MicroaAlarms = true;\r\n this.state.WGSwitchAll.Histogram = true;\r\n this.state.WGSwitchAll.TotalReefers = true;\r\n }\r\n if (hasGensets) {\r\n this.state.WGSwitchAll.GensetGrid = true;\r\n this.state.WGSwitchAll.GensetHistoryGrid = true;\r\n this.state.WGSwitchAll.GensetHistogram = true;\r\n this.state.WGSwitchAll.TotalGensets = true;\r\n }\r\n if (hasDrys) {\r\n this.state.WGSwitchAll.DryGrid = true;\r\n this.state.WGSwitchAll.DryHistoryGrid = true;\r\n this.state.WGSwitchAll.DryHistogram = true;\r\n this.state.WGSwitchAll.TotalDrys = true;\r\n }\r\n if (hasChassis) {\r\n this.state.WGSwitchAll.ChassisGrid = true;\r\n this.state.WGSwitchAll.ChassisHistoryGrid = true;\r\n this.state.WGSwitchAll.ChassisHistogram = true;\r\n this.state.WGSwitchAll.TotalChassis = true;\r\n }\r\n //this.state.WGSwitchAll.AdvancedGensetSearch = true;\r\n\r\n this.setState({ Defaultlayouts: this.allLayouts, DashBoardItems: this.DbItems, layouts: this.allLayouts });\r\n this.isLayOutLoadingBySetDefault = false;\r\n this.BindCharts();\r\n if (hasGensets)\r\n this.BindGensetCharts();\r\n if (hasDrys)\r\n this.BindDryCharts();\r\n if (hasChassis)\r\n this.BindChassisCharts();\r\n //$('#menuwg').addClass('open');\r\n }\r\n\r\n static UpdateUserDashboardLayout(layoutType: any, layoutName: any, readOnlyLayout: any, dashboardPreferenceId: any, revisionNum: any) {\r\n if (layoutName == \"\" || layoutName == null) {\r\n PopupWindow.showErrorMessage('Error', \"Please enter Dashboard Name.\");\r\n return;\r\n }\r\n var userDashboards: any = self.state.DashboardLayouts.filter(x => x.DashboardPreferenceId == dashboardPreferenceId);\r\n if (userDashboards.length > 0) {\r\n if (layoutType != userDashboards[0].IsCustomerDashboard) {\r\n var layouts: any = self.state.DashboardLayouts.filter(x => x.PreferenceName.toLowerCase().trim() == layoutName.toLowerCase().trim() && x.IsCustomerDashboard == layoutType)\r\n if (layouts.length > 0) {\r\n PopupWindow.showErrorMessage('Alert', \"Dashboard name \" + layoutName + \" already exists.\");\r\n return;\r\n }\r\n }\r\n }\r\n\r\n $('#globalLoader').show();\r\n var layoutPreference = { LayoutName: layoutName, LayoutType: layoutType, IsReadOnly: readOnlyLayout, DashboardPreferenceId: dashboardPreferenceId, RevisionNum: revisionNum };\r\n\r\n var url = Config.ApiBaseUrl + '/api/User/UpdateDashboardLayout';\r\n\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(layoutPreference), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"RevisionNum Invalid\") {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n $('#globalLoader').hide();\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGConfirmWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNumConfirm.bind(this, dashboardPreferenceId), self.closeRevisionConfirmation.bind(this));\r\n }\r\n else if (data == \"Success\")\r\n self.ReloadLayoutsData(\"Dashboard updated successfully.\", dashboardPreferenceId, \"Edit\");\r\n else {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage('Error', \"Error occured, please try again.\");\r\n return;\r\n }\r\n });\r\n }\r\n\r\n refreshRevisionNumConfirm(dashboardPreferenceId: any) {\r\n var DashboardPreferenceId: any = dashboardPreferenceId;\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.DashboardLayouts != null && data.DashboardLayouts.length > 0) {\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x => x.DashboardPreferenceId == DashboardPreferenceId);\r\n self.applyLayoutPreferences(defaultPreferenceName[0].PreferenceData, defaultPreferenceName[0].DashboardPreferenceId, defaultPreferenceName[0].IsReadOnly, defaultPreferenceName[0].RevisionNum);\r\n }\r\n });\r\n }\r\n\r\n closeRevisionConfirmation() {\r\n RCNGConfirmWindow.ConfirmWindow.close();\r\n isSaved = false;\r\n }\r\n\r\n static SaveUserDashboardLayout(layoutType: any, layoutName: any, readOnlyLayout: any) {\r\n if (layoutName.trim() == \"\" || layoutName == null) {\r\n PopupWindow.showErrorMessage('Alert', \"Please enter Dashboard Name.\");\r\n return;\r\n }\r\n var userDashboards: any = self.state.DashboardLayouts;\r\n if (layoutType == true && userDashboards.length > 0) {\r\n var layoutCount: any = userDashboards.filter(x => x.IsCustomerDashboard == 1);\r\n if (layoutCount.length == 20) {\r\n PopupWindow.showErrorMessage('Alert', \"Maritime Platform will support a maximum of 20 Company Dashboards.\");\r\n return;\r\n }\r\n var customerLayouts: any = layoutCount.filter(x => x.PreferenceName.toLowerCase().trim() == layoutName.toLowerCase().trim())\r\n if (customerLayouts.length > 0) {\r\n PopupWindow.showErrorMessage('Alert', \"Dashboard name \" + layoutName + \" already exists.\");\r\n return;\r\n }\r\n }\r\n if (layoutType == false && userDashboards.length > 0) {\r\n var layoutCount: any = userDashboards.filter(x => x.IsCustomerDashboard == 0);\r\n if (layoutCount.length == 20) {\r\n PopupWindow.showErrorMessage('Alert', \"Maritime Platform will support a maximum of 20 User Dashboards.\");\r\n return;\r\n }\r\n var userLayouts: any = layoutCount.filter(x => x.PreferenceName.toLowerCase().trim() == layoutName.toLowerCase().trim())\r\n if (userLayouts.length > 0) {\r\n PopupWindow.showErrorMessage('Alert', \"Dashboard name \" + layoutName + \" already exists.\");\r\n return;\r\n }\r\n }\r\n $('#globalLoader').show();\r\n var layoutPreferences: any = self.getLayoutPreferenceData(layoutType, layoutName, readOnlyLayout);\r\n var searchPreferences: any = AdvanceSearch.getSearchPreferenceData();\r\n var dashboardGrids: any = self.getDashboardGridsEnabled();\r\n var cargoCarePreferences: any = self.getCargoCareProfilesData();\r\n\r\n var url = Config.ApiBaseUrl + '/api/User/SaveDashboardLayout';\r\n var dashBoardLayout: any = { LayoutPreferences: layoutPreferences, SearchPreferences: searchPreferences, DashboardGrids: dashboardGrids, CargoCarePreferences: cargoCarePreferences };\r\n\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(dashBoardLayout), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n var dashboardPreferenceId: any = data;\r\n if (dashboardPreferenceId != 0)\r\n self.ReloadLayoutsData(\"Dashboard created successfully.\", dashboardPreferenceId, \"\");\r\n else {\r\n PopupWindow.showErrorMessage('Error', \"Error occured, please try again.\");\r\n return;\r\n }\r\n });\r\n }\r\n\r\n ReloadLayoutsData(message: any, dashboardPreferenceId: any, action: any) {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n self.GetDashboardLayouts(message, dashboardPreferenceId, action);\r\n }\r\n\r\n GetDashboardLayouts(message: any, dashboardPreferenceId: any, action: any) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.DashboardLayouts != null && data.DashboardLayouts.length > 0) {\r\n if (dashboardPreferenceId == 0) {\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x => x.IsDefault == 1);\r\n if (defaultPreferenceName.length > 0) {\r\n this.setState({ LayoutPreference: defaultPreferenceName[0].PreferenceName, DashboardLayouts: data.DashboardLayouts, RevisionNum: defaultPreferenceName[0].RevisionNum },\r\n () => this.applyLayoutPreferences(defaultPreferenceName[0].PreferenceData, defaultPreferenceName[0].DashboardPreferenceId, defaultPreferenceName[0].IsReadOnly, defaultPreferenceName[0].RevisionNum));\r\n }\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n this.setState({ LayoutPreference: dashboardLayouts[0].PreferenceName, DashboardLayouts: data.DashboardLayouts, RevisionNum: dashboardLayouts[0].RevisionNum },\r\n () => this.applyLayoutPreferences(dashboardLayouts[0].PreferenceData, dashboardLayouts[0].DashboardPreferenceId, dashboardLayouts[0].IsReadOnly, dashboardLayouts[0].RevisionNum));\r\n }\r\n }\r\n else {\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x => x.DashboardPreferenceId == dashboardPreferenceId);\r\n if (action == \"Edit\" && dashboardPreferenceId == sessionStorage.getItem('DashboardPreferenceId'))\r\n this.setState({ LayoutPreference: defaultPreferenceName[0].PreferenceName, DashboardLayouts: data.DashboardLayouts, RevisionNum: defaultPreferenceName[0].RevisionNum, IsReadOnly: defaultPreferenceName[0].IsReadOnly },\r\n () => this.restoreCustomerLayout(defaultPreferenceName[0].IsReadOnly));\r\n else\r\n this.setState({ LayoutPreference: defaultPreferenceName[0].PreferenceName, DashboardLayouts: data.DashboardLayouts, RevisionNum: defaultPreferenceName[0].RevisionNum },\r\n () => this.applyLayoutPreferences(defaultPreferenceName[0].PreferenceData, defaultPreferenceName[0].DashboardPreferenceId, defaultPreferenceName[0].IsReadOnly, defaultPreferenceName[0].RevisionNum));\r\n }\r\n }\r\n //this.setState({ DashboardLayouts: data.DashboardLayouts });\r\n //$('#globalLoader').hide(); \r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n });\r\n }\r\n\r\n restoreCustomerLayout(isReadOnly: any) {//RCNG-4654\r\n setTimeout(() => { \r\n if (isReadOnly)\r\n self.pinAllDashboardWidgets(true);\r\n else\r\n self.pinAllDashboardWidgets(false);\r\n isSaveLayout = false;\r\n }, 200);// intial waiting time for layouts load\r\n $('#globalLoader').hide(); \r\n }\r\n\r\n getLayoutPreferenceData(layoutType: any, layoutName: any, readOnlyLayout: any) {\r\n var data = { Defaultlayouts: this.state.Defaultlayouts, DashBoardItems: this.state.DashBoardItems, layouts: this.state.layouts, WGSwitchAll: this.state.WGSwitchAll }\r\n var layoutPreference = { LayoutName: layoutName, LayoutType: layoutType, IsReadOnly: readOnlyLayout, PreferenceData: JSON.stringify(data) };\r\n return layoutPreference;\r\n }\r\n\r\n getDashboardGridsEnabled() {\r\n var data: any = {\r\n ReeferGrid: self.state.WGSwitchAll.ReeferGrid,\r\n GensetGrid: self.state.WGSwitchAll.GensetGrid,\r\n DryGrid: self.state.WGSwitchAll.DryGrid,\r\n ChassisGrid: self.state.WGSwitchAll.ChassisGrid,\r\n ReeferHistoryGrid: self.state.WGSwitchAll.ReeferHistoryGrid,\r\n GensetHistoryGrid: self.state.WGSwitchAll.GensetHistoryGrid,\r\n DryHistoryGrid: self.state.WGSwitchAll.DryHistoryGrid,\r\n ChassisHistoryGrid: self.state.WGSwitchAll.ChassisHistoryGrid\r\n };\r\n return data;\r\n }\r\n\r\n getCargoCareProfilesData() {\r\n var profileFilters = uniq(this.state.CargoCareProfilesSelected);\r\n var cargoCarePreferences: any = {\r\n ProfileType: 'CP', PreferenceData: JSON.stringify(profileFilters)\r\n };\r\n\r\n return cargoCarePreferences;\r\n }\r\n\r\n\r\n SaveCargoCareProfileFilters() {\r\n //console.log(\"SaveCargoCareProfileFilters: \"+isSaveLayout);\r\n var userPrefId = 0;\r\n if (this.state.UserPreferenceId == 0) {\r\n userPrefId = 0;\r\n }\r\n else {\r\n userPrefId = this.state.UserPreferenceId;\r\n }\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserSearchPreferences';\r\n var profileFilters = uniq(this.state.CargoCareProfilesSelected);\r\n var preferencedata = { UserId: 0, FunctionId: 1, WidgetId: 9, DashboardPreferenceId: this.state.DashboardPreferenceId, RevisionNum: this.state.RevisionNum, PreferenceData: JSON.stringify(profileFilters), CopyToHistory: false };\r\n\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"Success\")\r\n self.refreshRevisionNum(this.state.DashboardPreferenceId, false);\r\n else if (data == \"RevisionNum Invalid\") {\r\n $('#globalLoader').hide();\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGConfirmWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNum.bind(this, this.state.DashboardPreferenceId, true), self.closeRevisionConfirmation.bind(this));\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage('Error', \"Error occured, please try again.\");\r\n return;\r\n }\r\n });\r\n }\r\n\r\n UpdateDashboardLayout() {\r\n if (this.state.isFullscreen == false && this.state.isLayoutLoaded == true && !isSaveLayout) {\r\n //var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n //console.log(\"UpdateUserLayout: \"+isSaveLayout);\r\n //$('#globalLoader').show();\r\n if(!isSaved) //RCNG-4253\r\n this.CreateOrUpdateDashboard();\r\n }\r\n }\r\n\r\n CreateOrUpdateDashboard() {\r\n isSaved = true;\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/User/UpdateUserLayout';\r\n var data = { Defaultlayouts: this.state.Defaultlayouts, DashBoardItems: this.state.DashBoardItems, layouts: this.state.layouts, WGSwitchAll: this.state.WGSwitchAll }\r\n var preferencedata = { DashboardPreferenceId: this.state.DashboardPreferenceId, RevisionNum: this.state.RevisionNum, PreferenceData: JSON.stringify(data) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"Success\")\r\n self.refreshRevisionNum(self.state.DashboardPreferenceId, false);\r\n else if (data == \"RevisionNum Invalid\") {\r\n $('#globalLoader').hide();\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGConfirmWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNum.bind(this, self.state.DashboardPreferenceId, true), self.closeRevisionConfirmation.bind(this));\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage('Error', \"Error occured, please try again.\");\r\n return;\r\n }\r\n isSaved = false;\r\n });\r\n\r\n }\r\n\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGConfirmWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNum.bind(this, dashboardPreferenceId, true), self.closeRevisionConfirmation.bind(this));\r\n }\r\n\r\n refreshRevisionNum(dashboardPreferenceId: any, isLoader: any) {\r\n var DashboardPreferenceId: any = dashboardPreferenceId;\r\n if (isLoader)\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.restoreWidgetsLoaders();\r\n if (data.DashboardLayouts != null && data.DashboardLayouts.length > 0) {\r\n if (DashboardPreferenceId == 0 || DashboardPreferenceId == undefined) {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n var dashboardPreferenceId: any = dashboardLayouts[0].DashboardPreferenceId\r\n this.setState({\r\n LayoutPreference: dashboardLayouts[0].PreferenceName, RevisionNum: dashboardLayouts[0].RevisionNum, DashboardLayouts: data.DashboardLayouts,\r\n DashboardWidgetsSearch: data.DashboardWidgetsSearch, DashboardPreferenceId: DashboardPreferenceId\r\n });\r\n sessionStorage.setItem('DashboardPreferenceId', DashboardPreferenceId);\r\n }\r\n else {\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x => x.DashboardPreferenceId == DashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum, DashboardLayouts: data.DashboardLayouts, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n }\r\n }\r\n $('#globalLoader').hide();\r\n isSaveLayout = false;\r\n isSaved = false;\r\n });\r\n }\r\n\r\n\r\n restoreWidgetsLoaders() {\r\n setTimeout(() => {\r\n this.hideWidgetsLoader();\r\n }, 4000);\r\n //$('.loader-bg').hide();\r\n //var responseData = data;\r\n this.setState({ isLayoutUpdated: false });\r\n var searchWidgetHeight = $('.advance-search').height();\r\n if (searchWidgetHeight != undefined) {\r\n var searchBodyHeight = parseInt(searchWidgetHeight.toString()) - 89;\r\n $('.dashboardSearch-scrollbar').css('height', searchBodyHeight);\r\n }\r\n }\r\n\r\n AddDefaultLayout(el) {\r\n var jsonlayout = JSON.stringify(this.state.layouts);\r\n var allLayouts = JSON.parse(jsonlayout);\r\n var JsondefaultLayouts = JSON.stringify(this.state.Defaultlayouts);\r\n var defaultLayouts = JSON.parse(JsondefaultLayouts);\r\n $.each(allLayouts, function (i, n) {\r\n allLayouts[i] = reject(allLayouts[i], { Key: el });\r\n var defaultitem = find(defaultLayouts[i], { 'i': el });\r\n if (defaultitem != undefined) {\r\n allLayouts[i].push(defaultitem);\r\n }\r\n });\r\n\r\n this.setState({ layouts: allLayouts });\r\n }\r\n\r\n toggleSwitch = (el) => {\r\n //this.setState(prevState => {\r\n // return {\r\n // WGSwitch:dswitch\r\n // };\r\n //}); \r\n isSaveLayout = false;\r\n if (!this.isLayOutLoadingBySetDefault) {\r\n this.setState({ isLayoutUpdated: true });\r\n if (el == \"wgAdvSearch\") {\r\n if (this.state.WGSwitchAll.AdvancedSearch == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgAdvSearch\", Layout: this.GetItemLayout(\"wgAdvSearch\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false, IsPinned: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, AdvancedSearch: !this.state.WGSwitchAll.AdvancedSearch } });\r\n }\r\n else if (el == \"wgGensetAdvSearch\") {\r\n if (this.state.WGSwitchAll.AdvancedSearch == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgGensetAdvSearch\", Layout: this.GetItemLayout(\"wgGensetAdvSearch\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false, IsPinned: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, AdvancedGensetSearch: !this.state.WGSwitchAll.AdvancedGensetSearch } });\r\n }\r\n else if (el == \"wgMicroalarms\") {\r\n if (this.state.WGSwitchAll.MicroaAlarms == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgMicroalarms\", Layout: this.GetItemLayout(\"wgMicroalarms\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, MicroaAlarms: !this.state.WGSwitchAll.MicroaAlarms } });\r\n }\r\n else if (el == \"wgCargoCare\") {\r\n if (this.state.WGSwitchAll.CargoCare == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgCargoCare\", Layout: this.GetItemLayout(\"wgCargoCare\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, CargoCare: !this.state.WGSwitchAll.CargoCare } });\r\n }\r\n else if (el == \"wgHistogram\") {\r\n if (this.state.WGSwitchAll.Histogram == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgHistogram\", Layout: this.GetItemLayout(\"wgHistogram\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, Histogram: !this.state.WGSwitchAll.Histogram } });\r\n }\r\n else if (el == \"wgGensetHistogram\") {\r\n if (this.state.WGSwitchAll.GensetHistogram == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgGensetHistogram\", Layout: this.GetItemLayout(\"wgGensetHistogram\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, GensetHistogram: !this.state.WGSwitchAll.GensetHistogram } });\r\n }\r\n else if (el == \"wgDryHistogram\") {\r\n if (this.state.WGSwitchAll.DryHistogram == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgDryHistogram\", Layout: this.GetItemLayout(\"wgDryHistogram\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, DryHistogram: !this.state.WGSwitchAll.DryHistogram } });\r\n }\r\n else if (el == \"wgChassisHistogram\") {\r\n if (this.state.WGSwitchAll.ChassisHistogram == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgChassisHistogram\", Layout: this.GetItemLayout(\"wgChassisHistogram\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, ChassisHistogram: !this.state.WGSwitchAll.ChassisHistogram } });\r\n }\r\n else if (el == \"wgAllreefers\") {\r\n\r\n if (this.state.WGSwitchAll.TotalReefers == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgAllreefers\", Layout: this.GetItemLayout(\"wgAllreefers\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, TotalReefers: !this.state.WGSwitchAll.TotalReefers } });\r\n }\r\n else if (el == \"wgAllDrys\") {\r\n\r\n if (this.state.WGSwitchAll.TotalDrys == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgAllDrys\", Layout: this.GetItemLayout(\"wgAllDrys\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, TotalDrys: !this.state.WGSwitchAll.TotalDrys } });\r\n }\r\n else if (el == \"wgAllChassis\") {\r\n\r\n if (this.state.WGSwitchAll.TotalChassis == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgAllChassis\", Layout: this.GetItemLayout(\"wgAllChassis\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, TotalChassis: !this.state.WGSwitchAll.TotalChassis } });\r\n }\r\n else if (el == \"wgAllGensets\") {\r\n\r\n if (this.state.WGSwitchAll.TotalGensets == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgAllGensets\", Layout: this.GetItemLayout(\"wgAllGensets\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, TotalGensets: !this.state.WGSwitchAll.TotalGensets } });\r\n }\r\n else if (el == \"wgReeferMap\") {\r\n if (this.state.WGSwitchAll.ReeferMaps == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgReeferMap\", Layout: this.GetItemLayout(\"wgReeferMap\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, ReeferMaps: !this.state.WGSwitchAll.ReeferMaps } });\r\n }\r\n else if (el == \"wgReeferGrid\") {\r\n if (this.state.WGSwitchAll.ReeferGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgReeferGrid\", Layout: this.GetItemLayout(\"wgReeferGrid\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, ReeferGrid: !this.state.WGSwitchAll.ReeferGrid } });\r\n }\r\n else if (el == \"wgGensetGrid\") {\r\n if (this.state.WGSwitchAll.GensetGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgGensetGrid\", Layout: this.GetItemLayout(\"wgGensetGrid\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, GensetGrid: !this.state.WGSwitchAll.GensetGrid } });\r\n }\r\n else if (el == \"wgDryGrid\") {\r\n if (this.state.WGSwitchAll.DryGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgDryGrid\", Layout: this.GetItemLayout(\"wgDryGrid\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, DryGrid: !this.state.WGSwitchAll.DryGrid } });\r\n }\r\n else if (el == \"wgChassisGrid\") {\r\n if (this.state.WGSwitchAll.ChassisGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgChassisGrid\", Layout: this.GetItemLayout(\"wgChassisGrid\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, ChassisGrid: !this.state.WGSwitchAll.ChassisGrid } });\r\n }\r\n else if (el == \"wgReeferHistory\") {\r\n if (this.state.WGSwitchAll.ReeferHistoryGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgReeferHistory\", Layout: this.GetItemLayout(\"wgReeferHistory\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, ReeferHistoryGrid: !this.state.WGSwitchAll.ReeferHistoryGrid } });\r\n }\r\n else if (el == \"wgReeferTempGraph\") {\r\n if (this.state.WGSwitchAll.ReeferTempGraph == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgReeferTempGraph\", Layout: this.GetItemLayout(\"wgReeferTempGraph\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, ReeferTempGraph: !this.state.WGSwitchAll.ReeferTempGraph } });\r\n }\r\n else if (el == \"wgGensetHistory\") {\r\n if (this.state.WGSwitchAll.GensetHistoryGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgGensetHistory\", Layout: this.GetItemLayout(\"wgGensetHistory\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, GensetHistoryGrid: !this.state.WGSwitchAll.GensetHistoryGrid } });\r\n }\r\n else if (el == \"wgDryHistory\") {\r\n if (this.state.WGSwitchAll.DryHistoryGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgDryHistory\", Layout: this.GetItemLayout(\"wgDryHistory\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, DryHistoryGrid: !this.state.WGSwitchAll.DryHistoryGrid } });\r\n }\r\n else if (el == \"wgChassisHistory\") {\r\n if (this.state.WGSwitchAll.ChassisHistoryGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgChassisHistory\", Layout: this.GetItemLayout(\"wgChassisHistory\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, ChassisHistoryGrid: !this.state.WGSwitchAll.ChassisHistoryGrid } });\r\n }\r\n else if (el == \"wgPTResult\") {\r\n if (this.state.WGSwitchAll.PTResultGrid == false) {\r\n this.AddDefaultLayout(el);\r\n var index = indexOf(this.state.DashBoardItems, function (o) { return o.Key = el; });\r\n if (index < 0) {\r\n var dashboards = this.state.DashBoardItems;\r\n dashboards.push({ Key: \"wgPTResult\", Layout: this.GetItemLayout(\"wgPTResult\", this.state.layouts), Enabled: false, IsVisible: true, IsFullscreen: false });\r\n this.setState({ DashBoardItems: dashboards });\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n }\r\n }\r\n else {\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: el }) });\r\n }\r\n\r\n this.setState({ WGSwitchAll: { ...this.state.WGSwitchAll, PTResultGrid: !this.state.WGSwitchAll.PTResultGrid } });\r\n }\r\n //var allLayouts = this.state.layouts;\r\n //this.setState({ layouts: allLayouts });\r\n //alert(JSON.stringify(this.state.layouts));\r\n this.BindCharts();\r\n if (hasGensets)\r\n this.BindGensetCharts();\r\n if (hasDrys)\r\n this.BindDryCharts();\r\n if (hasChassis)\r\n this.BindChassisCharts();\r\n //$('#menuwg').addClass('open');\r\n }\r\n };\r\n\r\n ClearFilter(isFromMicroAlarmChart: boolean) {\r\n var filters = this.state.Filters;\r\n filters.SelectedCountry = \"\";\r\n filters.SelectedAssetTypes = \"\";\r\n filters.SelectedAssetStates = \"A,D\";//RCNG-59\r\n filters.SelectedGeofence = \"\";\r\n filters.SelectedGeofenceInside = \"\";\r\n filters.SelectedInterval = \"\";\r\n filters.SelectedOem = \"\";\r\n filters.SelectedReefer = \"\";\r\n filters.SelectedVesselCode = \"\";\r\n filters.StatusFilters = [];\r\n filters.CustomAttributeFilters = {};\r\n //RCNG-3571-as this need to carry fwd\r\n if (!isFromMicroAlarmChart)\r\n filters.SelectedCargoCareProfiles = \"\";\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n AdvanceSearch.ClearReeferSearchFilters(isFromMicroAlarmChart);\r\n totalWidgetSearch = false;//WI26412\r\n\r\n if (this.state.WGSwitchAll.ReeferGrid == true) {\r\n ReeferStatusGrid.ClearReeferStatusGridData();\r\n ReeferStatusSSRMGrid.ClearReeferStatusGridData();\r\n }\r\n if (this.state.WGSwitchAll.GensetGrid == true)\r\n GensetStatusGrid.ClearGensetStatusGridData();\r\n if (this.state.WGSwitchAll.DryGrid == true)\r\n DryStatusSSRMGrid.ClearDryStatusGridData();\r\n if (this.state.WGSwitchAll.ChassisGrid == true)\r\n ChassisStatusGrid.ClearChassisStatusGridData();\r\n if (this.state.WGSwitchAll.ReeferHistoryGrid == true)\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n if (this.state.WGSwitchAll.GensetHistoryGrid == true)\r\n GensetHistoryGrid.ClearHistoryGridData();\r\n if (this.state.WGSwitchAll.DryHistoryGrid == true)\r\n DryHistoryGrid.ClearHistoryGridData();\r\n if (this.state.WGSwitchAll.ChassisHistoryGrid == true)\r\n ChassisHistoryGrid.ClearHistoryGridData();\r\n }\r\n\r\n\r\n /* RCNG 13 start */\r\n ReeferStatusSummaryMA(isglobalLoaderToBeHidden: boolean) {\r\n if (this.state.WGSwitchAll.MicroaAlarms) {//RCNG-60\r\n isSaveLayout = true;\r\n this.setState({ loading: true });\r\n $('#microAlarmLoader').show(); \r\n var selectedAssetStates: any = this.state.SelectedAssetStatesMA;\r\n //if (selectedAssetStates == \"\")\r\n // selectedAssetStates = \"A,D,R\";\r\n if (selectedAssetStates == \"\" || selectedAssetStates == null) {//RCNG-61\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n $('#drop-down-inv-ma').css(\"display\", \"none\");//WI RCNG-84\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummaryMA?AssetState=' + selectedAssetStates;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (isglobalLoaderToBeHidden)\r\n $('#globalLoader').hide();\r\n var reeferSummaryMA = this.state.Reefersummary;\r\n if (self.state.Filters.SelectedCargoCareProfiles != null && self.state.Filters.SelectedCargoCareProfiles != undefined\r\n && self.state.Filters.SelectedCargoCareProfiles == \"\") {\r\n reeferSummaryMA.MAMinor = data.MAMinor;\r\n reeferSummaryMA.MASevere = data.MASevere;\r\n }\r\n this.setState({ Reefersummary: reeferSummaryMA, loading: false }, () => {\r\n this.UpdateMAChart();\r\n $('#microAlarmLoader').hide(); });//RCNG-60\r\n });\r\n }\r\n }//RCNG-60\r\n /* RCNG 13 end */\r\n\r\n /* RCNG 14 start */\r\n ReeferStatusSummaryCC() {\r\n if (this.state.WGSwitchAll.CargoCare) {//RCNG-60\r\n this.setState({ loading: true });\r\n isSaveLayout = true;\r\n $('#cargoCareLoader').show();\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesCC;\r\n //if (selectedAssetStates == \"\")\r\n // selectedAssetStates = \"A,D,R\";\r\n if (selectedAssetStates == \"\" || selectedAssetStates == null) {//RCNG-61\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n $('#drop-down-inv-cc').css(\"display\", \"none\");//WI RCNG-84\r\n $('#CCProfileFilter').css(\"display\", \"none\");\r\n //this.setState({ Reefersummary: reeferSummaryCC, loading: false }, () => { this.UpdateCargoChart(); });//RCNG-60\r\n //this.setState({ Reefersummary: reeferSummaryCC});//RCNG-60\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/CargoCareProfileAlerts?AssetState=' + selectedAssetStates;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(CCdata => {\r\n var filterCCProfileAlertssummary:any[] =[];\r\n var selectedCargoCareProfiles: any = self.state.CargoCareProfilesSelected;\r\n forEach(selectedCargoCareProfiles, function (value, key) {\r\n var selectedCCProfiles = CCdata.filter(x => x.CargoCareCustomerProfileCode == value);\r\n if(selectedCCProfiles.length>0){\r\n filterCCProfileAlertssummary.push(selectedCCProfiles[0]);\r\n }\r\n });\r\n \r\n //$('#headerLoader').hide();\r\n this.setState({ CargoCareProfileAlertssummary: filterCCProfileAlertssummary, DefaultCargoCareProfileAlertssummary: CCdata }, () => {\r\n this.UpdateCargoChart();\r\n //this.UpdateCharts();\r\n this.setState({ loading: false }, () => {\r\n $('#cargoCareLoader').hide();\r\n });\r\n });\r\n\r\n });\r\n\r\n }\r\n }//RCNG-60\r\n /* RCNG 14 end */\r\n TotalDryStatusSummary(isFromHistogram: any) {\r\n if (this.state.WGSwitchAll.TotalDrys || this.state.WGSwitchAll.DryHistogram) {//RCNG-60\r\n this.setState({ loading: true }); \r\n isSaveLayout = true;\r\n if (isFromHistogram == true)\r\n $('#totalDryFleetLoader').show();\r\n else\r\n $('#DryheaderLoader').show(); \r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalDrys;\r\n if (selectedAssetStates == \"\" || selectedAssetStates == null) {\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");\r\n return;\r\n }\r\n //$('#drop-down-inv').css(\"display\", \"none\");\r\n //$('#drop-down-inv-fleet-overview').css(\"display\", \"none\");\r\n $('#drop-down-inv-TD').css(\"display\", \"none\");//RCNG-1157\r\n $('#drop-down-inv-DFO').css(\"display\", \"none\");//RCNG-1157\r\n var url = Config.ApiBaseUrl + '/api/Asset/DryStatusSummary?AssetState=' + selectedAssetStates;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //$('#DryheaderLoader').hide();\r\n this.setState({ Drysummary: data, loading: false }, () => {\r\n this.UpdateDryCharts();\r\n if (isFromHistogram == true)\r\n $('#totalDryFleetLoader').hide();\r\n else\r\n $('#DryheaderLoader').hide();\r\n });\r\n });\r\n }\r\n }\r\n TotalGensetStatusSummary(isFromHistogram: any) {\r\n if (this.state.WGSwitchAll.TotalGensets || this.state.WGSwitchAll.GensetHistogram) {\r\n isSaveLayout = true;\r\n this.setState({ loading: true });\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalGensets;\r\n if (selectedAssetStates == \"\" || selectedAssetStates == null) {\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");\r\n return;\r\n }\r\n //$('#drop-down-inv').css(\"display\", \"none\");\r\n //$('#drop-down-inv-fleet-overview').css(\"display\", \"none\");\r\n $('#drop-down-inv-TG').css(\"display\", \"none\");//RCNG-1157\r\n $('#drop-down-inv-GFO').css(\"display\", \"none\");//RCNG-1157\r\n //$('#globalLoader').show(); //RCNG-1452\r\n if (isFromHistogram == true)\r\n $('#totalGensetFleetLoader').show();\r\n else\r\n $('#GensetheaderLoader').show();\r\n \r\n var url = Config.ApiBaseUrl + '/api/Asset/GensetStatusSummary?AssetState=' + selectedAssetStates;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n\r\n this.setState({ Gensetsummary: data, loading: false }, () => {\r\n this.UpdateGensetCharts();\r\n $('#globalLoader').hide();//RCNG-1452\r\n if (isFromHistogram == true)\r\n $('#totalGensetFleetLoader').hide();\r\n else\r\n $('#GensetheaderLoader').hide();\r\n });\r\n });\r\n }\r\n }\r\n /* RCNG 17 start */\r\n TotalReeferStatusSummary(isFromHistogram:any) {\r\n if (this.state.WGSwitchAll.TotalReefers || this.state.WGSwitchAll.Histogram) {//RCNG-60\r\n isSaveLayout = true;\r\n this.setState({ loading: true });\r\n if (isFromHistogram == true)\r\n $('#totalReefersLoader').show();\r\n else\r\n $('#headerLoader').show();\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalReefers;\r\n //if (selectedAssetStates == \"\")\r\n // selectedAssetStates = \"A,D,R\";\r\n if (selectedAssetStates == \"\" || selectedAssetStates == null) {//RCNG-61\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n $('#drop-down-inv').css(\"display\", \"none\");//WI RCNG-84\r\n $('#drop-down-inv-fleet-overview').css(\"display\", \"none\");//WI RCNG-84\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/TotalReeferStatusSummary?AssetState=' + selectedAssetStates;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n //$('#headerLoader').hide();//RCNG-60\r\n var totalReeferSummary = this.state.Reefersummary;\r\n totalReeferSummary.AllReefer = data.AllReefer;\r\n totalReeferSummary.Running = data.Running;\r\n totalReeferSummary.Stopped = data.Stopped;\r\n totalReeferSummary.MissedRunning = data.MissedRunning;\r\n totalReeferSummary.MissedStopped = data.MissedStopped;\r\n this.setState({ Reefersummary: totalReeferSummary, loading: false }, () => {\r\n this.UpdateHistogramCharts();//RCNG-60\r\n if (isFromHistogram == true)\r\n $('#totalReefersLoader').hide();\r\n else\r\n $('#headerLoader').hide();\r\n });\r\n });\r\n }\r\n }//RCNG-60\r\n /* RCNG 17 end */\r\n\r\n /* start RCNG 16 */\r\n GetPTResultsByAssetState() {\r\n isSaveLayout = true;\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesPTR;\r\n if (selectedAssetStates == \"\" || selectedAssetStates == null) {//RCNG-61\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n $('#drop-down-inv-pti').css(\"display\", \"none\");//WI RCNG-84\r\n PTResultGrid.GetPTResultsByAssetState(selectedAssetStates);\r\n }\r\n /* end RCNG 16 */\r\n\r\n ApplyChartCargocareFilters(category: any, name: any, color: any, selectedCCProfileCode: any) {\r\n if (category == undefined) {\r\n this.clearHistoryGridHeaders();\r\n this.ClearFilter(false);\r\n ReeferCallout.ResetMapPushpins(); //WI-26959\r\n totalWidgetSearch = true;//WI26412\r\n\r\n var statusfilters = [];\r\n\r\n if (name == CCLabelSevere) {\r\n statusfilters.push(ReeferStatusEnum.CCSevere);\r\n }\r\n else if (name == CCLabelMinor) {\r\n statusfilters.push(ReeferStatusEnum.CCMinor);\r\n }\r\n else if (name == CCLabelInformational) {\r\n statusfilters.push(ReeferStatusEnum.CCInformational);\r\n }\r\n\r\n var filters = this.state.Filters;\r\n filters.StatusFilters = statusfilters;\r\n if (name == CCLabelSevere || name == CCLabelMinor || name == CCLabelInformational)\r\n filters.SelectedAssetStates = this.state.SelectedAssetStatesCC;\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n this.bindingReeferStatusGrid(filters,true);\r\n } else if (name == undefined) { // clicked on bar \r\n this.clearHistoryGridHeaders();\r\n this.ClearFilter(false);\r\n ReeferCallout.ResetMapPushpins(); //WI-26959\r\n totalWidgetSearch = true;//WI26412\r\n\r\n var statusfilters = [];\r\n\r\n if (color == \"#ff0000\") {\r\n statusfilters.push(ReeferStatusEnum.CCSevere);\r\n }\r\n else if (color == \"#2685cb\") {\r\n statusfilters.push(ReeferStatusEnum.CCMinor);\r\n }\r\n else if (color == \"#efb400\") {\r\n statusfilters.push(ReeferStatusEnum.CCInformational);\r\n }\r\n var SelectedCCProfiles = self.state.CargoCareProfileAlertssummary.filter(x => x.CargoCareCustomerProfileCode == category);\r\n var filters = this.state.Filters;\r\n if (SelectedCCProfiles != null && SelectedCCProfiles != undefined && SelectedCCProfiles != '' && SelectedCCProfiles.length > 0) {\r\n filters.SelectedCargoCareProfiles = SelectedCCProfiles[0].CargoCareCustomerProfileID;\r\n }\r\n filters.StatusFilters = statusfilters;\r\n if (color == \"#ff0000\" || color == \"#2685cb\" || color == \"#efb400\")\r\n filters.SelectedAssetStates = this.state.SelectedAssetStatesCC;\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n this.bindingReeferStatusGrid(filters,true);\r\n }\r\n else if (category == \"CCPSearch\") {\r\n this.clearHistoryGridHeaders();\r\n this.ClearFilter(false);\r\n ReeferCallout.ResetMapPushpins(); //WI-26959\r\n totalWidgetSearch = true;//WI26412\r\n\r\n var statusfilters = []; \r\n var filters = this.state.Filters;\r\n filters.StatusFilters = statusfilters;\r\n\r\n var SelectedCCProfiles = self.state.CargoCareProfileAlertssummary.filter(x => x.CargoCareCustomerProfileCode == selectedCCProfileCode);\r\n if (SelectedCCProfiles != null && SelectedCCProfiles != undefined && SelectedCCProfiles != '' && SelectedCCProfiles.length > 0) {\r\n filters.SelectedCargoCareProfiles = SelectedCCProfiles[0].CargoCareCustomerProfileID;\r\n AdvanceSearch.UpdateAdvanceSearchFilters(SelectedCCProfiles[0].CargoCareCustomerProfileID);\r\n } \r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n this.bindingReeferStatusGrid(filters);\r\n }\r\n }\r\n\r\n ApplyChartFilters(value, isFromMicroAlarmChart: boolean) {\r\n //this.setGridHeader('');\r\n this.clearHistoryGridHeaders();\r\n this.ClearFilter(isFromMicroAlarmChart);\r\n ReeferCallout.ResetMapPushpins(); //WI-26959\r\n totalWidgetSearch = true;//WI26412\r\n\r\n var statusfilters = [];\r\n if (value == \"Running\") {\r\n statusfilters.push(ReeferStatusEnum.Running);\r\n }\r\n else if (value == \"Stopped\") {\r\n statusfilters.push(ReeferStatusEnum.Stopped);\r\n }\r\n else if (value == \"MissedRunning\") {\r\n statusfilters.push(ReeferStatusEnum.MissedRunning);\r\n }\r\n else if (value == \"MissedStopped\") {\r\n statusfilters.push(ReeferStatusEnum.MissedStopped);\r\n }\r\n else if (value == \"MASevere\") {\r\n statusfilters.push(ReeferStatusEnum.MASevere);\r\n }\r\n else if (value == \"MAMinor\") {\r\n statusfilters.push(ReeferStatusEnum.MAMinor);\r\n }\r\n else if (value == \"CCSevere\") {\r\n statusfilters.push(ReeferStatusEnum.CCSevere);\r\n }\r\n else if (value == \"CCMinor\") {\r\n statusfilters.push(ReeferStatusEnum.CCMinor);\r\n }\r\n else if (value == \"CCInformational\") {\r\n statusfilters.push(ReeferStatusEnum.CCInformational);\r\n }\r\n\r\n var filters = this.state.Filters;\r\n filters.StatusFilters = statusfilters;\r\n\r\n /* start RCNG 13*/\r\n if (value == \"MASevere\" || value == \"MAMinor\")\r\n filters.SelectedAssetStates = this.state.SelectedAssetStatesMA;\r\n /* start RCNG 13*/\r\n\r\n /* start RCNG 14*/\r\n if (value == \"CCSevere\" || value == \"CCMinor\" || value == \"CCInformational\")\r\n filters.SelectedAssetStates = this.state.SelectedAssetStatesCC;\r\n /* start RCNG 14*/\r\n\r\n /* start RCNG 17*/\r\n if (value == \"Running\" || value == \"Stopped\" || value == \"MissedRunning\" || value == \"MissedStopped\")\r\n filters.SelectedAssetStates = this.state.SelectedAssetStatesTotalReefers;\r\n /* start RCNG 17*/\r\n\r\n if (value === \"MASevere\" || value === \"MAMinor\")\r\n filters.SelectedCargoCareProfiles = this.state.Filters.SelectedCargoCareProfiles;\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n if (!isFromMicroAlarmChart) {\r\n this.ReeferStatusSummaryMA(false);\r\n }\r\n\r\n this.bindingReeferStatusGrid(filters,false);\r\n }\r\n\r\n ApplyChartFiltersGenset(value, isFromMicroAlarmChart: boolean) {\r\n //this.setGridHeader('');\r\n this.clearHistoryGridHeaders();\r\n this.ClearFilter(isFromMicroAlarmChart);\r\n ReeferCallout.ResetMapPushpins(); //WI-26959\r\n var statusfilters = [];\r\n if (value == \"PowerOnReporting\") {\r\n statusfilters.push(ReeferStatusEnum.PowerOnReporting);\r\n }\r\n else if (value == \"PowerOnNotReporting\") {\r\n statusfilters.push(ReeferStatusEnum.PowerOnNotReporting);\r\n }\r\n else if (value == \"PowerOffReporting\") {\r\n statusfilters.push(ReeferStatusEnum.PowerOffReporting);\r\n }\r\n else if (value == \"PowerOffNotReporting\") {\r\n statusfilters.push(ReeferStatusEnum.PowerOffNotReporting);\r\n }\r\n\r\n var filters = this.state.Filters;\r\n filters.SelectedAssetStates = this.state.SelectedAssetStatesTotalGensets;//RCNG-1452\r\n filters.StatusFilters = statusfilters;\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n this.bindingGensetStatusGrid(filters);\r\n\r\n }\r\n\r\n ApplyChartFiltersDry(value, isFromMicroAlarmChart: boolean) {\r\n //this.setGridHeader('');\r\n this.clearHistoryGridHeaders();\r\n this.ClearFilter(isFromMicroAlarmChart);\r\n ReeferCallout.ResetMapPushpins(); //WI-26959\r\n var statusfilters = [];\r\n if (value == \"DryInGeofence\") {\r\n statusfilters.push(ReeferStatusEnum.DryInGeofence);\r\n }\r\n else if (value == \"DryOutGeofence\") {\r\n statusfilters.push(ReeferStatusEnum.DryOutGeofence);\r\n }\r\n var filters = this.state.Filters;\r\n\r\n if (value == \"DryInGeofence\" || value == \"DryOutGeofence\")\r\n filters.SelectedAssetStates = this.state.SelectedAssetStatesTotalDrys;\r\n\r\n filters.StatusFilters = statusfilters;\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n this.bindingDryStatusGrid(filters, false, false);\r\n }\r\n\r\n ApplyChartFiltersChassis(value, isFromMicroAlarmChart: boolean) {\r\n //this.setGridHeader('');\r\n this.clearHistoryGridHeaders();\r\n this.ClearFilter(isFromMicroAlarmChart);\r\n ReeferCallout.ResetMapPushpins(); //WI-26959\r\n var statusfilters = [];\r\n if (value == \"ChassisPwrInGeofence\") {\r\n statusfilters.push(ReeferStatusEnum.ChassisPwrInGeofence);\r\n }\r\n else if (value == \"ChassisPwrOutGeofence\") {\r\n statusfilters.push(ReeferStatusEnum.ChassisPwrOutGeofence);\r\n }\r\n else if (value == \"ChassisNotPwrInGeofence\") {\r\n statusfilters.push(ReeferStatusEnum.ChassisNotPwrInGeofence);\r\n }\r\n else if (value == \"ChassisNotPwrOutGeofence\") {\r\n statusfilters.push(ReeferStatusEnum.ChassisNotPwrOutGeofence);\r\n }\r\n var filters = this.state.Filters;\r\n filters.StatusFilters = statusfilters;\r\n this.setState({\r\n Filters: filters\r\n });\r\n\r\n this.bindingChassisStatusGrid(filters);\r\n }\r\n\r\n BindCharts() {\r\n var parent = this;\r\n setTimeout(function () {\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: \"\"\r\n },\r\n exporting: {\r\n enabled: false\r\n }\r\n });\r\n //if (parent.chartHistogram != null) {\r\n // parent.chartHistogram.destroy();\r\n //}\r\n var element = document.getElementById('chartHistogram');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n\r\n parent.chartHistogram = Highcharts.chart('chartHistogram', {\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n height: 280\r\n },\r\n title: {\r\n text: ''\r\n },\r\n tooltip: {\r\n pointFormat: '{series.name}: {point.percentage:.1f}%'\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartFilters(event.point['id'],false);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n dataLabels: {\r\n enabled: false\r\n },\r\n showInLegend: true\r\n }\r\n },\r\n series: [{\r\n name: 'Reefers',\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n\r\n\r\n //if (parent.chartmicro != null) {\r\n // parent.chartmicro.destroy();\r\n //}\r\n\r\n var element = document.getElementById('chartmicro');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n parent.chartmicro = Highcharts.chart('chartmicro', {\r\n chart: {\r\n type: 'pie',\r\n height: 196,\r\n options3d: {\r\n enabled: true,\r\n alpha: 45,\r\n beta: 0,\r\n }\r\n },\r\n title: {\r\n text: '',\r\n style: {\r\n left: '0px',\r\n top: '0px',\r\n }\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartFilters(event.point['id'],false);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n dataLabels: {\r\n enabled: false,\r\n distance: -50,\r\n style: {\r\n fontWeight: 'bold',\r\n color: 'white'\r\n }\r\n },\r\n innerSize: '60%',\r\n }\r\n },\r\n series: [{\r\n name: 'Reefers',\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n\r\n //check\r\n //if (parent.chartcargo != null) {\r\n // parent.chartcargo.destroy();\r\n //}\r\n var element = document.getElementById('chartcargo');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n if (isSOLogedin) {\r\n parent.chartcargo = Highcharts.chart('chartcargo', {\r\n chart: {\r\n type: 'pie',\r\n height: 196,\r\n options3d: {\r\n enabled: true,\r\n alpha: 45,\r\n beta: 0,\r\n }\r\n },\r\n title: {\r\n text: '',\r\n align: 'center',\r\n verticalAlign: 'middle',\r\n y: 40\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color'], \"\");\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n dataLabels: {\r\n enabled: false,\r\n distance: -50,\r\n style: {\r\n fontWeight: 'bold',\r\n color: 'white'\r\n }\r\n },\r\n innerSize: '60%',\r\n }\r\n },\r\n series: [{\r\n name: 'Alerts',\r\n data: [{\r\n name: CCLabelSevere,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)),\r\n color: '#ff0000'\r\n }, {\r\n name: CCLabelMinor,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)), // self.state.Reefersummary.CCMinor,\r\n color: '#2685cb'\r\n }, {\r\n name: CCLabelInformational,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)), //self.state.Reefersummary.CCInformational,\r\n color: '#efb400'\r\n }]\r\n }]\r\n });\r\n\r\n } else {\r\n\r\n if (typeof (self.state.CargoCareProfileAlertssummary) != 'undefined' && self.state.CargoCareProfileAlertssummary != null && self.state.CargoCareProfileAlertssummary.length > 1) {\r\n parent.chartcargo = Highcharts.chart('chartcargo', {\r\n chart: {\r\n renderTo: 'chartcargo',\r\n reflow: true\r\n },\r\n title: {\r\n text: '',\r\n },\r\n xAxis: {\r\n categories: self.state.CargoCareProfileAlertssummary.map(x => x.CargoCareCustomerProfileCode)\r\n },\r\n yAxis: {\r\n maxPadding: 1,\r\n min: 0,\r\n title: {\r\n text: 'Active Alert Counts'\r\n },\r\n },\r\n plotOptions: {\r\n column: {\r\n showInLegend: false,\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color'], \"\");\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n size: '30%',\r\n showInLegend: false,\r\n center: [100, 60],\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color'], \"\");\r\n }\r\n }\r\n }\r\n },\r\n series: {\r\n cursor: 'pointer',\r\n }\r\n },\r\n labels: {\r\n items: [{\r\n html: 'All Alerts by Severity',\r\n style: {\r\n left: '58px',\r\n top: '0px',\r\n color: 'black'\r\n }\r\n }]\r\n },\r\n series: [{\r\n type: 'column',\r\n name: CCLabelSevere,\r\n color: '#ff0000',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)\r\n }, {\r\n type: 'column',\r\n name: CCLabelMinor,\r\n color: '#2685cb',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)\r\n }, {\r\n type: 'column',\r\n name: CCLabelInformational,\r\n color: '#efb400',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)\r\n },\r\n {\r\n type: 'pie',\r\n name: 'Alerts',\r\n data: [{\r\n name: CCLabelSevere,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)),\r\n color: '#ff0000'\r\n }, {\r\n name: CCLabelMinor,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)), // self.state.Reefersummary.CCMinor,\r\n color: '#2685cb'\r\n }, {\r\n name: CCLabelInformational,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)), //self.state.Reefersummary.CCInformational,\r\n color: '#efb400'\r\n }],\r\n }]\r\n });\r\n } else if (typeof (self.state.CargoCareProfileAlertssummary) != 'undefined' && self.state.CargoCareProfileAlertssummary != null && self.state.CargoCareProfileAlertssummary.length == 1) {\r\n parent.chartcargo = Highcharts.chart('chartcargo', {\r\n chart: {\r\n renderTo: 'chartcargo',\r\n },\r\n title: {\r\n text: '',\r\n },\r\n xAxis: {\r\n categories: self.state.CargoCareProfileAlertssummary.map(x => x.CargoCareCustomerProfileCode)\r\n },\r\n yAxis: {\r\n title: {\r\n text: 'Active Alert Counts'\r\n },\r\n },\r\n plotOptions: {\r\n column: {\r\n showInLegend: false,\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color']);\r\n }\r\n }\r\n }\r\n },\r\n series: {\r\n cursor: 'pointer',\r\n }\r\n },\r\n\r\n series: [{\r\n type: 'column',\r\n name: CCLabelSevere,\r\n color: '#ff0000',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)\r\n }, {\r\n type: 'column',\r\n name: CCLabelMinor,\r\n color: '#2685cb',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)\r\n }, {\r\n type: 'column',\r\n name: CCLabelInformational,\r\n color: '#efb400',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)\r\n },\r\n ]\r\n });\r\n parent.chartcargo.xAxis[0].labelGroup.element.childNodes.forEach(function (label) {\r\n label.style.cursor = \"pointer\";\r\n label.onclick = function () {\r\n parent.ApplyChartCargocareFilters(\"CCPSearch\", \"\", \"\", this.textContent);\r\n //alert('You clicked on ' + this.textContent);\r\n }\r\n });\r\n\r\n } else {\r\n $('#chartcargo').html(\"
    No Data Available for CargoCare Alerts - Fleet
    \"); //WI26386 Added Alarms\r\n }\r\n }\r\n }\r\n\r\n parent.UpdateCharts(true);//Consider this as first tick.\r\n }, 10);\r\n }\r\n\r\n /*RCNG 55 start*/\r\n BindIndividualChart(chartName: any) {\r\n var parent = this;\r\n /* setTimeout(function () RCNG 141{*/\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: \"\"\r\n },\r\n exporting: {\r\n enabled: false\r\n }\r\n });\r\n if (chartName == 'chartmicro') {\r\n var element = document.getElementById(chartName);\r\n if (typeof (element) != 'undefined' && element != null) {\r\n parent.chartmicro = Highcharts.chart('chartmicro', {\r\n chart: {\r\n type: 'pie',\r\n height: 196,\r\n options3d: {\r\n enabled: true,\r\n alpha: 45,\r\n beta: 0,\r\n }\r\n },\r\n title: {\r\n text: '',\r\n style: {\r\n left: '0px',\r\n top: '0px',\r\n }\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartFilters(event.point['id'],true);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n innerSize: '60%',\r\n }\r\n },\r\n series: [{\r\n name: 'Reefers',\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n }\r\n else if (chartName == 'chartcargo') {\r\n var element = document.getElementById('chartcargo');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n if (isSOLogedin) {\r\n parent.chartcargo = Highcharts.chart('chartcargo', {\r\n chart: {\r\n type: 'pie',\r\n height: 196,\r\n options3d: {\r\n enabled: true,\r\n alpha: 45,\r\n beta: 0,\r\n }\r\n },\r\n title: {\r\n text: '',\r\n align: 'center',\r\n verticalAlign: 'middle',\r\n y: 40\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color']);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n dataLabels: {\r\n enabled: false,\r\n distance: -50,\r\n style: {\r\n fontWeight: 'bold',\r\n color: 'white'\r\n }\r\n },\r\n innerSize: '60%',\r\n }\r\n },\r\n series: [{\r\n name: 'Alerts',\r\n data: [{\r\n name: CCLabelSevere,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)),\r\n color: '#ff0000'\r\n }, {\r\n name: CCLabelMinor,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)), // self.state.Reefersummary.CCMinor,\r\n color: '#2685cb'\r\n }, {\r\n name: CCLabelInformational,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)), //self.state.Reefersummary.CCInformational,\r\n color: '#efb400'\r\n }]\r\n }]\r\n });\r\n\r\n }\r\n else {\r\n\r\n if (typeof (self.state.CargoCareProfileAlertssummary) != 'undefined' && self.state.CargoCareProfileAlertssummary != null && self.state.CargoCareProfileAlertssummary.length > 1) {\r\n parent.chartcargo = Highcharts.chart('chartcargo', {\r\n chart: {\r\n renderTo: 'chartcargo',\r\n reflow: true\r\n },\r\n title: {\r\n text: '',\r\n },\r\n xAxis: {\r\n categories: self.state.CargoCareProfileAlertssummary.map(x => x.CargoCareCustomerProfileCode)\r\n },\r\n yAxis: {\r\n maxPadding: 1,\r\n min: 0,\r\n title: {\r\n text: 'Active Alert Counts'\r\n },\r\n },\r\n plotOptions: {\r\n column: {\r\n showInLegend: false,\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color']);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n showInLegend: false,\r\n size: '30%',\r\n center: [100, 60],\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color']);\r\n }\r\n }\r\n }\r\n },\r\n series: {\r\n cursor: 'pointer',\r\n }\r\n },\r\n labels: {\r\n items: [{\r\n html: 'All Alerts by Severity',\r\n style: {\r\n left: '58px',\r\n top: '0px',\r\n color: 'black'\r\n }\r\n }]\r\n },\r\n series: [{\r\n type: 'column',\r\n name: CCLabelSevere,\r\n color: '#ff0000',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)\r\n }, {\r\n type: 'column',\r\n name: CCLabelMinor,\r\n color: '#2685cb',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)\r\n }, {\r\n type: 'column',\r\n name: CCLabelInformational,\r\n color: '#efb400',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)\r\n },\r\n {\r\n type: 'pie',\r\n name: 'Alerts',\r\n data: [{\r\n name: CCLabelSevere,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)),// self.state.Reefersummary.CCSevere,\r\n color: '#ff0000'\r\n }, {\r\n name: CCLabelMinor,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)), //self.state.Reefersummary.CCMinor,\r\n color: '#2685cb'\r\n }, {\r\n name: CCLabelInformational,\r\n y: self.GetSumByCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)),// self.state.Reefersummary.CCInformational,\r\n color: '#efb400'\r\n }],\r\n }]\r\n });\r\n parent.chartcargo.xAxis[0].labelGroup.element.childNodes.forEach(function (label) {\r\n label.style.cursor = \"pointer\";\r\n label.onclick = function () {\r\n parent.ApplyChartCargocareFilters(\"CCPSearch\", \"\", \"\", this.textContent);\r\n //alert('You clicked on ' + this.textContent);\r\n }\r\n });\r\n } else {\r\n parent.chartcargo = Highcharts.chart('chartcargo', {\r\n chart: {\r\n renderTo: 'chartcargo',\r\n },\r\n title: {\r\n text: '',\r\n },\r\n xAxis: {\r\n categories: self.state.CargoCareProfileAlertssummary.map(x => x.CargoCareCustomerProfileCode)\r\n },\r\n plotOptions: {\r\n column: {\r\n showInLegend: false,\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartCargocareFilters(event.point.category, event.point.name, event.point['color']);\r\n }\r\n }\r\n }\r\n },\r\n series: {\r\n cursor: 'pointer',\r\n }\r\n },\r\n\r\n series: [{\r\n type: 'column',\r\n name: CCLabelSevere,\r\n color: '#ff0000',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere)\r\n }, {\r\n type: 'column',\r\n name: CCLabelMinor,\r\n color: '#2685cb',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor)\r\n }, {\r\n type: 'column',\r\n name: CCLabelInformational,\r\n color: '#efb400',\r\n data: self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational)\r\n },\r\n ]\r\n });\r\n parent.chartcargo.xAxis[0].labelGroup.element.childNodes.forEach(function (label) {\r\n label.style.cursor = \"pointer\";\r\n label.onclick = function () {\r\n parent.ApplyChartCargocareFilters(\"CCPSearch\", \"\", \"\", this.textContent);\r\n //alert('You clicked on ' + this.textContent);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n else if (chartName == 'chartHistogram') {\r\n var element = document.getElementById('chartHistogram');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n\r\n parent.chartHistogram = Highcharts.chart('chartHistogram', {\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n height: 280\r\n },\r\n title: {\r\n text: ''\r\n },\r\n tooltip: {\r\n pointFormat: '{series.name}: {point.percentage:.1f}%'\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartFilters(event.point['id'],false);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n dataLabels: {\r\n enabled: false\r\n },\r\n showInLegend: true\r\n }\r\n },\r\n series: [{\r\n name: 'Reefers',\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n }\r\n\r\n // parent.UpdateCharts();\r\n /* }, 10);*/\r\n\r\n }\r\n /*RCNG 55 end*/\r\n\r\n UpdateCharts(isViaTick: any) {\r\n if (this.chartHistogram != undefined && this.chartHistogram != null\r\n && this.chartHistogram.series != undefined && this.chartHistogram.series[0] != undefined) {\r\n /*RCNG 141*/\r\n if (this.state.Reefersummary.Running == 0 && this.state.Reefersummary.Stopped == 0 && this.state.Reefersummary.MissedRunning == 0\r\n && this.state.Reefersummary.MissedStopped == 0) {\r\n /*RCNG 55 start*/\r\n //this.chartHistogram.destroy();\r\n /*RCNG 55 end*/\r\n $('#chartHistogram').html(\"
    No Data Available for Reefer Fleet
    \"); //WI26386 renamed Reefers to Reefer\r\n }\r\n else {\r\n var chartHistogram = 'chartHistogram';\r\n this.BindIndividualChart(chartHistogram);\r\n }\r\n this.chartHistogram.series[0].setData([\r\n {\r\n name: 'Operational Reefers, Running',\r\n id: 'Running',\r\n y: this.state.Reefersummary.Running,\r\n color: '#3ea538',\r\n sliced: true,\r\n selected: true\r\n }, {\r\n name: 'Faulty Reefers, Possibly Shut Down',\r\n id: 'Stopped',\r\n y: this.state.Reefersummary.Stopped,\r\n color: '#fd7800'\r\n },\r\n {\r\n name: 'Reefers on Standby',\r\n id: 'MissedRunning',\r\n y: this.state.Reefersummary.MissedRunning,\r\n color: '#615f60'\r\n }, {\r\n name: 'Reefers Offline or Powered Down',\r\n id: 'MissedStopped',\r\n y: this.state.Reefersummary.MissedStopped,\r\n color: '#dfdfdf'\r\n }\r\n ]);\r\n\r\n }\r\n\r\n $('#totalReefersLoader').hide();\r\n if (this.chartmicro != undefined && this.chartmicro != null\r\n && this.chartmicro.series != undefined && this.chartmicro.series[0] != undefined) {\r\n /*RCNG 141*/\r\n if (this.state.Reefersummary.MASevere == 0 && this.state.Reefersummary.MAMinor == 0) {\r\n /*RCNG 55 start*/\r\n //this.chartmicro.destroy(); \r\n /*RCNG 55 end*/\r\n $('#chartmicro').html(\"
    No Data Available for Reefers with Alarms – Fleet
    \");\r\n }\r\n else if (isViaTick == true) {\r\n //else {\r\n var chartMicro = 'chartmicro';\r\n this.BindIndividualChart(chartMicro);\r\n // }\r\n this.chartmicro.series[0].setData([\r\n {\r\n name: ReeferAlarmLabelSevere,\r\n id: 'MASevere',\r\n y: this.state.Reefersummary.MASevere,\r\n color: '#ff0000'\r\n },\r\n {\r\n name: ReeferAlarmLabelMinor,\r\n id: 'MAMinor',\r\n y: this.state.Reefersummary.MAMinor,\r\n color: '#2685cb'\r\n },\r\n ]);\r\n\r\n }\r\n else {\r\n if (self.state.Filters.SelectedCargoCareProfiles != null && self.state.Filters.SelectedCargoCareProfiles != undefined\r\n && self.state.Filters.SelectedCargoCareProfiles == \"\") {\r\n var chartMicro = 'chartmicro';\r\n this.BindIndividualChart(chartMicro);\r\n // }\r\n this.chartmicro.series[0].setData([\r\n {\r\n name: ReeferAlarmLabelSevere,\r\n id: 'MASevere',\r\n y: this.state.Reefersummary.MASevere,\r\n color: '#ff0000'\r\n },\r\n {\r\n name: ReeferAlarmLabelMinor,\r\n id: 'MAMinor',\r\n y: this.state.Reefersummary.MAMinor,\r\n color: '#2685cb'\r\n },\r\n ]);\r\n }\r\n }\r\n\r\n }\r\n\r\n $('#microAlarmLoader').hide();\r\n\r\n if (this.chartcargo != undefined && this.chartcargo != null\r\n && this.chartcargo.series != undefined && this.chartcargo.series[0] != undefined) {\r\n /*RCNG 141*/\r\n if (this.state.Reefersummary.CCSevere == 0 && this.state.Reefersummary.CCMinor == 0 && this.state.Reefersummary.CCInformational == 0 && this.state.CargoCareProfileAlertssummary != null && this.state.CargoCareProfileAlertssummary != undefined && this.state.CargoCareProfileAlertssummary.length > 0) {\r\n /*RCNG 55 start*/\r\n //this.chartcargo.destroy(); //why remove all series, while you can remove chart to free some space and resources \r\n /*RCNG 55 end*/\r\n $('#chartcargo').html(\"
    No Data Available for CargoCare Alerts - Fleet
    \"); //WI26386 Added Alarms\r\n //this.chartcargo.showLoading('No data to display');\r\n }\r\n else {\r\n var chartcargo = 'chartcargo';\r\n this.BindIndividualChart(chartcargo);\r\n }\r\n //this.chartcargo.series[0].setData([\r\n // {\r\n // name: 'Severe',\r\n // id: 'CCSevere',\r\n // y: this.state.Reefersummary.CCSevere,\r\n // color: '#ff0000'\r\n // },\r\n // {\r\n // name: 'Minor',\r\n // id: 'CCMinor',\r\n // y: this.state.Reefersummary.CCMinor,\r\n // color: '#2685cb'\r\n // },\r\n // {\r\n // name: 'Informational',\r\n // id: 'CCInformational',\r\n // y: this.state.Reefersummary.CCInformational,\r\n // color: '#efb400'\r\n // }\r\n //]);\r\n\r\n }\r\n\r\n setTimeout(() => {\r\n $('#cargoCareLoader').hide();\r\n }, 200);\r\n }\r\n //start RCNG-60\r\n UpdateCargoChart() {\r\n if (this.chartcargo != undefined && this.chartcargo != null\r\n && this.chartcargo.series != undefined && this.chartcargo.series[0] != undefined) {\r\n /*RCNG 141*/\r\n if (this.state.Reefersummary.CCSevere == 0 && this.state.Reefersummary.CCMinor == 0 && this.state.Reefersummary.CCInformational == 0 && this.state.CargoCareProfileAlertssummary != null && this.state.CargoCareProfileAlertssummary != undefined && this.state.CargoCareProfileAlertssummary.length > 0) {\r\n /*RCNG 55 start*/\r\n //this.chartcargo.destroy(); //why remove all series, while you can remove chart to free some space and resources \r\n\r\n\r\n /*RCNG 55 end*/\r\n $('#chartcargo').html(\"
    No Data Available for CargoCare Alerts - Fleet
    \"); //WI26386 Added Alarms\r\n //this.chartcargo.showLoading('No data to display');\r\n }\r\n else {\r\n var chartcargo = 'chartcargo';\r\n this.BindIndividualChart(chartcargo);\r\n }\r\n\r\n //this.chartcargo.series[0].setData([\r\n // {\r\n // name: 'Severe',\r\n // id: 'CCSevere',\r\n // y: this.state.Reefersummary.CCSevere,\r\n // color: '#ff0000'\r\n // },\r\n // {\r\n // name: 'Minor',\r\n // id: 'CCMinor',\r\n // y: this.state.Reefersummary.CCMinor,\r\n // color: '#2685cb'\r\n // },\r\n // {\r\n // name: 'Informational',\r\n // id: 'CCInformational',\r\n // y: this.state.Reefersummary.CCInformational,\r\n // color: '#efb400'\r\n // }\r\n //]);\r\n\r\n }\r\n\r\n //setTimeout(() => {\r\n // $('#cargoCareLoader').hide();\r\n //}, 200);\r\n }\r\n UpdateMAChart() {\r\n if (this.chartmicro != undefined && this.chartmicro != null\r\n && this.chartmicro.series != undefined && this.chartmicro.series[0] != undefined) {\r\n /*RCNG 141*/\r\n if (this.state.Reefersummary.MASevere == 0 && this.state.Reefersummary.MAMinor == 0) {\r\n //this.chartmicro.destroy();\r\n $('#chartmicro').html(\"
    No Data Available for Reefers with Alarms – Fleet
    \");\r\n }\r\n else {\r\n var chartMicro = 'chartmicro';\r\n this.BindIndividualChart(chartMicro);\r\n }\r\n this.chartmicro.series[0].setData([\r\n {\r\n name: ReeferAlarmLabelSevere,\r\n id: 'MASevere',\r\n y: this.state.Reefersummary.MASevere,\r\n color: '#ff0000'\r\n },\r\n {\r\n name: ReeferAlarmLabelMinor,\r\n id: 'MAMinor',\r\n y: this.state.Reefersummary.MAMinor,\r\n color: '#2685cb'\r\n },\r\n ]);\r\n }\r\n \r\n $('#microAlarmLoader').hide();\r\n }\r\n\r\n renderAlarmWidgetIfCCPSelected(MASevere: any, MAMinor: any) {\r\n\r\n if (self.state.Reefersummary != null && self.state.Reefersummary != undefined) {\r\n\r\n var totalReeferSummary = self.state.Reefersummary;\r\n totalReeferSummary.MASevere = MASevere;\r\n totalReeferSummary.MAMinor = MAMinor;\r\n self.setState({ Reefersummary: totalReeferSummary }, () => {\r\n self.UpdateMAChart();\r\n });\r\n\r\n }\r\n }\r\n\r\n UpdateHistogramCharts() {\r\n if (this.chartHistogram != undefined && this.chartHistogram != null\r\n && this.chartHistogram.series != undefined && this.chartHistogram.series[0] != undefined) {\r\n /*RCNG 141*/\r\n if (this.state.Reefersummary.Running == 0 && this.state.Reefersummary.Stopped == 0 && this.state.Reefersummary.MissedRunning == 0\r\n && this.state.Reefersummary.MissedStopped == 0) {\r\n //this.chartHistogram.destroy();\r\n $('#chartHistogram').html(\"
    No Data Available for Reefer Fleet
    \"); //WI26386 renamed Reefers to Reefer\r\n }\r\n else {\r\n var chartHistogram = 'chartHistogram';\r\n this.BindIndividualChart(chartHistogram);\r\n }\r\n this.chartHistogram.series[0].setData([\r\n {\r\n name: 'Operational Reefers, Running',\r\n id: 'Running',\r\n y: this.state.Reefersummary.Running,\r\n color: '#3ea538',\r\n sliced: true,\r\n selected: true\r\n }, {\r\n name: 'Faulty Reefers, Possibly Shut Down',\r\n id: 'Stopped',\r\n y: this.state.Reefersummary.Stopped,\r\n color: '#fd7800'\r\n },\r\n {\r\n name: 'Reefers on Standby',\r\n id: 'MissedRunning',\r\n y: this.state.Reefersummary.MissedRunning,\r\n color: '#615f60'\r\n }, {\r\n name: 'Reefers Offline or Powered Down',\r\n id: 'MissedStopped',\r\n y: this.state.Reefersummary.MissedStopped,\r\n color: '#dfdfdf'\r\n }\r\n ]);\r\n\r\n\r\n }\r\n\r\n $('#totalReefersLoader').hide();\r\n }\r\n\r\n //end RCNG-60\r\n BindGensetCharts() {\r\n var parent = this;\r\n setTimeout(function () {\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: \"\"\r\n },\r\n exporting: {\r\n enabled: false\r\n }\r\n });\r\n var element = document.getElementById('chartGensetHistogram');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n\r\n parent.chartGensetHistogram = Highcharts.chart('chartGensetHistogram', {\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n height: 280\r\n },\r\n title: {\r\n text: ''\r\n },\r\n tooltip: {\r\n pointFormat: ': {point.percentage:.1f}%'\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartFiltersGenset(event.point['id']);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n dataLabels: {\r\n enabled: false\r\n },\r\n showInLegend: true\r\n }\r\n },\r\n series: [{\r\n name: 'Gensets',\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n parent.UpdateGensetCharts();\r\n }, 10);\r\n }\r\n\r\n BindDryCharts() {\r\n var parent = this;\r\n setTimeout(function () {\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: \"\"\r\n },\r\n exporting: {\r\n enabled: false\r\n }\r\n });\r\n var element = document.getElementById('chartDryHistogram');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n\r\n parent.chartDryHistogram = Highcharts.chart('chartDryHistogram', {\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n height: 248\r\n },\r\n title: {\r\n text: ''\r\n },\r\n tooltip: {\r\n pointFormat: ': {point.percentage:.1f}%'\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartFiltersDry(event.point['id']);\r\n //if (event.point['id'] == 'DryInGeofence' && self.state.Drysummary.InGeofence < 1000)\r\n // parent.ApplyChartFiltersDry(event.point['id']);\r\n //else if (event.point['id'] == 'DryOutGeofence' && self.state.Drysummary.OutGeofence < 1000)\r\n // parent.ApplyChartFiltersDry(event.point['id']);\r\n //else\r\n // event.preventDefault();\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n dataLabels: {\r\n enabled: false\r\n },\r\n showInLegend: true\r\n }\r\n },\r\n series: [{\r\n name: 'Drys',\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n parent.UpdateDryCharts();\r\n }, 10);\r\n }\r\n\r\n UpdateGensetCharts() {\r\n if (this.chartGensetHistogram != undefined && this.chartGensetHistogram != null\r\n && this.chartGensetHistogram.series != undefined && this.chartGensetHistogram.series[0] != undefined) {\r\n this.chartGensetHistogram.series[0].setData([\r\n {\r\n name: 'Gensets Reporting, Switched On',\r\n id: 'PowerOnReporting',\r\n y: this.state.Gensetsummary.PowerOnReporting,\r\n color: '#3ea538',\r\n sliced: true,\r\n selected: true\r\n }, {\r\n name: 'Gensets Reporting, Switched Off',\r\n id: 'PowerOffReporting',\r\n y: this.state.Gensetsummary.PowerOffReporting,\r\n color: '#045976'\r\n },\r\n {\r\n name: 'Gensets, Last Switched On',\r\n id: 'PowerOnNotReporting',\r\n y: this.state.Gensetsummary.PowerOnNotReporting,\r\n color: '#fd7800'\r\n }, {\r\n name: 'Gensets, Last Switched Off',\r\n id: 'PowerOffNotReporting',\r\n y: this.state.Gensetsummary.PowerOffNotReporting,\r\n color: '#615f60'\r\n }\r\n ]);\r\n\r\n if (this.state.Gensetsummary.PowerOnReporting == 0 && this.state.Gensetsummary.PowerOffReporting == 0 && this.state.Gensetsummary.PowerOnNotReporting == 0\r\n && this.state.Gensetsummary.PowerOffNotReporting == 0) {\r\n this.chartGensetHistogram.destroy();\r\n $('#chartGensetHistogram').html(\"
    No Data Available for Genset Fleet
    \"); //WI26386 renamed Gensets to Genset\r\n }\r\n }\r\n\r\n $('#totalGensetFleetLoader').hide();\r\n\r\n }\r\n\r\n UpdateDryCharts() {\r\n if (this.chartDryHistogram != undefined && this.chartDryHistogram != null\r\n && this.chartDryHistogram.series != undefined && this.chartDryHistogram.series[0] != undefined) {\r\n this.chartDryHistogram.series[0].setData([\r\n {\r\n name: 'Drys Inside Geofence',\r\n id: 'DryInGeofence',\r\n y: this.state.Drysummary.InGeofence,\r\n color: '#3ea538',\r\n sliced: true,\r\n selected: true\r\n },\r\n {\r\n name: 'Drys Outside Geofence',\r\n id: 'DryOutGeofence',\r\n y: this.state.Drysummary.OutGeofence,\r\n color: '#045976'\r\n }\r\n ]);\r\n\r\n if (this.state.Drysummary.InGeofence == 0 && this.state.Drysummary.OutGeofence == 0) {\r\n this.chartDryHistogram.destroy();\r\n $('#chartDryHistogram').html(\"
    No Data Available for Dry Fleet
    \");\r\n }\r\n }\r\n\r\n $('#totalDryFleetLoader').hide();\r\n\r\n }\r\n\r\n BindChassisCharts() {\r\n var parent = this;\r\n setTimeout(function () {\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: \"\"\r\n },\r\n exporting: {\r\n enabled: false\r\n }\r\n });\r\n var element = document.getElementById('chartChassisHistogram');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n\r\n parent.chartChassisHistogram = Highcharts.chart('chartChassisHistogram', {\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n height: 280\r\n },\r\n title: {\r\n text: ''\r\n },\r\n tooltip: {\r\n pointFormat: ': {point.percentage:.1f}%'\r\n },\r\n plotOptions: {\r\n series: {\r\n cursor: 'pointer',\r\n events: {\r\n click: function (event) {\r\n if (event.point != undefined) {\r\n parent.ApplyChartFiltersChassis(event.point['id']);\r\n }\r\n }\r\n }\r\n },\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n dataLabels: {\r\n enabled: false\r\n },\r\n showInLegend: true\r\n }\r\n },\r\n series: [{\r\n name: 'Chassis',\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n parent.UpdateChassisCharts();\r\n }, 10);\r\n }\r\n\r\n UpdateChassisCharts() {\r\n if (this.chartChassisHistogram != undefined && this.chartChassisHistogram != null\r\n && this.chartChassisHistogram.series != undefined && this.chartChassisHistogram.series[0] != undefined) {\r\n this.chartChassisHistogram.series[0].setData([\r\n {\r\n name: 'Chassis Powered, Inside Geofence',\r\n id: 'ChassisPwrInGeofence',\r\n y: this.state.Chassissummary.PwrInGeofence,\r\n color: '#3ea538',\r\n sliced: true,\r\n selected: true\r\n }, {\r\n name: 'Chassis Powered, Outside Geofence',\r\n id: 'ChassisPwrOutGeofence',\r\n y: this.state.Chassissummary.PwrOutGeofence,\r\n color: '#fd7800'\r\n },\r\n {\r\n name: 'Chassis Not Powered, Inside Geofence',\r\n id: 'ChassisNotPwrInGeofence',\r\n y: this.state.Chassissummary.NotPwrInGeofence,\r\n color: '#045976'\r\n }, {\r\n name: 'Chassis Not Powered, Outside Geofence',\r\n id: 'ChassisNotPwrOutGeofence',\r\n y: this.state.Chassissummary.NotPwrOutGeofence,\r\n color: '#615f60'\r\n }\r\n ]);\r\n\r\n if (this.state.Chassissummary.PwrInGeofence == 0 && this.state.Chassissummary.PwrOutGeofence == 0 && this.state.Chassissummary.NotPwrInGeofence == 0 && this.state.Chassissummary.NotPwrOutGeofence == 0) {\r\n this.chartChassisHistogram.destroy();\r\n $('#chartChassisHistogram').html(\"
    No Data Available for Chassis Fleet
    \");\r\n }\r\n }\r\n\r\n $('#totalChassisFleetLoader').hide();\r\n\r\n }\r\n\r\n setModelTitle = (title) => {\r\n this.setState({ modelTitle: title });\r\n }\r\n\r\n setSelectedRow = (data) => {\r\n this.setState({ selectedItems: data });\r\n }\r\n\r\n setLastSelectedRow = (data) => {\r\n this.setState({ selectedItems: data });\r\n }\r\n\r\n setReeferStatusRowsLength = (data) => {\r\n this.setState({ CurrentReeferGridRows: data });\r\n }\r\n\r\n setDryStatusRowsLength = (data) => {\r\n this.setState({ CurrentDryGridRows: data });\r\n }\r\n\r\n\r\n setModelPopupHtml = (popupContent) => {\r\n this.setState({ popUpHtml: popupContent });\r\n }\r\n\r\n setModelTitleReport = (title) => {\r\n this.setState({ modelTitleReport: title });\r\n }\r\n setModelPopupHtmlReport = (popupContent) => {\r\n this.setState({ popUpHtmlReport: popupContent });\r\n }\r\n setModelPopupHtmlReportReeferId = (reeferId) => {\r\n this.setState({ ReportReeferId: reeferId });\r\n }\r\n setModelPopupHtmlPTReport = (report) => {\r\n this.setState({ PTReport: report });\r\n }\r\n\r\n setModelPopupHtmlTWReport = (report) => {\r\n this.setState({ TWReport: report });\r\n }\r\n\r\n showContextMenuModelWindow = () => {\r\n $('#contextMenuModel').show();\r\n }\r\n\r\n tick() {\r\n $('#headerLoader').show();\r\n $('#totalReefersLoader').show();\r\n $('#microAlarmLoader').show();\r\n $('#cargoCareLoader').show();\r\n\r\n this.setState({ loading: true });\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummary')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#headerLoader').hide();\r\n this.setState({ Reefersummary: data, loading: false }, () => { this.UpdateCharts(true); });\r\n });\r\n }\r\n\r\n GensetTick() {\r\n $('#GensetheaderLoader').show();\r\n $('#totalGensetFleetLoader').show();\r\n this.setState({ loading: true });\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalGensets;//RCNG-1572\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GensetStatusSummary?AssetState=' + selectedAssetStates)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#GensetheaderLoader').hide();\r\n this.setState({ Gensetsummary: data, loading: false }, () => { this.UpdateGensetCharts(); });\r\n });\r\n }\r\n\r\n DryTick() {\r\n $('#DryheaderLoader').show();\r\n $('#totalDryFleetLoader').show();\r\n this.setState({ loading: true });\r\n // var selectedAssetStates: any = this.state.SelectedAssetStatesCC;\r\n //var selectedAssetStates: any = \"A\"; //this.state.SelectedAssetStatesCC;\r\n var selectedAssetStates: any = this.state.SelectedAssetStatesTotalDrys;//RCNG-1168\r\n // if (selectedAssetStates == null || selectedAssetStates == \"\")\r\n // selectedAssetStates = \"A\";\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusSummary?AssetState=' + selectedAssetStates)\r\n\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusSummary')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#DryheaderLoader').hide();\r\n\r\n this.setState({ Drysummary: data, loading: false }, () => { this.UpdateDryCharts(); });\r\n });\r\n }\r\n\r\n ChassisTick() {\r\n $('#ChassisheaderLoader').show();\r\n $('#totalChassisFleetLoader').show();\r\n this.setState({ loading: true });\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisStatusSummary')\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#ChassisheaderLoader').hide();\r\n this.setState({ Chassissummary: data, loading: false }, () => { this.UpdateChassisCharts(); });\r\n });\r\n }\r\n\r\n reeferdetailsAction(data: any, reeferFormatters: any, dataSource: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data[0], reeferFormatter: reeferFormatters, source: dataSource, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/reeferdetails?From=' + window.location.pathname.replace('/', ''), reeferdetails);\r\n }\r\n\r\n gensetdetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var gensetdetails = {\r\n gensetData: data[0], source: dataSource, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/gensetdetails?From=' + window.location.pathname.replace('/', ''), gensetdetails);\r\n }\r\n\r\n drydetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var drydetails = {\r\n dryData: data[0], source: dataSource, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/drydetails?From=' + window.location.pathname.replace('/', ''), drydetails);\r\n }\r\n\r\n chassisdetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var chassisdetails = {\r\n chassisData: data[0], source: dataSource, isOpenVia: isOpenVia\r\n };\r\n this.props.history.push('/chassisdetails?From=' + window.location.pathname.replace('/', ''), chassisdetails);\r\n }\r\n\r\n reeferhistoryAction(data: any) {\r\n this.props.history.push('/reeferhistory?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n reeferbookingAction(data: any) {\r\n this.props.history.push('/NewbookingEdit?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n reefercreatebookingAction(data: any) {\r\n this.props.history.push('/Newbookingassign?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n reeferViewbookingAction(data: any) {\r\n this.props.history.push('/ViewBooking?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n dryhistoryAction(data: any) {\r\n this.props.history.push('/dryhistory?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n\r\n chassishistoryAction(data: any) {\r\n this.props.history.push('/chassishistory?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n\r\n gensethistoryAction(data: any) {\r\n var gensetdetails = {\r\n gensetData: data\r\n };\r\n this.props.history.push('/gensethistory?From=' + window.location.pathname.replace('/', ''), gensetdetails);\r\n }\r\n\r\n\r\n reefercommandstatusAction(data: any) {\r\n this.props.history.push('/reefercommands?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n\r\n gensetcommandstatusAction(data: any) {\r\n this.props.history.push('/gensetcommandstatus?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n\r\n drycommandstatusAction(data: any) {\r\n this.props.history.push('/drycommands?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n\r\n chassiscommandstatusAction(data: any) {\r\n this.props.history.push('/chassiscommands?From=' + window.location.pathname.replace('/', ''), data);\r\n }\r\n\r\n\r\n GetLoadData(data: any) {\r\n\r\n return
    {data}
    \r\n }\r\n GetLoadCCAlertData(data: any) {\r\n const ccSum = data.reduce((accumulator, current) => {\r\n return accumulator + current;\r\n }, 0);\r\n return
    {ccSum}
    \r\n }\r\n GetSumByCCAlertData(data: any) {\r\n return data.reduce((accumulator, current) => {\r\n return accumulator + current;\r\n }, 0);\r\n }\r\n\r\n requestAssignCargoCare(data: any) {\r\n this.props.requestAssignCargoCare(data);\r\n }\r\n requestUnAssignCargoCare(data: any) {\r\n this.props.requestUnAssignCargoCare(data);\r\n }\r\n requestClearSetPoint(data: any) {\r\n this.props.requestClearSetPoint(data);\r\n }\r\n\r\n reeferMapAction(reeferData: any) {\r\n this.props.history.push('/reefermap?From=' + window.location.pathname.replace('/', ''), reeferData);\r\n }\r\n\r\n dryMapAction(dryData: any) {\r\n this.props.history.push('/drymap?From=' + window.location.pathname.replace('/', ''), dryData);\r\n }\r\n\r\n chassisMapAction(chassisData: any) {\r\n this.props.history.push('/chassismap?From=' + window.location.pathname.replace('/', ''), chassisData);\r\n }\r\n\r\n gensetMapAction(gensetData: any) {\r\n var gensetdetails = {\r\n gensetData: gensetData\r\n };\r\n this.props.history.push('/gensetmap?From=' + window.location.pathname.replace('/', ''), gensetdetails);\r\n }\r\n toggleSSRMCancel() {\r\n RCNGConfirmWindow.ConfirmWindow.close();\r\n }\r\n \r\n toggleServerSide = (el) => {\r\n if (this.state.EnableServerSide) {\r\n this.setState({ EnableServerSide: false }, () => {\r\n sessionStorage.setItem('SSRM', \"false\");\r\n ReeferStatusGrid.ClearReeferStatusGridData();\r\n if (this.state.WGSwitchAll.ReeferHistoryGrid == true)\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n setTimeout(() => {\r\n if (isLastSearchAdvanced) {\r\n var isFenceAssets = false;\r\n this.bindingReeferGensetDryChassisStatusGrid(this.state.PrevReeferFilters, isFenceAssets);\r\n } else {\r\n const prevFilterData: any = this.state.PrevReeferFilters;\r\n let isEquals = isEqual(filterDefault, prevFilterData);\r\n //if (prevFilterData != null && prevFilterData.SelectedCountry != null && prevFilterData.SelectedAssetTypes != null && prevFilterData.SelectedGeofence != null && prevFilterData.SelectedGeofenceInside != null\r\n // && prevFilterData.SelectedInterval != null && prevFilterData.SelectedOem != null && prevFilterData.SelectedReefer != null && prevFilterData.SelectedVesselCode != null\r\n // && prevFilterData.StatusFilters != [] && prevFilterData.CustomAttributeFilters != {} && prevFilterData.AllReefers != null && prevFilterData.SelectedBookingNumber != null)\r\n if (!isEquals)\r\n ReeferStatusGrid.ApplyReeferSearchFilter(this.state.PrevReeferFilters, false,false);\r\n }\r\n }, 200);\r\n\r\n this.saveSSRMMode(false);\r\n });\r\n\r\n }\r\n else {\r\n\r\n this.setState({ EnableServerSide: true }, () => {\r\n sessionStorage.setItem('SSRM', \"true\");\r\n setTimeout(() => {\r\n if (isLastSearchAdvanced) {\r\n var isFenceAssets = false;\r\n this.bindingReeferGensetDryChassisStatusGrid(this.state.PrevReeferFilters, isFenceAssets);\r\n }\r\n }, 200);\r\n this.saveSSRMMode(true);\r\n });\r\n }\r\n }\r\n saveSSRMMode = (mode: boolean) => {\r\n let saveUrl = mode ? Config.ApiBaseUrl + '/api/User/SaveSSRMMode?mode=1' : Config.ApiBaseUrl + '/api/User/SaveSSRMMode?Mode=0';\r\n var request = RCUtils.FetchRequest(saveUrl, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n //silently save data, if error server will log\r\n //if (data)\r\n ////console.log('SSRM Mode saved');\r\n });\r\n }\r\n GetLoadReeferStatusGridData(data: any) {\r\n if (this.props.reeferFormatter != null && this.props.reeferFormatter != undefined) {\r\n if (this.props.reeferFormatter.AlarmMasterList != null && this.props.reeferFormatter.AlarmMasterList != undefined && this.props.reeferFormatter.AlarmMasterList.length > 0) {\r\n if (this.state.EnableServerSide) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n }\r\n else {\r\n return
    ;\r\n }\r\n }\r\n else {\r\n return
    ;\r\n }\r\n }\r\n\r\n openReeferTemperatureGraph(reeferData: any, reeferFormatters, historyFilters: any) {\r\n var graphHeaderText = reeferData[0].ReeferID.slice(0, 4).concat(' ').concat(reeferData[0].ReeferID.slice(4, 10)).concat(' ').concat(reeferData[0].ReeferID.slice(10, 11));\r\n this.setState({ temperatureGraphHtml: '', graphReeferId: graphHeaderText });\r\n this.setState({ temperatureGraphHtml: this.bindGraphHtml(reeferData, reeferFormatters, historyFilters) }, () => {\r\n $('#btnTriggerGraph').click();\r\n });\r\n }\r\n\r\n openGensetMonitorGraph(gensetData: any, historyFilters: any) {\r\n this.setState({ gensetMonitorGraphHtml: '', graphGensetId: gensetData[0].AssetNumber });\r\n this.setState({ gensetMonitorGraphHtml: this.bindGensetGraphHtml(gensetData, historyFilters) }, () => {\r\n $('#btnTriggerGensetGraph').click();\r\n });\r\n }\r\n\r\n bindGensetGraphHtml(gensetData: any, historyFilters: any) {\r\n return \r\n }\r\n\r\n bindGraphHtml(reeferData: any, reeferFormatters: any, historyFilters: any) {\r\n return \r\n }\r\n\r\n GetLoadGensetStatusGridData(data: any) {\r\n //if (this.props.reeferFormatter != null && this.props.reeferFormatter != undefined) {\r\n // if (this.props.reeferFormatter.AlertMasterList != null && this.props.reeferFormatter.AlertMasterList != undefined && this.props.reeferFormatter.AlertMasterList.length > 0) {\r\n return \r\n // }\r\n // else {\r\n // return
    ;\r\n // }\r\n //}\r\n //else {\r\n // return
    ;\r\n //}\r\n }\r\n\r\n GetLoadReeferHistoryGridData() {\r\n if (this.props.reeferFormatter != null && this.props.reeferFormatter != undefined) {\r\n return \r\n \r\n }\r\n else {\r\n return
    ;\r\n }\r\n }\r\n\r\n GetLoadReeferTemperatureGraphData() {\r\n return \r\n \r\n }\r\n\r\n GetLoadGensetHistoryGridData() {\r\n return \r\n \r\n }\r\n\r\n GetLoadDryStatusGridData(data: any) {\r\n return \r\n }\r\n GetLoadDryHistoryGridData() {\r\n return \r\n \r\n }\r\n\r\n GetLoadChassisStatusGridData(data: any) {\r\n return \r\n }\r\n GetLoadChassisHistoryGridData() {\r\n return \r\n \r\n }\r\n GetLoadPTResultGridData() {\r\n return \r\n \r\n }\r\n\r\n onBreakpointChange(breakpoint, cols) {\r\n // this.setState({\r\n // breakpoint: breakpoint,\r\n //cols: cols\r\n // });\r\n }\r\n\r\n SetLayout(layouts: any) {\r\n //alert(this.mainDashboarLayouts);\r\n // this.setState({ layouts: JSON.stringify(layouts) });\r\n }\r\n onResizeStop(layout, allLayouts) {\r\n if (allLayouts.i == \"wgCargoCare\") {\r\n this.chartcargo.reflow();\r\n // $(\"#chartcargo\").height($(\"#Piechart\").height());\r\n // $(\"#chartcargo\").width($(\"#Piechart\").width());\r\n // this.chartcargo.setSize($(\"#Piechart\").width(), $(\"#Piechart\").height());\r\n // this.chartcargo.reflow();\r\n }\r\n }\r\n\r\n onLayoutChange(layout, allLayouts) {\r\n if(this.state.IsReadOnly == true)\r\n return;\r\n var newLayout = JSON.parse(JSON.stringify(allLayouts.lg));\r\n var lastWidgetValue = 0;\r\n var lastWidgetName = '';\r\n\r\n if (newLayout.length == Config.TotalWidgetsCount) {\r\n for (var i = 0; i <= newLayout.length - 1; i++) {\r\n if (newLayout[i].y > lastWidgetValue) {\r\n lastWidgetValue = newLayout[i].y;\r\n lastWidgetName = newLayout[i].i;\r\n }\r\n }\r\n }\r\n\r\n this.setState({ layouts: allLayouts, lastWidgetName: lastWidgetName }, () => {\r\n setTimeout(() => { \r\n if(!isSaveLayout && this.state.IsReadOnly == false)\r\n this.UpdateDashboardLayout(); \r\n }, 1000); \r\n });\r\n }\r\n\r\n onRemoveItem(i) {\r\n //alert(JSON.stringify(i));\r\n //this.setState({ DashBoardItems: _.reject(this.state.DashBoardItems, { Key: i.Key }) });\r\n //alert(JSON.stringify(this.state.items));\r\n if(self.state.IsReadOnly == false)\r\n this.toggleSwitch(i.Key);\r\n }\r\n\r\n GetItemLayout(Id, allLayouts) {\r\n var result = {};\r\n // $.each(allLayouts, function (i, n) {\r\n ////_.forEach(allLayouts[i], function (lvalue, lkey) {\r\n //// if (lvalue.i == Id) {\r\n //// result = allLayouts[i][lkey];\r\n //// }\r\n //////});\r\n // });\r\n return result;\r\n }\r\n\r\n onResizeAdvSearchScreen(el) {\r\n \r\n if ($(\"#globalLoader\").css('display') === 'none') {\r\n if (!resizeAdvSearchToggle) {\r\n var newHeight = \"195px\";\r\n var scrollbarHeight = \"125px\";\r\n $(\".advance-search\").height(newHeight);\r\n $(\".advance-search\").css(\"min-height\", \"initial\");\r\n $(\".dashboardSearch-scrollbar\").height(scrollbarHeight);\r\n resizeAdvSearchToggle = true;\r\n $(\"#spAdvSearch\").removeClass(\"fas fa-compress-alt gi-2x blusetext1\");\r\n $(\"#spAdvSearch\").addClass(\"fa-solid fa-expand\");\r\n $(\"#spAdvSearch\").attr({ \"title\": \"Maximize\" });\r\n var allLayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n var result = {};\r\n $.each(allLayouts, function (i, n) {\r\n forEach(allLayouts[i], function (lvalue, lkey) {\r\n if (lvalue.i == \"wgAdvSearch\") {\r\n allLayouts[i][lkey].h = 6.9;\r\n result = allLayouts[i][lkey];\r\n self.setState({\r\n layouts: allLayouts\r\n });\r\n }\r\n });\r\n });\r\n } else {\r\n var newHeight = \"375px\";\r\n var scrollbarHeight = \"291px\";\r\n $(\".advance-search\").height(newHeight);\r\n $(\".dashboardSearch-scrollbar\").height(scrollbarHeight);\r\n resizeAdvSearchToggle = false;\r\n $(\"#spAdvSearch\").removeClass(\"fa-solid fa-expand\");\r\n $(\"#spAdvSearch\").addClass(\"fas fa-compress-alt gi-2x blusetext1\");\r\n $(\"#spAdvSearch\").attr({ \"title\": \"Minimize\" });\r\n var allLayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n var result = {};\r\n $.each(allLayouts, function (i, n) {\r\n forEach(allLayouts[i], function (lvalue, lkey) {\r\n if (lvalue.i == \"wgAdvSearch\") {\r\n allLayouts[i][lkey].h = 12.7;\r\n result = allLayouts[i][lkey];\r\n self.setState({\r\n layouts: allLayouts\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n onFullScreen(el, id) {\r\n\r\n if (this.state.isFullscreen == false) {\r\n this.setState({ FullscreenItem: el })\r\n var Oldlayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n var allLayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n gridHeight = $('#' + id).parent('.react-grid-item').height();\r\n $(\".react-grid-item\").css('height', $(window).height() - 46);\r\n $(\".react-grid-item\").css('max-height', $(window).height() - 66);\r\n $.each(allLayouts, function (i, n) {\r\n if (allLayouts[i] != undefined) {\r\n forEach(allLayouts[i], function (lvalue, lkey) {\r\n if (lvalue != undefined && lvalue.i != undefined) {\r\n if (lvalue.i == el.Key) {\r\n //allLayouts[i][lkey].h = allLayouts[i][lkey].h * 2;\r\n var minWidth: any = 75;//RCNG-2670\r\n var currentWidth:any = allLayouts[i][lkey].w * 2;\r\n if (currentWidth < minWidth)\r\n allLayouts[i][lkey].w = minWidth;\r\n else\r\n allLayouts[i][lkey].w = allLayouts[i][lkey].w * 2;\r\n allLayouts[i][lkey].x = 0;\r\n allLayouts[i][lkey].y = 0;\r\n }\r\n else {\r\n allLayouts[i][lkey].h = 0;\r\n allLayouts[i][lkey].w = 0;\r\n allLayouts[i][lkey].x = 0;\r\n allLayouts[i][lkey].y = 0;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.setState({ layouts: allLayouts, Oldlayouts: Oldlayouts }, () => this.scrolltoTop());\r\n $(\"#menuwg\").hide();\r\n $(\"#menuLayout\").hide();\r\n //this.setState({ Oldlayouts: Oldlayouts });\r\n }\r\n else {\r\n this.setState({ FullscreenItem: new DashBoardItem() });\r\n //$(\".react-grid-item\").css('height', 425);\r\n //$(\".react-grid-item\").css('max-height', 425);\r\n //this.setState({ layouts: this.state.Oldlayouts });\r\n //this.setState({ DashBoardItems: _.reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n //alert(JSON.stringify(this.state.Oldlayouts));\r\n //$(\"#menuwg\").show();\r\n\r\n var Oldlayouts = JSON.parse(JSON.stringify(this.state.Oldlayouts));\r\n var DashboardItems = JSON.parse(JSON.stringify(this.state.DashBoardItems));\r\n var allLayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n $(\".react-grid-item\").css('height', gridHeight);\r\n\r\n $.each(allLayouts, function (i, n) {\r\n if (allLayouts[i] != undefined) {\r\n forEach(allLayouts[i], function (lvalue, lkey) {\r\n if (lvalue != undefined && lvalue.i != undefined) {\r\n $(\".react-grid-item\").css('max-height', $(window).height());\r\n\r\n allLayouts[i][lkey].h = Oldlayouts[i][lkey].h;\r\n allLayouts[i][lkey].w = Oldlayouts[i][lkey].w;\r\n allLayouts[i][lkey].x = Oldlayouts[i][lkey].x;//RCNG-1387\r\n allLayouts[i][lkey].y = Oldlayouts[i][lkey].y;//RCNG-1387\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.setState({ Defaultlayouts: this.allLayouts, DashBoardItems: DashboardItems, layouts: allLayouts });//RCNG-1387\r\n this.setState({ DashBoardItems: reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n\r\n $(\"#menuwg\").show();\r\n $(\"#menuLayout\").show();\r\n }\r\n if (el.Key == \"wgReeferMap\")\r\n ReeferCallout.CancelDrawing();\r\n else\r\n ReeferCallout.ResetMapInfobox();\r\n\r\n this.setState({ isFullscreen: !this.state.isFullscreen });\r\n }\r\n onFullScreenPTI(el) {\r\n if (this.state.isFullscreen == false) {\r\n this.setState({ FullscreenItem: el })\r\n var Oldlayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n var allLayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n\r\n $.each(allLayouts, function (i, n) {\r\n if (allLayouts[i] != undefined) {\r\n forEach(allLayouts[i], function (lvalue, lkey) {\r\n if (lvalue != undefined && lvalue.i != undefined) {\r\n if (lvalue.i == el.Key) {\r\n allLayouts[i][lkey].h = allLayouts[i][lkey].h * 1.4;\r\n allLayouts[i][lkey].w = allLayouts[i][lkey].w * 4.5;\r\n allLayouts[i][lkey].x = 0;\r\n allLayouts[i][lkey].y = 0;\r\n }\r\n else {\r\n allLayouts[i][lkey].h = 0;\r\n allLayouts[i][lkey].w = 0;\r\n allLayouts[i][lkey].x = 0;\r\n allLayouts[i][lkey].y = 0;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.setState({ layouts: allLayouts, Oldlayouts: Oldlayouts }, () => this.scrolltoTop());\r\n $(\"#menuwg\").hide();\r\n $(\"#menuLayout\").hide();\r\n //this.setState({ Oldlayouts: Oldlayouts });\r\n }\r\n else {\r\n this.setState({ FullscreenItem: new DashBoardItem() });\r\n this.setState({ layouts: this.state.Oldlayouts });\r\n //this.setState({ DashBoardItems: _.reject(this.state.DashBoardItems, { Key: \"\" }) });\r\n //alert(JSON.stringify(this.state.Oldlayouts));\r\n $(\"#menuwg\").show();\r\n $(\"#menuLayout\").show();\r\n }\r\n if (el.Key == \"wgReeferMap\")\r\n ReeferCallout.CancelDrawing();\r\n else\r\n ReeferCallout.ResetMapInfobox();\r\n\r\n this.setState({ isFullscreen: !this.state.isFullscreen });\r\n }\r\n \r\n pinAllDashboardWidgets(pinState: any){\r\n this.setState({ isLayoutUpdated: true });\r\n \r\n var allLayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n $.each(allLayouts, function (i, n) {\r\n if (allLayouts[i] != undefined) {\r\n forEach(allLayouts[i], function (lvalue, lkey) {\r\n if (lvalue != undefined && lvalue.i != undefined) {\r\n allLayouts[i][lkey].static = pinState; \r\n }\r\n }\r\n );\r\n }\r\n });\r\n\r\n this.setState({ layouts: allLayouts, Filters: this.state.Filters });\r\n }\r\n\r\n onPinItemClick(el) {\r\n isSaveLayout = true;\r\n if(self.state.IsReadOnly == false) {\r\n //console.log('Pin and unpin click');\r\n this.setState({ isLayoutUpdated: true });\r\n //breakpoints = {{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\r\n var itemindex = indexOf(this.state.DashBoardItems, el);\r\n var items = JSON.parse(JSON.stringify(this.state.DashBoardItems));\r\n items[itemindex].IsPinned = !el.IsPinned;\r\n var allLayouts = JSON.parse(JSON.stringify(this.state.layouts));\r\n $.each(allLayouts, function (i, n) {\r\n if (allLayouts[i] != undefined) {\r\n forEach(allLayouts[i], function (lvalue, lkey) {\r\n if (lvalue != undefined && lvalue.i != undefined) {\r\n if (lvalue.i == el.Key) {\r\n allLayouts[i][lkey].static = !el.IsPinned;\r\n allLayouts[i][lkey].isDraggable = el.IsPinned;//\tRCNG-3804\r\n //_.forEach(items, function (ivalue, ikey) {\r\n // if (lvalue.i == ivalue.Key) {\r\n // items[ikey].Layout = allLayouts[i][lkey];\r\n // }\r\n //});\r\n }\r\n }\r\n }\r\n );\r\n }\r\n });\r\n\r\n this.setState({ layouts: allLayouts, DashBoardItems: items, Filters: this.state.Filters, }, () => {\r\n //console.log('pinunpinI');\r\n this.restoreWidgetsLoaders();\r\n this.BindCharts();\r\n if (hasGensets) {\r\n this.BindGensetCharts();\r\n }\r\n if (hasDrys) {\r\n this.BindDryCharts();\r\n }\r\n if (hasChassis) {\r\n this.BindChassisCharts();\r\n }\r\n isSaveLayout = false;//\tRCNG-3804 MP - QA3 : Pin / Unpin options are not saving when user navigates from one dashboard to another dashboard layout\r\n isSaved = false\r\n if (el.Key == 'wgAdvSearch') {\r\n this.CreateOrUpdateDashboard();\r\n }\r\n });\r\n\r\n if (el.Key == 'wgAdvSearch') {\r\n setTimeout(() => { AdvanceSearch.onSetPreviousState(); }, 800);\r\n }\r\n }\r\n\r\n }\r\n\r\n closeModel() {\r\n $('#contextMenuModel').hide();\r\n }\r\n\r\n scrolltoTop() {\r\n $('html, body').scrollTop(0);//For scrolling to top\r\n }\r\n\r\n fireResizeManually() {\r\n var timeoutResizing = setTimeout(() => {\r\n const evt = document.createEvent('UIEvents');\r\n evt.initEvent('resize', true, false);\r\n window.dispatchEvent(evt);\r\n }, 301); // wait just 1 millisecond more than transition open/close dashboard notes animations\r\n }\r\n\r\n bindingReeferStatusGrid(searchState: server.ReeferSearchFilters, isFromCargoCareAlert: boolean) {\r\n isLastSearchAdvanced = false; \r\n if (this.state.WGSwitchAll.ReeferGrid == true) {\r\n if (JSON.parse(sessionStorage.getItem('SSRM'))) {\r\n //ReeferStatusSSRMGrid.refreshToggleFilters();\r\n //ReeferToggleButtonsFilter.ClearToggleFilters();\r\n if (enableReeferStatusGrid) {\r\n //var JSONstr = JSON.stringify(this.state.Filters);\r\n this.props.history.push('/reeferstatus', searchState);\r\n }\r\n else {\r\n ReeferStatusSSRMGrid.ClearReeferStatusGridData();\r\n if (this.state.WGSwitchAll.ReeferHistoryGrid == true)\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n /* WI-26367 - commented and calling without wait time\r\n setTimeout(() => {\r\n\r\n ReeferStatusSSRMGrid.ApplyReeferSearchFilter(searchState);\r\n }, 6000);\r\n */\r\n setTimeout(() => { //RCNG 146\r\n this.ReceiveSearchLoadingIsInProgressStatusToHome(true);\r\n ReeferStatusSSRMGrid.ApplyReeferSearchFilter(searchState);\r\n }, 200); ////RCNG 146\r\n this.setState({ Filters: searchState, PrevReeferFilters: searchState });\r\n }\r\n } else {\r\n ReeferStatusGrid.refreshToggleFilters();\r\n ReeferToggleButtonsFilter.ClearToggleFilters();\r\n if (enableReeferStatusGrid) {\r\n //var JSONstr = JSON.stringify(this.state.Filters);\r\n this.props.history.push('/reeferstatus', searchState);\r\n }\r\n else {\r\n ReeferStatusGrid.ClearReeferStatusGridData();\r\n if (this.state.WGSwitchAll.ReeferHistoryGrid == true)\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n setTimeout(() => {\r\n this.ReceiveSearchLoadingIsInProgressStatusToHome(true);\r\n ReeferStatusGrid.ApplyReeferSearchFilter(searchState, false, isFromCargoCareAlert);\r\n }, 200);\r\n this.setState({ Filters: searchState, PrevReeferFilters: searchState });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n bindingGensetStatusGrid(searchState: server.ReeferSearchFilters) {\r\n if (this.state.WGSwitchAll.GensetGrid == true) {\r\n GensetStatusGrid.refreshToggleFilters();\r\n GensetToggleButtonsFilter.ClearToggleFilters();\r\n if (enableReeferStatusGrid) {\r\n //var JSONstr = JSON.stringify(this.state.Filters);\r\n this.props.history.push('/gensetstatus', searchState);\r\n }\r\n else {\r\n GensetStatusGrid.ClearGensetStatusGridData();\r\n if (this.state.WGSwitchAll.GensetHistoryGrid == true)\r\n GensetHistoryGrid.ClearHistoryGridData();\r\n setTimeout(() => {\r\n this.ReceiveSearchLoadingIsInProgressStatusToHome(true);\r\n GensetStatusGrid.ApplyGensetSearchFilter(searchState, false);\r\n }, 200);\r\n this.setState({ Filters: searchState, PrevReeferFilters: filterDefault });\r\n }\r\n }\r\n }\r\n\r\n bindingDryStatusGrid(searchState: server.ReeferSearchFilters, newSearch: any, loadState: any) {\r\n if (this.state.WGSwitchAll.DryGrid == true) {\r\n DryStatusSSRMGrid.refreshToggleFilters();\r\n DryStatusToggleButtonsFilter.ClearToggleFilters();\r\n if (enableReeferStatusGrid) {\r\n //var JSONstr = JSON.stringify(this.state.Filters);\r\n this.props.history.push('/drystatus', searchState);\r\n }\r\n else {\r\n DryStatusSSRMGrid.ClearDryStatusGridData();\r\n if (this.state.WGSwitchAll.DryHistoryGrid == true)\r\n DryHistoryGrid.ClearHistoryGridData();\r\n\r\n setTimeout(() => {\r\n this.ReceiveSearchLoadingIsInProgressStatusToHome(true);\r\n DryStatusSSRMGrid.ApplyDrySearchFilter(searchState, false, newSearch, loadState);\r\n }, 200);\r\n this.setState({ Filters: searchState, PrevReeferFilters: filterDefault });\r\n }\r\n }\r\n }\r\n\r\n bindingChassisStatusGrid(searchState: server.ReeferSearchFilters) {\r\n if (this.state.WGSwitchAll.ChassisGrid == true) {\r\n ChassisStatusGrid.refreshToggleFilters();\r\n ChassisStatusToggleButtonsFilter.ClearToggleFilters();\r\n if (enableReeferStatusGrid) {\r\n //var JSONstr = JSON.stringify(this.state.Filters);\r\n this.props.history.push('/chassisstatus', searchState);\r\n }\r\n else {\r\n ChassisStatusGrid.ClearChassisStatusGridData();\r\n if (this.state.WGSwitchAll.ChassisHistoryGrid == true)\r\n ChassisHistoryGrid.ClearHistoryGridData();\r\n setTimeout(() => {\r\n this.ReceiveSearchLoadingIsInProgressStatusToHome(true);\r\n ChassisStatusGrid.ApplyChassisSearchFilter(searchState, false);\r\n }, 200);\r\n this.setState({ Filters: searchState, PrevReeferFilters: filterDefault });\r\n }\r\n }\r\n }\r\n\r\n //WI-23763\r\n bindingReeferGensetDryChassisStatusGrid(searchState: server.ReeferSearchFilters, isFenceAssets: any) {\r\n totalWidgetSearch = true;//WI26412\r\n loaderState = false;\r\n setTimeout(() => {\r\n //isLastSearchAdvanced = true;\r\n if (JSON.parse(sessionStorage.getItem('SSRM')) && hasReefers == true) {\r\n var hasReeferFilter = searchState.SelectedAssetTypes;\r\n if (hasReeferFilter != null && hasReeferFilter != undefined && hasReeferFilter.length > 0) {\r\n var regexp = /Reefer/gi;\r\n var regexpDry = /Dry/gi;\r\n if (hasReeferFilter.search(regexp) == -1) {\r\n ////console.log(\"Does not contain Reefer\");\r\n if (hasReeferFilter == \"Dry\")\r\n this.bindingDryStatusGrid(searchState, false, loaderState);\r\n else {\r\n loaderState = true;\r\n if (hasReeferFilter.search(regexpDry) != -1)\r\n this.bindingDryStatusGrid(searchState, true, loaderState);\r\n this.props.requestAllAssetTypeAdvanceSearchSSRM(searchState, isFenceAssets);\r\n }\r\n // setTimeout(() => {\r\n ReeferStatusSSRMGrid.ClearReeferStatusGridData();\r\n //}, 2000);\r\n } else { \r\n var regexpDry = /Dry/gi;\r\n var regexpChassis = /Chassis/gi;\r\n var regexpGenset = /Genset/gi;\r\n loaderState = true;\r\n if (hasReeferFilter.search(regexpChassis) != -1 || hasReeferFilter.search(regexpGenset) != -1) \r\n this.props.requestAllAssetTypeAdvanceSearchSSRM(searchState, isFenceAssets);\r\n if (hasReeferFilter.search(regexpDry) != -1)\r\n this.bindingDryStatusGrid(searchState, true, loaderState);\r\n this.bindingReeferStatusGrid(searchState, false);\r\n }\r\n } else {\r\n loaderState = true;\r\n this.props.requestAllAssetTypeAdvanceSearchSSRM(searchState, isFenceAssets, true);\r\n this.bindingReeferStatusGrid(searchState, false);\r\n this.bindingDryStatusGrid(searchState, true, loaderState);\r\n }\r\n }\r\n else {\r\n if (hasDrys == true) {\r\n var hasDryFilter = searchState.SelectedAssetTypes;\r\n if (hasDryFilter != null && hasDryFilter != undefined && hasDryFilter.length > 0) {\r\n var regexp = /Dry/gi;\r\n if (hasDryFilter.search(regexp) == -1) {\r\n DryStatusSSRMGrid.ClearDryStatusGridData();\r\n }\r\n }\r\n if (hasDryFilter == \"Dry\") {\r\n loaderState = true;\r\n this.props.requestAllAssetTypeAdvanceSearch(searchState, isFenceAssets, true);//RCNG 4655 Fix - issue in Asset Search when selecting the Asset type as Reefer\r\n this.bindingDryStatusGrid(searchState, false, loaderState);\r\n }\r\n else {\r\n loaderState = true;\r\n this.props.requestAllAssetTypeAdvanceSearch(searchState, isFenceAssets, true);\r\n if (hasDryFilter.search(regexp) != -1)//RCNG-4147\r\n this.bindingDryStatusGrid(searchState, true, loaderState);\r\n }\r\n }\r\n else {\r\n this.props.requestAllAssetTypeAdvanceSearch(searchState, isFenceAssets, true);\r\n }\r\n }\r\n }, 200);\r\n this.setState({ Filters: searchState, isFenceAssets: isFenceAssets, PrevReeferFilters: searchState });\r\n }\r\n\r\n\r\n renderDataToEmailControl(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any,\r\n isIncludeRowGroup: boolean, sensorData: any) {\r\n this.setState({\r\n EmailData: gridData, ColumnDefs: colDefs, ColumnDefs2: colDefs2, ParentOrChild: parentChild,\r\n SourceForm: formName, FunctionID: functionId, WidgetId: widgetId, gridApiParams: gridApiParams, isIncludeRowGroup: isIncludeRowGroup, assetTypeSensors: sensorData\r\n }, () => { $('#dashBoardEmailPopUp').show(); });\r\n //this.setState({\r\n // emailPopUpHtml: this.renderEmailPopUp(gridData, colDefs, formName, parentChild)\r\n //});\r\n\r\n //$('.GridToolBarParent').attr('disabled', 'disabled');\r\n $('#modal-backdrop-email').addClass('show');\r\n }\r\n\r\n renderDataGridPreferenceControl(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.setState({ gridPreferenceHtml: '', formName: formName });\r\n this.setState({ gridPreferenceHtml: this.bindGridPreferenceData(functionId, widgetId, gridApiParams, formName) }, () => {\r\n $('#btnTriggerGridPreference').click();\r\n });\r\n }\r\n\r\n renderDataGridExportToExcelControl(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData: any) {\r\n this.setState({ ExportToExcelHTML: '' });\r\n this.setState({ ExportToExcelHTML: this.bindExportToExcel(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, sensorData) }, () => {\r\n $('#btnTriggerExportToExcel').click();\r\n });\r\n }\r\n //WI-23795\r\n renderSearchPreferenceControl(functionId: any, gridApiParams: any, formName: string) {\r\n isSaveLayout = true;\r\n this.setState({ searchPreferenceHtml: '' });\r\n this.setState({ searchPreferenceHtml: this.bindSearchPreferenceData(functionId, gridApiParams, formName) }, () => {\r\n $('#btnTriggerSearchPreference').click();\r\n });\r\n }\r\n\r\n bindSearchPreferenceData(functionId: any, gridApiParams: any, formName: string) { \r\n return \r\n }\r\n renderClearSelectionForAllAsset() {\r\n\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n GensetHistoryGrid.ClearHistoryGridData();\r\n ChassisHistoryGrid.ClearHistoryGridData();\r\n DryHistoryGrid.ClearHistoryGridData();\r\n\r\n var dict = {\r\n \"Reefers\": this.props.reeferStatus,\r\n \"Dry\": this.props.dryStatus,\r\n \"Genset\": this.props.gensetStatus,\r\n \"Chassis\": this.props.chassisStatus,\r\n }\r\n\r\n this.clearGridHeaderExtension();\r\n this.clearGensetGridHeaderExtension();\r\n this.clearDryGridHeaderExtension();\r\n this.clearChassisGridHeaderExtension();\r\n\r\n ReeferStatusGrid.ClearSelection();\r\n ReeferStatusSSRMGrid.ClearSelection();\r\n GensetStatusGrid.ClearSelection();\r\n DryStatusSSRMGrid.ClearSelection();\r\n ChassisStatusGrid.ClearSelection();\r\n\r\n if (this.props.reeferFormatter != null)\r\n ReeferCallout.BindClusterMapAllAssetsPushpins(dict, 'All Assets', this.props.reeferFormatter, \"\");\r\n }\r\n\r\n renderSaveSearchControl() {\r\n this.setState({ SaveSearchHtml: '' });\r\n this.setState({ SaveSearchHtml: this.renderSaveSearchHtml() }, () => {\r\n $('#btnTriggerSaveSearch').click();\r\n });\r\n }\r\n\r\n renderAddGeofenceControl(formName: string, coordinates: any, currentFence: any, GeofencesData: any[]) {\r\n this.setState({ addGeofenceTitle: '', addGeofenceHtml: '', geofenceData: GeofencesData });\r\n this.setState({ addGeofenceTitle: formName, addGeofenceHtml: this.bindAddGeofenceData(formName, coordinates, currentFence, GeofencesData) }, () => {\r\n $('#btnTriggerAddGeofence').click();\r\n });\r\n }\r\n\r\n bindAddGeofenceData(formName: string, coordinates: any, currentFence: any, GeofencesData: any[]) {\r\n if (formName == 'Add Geofence')\r\n return \r\n else if (formName == 'Edit Geofence')\r\n return \r\n }\r\n\r\n fnCancelDrawing(e) {\r\n ReeferCallout.CancelDrawing();\r\n if (this.state.addGeofenceTitle == 'Edit Geofence')\r\n ReeferCallout.BindGeofencePolygons(this.state.geofenceData);\r\n }\r\n\r\n bindGridPreferenceData(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n //if (formName == \"ReeferStatusGrid\" || formName == \"ReeferHistoryGrid\")\r\n // return ;\r\n //else\r\n return ;\r\n\r\n }\r\n\r\n bindExportToExcel(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData: any) {\r\n return \r\n }\r\n\r\n renderSaveSearchHtml() {\r\n return \r\n }\r\n\r\n renderEmailPopUp(gridData: any, colDefs: any, formName: string, parentChild: string) {\r\n return \r\n }\r\n AssetStateChangeAllDrys(value) {\r\n this.setState({ SelectedAssetStatesTotalDrys: value }, () => { });\r\n }\r\n\r\n AssetStateChangeAllGensets(value) {\r\n this.setState({ SelectedAssetStatesTotalGensets: value }, () => { });\r\n if (value == \"\") {\r\n $('.widgetbgTotalGensets').parent().addClass('widgetbgZindex');\r\n }\r\n }\r\n /*RCNG 13*/\r\n AssetStateChangeMA(value) {\r\n this.setState({ SelectedAssetStatesMA: value }, () => { });\r\n }\r\n /*RCNG 13*/\r\n\r\n /*RCNG 14*/\r\n AssetStateChangeCC(value) {\r\n this.setState({ SelectedAssetStatesCC: value }, () => { });\r\n }\r\n /*RCNG 14*/\r\n\r\n /*RCNG 17*/\r\n AssetStateChangeTotalReefers(value) {\r\n this.setState({ SelectedAssetStatesTotalReefers: value }, () => { });\r\n if (value == \"\") {\r\n $('.widgetbgTotalReefers').parent().addClass('widgetbgZindex');\r\n }\r\n }\r\n /*RCNG 17*/\r\n\r\n /* RCNG 16*/\r\n AssetStateChangePTR(value) {\r\n this.setState({ SelectedAssetStatesPTR: value }, () => { });\r\n }\r\n /* RCNG 16*/\r\n\r\n createElement(el: DashBoardItem) {\r\n let DisplayStyle = \"block\";\r\n let IconsDisplayStyle = \"block\";\r\n if (this.state.FullscreenItem.Key != undefined && el.Key != this.state.FullscreenItem.Key) {\r\n DisplayStyle = \"none\";\r\n }\r\n\r\n if (el.Key == this.state.FullscreenItem.Key) {\r\n IconsDisplayStyle = \"none\";\r\n }\r\n\r\n let PinClasses = el.IsPinned ? 'fa-solid fa-thumbtack' : 'fa-solid fa-thumbtack fa-rotate-90 mb-2';\r\n let HeadeBgClasses = el.IsPinned ? 'widget-heading' : 'widget-heading';\r\n\r\n var assetStates = this.state.AssetStates;\r\n if (assetStates != undefined && assetStates != null && assetStates.length > 0) {\r\n var assetStatesOptions = assetStates.map(function (states) {\r\n return (\r\n { value: states.value, label: states.label }\r\n );\r\n });\r\n }\r\n \r\n if (el.Key == 'wgReeferGrid') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Reefer Grid
    \r\n
    \r\n
    \r\n Paging :\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadReeferStatusGridData(this.state.Filters)}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgGensetGrid') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Genset Grid
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadGensetStatusGridData(this.state.Filters)}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgDryGrid') {\r\n return
    \r\n
    \r\n
    \r\n
    Dry Grid
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadDryStatusGridData(this.state.Filters)}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgChassisGrid') {\r\n return
    \r\n
    \r\n
    \r\n
    Chassis Grid
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadChassisStatusGridData(this.state.Filters)}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgReeferHistory') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Reefer History Grid {this.state.ExtensionForGridHeader}
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadReeferHistoryGridData()}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgReeferTempGraph') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Reefer Monitoring Data {this.state.ExtensionForGraphHeader}
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadReeferTemperatureGraphData()}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgGensetHistory') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Genset History Grid {this.state.ExtensionForGensetGridHeader}
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadGensetHistoryGridData()}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgDryHistory') {\r\n return
    \r\n
    \r\n
    \r\n
    Dry History Grid {this.state.ExtensionForDryGridHeader}
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadDryHistoryGridData()}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgChassisHistory') {\r\n return
    \r\n
    \r\n
    \r\n
    Chassis History Grid {this.state.ExtensionForChassisGridHeader}
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadChassisHistoryGridData()}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgPTResult') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    PTI Results
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n
    Loading
    \r\n
    {this.GetLoadPTResultGridData()}
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgAdvSearch') {\r\n return
    \r\n
    \r\n
    \r\n
    Asset Search
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()}>\r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgMicroalarms') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Reefers with Alarms – Fleet
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()}>\r\n
    \r\n
    \r\n
    {ReeferAlarmLabelSevere}:
    {this.GetLoadData(this.state.Reefersummary.MASevere)}
    \r\n
    {ReeferAlarmLabelMinor}:
    {this.GetLoadData(this.state.Reefersummary.MAMinor)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgCargoCare') {\r\n return
    \r\n
    \r\n
    \r\n
    CargoCare Alerts - Fleet
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n Profile Filter \r\n \r\n
    \r\n
    \r\n \r\n\r\n
      \r\n { this.renderToogleCargoCareProfiles() } \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()}>\r\n
    \r\n
    \r\n\r\n
    {CCLabelSevere}:
    {this.GetLoadCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCSevere))}
    \r\n
    {CCLabelMinor}:
    {this.GetLoadCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCMinor))}
    \r\n
    {CCLabelInformational}:
    {this.GetLoadCCAlertData(self.state.CargoCareProfileAlertssummary.map(x => x.CCInformational))}
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgHistogram') {\r\n\r\n return
    \r\n\r\n
    \r\n
    \r\n
    Reefer Fleet Overview
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgGensetHistogram') {\r\n\r\n return
    \r\n\r\n
    \r\n
    \r\n
    Genset Fleet Overview
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgDryHistogram') {\r\n return
    \r\n\r\n
    \r\n
    \r\n
    Dry Fleet Overview
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgChassisHistogram') {\r\n return
    \r\n\r\n
    \r\n
    \r\n
    Chassis Fleet Overview
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgAllreefers') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Total Reefers : {this.state.Reefersummary.AllReefer}
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()} className='p-2'>\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Reefersummary.Running)}
    \r\n
    Running and Operational
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Reefersummary.MissedRunning)}
    \r\n
    On Standby
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Reefersummary.Stopped)}
    \r\n
    Shut Down or Faulty
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Reefersummary.MissedStopped)}
    \r\n
    Offline or Powered Down
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgAllGensets') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Total Gensets : {this.state.Gensetsummary.AllGensets}
    \r\n
    \r\n\r\n\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()} className=\"p-2\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Gensetsummary.PowerOnReporting)}
    \r\n
    Reporting, Switched On
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Gensetsummary.PowerOnNotReporting)}
    \r\n
    Last Switched On
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Gensetsummary.PowerOffReporting)}
    \r\n
    Reporting, Switched Off
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Gensetsummary.PowerOffNotReporting)}
    \r\n
    Last Switched Off
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgAllDrys') {\r\n return
    \r\n
    \r\n
    \r\n
    Total Drys : {this.state.Drysummary.AllDrys}
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()} className='p-2'>\r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Drysummary.InGeofence)}
    \r\n
    Inside Geofence
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Drysummary.OutGeofence)}
    \r\n
    Outside Geofence
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgAllChassis') {\r\n return
    \r\n
    \r\n
    \r\n
    Total Chassis : {this.state.Chassissummary.AllChassis}
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    Loading
    \r\n
    e.stopPropagation()} className=\"p-2\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Chassissummary.PwrInGeofence)}
    \r\n
    Powered, Inside Geofence
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Chassissummary.PwrOutGeofence)}
    \r\n
    Powered, Outside Geofence
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Chassissummary.NotPwrInGeofence)}
    \r\n
    Not Powered, Inside Geofence
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Responsive image\r\n
    \r\n
    \r\n
    {this.GetLoadData(this.state.Chassissummary.NotPwrOutGeofence)}
    \r\n
    Not Powered, Outside Geofence
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n if (el.Key == 'wgReeferMap') {\r\n return
    \r\n
    \r\n
    \r\n
    Asset Map
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    e.stopPropagation()}>\r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n }\r\n\r\n onAddItem() {\r\n\r\n }\r\n\r\n ReceiveSearchLoadingIsInProgressStatusToHome(SearchLoadingIsInProgress, CCPCodes: any) { //rcng-4141\r\n if (self.state.WGSwitchAll.MicroaAlarms) {\r\n var divReefersMAAlarmTitle = document.getElementById(\"ReefersMAAlarmTitle\");\r\n if (CCPCodes != \"\" && CCPCodes != undefined && CCPCodes != null) {\r\n if (divReefersMAAlarmTitle != null) {\r\n divReefersMAAlarmTitle.innerText = (\"Reefers with Alarms - \" + CCPCodes).length > 30 ? (\"Reefers with Alarms - \" + CCPCodes).substring(0, 26) + \"...\"\r\n : (\"Reefers with Alarms - \" + CCPCodes);\r\n divReefersMAAlarmTitle.title = (\"Reefers with Alarms - \" + CCPCodes);\r\n }\r\n }\r\n else {\r\n if (divReefersMAAlarmTitle != null) {\r\n divReefersMAAlarmTitle.innerText = \"Reefers with Alarms – Fleet\";\r\n }\r\n }\r\n\r\n this.setState({ ...this.state, SearchLoadingIsInProgress: SearchLoadingIsInProgress });\r\n }\r\n }\r\n\r\n downloadPTReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([this.state.PTReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'PT_' + this.state.ReportReeferId + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.state.PTReport));\r\n element.setAttribute('download', 'PT_' + this.state.ReportReeferId + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n\r\n closeToolBarEmailModel() {\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').removeClass('show');\r\n \r\n }\r\n saveAndCloseSearchPreferenceModel() {\r\n\r\n var data = AdvanceSearch.RefreshSearchControls();\r\n\r\n }\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n printPTReport() {\r\n var divToPrint = document.getElementById(\"printData\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n downloadTWReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([this.state.TWReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'TripWISEReport_' + this.state.ReportReeferId + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.state.TWReport));\r\n element.setAttribute('download', 'TripWISEReport_' + this.state.ReportReeferId + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n printTWReport() {\r\n var divToPrint = document.getElementById(\"printDataTW\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n \r\n renderToogleCargoCareProfiles() {\r\n var cargoCareProfiles = this.state.CargoCareProfiles;\r\n if (cargoCareProfiles != undefined && cargoCareProfiles != null && cargoCareProfiles.length > 0) {\r\n //var cargoCareProfilesHtml = \"\";\r\n var renderCargoCareProfilesHtml: any[] = [];\r\n $.each(this.state.CargoCareProfiles, (index, item) => {\r\n var cargoCareProfilesHtml =
  • \r\n \r\n
  • \r\n renderCargoCareProfilesHtml.push(cargoCareProfilesHtml);\r\n });\r\n // {item.CargoCareCustomerProfileCode} \r\n return renderCargoCareProfilesHtml;\r\n }\r\n \r\n }\r\n selectAllProfiles() {\r\n isSaveLayout = true;\r\n let checkboxes = document.getElementsByName('chkProfile');\r\n let chkSelectAll = document.getElementById(\"chkSelectAllProfile\");\r\n\r\n var CCPSelected: any[] = this.state.CargoCareProfilesSelected;\r\n CCPSelected = [];\r\n\r\n for (var i = 0, n = checkboxes.length; i < n; i++) {\r\n if (chkSelectAll.checked === true) {\r\n checkboxes[i].checked = true;\r\n CCPSelected.push(checkboxes[i].value); \r\n }\r\n else if (chkSelectAll.checked === false) {\r\n checkboxes[i].checked = false;\r\n }\r\n }\r\n\r\n this.setState({ CargoCareProfilesSelected: CCPSelected });\r\n }\r\n\r\n OnChangeCargoCareFilter(ccProfileCode: any, isViaEvent: boolean, obj: any) {\r\n isSaveLayout = true;\r\n var cargoCareProfilesSelected: any[] = this.state.CargoCareProfilesSelected.length > 0 ? this.state.CargoCareProfilesSelected : this.state.CargoCareProfilesSelectedDefault;\r\n var profileCheck: any;\r\n let chkSelectAll = document.getElementById(\"chkSelectAllProfile\");\r\n let checkboxes = document.getElementsByName('chkProfile');\r\n //console.log(\"OnChangeCargoCareFilter: \"+isSaveLayout);\r\n var numberOfCheckboxes = $(\"input:checkbox[name=chkProfile]\").length;\r\n var numberOfCheckboxesChecked = $(\"input:checkbox[name=chkProfile]:checked\").length;\r\n\r\n if (isViaEvent === true)\r\n profileCheck = obj.currentTarget.checked;\r\n else\r\n profileCheck = obj.checked;\r\n\r\n $(obj).prop('checked', profileCheck);\r\n if (profileCheck) {\r\n if (this.state.CargoCareProfilesSelected.length == 0)\r\n cargoCareProfilesSelected = [];\r\n if (!cargoCareProfilesSelected.includes(ccProfileCode)) {\r\n cargoCareProfilesSelected.push(ccProfileCode);\r\n\r\n }\r\n if (numberOfCheckboxes == numberOfCheckboxesChecked)\r\n chkSelectAll.checked = true;\r\n\r\n }\r\n else {\r\n if (cargoCareProfilesSelected.length > 0) {\r\n var profileExists = cargoCareProfilesSelected.filter(x => x == ccProfileCode);\r\n if (profileExists == profileExists) {\r\n cargoCareProfilesSelected.splice($.inArray(ccProfileCode, cargoCareProfilesSelected), 1);\r\n\r\n if (numberOfCheckboxes == numberOfCheckboxesChecked)\r\n chkSelectAll.checked = true;\r\n else\r\n chkSelectAll.checked = false\r\n }\r\n }\r\n }\r\n self.setState({ CargoCareProfilesSelected: cargoCareProfilesSelected });\r\n }\r\n\r\n BindCargoCareProfileFilters(){ \r\n var ccProfilesData: any = self.state.DefaultCargoCareProfileAlertssummary.map(x => x.CargoCareCustomerProfileCode);\r\n let loopOnce = 0;\r\n forEach(ccProfilesData, function (value, key) {\r\n //$('#chk_'+ value).checked = true;\r\n if(self.state.CargoCareProfilesSelected.length == 0){\r\n /*var chkprofileId:any='chk_'+value;\r\n $(\"input[id='\" + chkprofileId + \"']\").prop('checked', true);*/\r\n\r\n let numberOfCheckboxesChecked = $(\"input:checkbox[name=chkProfile]:checked\").length;\r\n loopOnce++;\r\n\r\n if (numberOfCheckboxesChecked == 0 && loopOnce ==1) {\r\n\r\n self.GetUserCCPProfileFiltersWhenAllUncheked();\r\n\r\n }\r\n }\r\n else {\r\n var cargoCareProfile:any = self.state.CargoCareProfilesSelected.filter(x => x == value);\r\n if(cargoCareProfile.length>0){\r\n var chkprofileId:any='chk_'+value;\r\n $(\"input[id='\"+chkprofileId+\"']\").prop('checked', true);\r\n }\r\n else\r\n {\r\n var chkprofileId:any='chk_'+value;\r\n $(\"input[id='\"+chkprofileId+\"']\").prop('checked', false);\r\n }\r\n }\r\n });\r\n\r\n let chkSelectAll = document.getElementById(\"chkSelectAllProfile\");\r\n let checkboxes = document.getElementsByName('chkProfile');\r\n\r\n var numberOfCheckboxes = $(\"input:checkbox[name=chkProfile]\").length;\r\n var numberOfCheckboxesChecked = $(\"input:checkbox[name=chkProfile]:checked\").length;\r\n\r\n if (numberOfCheckboxes == numberOfCheckboxesChecked)\r\n chkSelectAll.checked = true;\r\n else\r\n chkSelectAll.checked = false\r\n\r\n self.setState({ CargoCareProfilesSelectedDefault: ccProfilesData });\r\n }\r\n \r\n OnSubmitCargoCareFilters(isFromClose: boolean){\r\n isSaveLayout = true;\r\n var filterCCProfileAlertssummary:any[] =[];\r\n var selectedCargoCareProfiles: any = self.state.CargoCareProfilesSelected;\r\n if (selectedCargoCareProfiles.length == 0 && isFromClose==false) {\r\n PopupWindow.showErrorMessage('Error', \"Please select at least one profile.\");//RCNG-61 \r\n return;\r\n }\r\n $('#globalLoader').show();\r\n forEach(selectedCargoCareProfiles, function (value, key) {\r\n var selectedCCProfiles = self.state.DefaultCargoCareProfileAlertssummary.filter(x => x.CargoCareCustomerProfileCode == value);\r\n if(selectedCCProfiles.length>0){\r\n filterCCProfileAlertssummary.push(selectedCCProfiles[0]);\r\n }\r\n });\r\n $('#CCProfileFilter').css(\"display\", \"none\");\r\n this.setState({ CargoCareProfileAlertssummary: filterCCProfileAlertssummary }, () => {\r\n this.SaveCargoCareProfileFilters();\r\n this.UpdateCargoChart();\r\n //this.UpdateCharts();\r\n this.setState({ loading: false });\r\n }); \r\n \r\n }\r\n renderToogleSwitchHtml() {\r\n \r\n var toogleHtml =
    \r\n\r\n
    \r\n
      \r\n
    • General
    • \r\n
    • \r\n
      \r\n
      \r\n
      Asset Search
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Asset Map
      \r\n
      \r\n \r\n
    • \r\n\r\n
    \r\n {hasChassis == true ?\r\n
      \r\n
    • Chassis
    • \r\n
    • \r\n
      \r\n
      ChassisSettings
      \r\n
      Total Chassis
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Chassis Grid
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Chassis History
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Chassis Fleet
      \r\n
      \r\n \r\n
    • \r\n
    \r\n : \"\"\r\n }\r\n {hasDrys == true ?\r\n
      \r\n
    • Dry
    • \r\n
    • \r\n
      \r\n
      DrySettings
      \r\n
      Total Drys
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Dry Grid
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Dry History
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Dry Fleet
      \r\n
      \r\n \r\n
    • \r\n
    \r\n : \"\"\r\n }\r\n {hasGensets == true ?\r\n
      \r\n
    • Genset
    • \r\n
    • \r\n
      \r\n
      GensetSettings
      \r\n
      Total Gensets
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Genset Grid
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Genset History
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Genset Fleet
      \r\n
      \r\n \r\n
    • \r\n
    \r\n : \"\"\r\n }\r\n {hasReefers == true ?\r\n
      \r\n
    • Reefer
    • \r\n
    • \r\n
      \r\n
      ReeferSettings
      \r\n
      Total Reefers
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Reefer Grid
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Reefer History
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Reefer Fleet
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Reefer Graph
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      PTI Results
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      Reefer Alarms
      \r\n
      \r\n \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      CargoCare
      \r\n
      \r\n \r\n
    • \r\n
    \r\n : \"\"\r\n }\r\n\r\n\r\n
    \r\n\r\n \r\n
    ;\r\n\r\n return toogleHtml;\r\n \r\n }\r\n\r\n //SetDryWidgetState() {\r\n //if (this.state.Drysummary.OutGeofence >= 1000) {\r\n // $('#DryOutsideGeofenceMain').addClass('disable-wizard-tablist');\r\n //}\r\n //else {\r\n // $('#DryOutsideGeofenceMain').removeClass('disable-wizard-tablist');\r\n //}\r\n\r\n //if (this.state.Drysummary.InGeofence >= 1000) {\r\n // $('#DryInsideGeofenceMain').addClass('disable-wizard-tablist');\r\n //}\r\n //else {\r\n // $('#DryInsideGeofenceMain').removeClass('disable-wizard-tablist');\r\n //}\r\n //}\r\n \r\n ShowTogglePopup(){//RCNG-2322\r\n $(\"#tooglePopupSettings\").show();\r\n }\r\n\r\n LayoutPreferenceChange(dashboardPreferenceId: any, dashboardPreferenceName: any) {\r\n isSaveLayout = true;\r\n //var Value: string = event.currentTarget.value;\r\n this.setState({\r\n LayoutPreference: dashboardPreferenceName\r\n });\r\n \r\n self.ReloadLayoutPreferences(dashboardPreferenceId);\r\n }\r\n\r\n ReloadLayoutPreferences(dashboardPreferenceId:any) {\r\n $(\"#btnSaveSearch\").click();\r\n $('#globalLoader').show(); \r\n var dashboardLayouts: any = this.state.DashboardLayouts;\r\n if (dashboardLayouts != null && dashboardLayouts.length > 0)\r\n {\r\n //this.setState({ DashboardLayouts: data.DashboardLayouts });\r\n var LayoutPreferences: any = dashboardLayouts.filter(x => x.DashboardPreferenceId == dashboardPreferenceId);\r\n if (LayoutPreferences[0].PreferenceData != \"\" && LayoutPreferences[0].PreferenceData != null) { \r\n self.applyLayoutPreferences(LayoutPreferences[0].PreferenceData, LayoutPreferences[0].DashboardPreferenceId, LayoutPreferences[0].IsReadOnly, LayoutPreferences[0].RevisionNum);\r\n }\r\n }\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n // { \r\n // this.setState({ DashboardLayouts: data.DashboardLayouts });\r\n // var LayoutPreferences: any = data.DashboardLayouts.filter(x => x.DashboardPreferenceId == dashboardPreferenceId);\r\n // if (LayoutPreferences[0].PreferenceData != \"\" && LayoutPreferences[0].PreferenceData != null) { \r\n // self.applyLayoutPreferences(LayoutPreferences[0].PreferenceData, LayoutPreferences[0].DashboardPreferenceId, LayoutPreferences[0].IsReadOnly, LayoutPreferences[0].RevisionNum);\r\n // }\r\n // }\r\n // //this.setState({ DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n // });\r\n }\r\n\r\n onDeleteConfirmation(dashboardPreferenceId: any, isCustomerDashboard: any, searchName: any) {\r\n //if(isCustomerDashboard != true) {\r\n var confirmationMessage = \"\";\r\n confirmationMessage = \"Are you sure you want to delete \" + searchName + \" dashboard?\";\r\n RCNGConfirmWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.DeleteUserLayoutConfirm.bind(this, dashboardPreferenceId), this.closeConfirmation.bind(this));\r\n //}\r\n }\r\n \r\n OnCheckDefaultConfirmation(dashboardPreferenceId: any, searchName: any) { \r\n var confirmationMessage = \"\";\r\n confirmationMessage = \"Are you sure you want to make \" + searchName + \" as default dashboard?\";\r\n RCNGConfirmWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.CheckDefaultLayout.bind(this, dashboardPreferenceId), this.closeConfirmation.bind(this));\r\n \r\n }\r\n\r\n CheckDefaultLayout(dashboardPreferenceId: any) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/MyProfile/SaveMyDefaultLayout';\r\n var layoutData = { DashboardPreferenceId: dashboardPreferenceId, PreferenceType: 'DL' };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(layoutData), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => { \r\n sessionStorage.setItem('DashboardPreferenceId', dashboardPreferenceId);\r\n self.ReloadLayoutsData(\"Dashboard updated successfully.\", dashboardPreferenceId, \"\");\r\n }).catch(err => {\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n }\r\n\r\n closeConfirmation() {\r\n RCNGConfirmWindow.ConfirmWindow.close();\r\n }\r\n\r\n DeleteUserLayoutConfirm(dashboardPreferenceId: any) {\r\n var layoutPreferences: any = this.state.DashboardLayouts;\r\n if(layoutPreferences.length == 1) {\r\n PopupWindow.showErrorMessage('Error', \"Dashboard cannot be deleted. At least one Dashboard must exist.\"); \r\n return;\r\n }\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/User/DeleteUserLayout';\r\n var preferencedata = { DashboardPreferenceId: dashboardPreferenceId, PreferenceData: '' };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n self.ReloadLayoutsData(\"Dashboard deleted successfully.\", 0, \"\"); \r\n });\r\n }\r\n\r\n onEditConfirmation(dashboardPreferenceId: any, isCustomerDashboard: any)\r\n {\r\n //if(isCustomerDashboard != true) {\r\n var layoutPreferences: any = this.state.DashboardLayouts.filter(x => x.DashboardPreferenceId == dashboardPreferenceId);\r\n NavMenu.setEditLayout(layoutPreferences, dashboardPreferenceId, \"Edit\");\r\n //}\r\n }\r\n\r\n onCreateNewDashboardLayout(param1: any, param2: any, param3: any) {\r\n NavMenu.setNewLayout(\"New\");\r\n }\r\n \r\n onDragLayout(layout, allLayouts){\r\n isSaveLayout = false;\r\n }\r\n\r\n public render() {\r\n var layoutNamesList = this.state.DashboardLayouts;\r\n if (layoutNamesList != undefined && layoutNamesList != null && layoutNamesList.length > 0) {\r\n var layoutNamesListOptions = layoutNamesList.map(function (userLayout) {\r\n var searchName = userLayout.PreferenceName;\r\n return (\r\n
  • \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {/* */}\r\n \r\n \r\n
    \r\n
    \r\n
  • \r\n );\r\n });\r\n }\r\n let newLayout = JSON.parse(JSON.stringify(this.state.layouts));\r\n var toogleSwitchHtml = this.renderToogleSwitchHtml();\r\n //newLayout.x += 2;\r\n let Vcontents = this.state.loading\r\n ?

    Loading...

    \r\n :

    Loaded

    \r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n
      \r\n
    • A Dashboard is a customized view of the Maritime platform Home page.
    • \r\n
    • A Dashboard includes a widget layout, grid column preferences, CargoCare Alerts widget filters, and a default search (if any).
    • \r\n\r\n
    • To create a new Dashboard, select the existing Dashboard that most closely meets your new Dashboard’s layout, and then from the Dashboard list, select Create New Dashboard . In the dialog box,\r\n enter a Dashboard name and choose whether it will be a Company or User Dashboard (you can also choose to make the Dashboard read-only),\r\n and then click Save. The new Dashboard will be created by copying the selected Dashboard.
    • \r\n\r\n
    • To start with the same Dashboard each time you sign in, from the Dashboard list, click icon ().
    • \r\n\r\n
    • To change a Dashboard name and/or mark a Dashboard as read-only, from the Dashboard list, click icon ().
    • \r\n\r\n
    • To delete a Dashboard, from the Dashboard list, click icon ().
    • \r\n\r\n
    • Unless the active Dashboard is read-only, changes to the widget layout, grid preferences, and CargoCare Alerts filters are saved immediately to the active Dashboard.
    • \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n {map(this.state.DashBoardItems, (el) => this.createElement(el))}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.modelTitle}
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.popUpHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.modelTitleReport}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtmlReport}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtmlReport}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Grid Preference
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.gridPreferenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Export To Excel
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.ExportToExcelHTML}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Choose and Order Search Fields
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.searchPreferenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Genset Monitoring Data - {this.state.graphGensetId}
    \r\n \r\n
    \r\n
    \r\n {this.state.gensetMonitorGraphHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Reefer Monitoring Data - {this.state.graphReeferId}
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.temperatureGraphHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.addGeofenceTitle}
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.addGeofenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Saved Searches

    \r\n \r\n
    \r\n
    \r\n {this.state.SaveSearchHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n}\r\n\r\nclass WGSwitch {\r\n AdvancedSearch: boolean = false;\r\n AdvancedGensetSearch: boolean = false;\r\n TotalReefers: boolean = false;\r\n TotalGensets: boolean = false;\r\n ReeferMaps: boolean = false;\r\n ReeferGrid: boolean = false;\r\n GensetGrid: boolean = false;\r\n ReeferHistoryGrid: boolean = false;\r\n ReeferTempGraph: boolean = false;\r\n GensetHistoryGrid: boolean = false;\r\n PTResultGrid: boolean = false;\r\n MicroaAlarms: boolean = false;\r\n CargoCare: boolean = false;\r\n Histogram: boolean = false;\r\n GensetHistogram: boolean = false;\r\n TotalDrys: boolean = false;\r\n DryGrid: boolean = false;\r\n DryHistoryGrid: boolean = false;\r\n DryHistogram: boolean = false;\r\n TotalChassis: boolean = false;\r\n ChassisGrid: boolean = false;\r\n ChassisHistoryGrid: boolean = false;\r\n ChassisHistogram: boolean = false;\r\n}\r\n\r\nclass DashBoardItem {\r\n Key: any;\r\n Layout: any;\r\n Enabled: boolean = false;\r\n IsVisible: boolean = true;\r\n IsFullscreen: boolean = false;\r\n IsPinned?: boolean;\r\n}\r\n\r\ninterface ReeferMasterStatus {\r\n UnitRCDAssociationHistoryID: number,\r\n LastParentEventID: number,\r\n ParentEventID: number,\r\n UnitMasterID: number,\r\n UnitPrefix: string,\r\n UnitNumber: string,\r\n ReeferID: string,\r\n UnitEventID: number,\r\n AlarmsList: string,\r\n CCAlarms: string,\r\n CCSeverityLevel: string,\r\n MicroAlarms: string,\r\n MASeverityLevel: string,\r\n UnitUSDAHistoryID: number,\r\n USDA1Temp: number,\r\n USDA2Temp: number,\r\n USDA3Temp: number,\r\n Cargo4Temp: number,\r\n O2Setpoint: number,\r\n CO2Setpoint: number,\r\n RunningMode: string,\r\n URH_UnitReadingsHistoryID: number,\r\n Humidity: number,\r\n UnitTypeCd: string,\r\n AmbientTemp: number,\r\n CompressorSuctionTemp: number,\r\n CompressorDischargeTemp: number,\r\n ReturnTemp1: number,\r\n SupplyTemp1: number,\r\n SupplyTemp2: number,\r\n ReturnTemp2: number,\r\n EvaporatorTemp: number,\r\n NumberOfAlarmsInQue: number,\r\n DischargePressure: number,\r\n CompositeSuctionPressure: number,\r\n VentPositionSensorCMH: number,\r\n PretripTestStateID: any,\r\n SetPoint: number,\r\n O2Reading: number,\r\n CO2Reading: number,\r\n TotalCurrentDraw: number,\r\n LowSpeedEvaporatorFanOutPut: string,\r\n HighSpeedEvaporatorFanOutPut: string,\r\n CondenserFanOutPut: string,\r\n HumiditySetpoint: number,\r\n SoftwareRevision: string,\r\n ControllerSerialNumber: string,\r\n CompressorFrequency: number,\r\n CondenserTemperature: number,\r\n CondenserPressure: number,\r\n HeaterOnTime: number,\r\n EvaporatorExpansionValveOpening: number,\r\n LineFrequency: number,\r\n DataLoggerDtm: string,\r\n TimeToDefrost: number,\r\n CurrentPhaseA: number,\r\n CurrentPhaseB: number,\r\n CurrentPhaseC: number,\r\n ThreePhaseCurrent: string,\r\n ReturnTempLongAvg: number,\r\n AmbientTempLongAvg: number,\r\n CompositeSuctionPressureLongAvg: number,\r\n DischargePressureLongAvg: number,\r\n SupplyTemperatureLongAvg: number,\r\n ReturnTemperatureLongAvg: number,\r\n CompressorSuctionTempLongAvg: number,\r\n CompressorCondensorTempLongAvg: number,\r\n RCDEventID: number,\r\n R_EventMasterID: number,\r\n R_ParentEventID: number,\r\n RCDMasterID: number,\r\n RCDMasterHistoryID: number,\r\n RCDGSMPositionHistoryID: number,\r\n RCDLocationHistoryID: number,\r\n RCDGPSPositionHistoryID: number,\r\n RCDStateReportedHistoryID: number,\r\n RCDAlarmSummaryHistoryID: number,\r\n R_EventDTTM: string,\r\n RunState: number,\r\n R_RCDStateReportedHistoryID: number,\r\n IsAcceptableACVoltage: boolean,\r\n IsAcceptableBatteryVoltage: boolean,\r\n BatteryVoltage: number,\r\n RCDPowerSourceCd: string,\r\n ReeferACPowerLevel: number,\r\n ReeferOEMTypeCd: string,\r\n LineVoltage1: number,\r\n LineVoltage2: number,\r\n LineVoltage3: number,\r\n DeviceTemp: number,\r\n LastUnitEventID: number,\r\n EventMasterID: number,\r\n EventDTTM: any,\r\n ModifiedDTTM: any,\r\n U_UnitAlarmSummaryHistoryID: number,\r\n UnitControlEventID: number,\r\n C_EventDTTM: any,\r\n C_EventMasterID: number,\r\n C_ParentEventID: number,\r\n UnitVesselOperationsID: any,\r\n UnitCargoCareID: any,\r\n C_UnitAlarmSummaryHistoryID: any,\r\n Status: any,\r\n IsOnVessel: any,\r\n IsCargoCare: any,\r\n C_ModifiedDTTM: any,\r\n GeofenceName: string,\r\n RCDID: string,\r\n RCDFirmwareVersion: string,\r\n RCDBootloaderVersion: string,\r\n RCDMeshFirmwareVersion: string,\r\n RevisionNum: number,\r\n GPSLatitude: number,\r\n GPSLongitude: number,\r\n GPSLastLock: number,\r\n GPSCoords: string\r\n GPSLockState: string,\r\n IsInsideGeofence: boolean,\r\n Geofence: string,\r\n ActiveCommands: boolean,\r\n PendingCommands: boolean,\r\n ErrorCommands: boolean,\r\n CustomerAccessGroupIDList: string,\r\n TowerBaseStationID: number,\r\n TowerLocalizationAreaCode: number,\r\n MNC: number,\r\n SuctionModulationValveOpening: number,\r\n HotGasValveOpening: number,\r\n EconomizerValveOpening: number,\r\n RSSI: number,\r\n MSISDN: string,\r\n SIM_IMSI: string,\r\n ICCID: string,\r\n CompressorEvaporatorTempLongAvg: number,\r\n CompressorDischargeTempLongAvg: number,\r\n CountryCd: string,\r\n CountryName: string,\r\n UnitEventDTTM: any,\r\n PowerProfileCd: string,\r\n NotReportingFlag: number,\r\n PowerStateIsActive: boolean,\r\n PtiRunning: boolean,\r\n ControllerSerialNumberChgFlag: boolean,\r\n IsActiveAssociation: boolean,\r\n IsReeferCommunicationEstablished: boolean,\r\n UnitSettingsHistoryID: number,\r\n RCDReportingInterval: number,\r\n ReeferConfigTypeCd: string,\r\n Street: string,\r\n City: string,\r\n State: string,\r\n Zip: string,\r\n CustomerID: number,\r\n CustomerName: string,\r\n RCDRfrComErr: boolean,\r\n VesselID: string,\r\n VoyageID: string,\r\n PortOfDestination: string,\r\n PortOfDeparture: string,\r\n TripId: number,\r\n TripStatusCd: string,\r\n TripStatusCdAndDFlag: string,\r\n DeviationFlg: boolean,\r\n TripDefStatusDsc: string,\r\n TripNameAndStatus: string,\r\n TripRouteWaypointId: number,\r\n BookedTemperature: number,\r\n BookingNumber: string,\r\n TemperatureUnit: string,\r\n CommentExists: number\r\n}\r\nclass EmailFields {\r\n SelectedTo: string;\r\n SelectedFrom: string;\r\n SelectedSubject: string;\r\n SelectedAttachment: string;\r\n SelectedMessage: string;\r\n}\r\n\r\n\r\nenum ReeferStatusEnum {\r\n AllReefer = 0,\r\n Running = 1,\r\n Stopped = 2,\r\n MissedRunning = 3,\r\n MissedStopped = 4,\r\n AllMicroAlaram = 5,\r\n MASevere = 6,\r\n MAMinor = 7,\r\n AllCargoCare = 8,\r\n CCSevere = 9,\r\n CCMinor = 10,\r\n CCInformational = 11,\r\n PowerOnReporting = 12,\r\n PowerOnNotReporting = 13,\r\n PowerOffReporting = 14,\r\n PowerOffNotReporting = 15,\r\n DryInGeofence = 16,\r\n DryOutGeofence = 17,\r\n ChassisPwrInGeofence = 18,\r\n ChassisPwrOutGeofence = 19,\r\n ChassisNotPwrInGeofence = 20,\r\n ChassisNotPwrOutGeofence = 21\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ ...state.userDetails, ...state.home }), // Selects which state properties are merged into the component's props\r\n HomeStore.actionCreators // Selects which action creators are merged into the component's props\r\n)(Home as any)","/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport DateFormat from 'dateformat';\r\nimport moment from 'moment';\r\nimport { DateTime } from 'react-datetime-bootstrap';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBar } from '../sharedcomponents/GridToolBar';\r\nimport { GridToolBarExcel } from '../sharedcomponents/GridToolBarExcel';\r\nimport Formatters from '../../actions/Formatters';\r\nimport DryFormatters from '../../actions/DryFormatter';\r\nimport $ from 'jquery';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { EmailControl } from './../sharedcomponents/EmailControl';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\nexport interface DryHistoryState {\r\n rowData: server.DryHistoryUI[],\r\n rowDataForRCD: server.RcdHistoryUI[],\r\n HistoryFiltersForRCD: RcdHistorySearchFilters,\r\n columnDefs: any[],\r\n HistoryFilters: DryHistoryFilter,\r\n reeferFormatter: server.ReeferFormatter\r\n pageSize: any;\r\n gridApiParams: any;\r\n RCDMasterId: string;\r\n emailHtml: any;\r\n selectedItems: any[];\r\n exportFields: ExportFields;\r\n PreferenceDTTM: any;\r\n GridToolBarHtml: any;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\nvar colDefs;\r\nvar self;\r\nvar functionId;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar columnDefs2: any[];\r\nexport class DryDetailsHistory extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n functionId = 49; // functionId for DryHistory Grid\r\n var filterSet = new DryHistoryFilter();\r\n var filterSetForRCD = new RcdHistorySearchFilters();\r\n //var columnDefs = this.createColumnDefs();\r\n var exportData = new ExportFields();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n this.state = {\r\n rowData: [],\r\n rowDataForRCD: [],\r\n columnDefs: [],\r\n HistoryFilters: filterSet,\r\n HistoryFiltersForRCD: filterSetForRCD,\r\n reeferFormatter: props.stateData.reeferFormatter,\r\n RCDMasterId: null,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n emailHtml: '',\r\n selectedItems: [],\r\n exportFields: exportData,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n GridToolBarHtml: '',\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 }\r\n };\r\n\r\n self = this;\r\n }\r\n\r\n bindDryHistoryData(stateData: any) {\r\n //var historyData = stateData.dryHistoryData;\r\n var statusData = stateData.dryDetailsData;\r\n\r\n /*var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n */\r\n var toDTTM = this.props.ToDate;\r\n var fromDTTM = this.props.FromDate;\r\n\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n this.state.HistoryFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFilters.AssetNumber = statusData.AssetMasterID;\r\n //this.state.HistoryFilters.AssetNumber = statusData.DryId;\r\n this.state.HistoryFilters.DeviceNumber = statusData.RCDID;\r\n this.state.HistoryFilters.EventCode = null;\r\n //this.setState({ rowData: historyData }, () => this.bindGridToolBar());\r\n\r\n if (this.props.stateData.dryHistoryData != undefined && this.props.stateData.dryHistoryData != null) {\r\n if (this.props.stateData.dryHistoryData.length == 0) {\r\n this.ApplyDryHistorySearch();\r\n }\r\n else {\r\n this.setState({\r\n reeferFormatter: this.props.stateData.reeferFormatter,\r\n rowData: this.props.stateData.dryHistoryData\r\n }, () => this.bindGridToolBar());\r\n }\r\n }\r\n else\r\n this.ApplyDryHistorySearch();\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n bindGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBar(self.state.gridApiParams) });\r\n }\r\n\r\n bindRcdHistoryData(stateData: any) {\r\n var historyData = stateData.rcdHistoryData;\r\n var statusData = stateData.dryDetailsData;\r\n if (statusData.RCDMasterID != 0) {\r\n this.state.HistoryFiltersForRCD.Units = statusData.RCDMasterID;\r\n }\r\n /*\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n */\r\n var toDTTM = this.props.ToDateRCD;\r\n var fromDTTM = this.props.FromDateRCD;\r\n\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n this.state.HistoryFiltersForRCD.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFiltersForRCD.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n RCDMasterId: statusData.RCDMasterID\r\n })\r\n\r\n //this.setState({ rowDataForRCD: historyData }, () => this.bindGridToolBar());\r\n\r\n if (this.props.stateData.rcdHistoryData != undefined && this.props.stateData.rcdHistoryData != null) {\r\n if (this.props.stateData.rcdHistoryData.length == 0) {\r\n this.ApplyDryHistorySearch();\r\n }\r\n else {\r\n this.setState({\r\n reeferFormatter: this.props.stateData.reeferFormatter,\r\n rowDataForRCD: this.props.stateData.rcdHistoryData\r\n }, () => this.bindGridToolBar());\r\n }\r\n }\r\n else\r\n this.ApplyDryHistorySearch();\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (nextprops.stateData != undefined && nextprops.stateData != null) {\r\n if (nextprops.IsDry == true)\r\n this.bindDryHistoryData(nextprops.stateData);\r\n else\r\n this.bindRcdHistoryData(nextprops.stateData);\r\n }\r\n }\r\n\r\n ValidateHistoryDates() {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n //var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = this.state.HistoryFilters.FromDate;\r\n var toDttm = this.state.HistoryFilters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n ValidateRcdHistoryDates() {\r\n var fromDttm = this.state.HistoryFiltersForRCD.FromDate;\r\n var toDttm = this.state.HistoryFiltersForRCD.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n updateDryCommandsDimensions() {\r\n if (this.props.IsDry == true) {\r\n $(\"#HistoryStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 289);\r\n $(\"#HistoryStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 289);\r\n $(\"#HistoryStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 289);\r\n }\r\n else {\r\n $(\"#RCDHistoryStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 289);\r\n $(\"#RCDHistoryStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 289);\r\n $(\"#RCDHistoryStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 289);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n this.updateDryCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n Excel.preventDefault();\r\n \r\n \r\n \r\n \r\n var IsDry = this.props.IsDry;\r\n if (this.props.stateData != undefined && this.props.stateData != null) {\r\n var stateData = this.props.stateData;\r\n }\r\n if (IsDry == true) {\r\n colDefs = this.createColumnDefs();\r\n columnDefs2 = this.createColumnDefs();\r\n this.bindDryHistoryData(stateData);\r\n }\r\n\r\n else {\r\n colDefs = this.createColumnDefsForDevice();\r\n columnDefs2 = this.createColumnDefsForDevice();;\r\n this.bindRcdHistoryData(stateData);\r\n }\r\n\r\n //this.setState({ GridToolBarHtml: this.renderGridToolBar() });\r\n }\r\n\r\n onDryGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api, \"DryDetailsHistory\");//26724 - added missing parameter\r\n self.setState({ GridToolBarHtml: self.renderGridToolBar(params.api) });\r\n }\r\n\r\n onRcdGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n self.setState({ GridToolBarHtml: self.renderGridToolBar(params.api) });\r\n }\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.HistoryFilters;\r\n filters.FromDate = date;\r\n self.setState({\r\n HistoryFilters: filters\r\n });\r\n\r\n this.props.HoldHistoryDates(date, null);\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.HistoryFilters;\r\n filters.ToDate = date;\r\n self.setState({\r\n HistoryFilters: filters\r\n });\r\n\r\n this.props.HoldHistoryDates(null, date);\r\n }\r\n RcdFromDateChange(date) {\r\n var filters = self.state.HistoryFiltersForRCD;\r\n filters.FromDate = date;\r\n self.setState({\r\n HistoryFiltersForRCD: filters\r\n });\r\n\r\n this.props.HoldRCDHistoryDates(date, null);\r\n }\r\n\r\n RcdToDateChange(date) {\r\n var filters = self.state.HistoryFiltersForRCD;\r\n filters.ToDate = date;\r\n self.setState({\r\n HistoryFiltersForRCD: filters\r\n });\r\n\r\n this.props.HoldRCDHistoryDates(null, date);\r\n }\r\n onCellClickedCopy(event) {\r\n coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n coppiedData = event.value;\r\n }\r\n\r\n ApplyDryHistorySearch() {\r\n var message;\r\n if (this.props.IsDry == false) {\r\n message = this.ValidateRcdHistoryDates();\r\n }\r\n else {\r\n message = this.ValidateHistoryDates();\r\n }\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n $('#globalLoader').show();\r\n if (this.state.reeferFormatter === null && this.props.IsGenset == true) {\r\n var fromDate = moment(new Date(this.state.HistoryFilters.FromDate)).toString();\r\n var toDate = moment(new Date(this.state.HistoryFilters.ToDate)).toString();\r\n this.state.HistoryFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.HistoryFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n }, () => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data1 => {\r\n this.setState({\r\n rowData: data1\r\n }, () => {\r\n this.props.HoldHistoryData(data, data1, null);\r\n this.bindGridToolBar();\r\n });\r\n $('#globalLoader').hide();\r\n });\r\n\r\n \r\n });\r\n });\r\n }\r\n else if (this.props.IsDry == false) {\r\n var fromDate = moment(new Date(this.state.HistoryFiltersForRCD.FromDate)).toString();\r\n var toDate = moment(new Date(this.state.HistoryFiltersForRCD.ToDate)).toString();\r\n this.state.HistoryFiltersForRCD.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFiltersForRCD.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.HistoryFiltersForRCD);\r\n var rcdColDefs = this.createColumnDefsForDevice();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n }, () => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdHistoryDataByDeviceSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data1 => {\r\n this.setState({\r\n rowDataForRCD: data1\r\n }, () => {\r\n this.props.HoldHistoryData(data, null, data1);\r\n this.bindGridToolBar();\r\n });\r\n $('#globalLoader').hide();\r\n });\r\n\r\n \r\n });\r\n });\r\n\r\n }\r\n else {\r\n var fromDate = moment(new Date(this.state.HistoryFilters.FromDate)).toString();\r\n var toDate = moment(new Date(this.state.HistoryFilters.ToDate)).toString();\r\n this.state.HistoryFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.HistoryFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.HistoryFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data1 => {\r\n this.setState({\r\n rowData: data1\r\n }, () => {\r\n this.props.HoldHistoryData(this.state.reeferFormatter, data1, null);\r\n this.bindGridToolBar();\r\n })\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n }\r\n\r\n createColumnDefsForDevice() {\r\n\r\n return [\r\n { headerName: \"ALM\", field: \"R_HighestSeverityLevel\", width: 65, cellRenderer: Formatters.runStateFormatter },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: Formatters.runStateFormatter },\r\n //{ headerName: \"SW\", field: \"IgnitionOn\", width: 65, cellRenderer: Formatters.gensetSwitchFormatterImg },\r\n //{ headerName: \"ENG\", field: \"GensetRunning\", valueGetter: (params) => { return Formatters.EngineSorting(params); }, width: 65, cellRenderer: Formatters.gensetRunningFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", width: 70, cellRenderer: Formatters.oemTypeFormatter },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellClass: 'bigInt',cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Last Asset ID\", field: \"AssetNumber\", cellRenderer: Formatters.stringTypeFormatter, width: 110 },\r\n { headerName: \"Asset Type\", field: \"AssetType\", cellRenderer: Formatters.stringTypeFormatter, width: 110 },\r\n { headerName: \"Last Event\", field: \"LastEvent\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Alert\", field: \"Alerts\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Event Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", width: 150, cellRenderer: Formatters.dateTypeFormatter },\r\n { headerName: \"Reported Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_ModifiedDTTM\", width: 150, cellRenderer: Formatters.dateTypeFormatter },\r\n { headerName: \"City\", field: \"City\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"State\", field: \"State\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Country\", field: \"Country\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Zip\", field: \"Zip\", cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Device Fence\", field: \"GeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Server Fence\", field: \"ServerGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device Fence ID\", field: \"Geofence\", cellRenderer: Formatters.stringTypeFormatter, width: 110 },\r\n { headerName: \"Server Fence ID\", field: \"ServerGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Loc Coords\", field: \"GPSCoords\", cellRenderer: Formatters.GPSCoordsFormatter, width: 150 },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", cellRenderer: Formatters.secondsToTimeConverter, width: 150 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"MNC\", field: \"MNC\", cellRenderer: Formatters.MNCTypeFormatter, width: 70 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", cellRenderer: Formatters.stringTypeFormatter, width: 70 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"In Geofence\", field: \"IsInsideGeofence\", width: 90, cellRenderer: Formatters.YesNoConverter },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", cellRenderer: Formatters.sensorDataFormatter, width: 120 },\r\n { headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceFormatter, width: 150 },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Device Mesh FW ver\", field: \"RCDMeshFirmwareVersion\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device temp. \", headerValueGetter: Formatters.TempHeaderFormatter, cellRenderer: Formatters.TemperatureFormatter, field: \"DeviceTemp\", width: 130 },\r\n { headerName: \"Device Bat. (V)\", field: \"BatteryVoltage\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Geofence Revision\", field: \"RevisionNum\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", cellClass: 'bigInt',cellRenderer: Formatters.stringTypeFormatter, width: 140 },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", cellClass: 'bigInt',cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"ICCID\", field: \"ICCID\", cellClass: 'bigInt', cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"EUI\", field: \"EUI\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Cell Signal\", field: \"RSSI\", cellRenderer: Formatters.RSSITypeFormatter, width: 80 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", cellRenderer: Formatters.stringTypeFormatter, width: 130 }\r\n ];\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"PWR\", field: \"BatteryStatus\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => { return DryFormatters.dryBatteryStatusSorting(params); },\r\n filterParams: { valueGetter: params => { return DryFormatters.dryPwrStateFormatterFilter(params); } },\r\n cellRenderer: DryFormatters.dryBatteryStatusFormatter, width: 70\r\n },\r\n\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: Formatters.stringTypeValueFormatter },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltipField: \"TripNameAndStatus\", width: 70, valueGetter: (params) => { return Formatters.TripSorting(params); }, cellRenderer: Formatters.TripstatusIndicator }\r\n ]\r\n },\r\n {\r\n headerName: \"Latest Event\",\r\n children: [\r\n { headerName: \"Dry ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetNumber\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventDescription\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150, enableTooltip: true },\r\n { headerName: \"Event Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ]\r\n },\r\n {\r\n headerName: 'Last Reported Device Data',\r\n children: [\r\n { headerName: \"Device Fence\", field: \"FenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceName\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device Fence ID\", field: \"FenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FenceNameID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Server Fence\", field: \"BackendGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceName\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Server Fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BackendGeofenceNameID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n // { headerName: \"Region Fence\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n // { headerName: \"Region Fence ID\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Geofence Revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"GeofenceDefinitionRevision\"); }, cellRenderer: Formatters.floatTypeValueFormatter, width: 150 },\r\n { headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 70 },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 70 },\r\n { headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ZipCode\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n //{ headerName: \"Battery (V)\", field: \"DeviceBattery\", cellRenderer: Formatters.BattVoltageFormatter, width: 140 },\r\n { headerName: \"Loc Coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: Formatters.GPSCoordsFormatter, width: 140 },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } }, valueGetter: (params) => { return Formatters.secondsToTimeConverterFilter(params); }, width: 140 },\r\n { headerName: \"Loc HDOP\", field: \"DryGPSHDOP\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"DryGPSHDOP\"); }, cellRenderer: Formatters.floatTypeValueFormatter, width: 100 },\r\n { headerName: \"Loc Sat. Count\", field: \"DryGPSSatelliteCount\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"DryGPSSatelliteCount\"); }, cellRenderer: Formatters.floatTypeValueFormatter, width: 70 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 130 },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MNC\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 100 },\r\n { headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FirmwareVersion\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 70 },\r\n {\r\n headerName: \"Device Bat. (V)\", field: \"BattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, cellRenderer: Formatters.BattVoltageValueFormatter, width: 130\r\n },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 150 },\r\n { headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 100 },\r\n {\r\n headerName: \"Cell Signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: Formatters.RSSITypeFormatter, width: 70\r\n },\r\n {\r\n headerName: \"Speed (mph)\", field: \"DrySpeed\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return DryFormatters.SpeedConverterFilter(params); } },\r\n valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"DrySpeed\"); }, cellRenderer: DryFormatters.SpeedConverter, width: 130\r\n },\r\n { headerName: \"Miles\", field: \"Miles\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return DryFormatters.floatTypeSortingFieldName(params, \"Miles\"); }, cellRenderer: Formatters.floatTypeValueFormatter, width: 150 },\r\n {\r\n headerName: \"Door\", field: \"Door1Open\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return DryFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return DryFormatters.DoorFormatterSorting(params); }, cellRenderer: DryFormatters.doorFormatter, width: 140\r\n },\r\n { headerName: \"Device Type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceType\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 140 },\r\n { headerName: \"Server Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CreatedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: Formatters.stringTypeValueFormatter, width: 180 }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n onSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedDryData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedDryData.push(selectedRow);\r\n });\r\n\r\n self.setState({\r\n selectedItems: selectedDryData\r\n });\r\n }\r\n\r\n onRCDSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedDryData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedDryData.push(selectedRow);\r\n });\r\n\r\n self.setState({\r\n selectedItems: selectedDryData\r\n });\r\n }\r\n\r\n getRCDContextMenuItems(params: any) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var parentEventId = selectedrowNode.data.ParentEventID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n $(\".context-menu\").show(); $(\"#contextmenu\").show();\r\n Excel.preventDefault();\r\n\r\n $(\".ag-cell\").unbind(\"contextmenu\");\r\n $(\".ag-cell\").bind('contextmenu', function (e) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n $(\"#contextmenu\").show();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var parentEventId = selectedrowNode.data.ParentEventID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n var top = e.pageY + 5;\r\n if (height < top) {\r\n top = (top - halfheight) + 310;\r\n }\r\n\r\n var left = e.pageX;\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n left: left + \"px\"\r\n });\r\n\r\n $(\".context-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('contextmenu click', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n\r\n $('.context-menu').bind('contextmenu', function () {\r\n return false;\r\n });\r\n $('.context-menu').on('click', 'li', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n }\r\n\r\n getContextMenuItems(params: any) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var dryHistoryID = selectedrowNode.data.DCConditionLogID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.DCConditionLogID === dryHistoryID)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.DCConditionLogID == selectedrowNode.data.DCConditionLogID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n $(\".context-menu\").show(); $(\"#contextmenu\").show();\r\n Excel.preventDefault();\r\n\r\n $(\".ag-cell\").unbind(\"contextmenu\");\r\n $(\".ag-cell\").bind('contextmenu', function (e) {\r\n $(\"#divMsboxDynamicContent\").html(null);\r\n $(\"#contextmenu\").show();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n\r\n var setRowIndex = selected.rowIndex;\r\n var row = params.api.getDisplayedRowAtIndex(setRowIndex);\r\n if (row != null && row != \"undefined\" && !row.group) {\r\n var rowId = row.id;\r\n var selectedrowNode = params.api.getRowNode(rowId);\r\n var sortflage = false;\r\n\r\n var dryHistoryID = selectedrowNode.data.DCConditionLogID;\r\n params.api.forEachLeafNode(function (NewrowNode, index) {\r\n if ((NewrowNode.data.DCConditionLogID === dryHistoryID)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.DCConditionLogID == selectedrowNode.data.DCConditionLogID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n /*var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var parentEventId = resortitem.data.ParentEventID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.ParentEventID === parentEventId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n */\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n var top = e.pageY + 5;\r\n if (height < top) {\r\n top = (top - halfheight) + 310;\r\n }\r\n\r\n var left = e.pageX;\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n left: left + \"px\"\r\n });\r\n\r\n $(\".context-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('contextmenu click', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n\r\n $('.context-menu').bind('contextmenu', function () {\r\n return false;\r\n });\r\n $('.context-menu').on('click', 'li', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n }\r\n\r\n exportToExcel() {\r\n var arrData;\r\n var gridName = '';\r\n var r = colDefs;\r\n $(\"#globalLoader\").show();\r\n if (this.props.IsDry == true) {\r\n gridName = 'HistoryStatusGrid';\r\n arrData = self.state.selectedItems;\r\n\r\n try {\r\n //Excel.InitializeExcelExport(arrData, r, gridName);\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\"); \r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, gridName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridToolBarExcel.applySheetData(sheetData, gridName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n else {\r\n gridName = 'RCDHistoryStatusGrid';\r\n arrData = self.state.selectedItems;\r\n\r\n try {\r\n //Excel.InitializeExportParent(arrData, r, gridName);\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\"); \r\n var uri = Excel.InitializeExportParentToXLSX(arrData, r, gridName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridToolBar.applySheetData(sheetData, gridName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n }\r\n\r\n sendEmail() {\r\n this.setState({\r\n emailHtml: self.renderEmailControl()\r\n })\r\n }\r\n\r\n renderGridToolBar(gridApiParams: any) {\r\n if (this.props.IsDry == true) {\r\n return ;\r\n }\r\n else {\r\n return ;\r\n }\r\n }\r\n\r\n renderEmailControl() {\r\n if (this.props.IsDry == true) {\r\n return ;\r\n }\r\n else {\r\n return ;\r\n }\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n //self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n var columnDisplayName = colDef[0].colDef.headerName;\r\n if (fieldValue == \"-NA-\" || fieldValue == \"-999\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"BatteryStatus\":\r\n return Formatters.DryPwrStateFormatterGrouping(fieldValue);\r\n case \"TripStatusCdAndDFlag\":\r\n return Formatters.TripStatusFormatterGrouping(fieldValue);\r\n case \"customername\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"Door1Open\":\r\n return Formatters.DoorFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return Formatters.RSSIFormatterGrouping(fieldValue);\r\n case \"CommentExistsDC\":\r\n return Formatters.CommentExistsGrouping(fieldValue);\r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n default:\r\n return fieldValue;\r\n }\r\n }\r\n\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.IsDry == true ?\r\n
    \r\n
    From:
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    To:
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n :
    \r\n
    From:
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    To:
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    {this.state.GridToolBarHtml}
    \r\n
    \r\n
    \r\n {\r\n this.props.IsDry == true ?\r\n
    \r\n \r\n \r\n
    \r\n :\r\n
    \r\n \r\n \r\n
    \r\n }\r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • Export to Excel
    • \r\n
    • Send Email
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Send Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.emailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\nclass DryHistoryFilter {\r\n AssetNumber: string;\r\n DeviceNumber: string;\r\n FromDate: string;\r\n ToDate: string;\r\n EventCode: string;\r\n}\r\nclass RcdHistorySearchFilters {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\n\r\n","/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport DateFormat from 'dateformat';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport moment from 'moment';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBar } from '../sharedcomponents/GridToolBar';\r\nimport Formatters from '../../actions/Formatters';\r\nimport $ from 'jquery';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\n\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport UserRights from '../../actions/UserRights';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\n\r\nexport interface DryCommandStatusGridState {\r\n rowData: server.CommandStatusUI[],\r\n columnDefs: any[],\r\n CommandStatusFilters: DryCommandStatusFilters,\r\n UserList: server.UserListModel[],\r\n CommandStatus: server.RefCommandStatusModel[],\r\n CommandTypes: server.RefCommandTypesModel[],\r\n pageSize: any,\r\n gridApiParams: any,\r\n modelTitle: string;\r\n popUpHtml: any;\r\n selectedItems: any[];\r\n Filters: ForwardCommandParams;\r\n PreferenceDTTM: any;\r\n}\r\n\r\nvar self;\r\n\r\nexport class DryDetailsCommandStatus extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var columnDefs = this.createColumnDefs();\r\n var filterSet = this.initDetailsCommandStatusFilters();//new DryCommandStatusFilters();\r\n var ForwardCommandfilterSet = new ForwardCommandParams();\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n this.state = {\r\n rowData: [], columnDefs: columnDefs, CommandStatusFilters: filterSet, UserList: [], CommandStatus: [], CommandTypes: []\r\n , pageSize: 25\r\n , gridApiParams: []\r\n , modelTitle: ''\r\n , popUpHtml: ''\r\n , selectedItems: []\r\n , Filters: ForwardCommandfilterSet\r\n , PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm)\r\n };\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetUsersList')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ UserList: data });\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GetDryCommandStatus')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CommandStatus: data });\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/GetDryCommandTypes')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CommandTypes: data });\r\n });\r\n\r\n self = this;\r\n }\r\n initDetailsCommandStatusFilters() {\r\n var objCommandStatusFilters = new DryCommandStatusFilters();\r\n objCommandStatusFilters.ReeferIds = \"\";\r\n objCommandStatusFilters.RcdIds = \"\";\r\n objCommandStatusFilters.CommandTypeCd = \"\";\r\n objCommandStatusFilters.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objCommandStatusFilters.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n objCommandStatusFilters.CommandStatusId = 0;\r\n objCommandStatusFilters.UserId = 0;\r\n \r\n return objCommandStatusFilters;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (nextprops.stateData != undefined && nextprops.stateData != null) {\r\n nextprops.stateData.dryCommandsData = this.state.rowData;\r\n this.bindDryCommandsData(nextprops.stateData);\r\n }\r\n }\r\n\r\n bindDryCommandsData(stateData: any) {\r\n var commandStatusData = stateData.dryCommandsData;\r\n var statusData = stateData.dryDetailsData;\r\n this.state.CommandStatusFilters.ReeferIds = statusData.AssetNumber;\r\n this.state.CommandStatusFilters.RcdIds = statusData.RCDID;\r\n /*\r\n var modifiedDttm = this.state.PreferenceDTTM;\r\n var fromDate = moment(new Date(modifiedDttm)).startOf('day').toString();\r\n var toDate = moment(new Date(modifiedDttm)).endOf('day').toString();\r\n */\r\n var toDate = this.props.ToDate;\r\n var fromDate = this.props.FromDate;\r\n\r\n this.state.CommandStatusFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.CommandStatusFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.state.CommandStatusFilters.CommandTypeCd = \"-1\";\r\n this.state.CommandStatusFilters.CommandStatusId = -1;\r\n\r\n //setTimeout(() => {\r\n // this.setState({ rowData: commandStatusData });\r\n //}, 50);\r\n\r\n if (this.props.stateData.dryCommandsData != undefined && this.props.stateData.dryCommandsData != null) {\r\n if (this.props.stateData.dryCommandsData.length == 0) {\r\n this.ApplyCommandStatusFilter();\r\n }\r\n else {\r\n this.setState({\r\n //reeferFormatter: this.props.stateData.reeferFormatter,\r\n rowData: this.props.stateData.dryCommandsData\r\n });\r\n }\r\n }\r\n else\r\n this.ApplyCommandStatusFilter();\r\n\r\n //if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != []) {\r\n // self.state.gridApiParams.paginationGoToFirstPage();\r\n //} \r\n }\r\n\r\n updateDryCommandsDimensions() {\r\n $(\"#CommandStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 327);\r\n $(\"#CommandStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 327);\r\n $(\"#CommandStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 327);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n this.updateDryCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n Excel.preventDefault();\r\n \r\n \r\n \r\n \r\n // To make the Modal popups draggable.\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n RCNGWindow.ConfirmWindow.close();\r\n if (this.props.stateData != undefined && this.props.stateData != null) {\r\n var stateData = this.props.stateData;\r\n this.bindDryCommandsData(stateData);\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n DryIdchange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.ReeferIds = Value;\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n RcdIdchange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.RcdIds = Value;\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n CommandFromDateChange(date) {\r\n var filters = self.state.CommandStatusFilters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n CommandStatusFilters: filters\r\n });\r\n\r\n this.props.HoldCommandHistoryDates(date, null);\r\n }\r\n\r\n CommandToDateChange(date) {\r\n var filters = self.state.CommandStatusFilters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({\r\n CommandStatusFilters: filters\r\n });\r\n\r\n this.props.HoldCommandHistoryDates(null, date);\r\n }\r\n\r\n Statuschange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"-Select-\")\r\n filters.CommandStatusId = -1;\r\n else\r\n filters.CommandStatusId = parseInt(Value);\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n CommandTypechange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"-Select-\")\r\n filters.CommandTypeCd = \"-1\";\r\n else\r\n filters.CommandTypeCd = Value;\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n Userchange(event: React.FormEvent) {\r\n var filters = this.state.CommandStatusFilters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"-Select-\")\r\n filters.UserId = -1;\r\n else\r\n filters.UserId = parseInt(Value);\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n dryContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Cancel\": this.drydetailsCancelAction();\r\n break;\r\n }\r\n }\r\n\r\n\r\n closeConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n cancelCommandAction() {\r\n if (self.state.selectedItems.length > 0) {\r\n $('#globalLoader').show();\r\n var commandName = \"Cancel\";\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.selectedItems;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/SubmitCancelForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n $(\"#contextMenuModel .close\").click();\r\n this.ApplyCommandStatusFilter();\r\n });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n drydetailsCancelAction() {\r\n if (self.state.selectedItems.length > 0) {\r\n var reeferData = self.state.selectedItems;\r\n var confirmationMessage = \"Are you sure you want to cancel the command(s)?\"\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.cancelCommandAction.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n }\r\n onSortChanged(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.api.refreshInMemoryRowModel('filter');\r\n params.api.gridOptionsWrapper.gridOptions.api.redrawRows();\r\n }\r\n getContextMenuItems(params: any) {\r\n var isEnableContextMenu = UserRights.checkVisibility('124');\r\n if (isEnableContextMenu == 'show') {\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var reeferid = resortitem.data.ReeferID;\r\n var submitted = resortitem.data.SubmittedOn;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.SubmittedOn === submitted)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.SubmittedOn == selectedrowNode.data.SubmittedOn) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n $(\".context-menu\").show();\r\n $(\"#contextmenu\").show();\r\n Excel.preventDefault();\r\n\r\n $(\".ag-cell\").unbind(\"contextmenu\");\r\n $(\".ag-cell\").bind('contextmenu', function (e) {\r\n $(\"#contextmenu\").show();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var reeferid = resortitem.data.ReeferID;\r\n var submitted = resortitem.data.SubmittedOn;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.SubmittedOn === submitted)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.SubmittedOn == selectedrowNode.data.SubmittedOn) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n var top = e.pageY + 5;\r\n $('#liCommandsRequiresRight>.dropdown-menu').css(\"top\", \"55px\");\r\n var left = e.pageX;\r\n\r\n if (left >= ($(window).width() - 200)) {\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n right: 20 + \"px\",\r\n width: 160 + 'px',\r\n left: $(window).width() - 200 + 'px'\r\n });\r\n\r\n $('.context-menu').find(\"ul.dropdown-menu\").css(\"left\", \"-155px\");\r\n }\r\n else {\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n left: left + \"px\"\r\n });\r\n\r\n $('.context-menu').find(\"ul.dropdown-menu\").css(\"left\", \"155px\");\r\n }\r\n $(\".context-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('contextmenu click', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n\r\n $('.context-menu').bind('contextmenu', function () {\r\n return false;\r\n });\r\n $('.context-menu').on('click', 'li', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n }\r\n\r\n }\r\n\r\n onSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n\r\n var selectedItems = self.state.selectedItems;\r\n var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData\r\n });\r\n if (selectedReeferData.length > 1) {\r\n if (selectedReeferData.length == selectedReeferData.filter(row => row.Status.trim().toUpperCase() == 'AWAITINGPREREQUISITES' || row.Status.trim().toUpperCase() == 'PENDING' || row.Status.trim().toUpperCase() == 'RETRY' || row.Status.trim().toUpperCase() == 'AWAITINGSYNC').length) {\r\n $('#liCancelRequiresRight').removeClass('disabled');\r\n $('#liCancelRequiresRight').addClass('enabled');\r\n }\r\n else {\r\n $('#liCancelRequiresRight').removeClass('enabled');\r\n $('#liCancelRequiresRight').addClass('disabled');\r\n }\r\n }\r\n else {\r\n var dflag = selectedReeferData[0].Status;\r\n if (dflag.trim().toUpperCase() == 'AWAITINGPREREQUISITES' || dflag.trim().toUpperCase() == 'PENDING' || dflag.trim().toUpperCase() == 'RETRY' || dflag.trim().toUpperCase() == 'AWAITINGSYNC') {\r\n $('#liCancelRequiresRight').removeClass('disabled');\r\n $('#liCancelRequiresRight').addClass('enabled');\r\n } else {\r\n $('#liCancelRequiresRight').removeClass('enabled');\r\n $('#liCancelRequiresRight').addClass('disabled');\r\n }\r\n }\r\n }\r\n\r\n ValidateHistoryDates() {\r\n var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = this.state.CommandStatusFilters.FromDate;\r\n var toDttm = this.state.CommandStatusFilters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n ApplyCommandStatusFilter() {\r\n var message = this.ValidateHistoryDates();\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n\r\n $('#globalLoader').show();\r\n this.state.CommandStatusFilters.FromDate = DateFormat(new Date(this.state.CommandStatusFilters.FromDate), 'mm/dd/yyyy HH:MM');\r\n this.state.CommandStatusFilters.ToDate = DateFormat(new Date(this.state.CommandStatusFilters.ToDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(this.state.CommandStatusFilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryCommandStatusDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n });\r\n\r\n //self.state.gridApiParams.paginationGoToFirstPage();\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n ClearCommandStatusFilter() {\r\n var filters = this.state.CommandStatusFilters;\r\n filters.ReeferIds = \"\";\r\n filters.RcdIds = \"\";\r\n filters.UserId = -1;\r\n filters.CommandTypeCd = \"-1\";\r\n filters.CommandStatusId = -1;\r\n var modifiedDttm = this.state.PreferenceDTTM;\r\n var fromDate = moment(new Date(modifiedDttm)).startOf('day').toString();\r\n var toDate = moment(new Date(modifiedDttm)).endOf('day').toString();\r\n filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({\r\n CommandStatusFilters: filters\r\n });\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Dry ID\", field: \"DryID\", cellRenderer: Formatters.stringTypeFormatter, width: 140 },\r\n { headerName: \"Device ID\", field: \"RcdID\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Command\", field: \"Command\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Status time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"StatusDate\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n //{ headerName: \"RFR Pwr\", field: \"ReeferSwitchOn\", cellRenderer: Formatters.reeferPowerSourceConverter, width: 100 },\r\n // { headerName: \"Device Pwr\", field: \"RcdPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceConverter, width: 100 },\r\n { headerName: \"Status\", field: \"Status\", cellRenderer: Formatters.commandLogStatusFormatter, width: 100 },\r\n { headerName: \"Info\", field: \"Info\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Deployment name\", field: \"DeploymentName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Submitted time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"SubmittedOn\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Submitted by\", field: \"SubmittedBy\", cellRenderer: Formatters.stringTypeFormatter, width: 130 },\r\n { headerName: \"Expiration time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"ExpirationTime\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n //{ headerName: \"Origin\", field: \"Origin\", cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n //{ headerName: \"Handler\", field: \"Handler\", cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Value1\", field: \"Value1\", cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Value2\", field: \"Value2\", cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Value3\", field: \"Value3\", cellRenderer: Formatters.stringTypeFormatter, width: 100 },\r\n { headerName: \"Value4\", field: \"Value4\", cellRenderer: Formatters.stringTypeFormatter, width: 100 }\r\n ];\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n //self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.DryIdchange(e)} value={this.state.CommandStatusFilters.ReeferIds} />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.RcdIdchange(e)} value={this.state.CommandStatusFilters.RcdIds} />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\t \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.modelTitle}
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\nclass DryCommandStatusFilters {\r\n ReeferIds: string;\r\n RcdIds: string;\r\n CommandTypeCd: string;\r\n FromDate: string;\r\n ToDate: string;\r\n CommandStatusId?: number;\r\n UserId: number;\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}\r\nclass ForwardCommandParams {\r\n SelectedReefers: server.CommandStatusUI[];\r\n CommandName: string;\r\n}\r\n","// @ts-nocheck\r\n/// \r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as ReeferStatusState from '../../store/ReeferStatus';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\n\r\nimport { DryDetailsHistory } from '../childcomponents/DryDetailsHistory';\r\nimport { DryDetailsCommandStatus } from '../childcomponents/DryDetailsCommandStatus';\r\nimport DetailsMap from '../../actions/DetailsMap';\r\n\r\nimport { RCUtils } from './../../RCUtils';\r\nimport $ from 'jquery';\r\n\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { Comments } from './../sharedcomponents/Comments';\r\nimport DetailFormatters from '../../actions/ReeferDetailFilters';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport moment from 'moment';\r\nimport Formatters from '../../actions/Formatters';\r\nimport DateFormat from 'dateformat';\r\n\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\nvar self;\r\n\r\ninterface DryDetailsState {\r\n dryDetailsData: any;\r\n dryHistoryData: server.DryHistoryUI[];\r\n rcdHistoryData: server.RcdHistoryUI[],\r\n dryCommandsData: server.DryCommandStatusUI[];\r\n dryDetailsSearch: DryDetailsFilter;\r\n DryId: string;\r\n RcdId: string;\r\n preTripCmd: string;\r\n selectedDryData: any[];\r\n modelTitle: string;\r\n popUpHtml: any;\r\n isChangeDeforstInterval: boolean;\r\n isLoading: boolean;\r\n enableTab: boolean;\r\n DataSource: string;\r\n reeferFormatter: server.ReeferFormatter;\r\n preTripData: string;\r\n tabContentHtml: any;\r\n searchInputValue: string;\r\n assetMasterID: number;//WI-23781\r\n isOpenVia: any;\r\n isDevice: boolean;\r\n fromDateHistory: string;\r\n toDateHistory: string;\r\n fromRCDDateHistory: string;\r\n toRCDDateHistory: string;\r\n fromDateCommandHistory: string;\r\n toDateCommandHistory: string;\r\n}\r\n\r\nvar tempFormat;\r\nvar timeZoneCd;\r\nvar self;\r\nvar restricted = false;\r\ntype DryStatusProps =\r\n UserDetailState.UserState\r\n & ReeferStatusState.ReeferSearchState // ... state we've requested from the Redux store \r\n & typeof ReeferStatusState.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\n\r\ninterface AssetState {\r\n dryDetails: server.DryDetailsUI;\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n PTReport: string;\r\n assetMasterID: number;//WI-23781\r\n isOpenVia: any;\r\n isDevice: boolean;\r\n geoZonesEnabled: boolean;\r\n geoZonesImage: boolean;\r\n}\r\n\r\nexport class CurrentStatus extends React.Component{\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n dryDetails: this.props.assetData, modelTitleReport: '', popUpHtmlReport: '', PTReport: this.props.preTripReport,\r\n assetMasterID: this.props.AssetMasterID, isOpenVia: this.props.isOpenVia, isDevice: this.props.isDevice,\r\n geoZonesEnabled: true, geoZonesImage: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsForDrys('159');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n DetailsMap.InitDetailsMap(\"dryStatusMap\");\r\n setTimeout(() => {\r\n DetailsMap.LoadDetailsMap(this.state.dryDetails.Latitude, this.state.dryDetails.Longitude);\r\n }, 1000);\r\n this.formatGPSLatLong(this.state.dryDetails);\r\n this.updateDryCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n\r\n if (this.state.isOpenVia === \"CurrentDetails\") {\r\n if ($(\"#collapseOne\").hasClass(\"show\")) {\r\n $('#collapseOne').removeClass('show');\r\n }\r\n if (!$(\"#collapseTwo\").hasClass(\"show\")) {\r\n $('#collapseTwo').addClass('show');\r\n }\r\n if ($(\"#collapseThree\").hasClass(\"show\")) {\r\n $('#collapseThree').removeClass('show');\r\n }\r\n }\r\n else if (this.state.isOpenVia === \"Comments\") {\r\n if ($(\"#collapseOne\").hasClass(\"show\")) {\r\n $('#collapseOne').removeClass('show');\r\n }\r\n if ($(\"#collapseTwo\").hasClass(\"show\")) {\r\n $('#collapseTwo').removeClass('show');\r\n }\r\n if (!$(\"#collapseThree\").hasClass(\"show\")) {\r\n $('#collapseThree').addClass('show');\r\n }\r\n\r\n } else if (this.state.isOpenVia === \"RcdStatus\") {\r\n if (!$(\"#collapseOne\").hasClass(\"show\")) {\r\n $('#collapseOne').addClass('show');\r\n }\r\n if ($(\"#collapseTwo\").hasClass(\"show\")) {\r\n $('#collapseTwo').removeClass('show');\r\n }\r\n if ($(\"#collapseThree\").hasClass(\"show\")) {\r\n $('#collapseThree').removeClass('show');\r\n }\r\n }\r\n else if (this.state.isOpenVia === null || this.state.isOpenVia === undefined) {\r\n if (!$(\"#collapseOne\").hasClass(\"show\")) {\r\n $('#collapseOne').addClass('show');\r\n }\r\n if ($(\"#collapseTwo\").hasClass(\"show\")) {\r\n $('#collapseTwo').removeClass('show');\r\n }\r\n if ($(\"#collapseThree\").hasClass(\"show\")) {\r\n $('#collapseThree').removeClass('show');\r\n }\r\n }\r\n\r\n this.showTabPane(this.props.isDryOrRCD);\r\n }\r\n }\r\n\r\n showTabPane(isDryOrRCD: string) {\r\n if (isDryOrRCD != null && isDryOrRCD != undefined && isDryOrRCD != '') {\r\n if (isDryOrRCD == \"Dry\") {\r\n if ($('#detailsPane').attr('aria-expanded') == \"false\")\r\n $('#detailsPane').click();\r\n }\r\n }\r\n }\r\n\r\n formatGPSLatLong(params: any) {\r\n $(\"#gpsLongitude\").removeClass('gpslatlong');\r\n $(\"#gpsLatitude\").removeClass('gpslatlong');\r\n if (params.Latitude != 0 && params.Longitude != 0 && (params.GPSLockState == null || params.GPSLockState == '' || params.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n if (params.Longitude != null)\r\n $(\"#gpsLongitude\").addClass('gpslatlong');\r\n\r\n if (params.Latitude != null)\r\n $(\"#gpsLatitude\").addClass('gpslatlong');\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.assetData != null && nextProps.assetData != \"\") {\r\n this.setState({\r\n dryDetails: nextProps.assetData,\r\n assetMasterID: nextProps.AssetMasterID,//WI-23781\r\n isDevice: nextProps.isDevice\r\n });\r\n\r\n if (nextProps.isDevice && nextProps.isOpenVia != \"Comments\") {\r\n if (!$(\"#collapseOne\").hasClass(\"show\")) {\r\n $('#collapseOne').addClass('show');\r\n }\r\n if ($(\"#collapseTwo\").hasClass(\"show\")) {\r\n $('#collapseTwo').removeClass('show');\r\n }\r\n if ($(\"#collapseThree\").hasClass(\"show\")) {\r\n $('#collapseThree').removeClass('show');\r\n }\r\n }\r\n else if (!nextProps.isDevice && nextProps.isOpenVia != \"Comments\") {\r\n if ($(\"#collapseOne\").hasClass(\"show\")) {\r\n $('#collapseOne').removeClass('show');\r\n }\r\n if (!$(\"#collapseTwo\").hasClass(\"show\")) {\r\n $('#collapseTwo').addClass('show');\r\n }\r\n if ($(\"#collapseThree\").hasClass(\"show\")) {\r\n $('#collapseThree').removeClass('show');\r\n }\r\n }\r\n else if (this.state.isOpenVia === null || this.state.isOpenVia === undefined) {\r\n if (!$(\"#collapseOne\").hasClass(\"show\")) {\r\n $('#collapseOne').addClass('show');\r\n }\r\n if ($(\"#collapseTwo\").hasClass(\"show\")) {\r\n $('#collapseTwo').removeClass('show');\r\n }\r\n if ($(\"#collapseThree\").hasClass(\"show\")) {\r\n $('#collapseThree').removeClass('show');\r\n }\r\n }\r\n\r\n this.showTabPane(nextProps.isDryOrRCD);\r\n DetailsMap.LoadDetailsMap(nextProps.assetData.Latitude, nextProps.assetData.Longitude);\r\n this.formatGPSLatLong(nextProps.assetData);\r\n }\r\n\r\n if (nextProps.preTripReport != null && nextProps.preTripReport != \"\") {\r\n this.setState({\r\n PTReport: nextProps.preTripReport\r\n });\r\n }\r\n else {\r\n this.setState({ PTReport: null });\r\n }\r\n }\r\n\r\n //componentWillUnmount() {\r\n // window.removeEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n //}\r\n\r\n updateDryCommandsDimensions() {\r\n $(\".dynamicHeight\").css('min-height', $(window).height() - 190);\r\n $(\".dynamicHeight\").css('max-height', $(window).height() - 190);\r\n $(\"#dryStatusMap\").css('min-height', $(window).height() - 210);\r\n $(\"#dryStatusMap\").css('max-height', $(window).height() - 210);\r\n\r\n }\r\n\r\n showGeoZonesLayer() {\r\n this.setState({ geoZonesEnabled: false });\r\n DetailsMap.BindGeoZonesLayer(this.state.dryDetails.Latitude, this.state.dryDetails.Longitude, this.state.dryDetails.PositionAccuracy);\r\n }\r\n\r\n hideGeoZonesLayer() {\r\n this.setState({ geoZonesEnabled: true });\r\n DetailsMap.DisposeGeozonesLayer();\r\n }\r\n\r\n static UpdateFenceImage(src:any) {\r\n if (src == \"A\")\r\n self.setState({ geoZonesImage: false });\r\n else\r\n self.setState({ geoZonesImage: true });\r\n }\r\n\r\n\r\n public render() {\r\n return <>\r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.geoZonesEnabled == true ? \r\n : \r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n}\r\n\r\nclass DryDetails extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n self = this;\r\n var filterSet = new DryDetailsFilter();\r\n var dryId = null;\r\n var rcdId = null;\r\n var isOpenVia = null;\r\n var isDevice = false;\r\n if (this.props.location.state != null && this.props.location.state != undefined) {\r\n var params = this.props.location.state.dryData;\r\n var dataSource = this.props.location.state.source;\r\n isOpenVia = this.props.location.state.isOpenVia;\r\n\r\n if (this.props.location.state.isDevice != null && this.props.location.state.isDevice != undefined)\r\n isDevice = this.props.location.state.isDevice;\r\n else\r\n isDevice = false;\r\n\r\n if (params != null && params != undefined) {\r\n if (dataSource == \"Device\")\r\n rcdId = params.RCDID;\r\n else {\r\n dryId = params.AssetNumber;\r\n rcdId = params.RCDID;\r\n }\r\n }\r\n }\r\n\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm)\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm), 'mm/dd/yyyy');\r\n\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n\r\n var fromCommandDate = moment(new Date(toDate)).startOf('day').toString();\r\n var toCommandDate = moment(new Date(toDate)).endOf('day').toString();\r\n\r\n\r\n this.state = {\r\n dryDetailsData: new DryDetailsUI(), dryHistoryData: [], rcdHistoryData: [], dryCommandsData: [], dryDetailsSearch: filterSet, DryId: dryId, RcdId: rcdId, preTripCmd: null, selectedDryData: [], modelTitle: '', popUpHtml: '', isChangeDeforstInterval: false, isLoading: true, enableTab: false, DataSource: dataSource, reeferFormatter: null, preTripData: null, tabContentHtml: '', searchInputValue: '', assetMasterID: 0, isOpenVia: isOpenVia\r\n , isDevice: isDevice\r\n , fromDateHistory: DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM')\r\n , toDateHistory: DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM')\r\n , fromDateCommandHistory: DateFormat(new Date(fromCommandDate), 'mm/dd/yyyy HH:MM')\r\n , toDateCommandHistory: DateFormat(new Date(toCommandDate), 'mm/dd/yyyy HH:MM')\r\n , fromRCDDateHistory: DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM')\r\n , toRCDDateHistory: DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM')\r\n };\r\n this.GetDryDetailsSearchData();\r\n tempFormat = DetailFormatters.GetTempColumnFormatter();\r\n timeZoneCd = DetailFormatters.GetTimeZoneFormatter();\r\n restricted = false;\r\n }\r\n\r\n updateDryCommandsDimensions() {\r\n $(\".dynamicHeight\").css('min-height', $(window).height() - 158);\r\n $(\".dynamicHeight\").css('max-height', $(window).height() - 158);\r\n }\r\n\r\n GetSelectedDryData() {\r\n $('#globalLoader').show();\r\n var drySearchFilters: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedReefer: this.state.DryId, SelectedGeofence: '', SelectedInterval: '', SelectedGeofenceInside: '', SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n var childRequest = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryStatusDataSP', { method: 'POST', body: JSON.stringify(drySearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(childRequest)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(childData => {\r\n $('#globalLoader').hide();\r\n if (childData != null && childData != undefined && childData.length > 0) {\r\n var dryData = [];\r\n dryData.push(childData[0]);\r\n this.setState({\r\n selectedDryData: dryData,\r\n isLoading: false\r\n }, () => this.ShowFirstTab());\r\n }\r\n else {\r\n this.ShowFirstTab();\r\n }\r\n });\r\n }\r\n\r\n ShowFirstTab() {\r\n $('.nav-tabs a:first').click();\r\n this.setState({ tabContentHtml: this.renderTabContentHtml(1) });\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n this.ShowFirstTab();\r\n if (this.state.DryId == null && this.state.RcdId == null)\r\n this.setState({ isLoading: false });\r\n else {\r\n if (this.state.DryId != null && this.state.DryId != undefined && this.state.DryId != '' && this.state.DataSource == \"Dry\") {\r\n this.setState({ searchInputValue: this.state.DryId });\r\n }\r\n else if (this.state.RcdId != null && this.state.RcdId != undefined && this.state.RcdId != '' && this.state.DataSource == \"Device\") {\r\n this.setState({ searchInputValue: this.state.RcdId });\r\n }\r\n else {\r\n if (this.state.DryId != null && this.state.DryId != undefined && this.state.DryId != '') {\r\n this.setState({ searchInputValue: this.state.DryId });\r\n }\r\n else if (this.state.RcdId != null && this.state.RcdId != undefined && this.state.RcdId != '') {\r\n this.setState({ searchInputValue: this.state.RcdId });\r\n }\r\n }\r\n }\r\n\r\n this.updateDryCommandsDimensions();\r\n window.addEventListener(\"resize\", this.updateDryCommandsDimensions.bind(this));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n $('#Command').hide();\r\n //$('.nav-tabs a').on('shown.bs.tab', function (event) {\r\n $(\".nav-tabs a\").click(function (event) {\r\n var targetId = event.target.id;\r\n if (targetId == 'lnkCurrentStatus') {\r\n self.renderTabContent(1);\r\n }\r\n else if (targetId == 'lnkHistory') {\r\n self.renderTabContent(2);\r\n }\r\n else {\r\n self.renderTabContent(3);\r\n }\r\n });\r\n }\r\n\r\n renderTabContent(tabNumber: number) {\r\n this.setState({ tabContentHtml: this.renderTabContentHtml(tabNumber) });\r\n }\r\n\r\n renderTabContentHtml(tabNumber: number) {\r\n if (tabNumber == 1) {\r\n return
    \r\n \r\n
    ;\r\n }\r\n else if (tabNumber == 2) {\r\n if (this.state.DryId != null && this.state.DryId != \"\") {\r\n return
    \r\n
    \r\n
    ;\r\n }\r\n else {\r\n return
    \r\n
    \r\n
    ;\r\n }\r\n }\r\n else {\r\n return
    \r\n
    \r\n
    ;\r\n }\r\n }\r\n\r\n HoldHistoryDates(fromDate: Date, toDate: Date) {\r\n if (fromDate === null && toDate != null) {\r\n this.setState({ toDateHistory: toDate.toString() });\r\n }\r\n if (fromDate != null && toDate === null) {\r\n this.setState({ fromDateHistory: fromDate.toString() });\r\n }\r\n }\r\n HoldRCDHistoryDates(fromDate: Date, toDate: Date) {\r\n if (fromDate === null && toDate != null) {\r\n this.setState({ toRCDDateHistory: toDate.toString() });\r\n }\r\n if (fromDate != null && toDate === null) {\r\n this.setState({ fromRCDDateHistory: fromDate.toString() });\r\n }\r\n }\r\n\r\n HoldCommandHistoryDates(fromDate: Date, toDate: Date) {\r\n if (fromDate === null && toDate != null) {\r\n this.setState({ toDateCommandHistory: toDate.toString() });\r\n }\r\n if (fromDate != null && toDate === null) {\r\n this.setState({ fromDateCommandHistory: fromDate.toString() });\r\n }\r\n }\r\n\r\n HoldHistoryData(reeferFormatter: server.ReeferFormatter, dryHistoryData: server.DryHistoryUI[],\r\n rcdHistoryData: server.RcdHistoryUI[]) {\r\n\r\n this.setState({\r\n dryHistoryData: dryHistoryData,\r\n reeferFormatter: reeferFormatter,\r\n rcdHistoryData: rcdHistoryData\r\n });\r\n }\r\n\r\n HoldCommandHistoryData(dryCommandsData: server.DryCommandStatusUI[]) {\r\n\r\n this.setState({\r\n dryCommandsData: dryCommandsData\r\n });\r\n }\r\n\r\n Drychange(event: React.FormEvent) {\r\n var Value: string = event.currentTarget.value;\r\n var inputValue = Value;\r\n\r\n self.setState({\r\n searchInputValue: inputValue\r\n });\r\n }\r\n\r\n GetDryDetailsSearchData() {\r\n var filterSet = new DryDetailsFilter();\r\n //if (this.state.DataSource == null || this.state.DataSource == undefined) {\r\n // if (this.state.DryId == null) {\r\n // filterSet.DryId = this.state.DryId;\r\n // filterSet.RcdId = this.state.RcdId;\r\n // }\r\n // else if (this.state.DryId.length <= 11) {\r\n // filterSet.DryId = this.state.DryId;\r\n // }\r\n // else if (this.state.DryId.length > 11) {\r\n // filterSet.RcdId = this.state.RcdId;\r\n // }\r\n //}\r\n //else {\r\n // filterSet.DryId = this.state.DryId;\r\n // filterSet.RcdId = this.state.RcdId;\r\n //}\r\n\r\n filterSet.DryId = this.state.DryId;\r\n filterSet.RcdId = this.state.RcdId;\r\n\r\n if (this.state.DryId != null || this.state.RcdId != null) {\r\n $('#globalLoader').show();\r\n this.setState({ dryDetailsSearch: filterSet });\r\n var filterParams = JSON.stringify(filterSet);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/DryDetailsDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n // if (data.DryDetailsUI.RCDID != null) {\r\n if ((data.DryDetailsUI.IsValid3P == true && data.DryDetailsUI.AggRestricted == false) || (data.DryDetailsUI.IsValid3P == true && data.DryDetailsUI.AggRestricted == true && data.DryDetailsUI.AggApplied == true)) {\r\n restricted = false;\r\n this.setState({\r\n dryDetailsData: data.DryDetailsUI,\r\n dryHistoryData: data.DryHistoryUI,\r\n dryCommandsData: data.DryCommandStatus,\r\n rcdHistoryData: data.RcdHistory,\r\n assetMasterID: data.AssetMasterID//WI-23781\r\n });\r\n }\r\n else {\r\n restricted = true;\r\n var dryDetails = new DryDetailsUI();\r\n dryDetails.AssetMasterID = data.DryDetailsUI.AssetMasterID;\r\n dryDetails.AssetNumber = data.DryDetailsUI.AssetNumber;\r\n dryDetails.RCDMasterID = data.DryDetailsUI.RCDMasterID;\r\n dryDetails.RCDID = data.DryDetailsUI.RCDID;\r\n this.setState({\r\n dryDetailsData: dryDetails,\r\n dryHistoryData: data.DryHistoryUI,\r\n dryCommandsData: data.DryCommandStatus,\r\n rcdHistoryData: data.RcdHistory,\r\n assetMasterID: data.AssetMasterID//WI-23781\r\n });\r\n //PopupWindow.showErrorMessage(\"Error\", \"Current Details not avaialble\");\r\n }\r\n\r\n if (data.DryDetailsUI.AssetNumber != null) {\r\n this.GetSelectedDryData();\r\n }\r\n else {\r\n this.ShowFirstTab();\r\n }\r\n //}\r\n //else {\r\n // // restricted = false;\r\n // // this.ClearDryDetails();\r\n // // this.setState({ DryId: this.state.dryDetailsData.AssetNumber, isLoading: false }, () => this.ShowFirstTab());\r\n // // PopupWindow.showErrorMessage(\"Error\", \"Please enter valid Dry/Device ID\");\r\n // return;\r\n //}\r\n });\r\n }\r\n }\r\n\r\n ClearDryDetails() {\r\n this.setState({\r\n dryDetailsData: new DryDetailsUI(),\r\n dryHistoryData: [],\r\n dryCommandsData: [],\r\n rcdHistoryData: [],\r\n preTripData: null,\r\n assetMasterID: 0\r\n });\r\n }\r\n\r\n ApplySearch() {\r\n this.setState({ isLoading: true, enableTab: false });\r\n self.GetDryDetailsSearchData();\r\n }\r\n\r\n ApplyDryDetailsSearch() {\r\n if (this.state.searchInputValue != null && this.state.searchInputValue != undefined && this.state.searchInputValue != '') {\r\n $('#globalLoader').show();\r\n var validateFilters: server.InputParamsDetails = { Input: this.state.searchInputValue };\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ValidateDryAssetRCDInputType', { method: 'POST', body: JSON.stringify(validateFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.InputType == \"Asset\") {\r\n this.setState({ DryId: this.state.searchInputValue, RcdId: null, isDevice: false, isOpenVia: null }, () => this.ApplySearch())\r\n }\r\n else if (data.InputType == \"RCD\") {\r\n this.setState({ RcdId: this.state.searchInputValue, DryId: null, isDevice: true, isOpenVia: null }, () => this.ApplySearch())\r\n }\r\n else {\r\n this.ClearDryDetails();\r\n this.setState({\r\n DryId: this.state.dryDetailsData.AssetNumber, isLoading: false, assetMasterID: 0\r\n , isDevice: false, isOpenVia: null\r\n }, () => this.ShowFirstTab());\r\n $('#globalLoader').hide();\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter valid Dry/Device ID\");\r\n }\r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter Dry/Device ID\"); return;\r\n }\r\n }\r\n\r\n static refreshDryDetailsData() {\r\n self.setState({ isLoading: true, enableTab: true });\r\n self.GetDryDetailsSearchData();\r\n }\r\n\r\n\r\n\r\n public render() {\r\n var enableCommands = '';\r\n if (this.state.dryDetailsData.AssetNumber == \"\" || this.state.dryDetailsData.AssetNumber == null)\r\n enableCommands = 'disabled';\r\n else\r\n enableCommands = '';\r\n\r\n return
    \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n window.location.search != undefined && window.location.search != null && window.location.href != undefined &&\r\n window.location.href != null && window.location.href.includes('home')\r\n ?\r\n
    \r\n \r\n \r\n \r\n Current Details\r\n
    \r\n\r\n :\r\n window.location.search != undefined && window.location.search != null && window.location.href != undefined &&\r\n window.location.href != null && window.location.href.includes('drystatus')\r\n\r\n ?\r\n
    \r\n \r\n \r\n \r\n Current Details\r\n
    \r\n :\r\n
    \r\n \r\n \r\n \r\n Current Details\r\n
    \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n this.Drychange(e)} value={this.state.searchInputValue} />\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.modelTitle}
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n\r\n
    • \r\n
    • \r\n \r\n \r\n
    • \r\n {/*\r\n
    • \r\n \r\n \r\n
    • \r\n */}\r\n
    \r\n
    \r\n {this.state.tabContentHtml}\r\n
    \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ ...state.userDetails, ...state.reeferStatus }), // Selects which state properties are merged into the component's props\r\n ReeferStatusState.actionCreators,\r\n)(DryDetails as any);\r\n\r\nclass DryDetailsFilter {\r\n DryId: string;\r\n RcdId: string;\r\n}\r\nclass DryDetailsUI {\r\n DCCurrentConditionId?: number;\r\n EventDTTM?: Date;\r\n StrEventDTTM: string;\r\n Latitude?: number;\r\n Longitude?: number;\r\n EventCD: string;\r\n IsAlarm?: boolean;\r\n CreatedDTTM?: Date;\r\n RCDID: string;\r\n RCDMasterID?: number;\r\n FirmwareVersion: string;\r\n EventDescription: string;\r\n AssetNumber: string;\r\n Heading: string;\r\n Speed?: number;\r\n PowerUpMode: string;\r\n GPSHDOP?: number;\r\n GPSSatelliteCount?: number;\r\n GPSLockState: string;\r\n GeofenceDefinitionRevision?: number;\r\n GPSDTTM?: Date;\r\n StrGPSDTTM: string;\r\n IgnitionOn?: boolean;\r\n BattVoltage?: number;\r\n LSCallFlag: string;\r\n ExtBattVoltage?: number;\r\n RSSI?: number;\r\n ManufacturedDate?: Date;\r\n FenceID: string;\r\n FenceName: string;\r\n City: string;\r\n State: string;\r\n RegionGeofenceName: string;\r\n BackendGeofenceName: string;\r\n HasAlarm?: boolean;\r\n Country: string;\r\n ZipCode: string;\r\n CustomerName: string;\r\n GPSCoords: string;\r\n OEMTypeCD: string;\r\n ModelNumber: string;\r\n Profile: string;\r\n IdPlate: string;\r\n Assigned: string;\r\n EngineType: string;\r\n CountryName: string;\r\n MNC: string;\r\n TowerLocalizationAreaCode: string;\r\n TowerBaseStationID: string;\r\n RCDReportingInterval: string;\r\n MSISDN: string;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n EUI: string;\r\n DeviceConfig?: boolean;\r\n DeviceType: string;\r\n CommentExistsGenset: string;\r\n CCSeverityLevelGenset: string;\r\n VesselCd: string;\r\n GPSLastLock?: number;\r\n FenceNameID: string;\r\n RegionGeofenceNameID: string;\r\n BackendGeofenceNameID: string;\r\n RCDBootloaderVersion: string;\r\n RCDMeshFirmwareVersion: string;\r\n AssetMasterID?: number;\r\n Alerts: string;\r\n DeviceDataTime?: Date;\r\n PositionAccuracy?: number;\r\n BatteryPct: number;\r\n}\r\n\r\n","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Workbook from 'react-excel-workbook';\r\nimport Formatters from '../../actions/Formatters';\r\nimport reeferFormatters from '../../actions/ReeferFormatter';\r\nvar Config: any = require('../../Config.json');\r\nvar optionId;\r\nvar Excel = Exceljs.default;\r\n\r\n//var exportCols: any[];\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcel: any;\r\n\r\n\r\n exportColumns: any[];\r\n targetKeys: any[];\r\n colDefs: any[];\r\n isUserPreference: boolean;\r\n selectedOption: any;\r\n isIncludeRowGroup: boolean;\r\n gridApiParams: any;\r\n onlyselected: boolean;\r\n isIncludeColumnGroup: boolean;\r\n SheetName: string;\r\n sensorData: any[];\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar columnsToBeExported: any;\r\nvar self;\r\nvar ProcessfirstCellOnlyRowIndex = -1;\r\n\r\nexport class ExportToExcelConfirmationWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', modelDialogHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false, excelGridData: this.props.gridData,\r\n formName: this.props.formName, fileTitle: this.GetExportFileName(), sheetInfo: '', renderGridPreferenceHtml: '', renderExportToExcel: '', SheetName: ''\r\n\r\n , exportColumns: [], targetKeys: [], colDefs: this.props.colDefs\r\n , isUserPreference: false, selectedOption: '',\r\n isIncludeRowGroup: this.props.gridApiParams.gridOptionsWrapper == null ? false : this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, //RCNG-207\r\n gridApiParams: this.props.gridApiParams,\r\n onlyselected: this.props.onlyselected != null && this.props.onlyselected != undefined ? this.props.onlyselected : false,\r\n isIncludeColumnGroup: true, sensorData: this.props.sensorData\r\n };\r\n\r\n this.handleOptionChange = this.handleOptionChange.bind(this);\r\n this.onChangeIncludeRowGroup = this.onChangeIncludeRowGroup.bind(this);\r\n //this.getOtherColumnCellValue = this.getOtherColumnCellValue.bind(this);\r\n //this.myRowGroupCallback = this.myRowGroupCallback.bind(this);\r\n this.getGroupDisplayValueName = this.getGroupDisplayValueName.bind(this);\r\n self = this;\r\n\r\n }\r\n\r\n static clearOptionFilters() {\r\n var ele = document.getElementsByName(\"options\");\r\n for (var i = 0; i < ele.length; i++) {\r\n var elementOfi = document.getElementsByName(\"options\")[i] as HTMLInputElement;\r\n elementOfi.checked = false;\r\n\r\n }\r\n\r\n //$('#option1:checked').removeAttr('checked');\r\n //$('#option2:checked').removeAttr('checked');\r\n }\r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.functionId != 'undefined' && nextProps.functionId != undefined && nextProps.functionId != 0) {\r\n this.IsUserPreference(nextProps.dashboardPreferenceId, nextProps.widgetId);\r\n }\r\n this.setState({\r\n isIncludeRowGroup: nextProps.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false,\r\n gridApiParams: nextProps.gridApiParams,\r\n excelGridData: nextProps.gridData,\r\n onlyselected: nextProps.onlyselected != null && nextProps.onlyselected != undefined ? nextProps.onlyselected : false,\r\n isIncludeColumnGroup: nextProps.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false,\r\n sensorData: nextProps.sensorData\r\n });\r\n }\r\n\r\n IsUserPreference(dashboardPreferenceId: any, widgetId: any) {\r\n if (dashboardPreferenceId != 'undefined' && dashboardPreferenceId != undefined && dashboardPreferenceId != 0) {\r\n var preferenceParams: any = { WidgetId : widgetId, DashboardPreferenceId: dashboardPreferenceId };\r\n var url = Config.ApiBaseUrl + '/api/User/IsUserPreference';//this.props.functionId;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferenceParams), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json'} });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data === false) {\r\n //optionId = 1;\r\n this.setState({ isUserPreference: false, selectedOption: 'AllColumns' });\r\n }\r\n else {\r\n //optionId = 2;\r\n this.setState({ isUserPreference: true, selectedOption: 'SelectedColumns' });\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.IsUserPreference(this.props.dashboardPreferenceId, this.props.widgetId)\r\n this.renderSheets();\r\n }\r\n yes() {\r\n\r\n if (this.Validation()) {\r\n\r\n if (this.state.selectedOption === 'SelectedColumns') {\r\n optionId = 2;\r\n }\r\n else if (this.state.selectedOption === 'AllColumns') {\r\n optionId = 1;\r\n }\r\n\r\n\r\n if (optionId == 2) {\r\n var dbPreID: any = sessionStorage.getItem('DashboardPreferenceId'); //RCNG 5353 Fix\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerPreferenceData?FunctionId=' + this.props.functionId + '&DashboardPreferenceId=' + dbPreID;\r\n var request = RCUtils.FetchRequest(url, {\r\n method: 'GET',\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }\r\n });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var columnNames = null;\r\n\r\n var gridPreferencesData: any = null;\r\n if (data != null && data.dashboardLayoutPreferences != null && data.dashboardLayoutPreferences.DashboardWidgetsSearch != null)\r\n gridPreferencesData= data.dashboardLayoutPreferences.DashboardWidgetsSearch.filter(x => x.DashboardWidgetId == this.props.widgetId);\r\n\r\n if (gridPreferencesData != null && gridPreferencesData.length > 0) {\r\n var preferenceData = JSON.parse(gridPreferencesData[0].SearchData);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== customerSelectedColumns.indexOf(value));\r\n }\r\n //else\r\n // columnNames = preferenceData.SelectedColumnValues;\r\n else {\r\n if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.CustomerAttributes).concat(data.DeviceSensors);\r\n //columnNames = preferenceData.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== defaultCustomerColumns.indexOf(value));\r\n }\r\n else\r\n columnNames = preferenceData.SelectedColumnValues;\r\n }\r\n //this.ExportToExcel(columnNames, optionId); \r\n //columnsToBeExported = preferenceData.SelectedColumnValues;\r\n columnsToBeExported = columnNames;\r\n\r\n if (self.state.onlyselected || this.state.onlyselected) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false, columnKeys: columnsToBeExported, onlySelected: true,\r\n processCellCallback: this.myCellCallback, skipGroups: true,\r\n processHeaderCallback: this.myHeaderCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else if (this.state.isIncludeRowGroup && this.state.isIncludeColumnGroup) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: true,// columnKeys: columnsToBeExported,\r\n allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else if (this.state.isIncludeRowGroup && !this.state.isIncludeColumnGroup) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false, //columnKeys: columnsToBeExported,\r\n allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback,\r\n processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else {\r\n\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel({\r\n columnGroups: false, skipGroups: true,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n columnKeys: columnsToBeExported,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n\r\n if (this.state.isDownload) {\r\n this.showMessageAndClosePopup();\r\n }\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Preference setting found.\");\r\n }\r\n });\r\n\r\n }\r\n else if (optionId == 1) {\r\n\r\n var customerId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n var url = Config.ApiBaseUrl + '/api/User/CustomerPreferenceAttachment';\r\n var preferencedata = {\r\n CustomerId: JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId,\r\n FunctionId: this.props.functionId,\r\n PreferenceData: null\r\n }\r\n var request = RCUtils.FetchRequest(url, {\r\n method: 'POST',\r\n body: JSON.stringify(preferencedata),\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }\r\n });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null || data.DefaultPreferenceData != null) {\r\n //var preferenceData = JSON.parse(data.PreferenceData);\r\n //this.setState({\r\n // exportColumns: preferenceData.SelectedColumnValues,\r\n // targetKeys: preferenceData.SelectedColumnIds\r\n //});\r\n\r\n if (data.PreferenceData != null) {\r\n var customerPreferenceData = JSON.parse(data.PreferenceData);\r\n var customerSelectedColumns = customerPreferenceData.SelectedColumnValues;\r\n columnsToBeExported = customerSelectedColumns;\r\n }\r\n //else\r\n // columnNames = preferenceData.SelectedColumnValues;\r\n else if (data.DefaultPreferenceData != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultPreferenceData);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.CustomerAttributes).concat(data.DeviceSensors);\r\n columnsToBeExported = defaultCustomerColumns;\r\n }\r\n\r\n\r\n if (this.state.onlyselected) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false, columnKeys: columnsToBeExported, onlySelected: true,\r\n processCellCallback: this.myCellCallback, skipGroups: true,\r\n processHeaderCallback: this.myHeaderCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else if (this.state.isIncludeRowGroup && this.state.isIncludeColumnGroup) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: true, allColumns: true,// columnKeys: columnsToBeExported,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else if (this.state.isIncludeRowGroup && !this.state.isIncludeColumnGroup) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false, allColumns: true, //columnKeys: columnsToBeExported,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel({\r\n columnGroups: false,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n columnKeys: columnsToBeExported, skipGroups: true,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n\r\n if (this.state.isDownload) {\r\n this.showMessageAndClosePopup();\r\n }\r\n }\r\n else {\r\n\r\n //All columns grid level\r\n //this.ExportToExcel(null,0);\r\n columnsToBeExported = null;\r\n //this.setState({ isDownload: true },\r\n // () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(this.getParams())\r\n //);\r\n if (this.state.onlyselected) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false, allColumns: true, onlySelected: true,\r\n processCellCallback: this.myCellCallback, skipGroups: true,\r\n processHeaderCallback: this.myHeaderCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else if (this.state.isIncludeRowGroup && this.state.isIncludeColumnGroup) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: true, allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else if (this.state.isIncludeRowGroup && !this.state.isIncludeColumnGroup) {\r\n this.setState({ isDownload: true },\r\n () => this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel(\r\n {\r\n columnGroups: false, allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n })\r\n );\r\n }\r\n else {\r\n this.setState({ isDownload: true },\r\n () => {\r\n var IsGroupsExist = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false;\r\n if (IsGroupsExist) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel({\r\n columnGroups: false,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n allColumns: true, skipGroups: true,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n });\r\n } else {\r\n var allColumns = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n for (var i = allColumns.length - 1; i >= 0; i--) {\r\n if (allColumns[i].colDef.headerName === 'Group') {\r\n allColumns.splice(i, 1);\r\n }\r\n }\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.exportDataAsExcel({\r\n columnGroups: true,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n columnKeys: allColumns,\r\n skipGroups: true,\r\n fileName: this.getFileName(this.GetExportFileName()),\r\n sheetName: this.getFileName(this.GetExportFileName()),\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n if (this.state.isDownload) {\r\n this.showMessageAndClosePopup();\r\n }\r\n }\r\n });\r\n\r\n //All columns grid level\r\n //this.ExportToExcel(null);\r\n }\r\n\r\n }\r\n }\r\n\r\n no() {\r\n this.props.closeModelDialog();\r\n }\r\n\r\n closePopUp() {\r\n $(\"#confirmPopUpModel\").hide();\r\n }\r\n\r\n SelectedOption(value) {\r\n\r\n if (value == 'SelectedColumns') {\r\n optionId = 2;\r\n }\r\n else if (value == 'AllDefaultColumns') {\r\n optionId = 1;\r\n }\r\n }\r\n handleOptionChange(e) {\r\n this.setState({\r\n selectedOption: e.target.value\r\n });\r\n }\r\n\r\n onChangeIncludeRowGroup(e) {\r\n this.setState({\r\n isIncludeRowGroup: !this.state.isIncludeRowGroup,\r\n isIncludeColumnGroup: !self.state.isIncludeRowGroup\r\n });\r\n }\r\n onChangeIncludeColumnGroup(e) {\r\n\r\n self.setState({\r\n isIncludeColumnGroup: !self.state.isIncludeColumnGroup,\r\n });\r\n }\r\n Validation() {\r\n\r\n var isOption1 = $('#option1:checked').val() ? true : false;\r\n var isÒption2 = $('#option2:checked').val() ? true : false;\r\n\r\n if (!isOption1 && !isÒption2) {\r\n\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select the Export Mode\");\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n myHeaderCallback(params) {\r\n\r\n if (params != undefined && params != null) {\r\n\r\n var fieldName = params.column.getColDef().field;\r\n var fieldHeaderName = params.column.getColDef().headerName;\r\n \r\n switch (fieldName) {\r\n \r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DLEventDTTM': case 'DoorEventDtm': case 'Door1EventDttm':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n {\r\n return Formatters.TimeZoneFormatter(fieldHeaderName);\r\n }\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2': case 'DeviceTemp': case 'InsideTemp':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp': case 'TemperatureUnit':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp'://RCNG-1818\r\n\r\n {\r\n return Formatters.TemperatureHeaderFormatter(fieldHeaderName);\r\n }\r\n case 'Door1BattPct': case 'BatteryPct': case 'ReeferBatteryPct':\r\n return Formatters.DoorBattPctHeaderFormatter(fieldHeaderName);\r\n default:\r\n return params.column.getColDef().headerName;\r\n }\r\n }\r\n //return params.column.getColDef().headerName.toUpperCase();\r\n }\r\n\r\n DoorBattPctHeaderCallback(params) {\r\n if (params != undefined && params != null) {\r\n\r\n var fieldName = params.column.getColDef().field;\r\n var fieldHeaderName = params.column.getColDef().headerName;\r\n\r\n switch (fieldName) {\r\n case 'Door1BattPct': case 'BatteryPct': case 'ReeferBatteryPct':\r\n return Formatters.DoorBattPctHeaderFormatter(fieldHeaderName);\r\n default:\r\n return params.column.getColDef().headerName;\r\n }\r\n }\r\n //return params.column.getColDef().headerName.toUpperCase();\r\n }\r\n getGroupDisplayValueName(params) {\r\n\r\n if (params != undefined && params != null) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && (fieldName === 'BatteryVoltage' || fieldName === 'ExtBattVoltage' || fieldName === 'BattVoltage' || fieldName === 'DeviceBattery' || fieldName === 'TWState') || fieldName ==='DoorSensorBatteryVoltage')\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-1\" && fieldName === 'Door1BattPct')\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-1\" && (fieldName === 'BatteryPct' || fieldName === 'ReeferBatteryPct'))\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"TripWiseExpiration\") //RCNG-169\r\n return \"OOR\";\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\" && fieldName!='TWState')\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && self.validateFieldName(fieldName.toString().trim()))\r\n return \"OOR\";\r\n\r\n switch (fieldName) {\r\n case \"PWR\": case \"DryPWR\":\r\n return Formatters.ChassisPWRFormatterGroupingForExcel(fieldValue);\r\n case \"IgnitionOn\":\r\n return Formatters.GensetSwitchFormatterGroupingExcel(fieldValue);\r\n case \"GensetRunning\":\r\n return Formatters.EngineSortingFormatterGroupingExcel(fieldValue);\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DLEventDTTM': case 'DoorEventDtm': case 'Door1EventDTTM':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n return Formatters.dateTypeFormatterGrouping(fieldValue); \r\n \r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'CompressorCurrent': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'CompressorCurrent':\r\n {\r\n return Formatters.sensorDataFormatterforExcel(fieldValue);\r\n }\r\n \r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp'://RCNG-1818\r\n {\r\n return Formatters.TemperatureFormatterforExcel(fieldValue);\r\n } \r\n case \"DeviceTemp\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.DevcieTempGrouping(fieldValue, DeviceType);\r\n }\r\n case \"InsideTemp\":\r\n {\r\n var DeviceType; \r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.InsideTempGrouping(fieldValue, DeviceType );\r\n }\r\n case 'XAxis': case 'YAxis': case 'ZAxis':\r\n {\r\n return Formatters.GravityVectorValueFormatterforGroup(fieldValue);\r\n }\r\n case 'Illumination':\r\n {\r\n return Formatters.LuxValueFormatterforGroup(fieldValue);\r\n }\r\n case 'TemperatureUnit':\r\n return Formatters.TemperatureFormatterForBookingforExcel(fieldValue);\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasOilPressureSwitch':\r\n {\r\n return Formatters.YesNoConverterforExcel(fieldValue);\r\n }\r\n case \"RunState\":\r\n return Formatters.RunStateFormatterGroupingForExcel(fieldValue);\r\n case 'AssetState':\r\n return Formatters.AssetStateFormatterGroupingForExcel(fieldValue);//Asset State changes\r\n case \"MASeverityLevel\":\r\n return Formatters.statusIndicatorforALMforGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return Formatters.PowerStateFormatterGroupingForExcel(fieldValue);//done\r\n case \"CCSeverityLevel\":\r\n return Formatters.CargoCareFormatterGroupingForExcel(fieldValue);\r\n case \"TripStatusCdAndDFlag\":\r\n {\r\n\r\n return Formatters.TripStatusFormatterGroupingForExcel(fieldValue);\r\n }\r\n case 'AlarmsList':\r\n return Formatters.AlarmListFormatterforExcel(fieldValue);\r\n case 'GPSHDOP':\r\n return Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.GPSHDOP, params.node.data.GPSLockState);\r\n case 'GPSSatelliteCount':\r\n return Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.GPSSatelliteCount, params.node.data.GPSLockState);\r\n case 'DryGPSHDOP':\r\n return Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.DryGPSHDOP, params.node.data.GPSLockState);\r\n case 'PositionAccuracy':\r\n return Formatters.GPSAcctypeFormatterForExcel(fieldValue);\r\n case 'DryGPSSatelliteCount':\r\n return Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.DryGPSSatelliteCount, params.node.data.GPSLockState);\r\n case 'ChassisGPSHDOP':\r\n return Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.ChassisGPSHDOP, params.node.data.GPSLockState);\r\n case 'ChassisGPSSatelliteCount':\r\n return Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.ChassisGPSSatelliteCount, params.node.data.GPSLockState);\r\n case 'ExtBattVoltage': case 'BattVoltage': case 'DeviceBattery':\r\n {\r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-999') ? '-NA-' : Formatters.BattVoltageSortingGrouping(fieldValue);\r\n }\r\n case 'Door1BattPct': case 'BatteryPct':\r\n { \r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-1') ? '-NA-' : Formatters.DoorBattPctSortingGrouping(fieldValue);\r\n }\r\n case 'ReeferBatteryPct':\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.ReeferBattPctSortingGrouping(fieldValue, DeviceType);\r\n }\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n\r\n return Formatters.GuestReeferModeFormatterForExcel(fieldValue);\r\n }\r\n case 'DrySpeed': case 'ChassisSpeed':\r\n {\r\n return Formatters.SpeedConverterforExcel(fieldValue);\r\n }\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) return Formatters.rcdPowerSourceFormatterforExcel(fieldValue);\r\n\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"-NA-\" : fieldValue;\r\n case \"ReeferOEMTypeCd\": case \"OEMTypeCD\"://WI-26787\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return Formatters.RSSIFormatterGroupingForExcel(fieldValue);\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"BatteryStatus\": //case\"PWR\":\r\n return Formatters.ChassisBatteryStatusFormatterGroupingExcel(fieldValue);\r\n case \"ChassisBatteryStatus\":\r\n return Formatters.ChassisBatteryStatusFormatterGroupingExcel(fieldValue);\r\n case \"DoorOpen\"://RCNG-1106\r\n return reeferFormatters.DoorFormatterGrouping(fieldValue);\r\n case \"Door1Open\":\r\n return Formatters.Door1FormatterGrouping(fieldValue); //RCNG-2377\r\n case \"TWState\":\r\n {\r\n var ReeferOemTypeCd; var DimiResultActuator; var DimiResultAlarm; var DimiResultOOR; var DimiMode = null; var DimiResultTerm = null;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOemTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOemTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n DimiMode = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiMode;\r\n DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm;//Added DimiResultTerm\r\n\r\n }\r\n return Formatters.TripWiseGroupingForExcel(fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm, DimiMode);\r\n }\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterForExcel(fieldValue, params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, self.state.sensorData, colDef);\r\n case 'HumiditySetpoint':\r\n {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n } \r\n return Formatters.HumiditySetpointForExcel(fieldValue, HumiditySetpointStatus);\r\n }\r\n case 'EverFRESH':\r\n return Formatters.EverFreshFormatterGrouping(fieldValue);\r\n case 'DimiStartAfter':\r\n return Formatters.OEMPTITypeFormatter(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n myRowGroupCallback(params) {\r\n\r\n var indent = '--';\r\n var node = params.node;\r\n //var label = node.key.toUpperCase();\r\n\r\n var label = self.getGroupDisplayValueName(params);\r\n if (!node.parent.parent) {\r\n return label; // top level node, parent is root node\r\n }\r\n label = '> ' + label;\r\n // indent once per level in the row group hierarchy\r\n while (node.parent.parent) {\r\n label = indent + label;\r\n node = node.parent;\r\n }\r\n return label;\r\n\r\n\r\n\r\n }\r\n\r\n myCellCallback(params) {\r\n \r\n var returnValue;\r\n var returnValue;\r\n var serverSideEnabled = JSON.parse(sessionStorage.getItem('SSRM'));\r\n var isServerSideEnabled = self.props.IsServerSideEnabled;\r\n if (serverSideEnabled) {\r\n if (params.node.group && ProcessfirstCellOnlyRowIndex != params.node.rowGroupIndex) {\r\n ProcessfirstCellOnlyRowIndex = params.node.rowGroupIndex\r\n if (params.node.key != null && params.node.key != undefined)\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (params.node.group && params.column.colId === \"0\") {\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (!params.node.group) {\r\n switch (params.column.colId) {\r\n\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID': case 'Value1':\r\n case 'Value3': case 'Value4':\r\n {\r\n if (params.value == undefined || params.value == \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'CompressorCurrent': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'VFD': \r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'LineFrequency' :\r\n {\r\n var OEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n OEMTypeCd = params.node.data.ReeferOEMTypeCd;\r\n }\r\n else {\r\n OEMTypeCd = \"\";\r\n }\r\n if(OEMTypeCd != null && OEMTypeCd != \"\") {\r\n if(OEMTypeCd.toString().toUpperCase().trim() == \"D\" && (params.node.data.ControllerTypeCd == 27 || params.node.data.ControllerTypeCd == 28 || params.node.data.ControllerTypeCd == 32))\r\n if (params.value != undefined && params.value != null && params.value != '-NA-')\r\n returnValue = Formatters.lineFrequencyFormatterforExcel(params.node.data.LineFrequencyQualifier, params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n else { \r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n } \r\n }\r\n else {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n break;\r\n case 'CompositeSuctionPressure': case 'DischargePressure': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'CompressorCurrent':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcelTwoDecimal(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp'://RCNG-1818\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp': case 'InsideTemp':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'XAxis': case 'YAxis': case 'ZAxis':\r\n {\r\n return Formatters.GravityVectorValueFormatter(params);\r\n }\r\n break\r\n case 'Illumination':\r\n {\r\n return Formatters.LuxValueFormatter(params);\r\n }\r\n case 'TemperatureUnit':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DoorEventDtm': case 'Door1EventDttm':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.dateTypeFormatterforExcel(params.value);\r\n }\r\n break\r\n case 'Name': case 'Description': case 'RCDBootloaderVersion': case 'PTResult': case 'VesselCd': case 'DeviceType':\r\n case 'GeofenceTag': case 'VesselName': case 'Origin': case 'Handler': case 'TripStatusCdAndDFlag':\r\n case 'UserName': case 'TagName': case 'Created': case 'DeploymentName': case 'CreatedBy': case 'ModifiedBy': case 'SubmittedBy':\r\n case 'FullName': case 'Zip': case 'CCSeverityLevelGenset': case 'OEMModel': \r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.stringTypeFormatterChildFormsNew(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'DimiStartAfter':\r\n returnValue = Formatters.OEMPTITypeFormatter(params.value);\r\n break;\r\n case 'CommentExists': case 'CommentExistsGenset': case 'CommentExistsDC': case 'CommentExistsChassis':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.CommentExistsforExcel(params.value);\r\n }\r\n break;\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasOilPressureSwitch':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n case 'GPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.GPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'GPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.GPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'DryGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.DryGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'PositionAccuracy':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSAcctypeFormatterForExcel(params.node.data.PositionAccuracy);\r\n }\r\n break;\r\n case 'DryGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.DryGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.ChassisGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.ChassisGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ExtBattVoltage': case 'BattVoltage': case 'DeviceBattery': case 'BatteryVoltage': case 'DoorSensorBatteryVoltage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'Door1BattPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.Door1BattPct); //door1BattPct);\r\n }\r\n break;\r\n case 'BatteryPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.BatteryPct); \r\n }\r\n break;\r\n case 'ReeferBatteryPct':\r\n {\r\n returnValue = Formatters.ReeferBattPctFormatterforExcel(params.node.data.ReeferBatteryPct, params.node.data.DeviceType);\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'DrySpeed': case 'ChassisSpeed': case 'Speed':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.SpeedConverterforExcel(params.value);\r\n }\r\n break;\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n case 'RunState': if (params.value != undefined && params.value != null) returnValue = Formatters.RunStateFormatterGroupingForExcel(params.value);\r\n break;\r\n case 'AssetState': if (params.value != undefined && params.value != null) returnValue = Formatters.AssetStateFormatterGroupingForExcel(params.value);//Asset State changes\r\n break;\r\n case 'R_HighestSeverityLevel': {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.value);\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlertSeverityID': if (params.value != undefined && params.value != null) returnValue = Formatters.statusIndicatorforALRforExcel(params.value); break;\r\n case 'IsOnVessel': if (params.value != undefined && params.value != null) returnValue = Formatters.isOnVesselFormatterChildForms(params.value); break;\r\n case 'GPSLastLock': if (params.value != undefined && params.value != null) returnValue = Formatters.secondsToTimeConverterForExcel(params.node.data.GPSLastLock); break;\r\n case 'AlarmsList': if (params.value != undefined && params.value != null) returnValue = Formatters.AlarmListFormatterforExcel(params.value); break;\r\n case 'TemperatureUnit': if (params.value != undefined && params.value != null) returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value); break;\r\n case 'ThreePhaseCurrent': if (params.value != undefined && params.value != null) returnValue = Formatters.Current3PhaseFormatterforExcel(params.value); break;\r\n case 'FilerepositoryActionCD': if (params.value != undefined && params.value != null) returnValue = Formatters.GetFileRepositoryActionDesc(params.value); break;\r\n case 'GeofenceCategoryCd': if (params.value != undefined && params.value != null) returnValue = Formatters.fenceTypeFormatterForExcel(params.value); break;\r\n case 'IgnitionOn': if (params.value != undefined && params.value != null) returnValue = Formatters.gensetSwitchFormatterForExcel(params.value); break;\r\n case 'BatteryStatus': if (params.value != undefined && params.value != null) returnValue = Formatters.ChassisBatteryStatusFormatterForExcel(params.node.data.BatteryStatus); break;\r\n case 'BreakSignal': if (params.value != undefined && params.value != null) returnValue = Formatters.BrakeSignalFormatterForExcel(params.value); break;\r\n case 'TripWiseExpiration':\r\n {\r\n if (params.value != undefined && params.value != null) returnValue = Formatters.TripWiseExpirationFormatterforExcel(params.value); \r\n }\r\n break; \r\n case 'DimiRemainTerm': if (params.value != undefined && params.value != null) returnValue = Formatters.DimiRemainTermFormatterforExcel(params.value); break;\r\n case 'AirPumpRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.AirPumpRunHoursFormatterforExcel(params.value); break;\r\n case 'CompressorRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CompressorRunHoursFormatterforExcel(params.value); break; \r\n case 'CARunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CARunHoursFormatterforExcel(params.value); break; \r\n case 'PowerMeter': if (params.value != undefined && params.value != null) returnValue = Formatters.PowerMeterFormatterforExcel(params.value); break; \r\n case 'CASoftwareRevision': if (params.value != undefined && params.value != null) returnValue = Formatters.CASWVerFormatterforExcel(params.value); break; \r\n case 'CTDuration': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CTRemainingTime': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CustomerName': if (params.value != undefined && params.value != null) returnValue = Formatters.stringTypeFormatterFor3PExcel(params.value); break;\r\n case 'TWState': if (params.value != undefined && params.value != null) returnValue = Formatters.tripWiseFormatterForExcel(params); break;\r\n //case 'PWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.node.data.PWR); break;\r\n case 'PWR': case 'DryPWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.value); break;\r\n case 'Loaded': if (params.value != undefined && params.value != null) returnValue = Formatters.LoadedFormatterForExcel(params.value); break;\r\n case \"RSSI\": if (params.value != undefined && params.value != null) returnValue = params.node.data.RSSI; break;\r\n case 'FractionDisplay': {\r\n\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifier = params.node.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HasFuelSensor = params.node.HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = \"\";\r\n }\r\n\r\n }\r\n\r\n\r\n var isFuelinfo = {\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FractionDisplay: params.value,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null && HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelTraceFormatterforExcel(isFuelinfo);\r\n }\r\n case 'HasFuelSensor': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifier = params.node.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifierDesc = params.node.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n\r\n var isFuelinfo2 = {\r\n HasFuelSensor: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc\r\n };\r\n\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null)\r\n returnValue = Formatters.FuelSensorTraceFormatterforExcel(isFuelinfo2);\r\n }\r\n break;\r\n }\r\n case 'ManufacturedDate':\r\n {\r\n if (params.value != undefined && params.value != null) returnValue = Formatters.YearFromdateTypeFormatterForExcelNew(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = Formatters.AssetTypeFormatterForExcel(params.value); break;\r\n case 'PreTrip': {\r\n if (params.value != undefined && params.value != null) {\r\n if (this.state.formName == \"PreTrip\")\r\n returnValue = Formatters.PTIStateforExcel(params.value);\r\n else\r\n returnValue = Formatters.stringTypeFormatterChildForms(params.value);\r\n }\r\n }\r\n break;\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var IsCargoCare;\r\n //IsCargocare = self.getOtherColumnCellValue(params, \"IsCargocare\");\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null) {\r\n\r\n //}\r\n if (params.node != undefined && params.node != null && params.node.data != undefined && params.node.data != null)\r\n IsCargoCare = params.node.data.IsCargoCare; //RCNG-241 Renamed Normal to Assigned\r\n else {\r\n IsCargoCare = false;\r\n }\r\n if (IsCargoCare != undefined && IsCargoCare != null)\r\n returnValue = Formatters.CargoCareFormatterforExcel({ isCargocare: IsCargoCare, CCSeverityLevel: params.value });\r\n }\r\n }\r\n break;\r\n case 'DoorOpen': //RCNG-1106\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n //var HasDoorSensor;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // HasDoorSensor = params.node.HasDoorSensor;\r\n //}\r\n //else {\r\n // HasDoorSensor = false;\r\n //}\r\n //if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n // returnValue = Formatters.DoorFormatterExcel({ Door1Open: params.value, HasDoorSensor: HasDoorSensor });\r\n\r\n returnValue = reeferFormatters.DoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Door1Open':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.Door1FormatterExcel(params.value);\r\n }\r\n else\r\n returnValue = '-NA-';\r\n }\r\n break;\r\n case 'Humidity':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n var HumiditySetpointStatus;\r\n //HumiditySetpointStatus1 = this.getOtherColumnCellValue(params, \"HumiditySetpointStatus\");\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HumiditySetpointStatus = params.node.HumiditySetpointStatus;\r\n }\r\n else {\r\n HumiditySetpointStatus = \"\";\r\n }\r\n\r\n if (HumiditySetpointStatus != undefined && HumiditySetpointStatus != null)\r\n returnValue = Formatters.HumiditySettingFormatterforExcel({ Humidity: params.value, HumiditySetpointStatus: HumiditySetpointStatus });\r\n else\r\n returnValue = '-NA-'; // WI 26545\r\n }\r\n }\r\n break;\r\n case 'ControlledAtmosphereMode': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.ControlledAtmosphereModeforExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, ControlledAtmosphereMode: params.value });\r\n }\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n SuctionModulationValveOpeningQualifier = params.node.SuctionModulationValveOpeningQualifier;\r\n }\r\n else {\r\n SuctionModulationValveOpeningQualifier = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.value\r\n };\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null && SuctionModulationValveOpeningQualifier != undefined && SuctionModulationValveOpeningQualifier != null)\r\n returnValue = Formatters.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n }\r\n break;\r\n case 'CondenserPressure': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataPCondFormatterExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, CondenserPressure: params.value });\r\n }\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n var EEVData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.value\r\n };\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n }\r\n break;\r\n case 'GensetRunning': {\r\n if (params.value != undefined && params.value != null) {\r\n // Start WI-26787\r\n //var HasOilPressureSwitch;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // HasOilPressureSwitch = params.node.HasOilPressureSwitch;\r\n //}\r\n //else {\r\n // HasOilPressureSwitch = false;\r\n //}\r\n\r\n //if (HasOilPressureSwitch != undefined && HasOilPressureSwitch != null)\r\n var isGensetRunning = {\r\n GensetRunning: params.node.data.GensetRunning,\r\n HasOilPressureSwitch: params.node.data.HasOilPressureSwitch,\r\n OEMTypeCD: params.node.data.OEMTypeCD\r\n };\r\n returnValue = Formatters.EngFormatterforExcel(isGensetRunning);\r\n // End WI-26787\r\n }\r\n }\r\n break;\r\n case 'FuelLevel': case 'FractionDisplay': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifier = params.node.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifierDesc = params.node.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n var FractionDisplay;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FractionDisplay = params.node.FractionDisplay;\r\n }\r\n else {\r\n FractionDisplay = false;\r\n }\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HasFuelSensor = params.node.HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo3 = {\r\n FuelLevel: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc,\r\n FractionDisplay: FractionDisplay,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n FuelLevelQualifierDesc != undefined && FuelLevelQualifierDesc != null &&\r\n FractionDisplay != undefined && FractionDisplay != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelGalTraceFormatterforExcel(isFuelinfo3);\r\n }\r\n }\r\n break;\r\n case 'DevicePowerSourceCd': {\r\n if (params.value != undefined && params.value != null) {\r\n //var DeviceConfig;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // DeviceConfig = params.node.DeviceConfig;\r\n //}\r\n //else {\r\n // DeviceConfig = false;\r\n //}\r\n\r\n //var DeviceType;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // DeviceType = params.node.DeviceType;\r\n //}\r\n //else {\r\n // DeviceType = \"\";\r\n //}\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: params.node.data.DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: params.node.data.DeviceType\r\n };\r\n \r\n //if (DeviceType != undefined && DeviceType != null && DeviceConfig != undefined && DeviceConfig != null)\r\n returnValue = Formatters.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'Door1OpenChassis': {\r\n if (params.value != undefined && params.value != null) {\r\n var HasDoorSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HasDoorSensor = params.node.HasDoorSensor;\r\n }\r\n else {\r\n HasDoorSensor = false;\r\n }\r\n\r\n var door1ChassisStateFormatter = {\r\n HasDoorSensor: HasDoorSensor,\r\n Door1OpenChassis: params.value\r\n };\r\n\r\n if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n returnValue = Formatters.DoorFormatterChassisforExcel(door1ChassisStateFormatter);\r\n }\r\n }\r\n break;\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGroupingForExcel(params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n if (self.state.sensorData != undefined && self.state.sensorData != null) {\r\n var columnFieldName = params.column.colId;\r\n var deviceType = params.node.data.DeviceType;\r\n var name = columnFieldName.split(\"_\");\r\n var fieldName = name[0];\r\n var value = params.node.data[name[0]];\r\n\r\n if (value != null && value != undefined) {\r\n var sensorcolumn = self.state.sensorData.filter(x => x.FieldName == fieldName && x.DeviceTypeCd.trim() == deviceType.trim());\r\n if (sensorcolumn[0] != undefined && sensorcolumn[0] != null) {\r\n if (sensorcolumn[0].SensorTypeCd.trim() == \"T\")\r\n return Formatters.TemperatureSensorFormatterForExcel(params);\r\n else\r\n return Formatters.DigitalSensorFormatterForExcel(params);\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n }\r\n break;\r\n case 'HumiditySetpoint':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.HumiditySetpointForExcel(params.value, params.node.data.HumiditySetpointStatus);\r\n }\r\n }\r\n break;\r\n case 'EverFRESH':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.EverFreshFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n default: {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n returnValue = params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n }\r\n else {\r\n if (params.node.group && ProcessfirstCellOnlyRowIndex != params.node.rowGroupIndex) {\r\n ProcessfirstCellOnlyRowIndex = params.node.rowGroupIndex\r\n if (params.node.key != null && params.node.key != undefined)\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (params.node.group && params.column.colId === \"0\") {\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (!params.node.group) {\r\n switch (params.column.colId) {\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID': case 'Value1':\r\n case 'Value3': case 'Value4':\r\n {\r\n if (params.value == undefined || params.value == \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = params.value;\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'CompressorCurrent': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'CompressorCurrent':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'LineFrequency' :\r\n {\r\n var OEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n OEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n if(OEMTypeCd != null && OEMTypeCd != undefined) {\r\n if(OEMTypeCd.toString().toUpperCase().trim() == \"D\" && (params.node.data.ControllerTypeCd == 27 || params.node.data.ControllerTypeCd == 28 || params.node.data.ControllerTypeCd == 32))\r\n if (params.value != undefined && params.value != null && params.value != '-NA-')\r\n returnValue = Formatters.lineFrequencyFormatterforExcel(params.node.data.LineFrequencyQualifier, params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n else {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n } \r\n\r\n }\r\n else {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n break;\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp'://RCNG-1818\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp': case 'InsideTemp':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'XAxis': case 'YAxis': case 'ZAxis':\r\n {\r\n return Formatters.GravityVectorValueFormatter(params);\r\n }\r\n break\r\n case 'Illumination':\r\n {\r\n return Formatters.LuxValueFormatter(params);\r\n }\r\n break\r\n case 'TemperatureUnit':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM': case 'DLEventDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DoorEventDtm': case 'Door1EventDttm':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.dateTypeFormatterforExcel(params.value);\r\n }\r\n break\r\n case 'Name': case 'Description': case 'RCDBootloaderVersion': case 'PTResult': case 'VesselCd': case 'DeviceType':\r\n case 'GeofenceTag': case 'VesselName': case 'Origin': case 'Handler': case 'TripStatusCdAndDFlag':\r\n case 'UserName': case 'TagName': case 'Created': case 'DeploymentName': case 'CreatedBy': case 'ModifiedBy': case 'SubmittedBy':\r\n case 'FullName': case 'Zip': case 'CCSeverityLevelGenset': case 'OEMModel': \r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.stringTypeFormatterChildFormsNew(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'DimiStartAfter':\r\n returnValue = Formatters.OEMPTITypeFormatter(params.value);\r\n break;\r\n case 'CommentExists': case 'CommentExistsGenset': case 'CommentExistsDC': case 'CommentExistsChassis':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.CommentExistsforExcel(params.value);\r\n }\r\n break;\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasOilPressureSwitch':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n case 'GPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.GPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'GPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.GPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'DryGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.DryGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'PositionAccuracy':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSAcctypeFormatterForExcel(params.node.data.PositionAccuracy);\r\n }\r\n break;\r\n case 'DryGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.DryGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.ChassisGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.ChassisGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ExtBattVoltage': case 'BattVoltage': case 'DeviceBattery': case 'BatteryVoltage': case 'DoorSensorBatteryVoltage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'Door1BattPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.Door1BattPct); //door1BattPct);\r\n }\r\n break;\r\n case 'BatteryPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.BatteryPct); \r\n }\r\n break;\r\n case 'ReeferBatteryPct':\r\n {\r\n returnValue = Formatters.ReeferBattPctFormatterforExcel(params.node.data.ReeferBatteryPct, params.node.data.DeviceType);\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'DrySpeed': case 'ChassisSpeed': case 'Speed':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.SpeedConverterforExcel(params.value);\r\n }\r\n break;\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n case 'RunState': if (params.value != undefined && params.value != null) returnValue = Formatters.RunStateFormatterGroupingForExcel(params.value);\r\n break;\r\n case 'AssetState': if (params.value != undefined && params.value != null) returnValue = Formatters.AssetStateFormatterGroupingForExcel(params.value);//Asset State changes\r\n break;\r\n case 'R_HighestSeverityLevel': {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.value);\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlertSeverityID': if (params.value != undefined && params.value != null) returnValue = Formatters.statusIndicatorforALRforExcel(params.value); break;\r\n case 'IsOnVessel': if (params.value != undefined && params.value != null) returnValue = Formatters.isOnVesselFormatterChildForms(params.value); break;\r\n case 'GPSLastLock': if (params.value != undefined && params.value != null) returnValue = Formatters.secondsToTimeConverterForExcel(params.node.data.GPSLastLock); break;\r\n case 'AlarmsList': if (params.value != undefined && params.value != null) returnValue = Formatters.AlarmListFormatterforExcel(params.value); break;\r\n case 'TemperatureUnit': if (params.value != undefined && params.value != null) returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value); break;\r\n case 'ThreePhaseCurrent': if (params.value != undefined && params.value != null) returnValue = Formatters.Current3PhaseFormatterforExcel(params.value); break;\r\n case 'FilerepositoryActionCD': if (params.value != undefined && params.value != null) returnValue = Formatters.GetFileRepositoryActionDesc(params.value); break;\r\n case 'GeofenceCategoryCd': if (params.value != undefined && params.value != null) returnValue = Formatters.fenceTypeFormatterForExcel(params.value); break;\r\n case 'IgnitionOn': if (params.value != undefined && params.value != null) returnValue = Formatters.gensetSwitchFormatterForExcel(params.value); break;\r\n case 'BatteryStatus': if (params.value != undefined && params.value != null) returnValue = Formatters.ChassisBatteryStatusFormatterForExcel(params.node.data.BatteryStatus); break;\r\n case 'ChassisBatteryStatus': if (params.value != undefined && params.value != null) returnValue = Formatters.ChassisBatteryStatusFormatterForExcel(params.node.data.ChassisBatteryStatus); break;\r\n case 'BreakSignal': if (params.value != undefined && params.value != null) returnValue = Formatters.BrakeSignalFormatterForExcel(params.value); break;\r\n case 'TripWiseExpiration': if (params.value != undefined && params.value != null) returnValue = Formatters.TripWiseExpirationFormatterforExcel(params.value); break;\r\n case 'DimiRemainTerm': if (params.value != undefined && params.value != null) returnValue = Formatters.DimiRemainTermFormatterforExcel(params.value); \r\n break;\r\n case 'AirPumpRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.AirPumpRunHoursFormatterforExcel(params.value); break;\r\n case 'CompressorRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CompressorRunHoursFormatterforExcel(params.value); break;\r\n case 'CARunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CARunHoursFormatterforExcel(params.value); break; \r\n case 'PowerMeter': if (params.value != undefined && params.value != null) returnValue = Formatters.PowerMeterFormatterforExcel(params.value); break; \r\n case 'CASoftwareRevision': if (params.value != undefined && params.value != null) returnValue = Formatters.CASWVerFormatterforExcel(params.value); break; \r\n case 'CTDuration': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CTRemainingTime': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CustomerName': if (params.value != undefined && params.value != null) returnValue = Formatters.stringTypeFormatterFor3PExcel(params.value); break;\r\n case 'TWState': if (params.value != undefined && params.value != null) returnValue = Formatters.tripWiseFormatterForExcel(params); break;\r\n //case 'PWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.node.data.PWR); break;\r\n case 'PWR': case 'DryPWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.value); break;\r\n case 'Loaded': if (params.value != undefined && params.value != null) returnValue = Formatters.LoadedFormatterForExcel(params.value); break;\r\n case \"RSSI\": if (params.value != undefined && params.value != null) returnValue = params.node.data.RSSI; break;\r\n case 'FractionDisplay': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var FractionDisplay;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FractionDisplay = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FractionDisplay;\r\n }\r\n else {\r\n FractionDisplay = false;\r\n }\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HasFuelSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo = {\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FractionDisplay: FractionDisplay,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n //FractionDisplay != undefined && FractionDisplay != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelTraceFormatterforExcel(isFuelinfo);\r\n }\r\n }\r\n break;\r\n case 'HasFuelSensor': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifierDesc = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n\r\n var isFuelinfo2 = {\r\n HasFuelSensor: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc\r\n };\r\n\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null)\r\n returnValue = Formatters.FuelSensorTraceFormatterforExcel(isFuelinfo2);\r\n }\r\n break;\r\n }\r\n case 'ManufacturedDate':\r\n {\r\n if (params.value != undefined && params.value != null) returnValue = Formatters.YearFromdateTypeFormatterForExcelNew(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = Formatters.AssetTypeFormatterForExcel(params.value); break;\r\n case 'PreTrip': {\r\n if (params.value != undefined && params.value != null) {\r\n if (this.state.formName == \"PreTrip\")\r\n returnValue = Formatters.PTIStateforExcel(params.value);\r\n else\r\n returnValue = Formatters.stringTypeFormatterChildForms(params.value);\r\n }\r\n }\r\n break;\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var IsCargoCare;\r\n //IsCargocare = self.getOtherColumnCellValue(params, \"IsCargocare\");\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null) {\r\n //if (self.state.excelGridData[params.node.rowIndex].IsCargoCare != undefined\r\n // && self.state.excelGridData[params.node.rowIndex].IsCargoCare != null)\r\n //IsCargocare = self.state.excelGridData[params.node.rowIndex].IsCargoCare;\r\n //if (self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null)\r\n // IsCargoCare = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].IsCargoCare; \r\n //}\r\n if (params.node != undefined && params.node != null && params.node.data != undefined && params.node.data != null) {\r\n IsCargoCare = params.node.data.IsCargoCare; //RCNG-241 Renamed Normal to Assigned\r\n }\r\n else {\r\n IsCargoCare = false;\r\n }\r\n if (IsCargoCare != undefined && IsCargoCare != null)\r\n returnValue = Formatters.CargoCareFormatterforExcel({ isCargocare: IsCargoCare, CCSeverityLevel: params.value });\r\n }\r\n }\r\n break;\r\n case 'DoorOpen'://RCNG-1106\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n //var HasDoorSensor;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // HasDoorSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasDoorSensor;\r\n //}\r\n //else {\r\n // HasDoorSensor = false;\r\n //}\r\n //if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n // returnValue = Formatters.DoorFormatterExcel({ Door1Open: params.value, HasDoorSensor: HasDoorSensor });\r\n\r\n returnValue = reeferFormatters.DoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Door1Open':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.Door1FormatterExcel(params.value); //RCNG-2377\r\n }\r\n else\r\n returnValue = '-NA-';\r\n }\r\n break;\r\n case 'Humidity':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n var HumiditySetpointStatus;\r\n //HumiditySetpointStatus1 = this.getOtherColumnCellValue(params, \"HumiditySetpointStatus\");\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n else {\r\n HumiditySetpointStatus = \"\";\r\n }\r\n\r\n if (HumiditySetpointStatus != undefined && HumiditySetpointStatus != null)\r\n returnValue = Formatters.HumiditySettingFormatterforExcel({ Humidity: params.value, HumiditySetpointStatus: HumiditySetpointStatus });\r\n else\r\n returnValue = '-NA-'; // WI 26545\r\n }\r\n }\r\n break;\r\n case 'ControlledAtmosphereMode': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.ControlledAtmosphereModeforExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, ControlledAtmosphereMode: params.value });\r\n }\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n SuctionModulationValveOpeningQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].SuctionModulationValveOpeningQualifier;\r\n }\r\n else {\r\n SuctionModulationValveOpeningQualifier = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.value\r\n };\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null && SuctionModulationValveOpeningQualifier != undefined && SuctionModulationValveOpeningQualifier != null)\r\n returnValue = Formatters.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n }\r\n break;\r\n case 'CondenserPressure': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataPCondFormatterExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, CondenserPressure: params.value });\r\n }\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n var EEVData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.value\r\n };\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n }\r\n break;\r\n case 'GensetRunning': {\r\n if (params.value != undefined && params.value != null) {\r\n // Start WI-26787\r\n //var HasOilPressureSwitch;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // HasOilPressureSwitch = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasOilPressureSwitch;\r\n //}\r\n //else {\r\n // HasOilPressureSwitch = false;\r\n //}\r\n\r\n //if (HasOilPressureSwitch != undefined && HasOilPressureSwitch != null)\r\n // returnValue = Formatters.gensetRunningFormatterforExcel({ GensetRunning: params.value, HasOilPressureSwitch: HasOilPressureSwitch });\r\n var isGensetRunning = {\r\n GensetRunning: params.node.data.GensetRunning,\r\n HasOilPressureSwitch: params.node.data.HasOilPressureSwitch,\r\n OEMTypeCD: params.node.data.OEMTypeCD\r\n };\r\n returnValue = Formatters.EngFormatterforExcel(isGensetRunning);\r\n // End WI-26787\r\n }\r\n }\r\n break;\r\n case 'FuelLevel': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifierDesc = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n var FractionDisplay;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FractionDisplay = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FractionDisplay;\r\n }\r\n else {\r\n FractionDisplay = false;\r\n }\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HasFuelSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo3 = {\r\n FuelLevel: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc,\r\n FractionDisplay: FractionDisplay,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n //FuelLevelQualifierDesc != undefined && FuelLevelQualifierDesc != null &&\r\n //FractionDisplay != undefined && FractionDisplay != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelGalTraceFormatterforExcel(isFuelinfo3);\r\n }\r\n }\r\n break;\r\n case 'DevicePowerSourceCd': {\r\n if (params.value != undefined && params.value != null) {\r\n //var DeviceConfig;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // DeviceConfig = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceConfig;\r\n //}\r\n //else {\r\n // DeviceConfig = false;\r\n //}\r\n\r\n //var DeviceType;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n //}\r\n //else {\r\n // DeviceType = \"\";\r\n //}\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: params.node.data.DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: params.node.data.DeviceType\r\n };\r\n \r\n //if (DeviceType != undefined && DeviceType != null && DeviceConfig != undefined && DeviceConfig != null)\r\n returnValue = Formatters.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'Door1OpenChassis': {\r\n if (params.value != undefined && params.value != null) {\r\n var HasDoorSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HasDoorSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasDoorSensor;\r\n }\r\n else {\r\n HasDoorSensor = false;\r\n }\r\n\r\n var door1ChassisStateFormatter = {\r\n HasDoorSensor: HasDoorSensor,\r\n Door1OpenChassis: params.value\r\n };\r\n\r\n if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n returnValue = Formatters.DoorFormatterChassisforExcel(door1ChassisStateFormatter);\r\n }\r\n }\r\n break;\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGroupingForExcel(params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n if (self.state.sensorData != undefined && self.state.sensorData != null) {\r\n var columnFieldName = params.column.colId;\r\n var deviceType = params.node.data.DeviceType;\r\n var name = columnFieldName.split(\"_\");\r\n var fieldName = name[0];\r\n var value = params.node.data[name[0]];\r\n\r\n if (value != null && value != undefined && deviceType != null) {//RCNG-1578\r\n var sensorcolumn = self.state.sensorData.filter(x => x.FieldName == fieldName && x.DeviceTypeCd.trim() == deviceType.trim());\r\n if (sensorcolumn[0] != undefined && sensorcolumn[0] != null) {\r\n if (sensorcolumn[0].SensorTypeCd.trim() == \"T\")\r\n return Formatters.TemperatureSensorFormatterForExcel(params);\r\n else\r\n return Formatters.DigitalSensorFormatterForExcel(params);\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n }\r\n break;\r\n case 'HumiditySetpoint':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.HumiditySetpointForExcel(params.value, params.node.data.HumiditySetpointStatus);\r\n }\r\n }\r\n break;\r\n case 'EverFRESH':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.EverFreshFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n default: {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n returnValue = params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n }\r\n }\r\n\r\n myGroupHeaderCallback(params) {\r\n\r\n var displayName = params.columnApi.getDisplayNameForColumnGroup(\r\n params.columnGroup\r\n );\r\n return displayName;//.toUpperCase();\r\n }\r\n\r\n getRequiredParams() {\r\n if (this.state.isIncludeRowGroup) {\r\n if (columnsToBeExported != null) {\r\n return {\r\n columnGroups: true,\r\n columnKeys: columnsToBeExported,\r\n processRowGroupCallback: this.myRowGroupCallback,\r\n processCellCallback: this.myCellCallback,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n\r\n };\r\n }\r\n else {\r\n return {\r\n columnGroups: true,\r\n allColumns: true,\r\n processCellCallback: this.myCellCallback,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n };\r\n }\r\n }\r\n else {\r\n\r\n if (columnsToBeExported != null) {\r\n return {\r\n columnGroups: false,\r\n processCellCallback: this.myCellCallback,\r\n columnKeys: columnsToBeExported,\r\n processHeaderCallback: this.myHeaderCallback,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n };\r\n }\r\n else {\r\n return {\r\n columnGroups: false,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n allColumns: true,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n };\r\n }\r\n }\r\n }\r\n\r\n getParams() {\r\n \r\n //var a = this.getRequiredParams();\r\n //return a;\r\n return {\r\n columnGroups: true,\r\n allColumns: true,\r\n processRowGroupCallback: this.myRowGroupCallback,\r\n processCellCallback: this.myCellCallback,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n\r\n };\r\n /*\r\n if (this.state.isIncludeRowGroup) {\r\n if (columnsToBeExported != null) {\r\n return {\r\n columnGroups: true,\r\n columnKeys: columnsToBeExported,\r\n processRowGroupCallback: this.myRowGroupCallback,\r\n processCellCallback: this.myCellCallback,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n \r\n };\r\n }\r\n else {\r\n return {\r\n columnGroups: true,\r\n allColumns: true,\r\n processCellCallback: this.myCellCallback,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n };\r\n }\r\n }\r\n else {\r\n\r\n if (columnsToBeExported != null) {\r\n return {\r\n columnGroups: false,\r\n processCellCallback: this.myCellCallback,\r\n columnKeys: columnsToBeExported,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n };\r\n }\r\n else {\r\n return {\r\n columnGroups: false,\r\n processCellCallback: this.myCellCallback,\r\n allColumns: true,\r\n fileName: this.getFileName(this.GetExportFileName())\r\n };\r\n }\r\n }\r\n */\r\n }\r\n\r\n exportDataAsExcel() {\r\n //this.props.api.exportDataAsExcel(this.getParams());\r\n }\r\n\r\n ExportDataAsExcel() {\r\n //var params = this.getParams();\r\n\r\n //gridOptions.api.exportDataAsExcel(params);\r\n }\r\n\r\n\r\n\r\n public render() {\r\n var rowGroupLength = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length;\r\n var onlyselected = this.props.onlyselected;\r\n return
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.SelectedOption('AllDefaultColumns')}\r\n /> All Columns\r\n
    \r\n
    \r\n this.SelectedOption('SelectedColumns')}\r\n />\r\n Grid Preference Columns \r\n
    \r\n
    \r\n {/*\r\n
    \r\n Selected option is : {this.state.selectedOption}\r\n
    \r\n */}\r\n
    \r\n\r\n {onlyselected ? \"\" :\r\n rowGroupLength > 0 ?\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n\r\n\r\n {this.state.isIncludeRowGroup ?
    \r\n \r\n \r\n
    : \"\"}\r\n\r\n\r\n\r\n
    \r\n\r\n : \"\"}\r\n\r\n\r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    ;\r\n\r\n //return
    \r\n //
    \r\n //
    \r\n //
    \r\n // \r\n //

    Export to Excel Confirmation

    \r\n //
    \r\n //
    \r\n // {\r\n\r\n //
    \r\n // Do you want export with\r\n //
    \r\n //
    \r\n // this.SelectedOption('AllDefaultColumns')}/> All Default Columns\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // this.SelectedOption('SelectedColumns')} /> Selected Columns\r\n //
    \r\n //
    \r\n //
    \r\n\r\n // }\r\n //
    \r\n //
    \r\n // \r\n // \r\n //
    \r\n //
    \r\n\r\n\r\n //
    \r\n //
    \r\n //
    \r\n // }>\r\n // {this.state.sheetInfo}\r\n // \r\n //
    \r\n //
    \r\n\r\n }\r\n\r\n ExportToExcel(exportColumns, optionId) {\r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n //WI-21469 - end\r\n\r\n var arrayToBeExported: any[];\r\n var tempClone: any[];\r\n tempClone = this.props.colDefs;\r\n\r\n var tempClone2: any[];\r\n tempClone2 = this.props.colDefs2;\r\n\r\n if (exportColumns != null) {\r\n\r\n if (optionId === 2) {\r\n for (var loopvariable = 0; loopvariable < this.props.colDefs.length; loopvariable++) {\r\n\r\n for (var children = 0; children < this.props.colDefs[loopvariable].children.length; children++) {\r\n if (exportColumns.indexOf(this.props.colDefs[loopvariable].children[children].field) >= 0) {\r\n //Exists, do nothing. be part of export array\r\n }\r\n else {\r\n //not exists, removed from export array\r\n // var b = r1[loopvariable].children;\r\n tempClone[loopvariable].children.splice(children, 1)\r\n children = children - 1;\r\n }\r\n }\r\n }\r\n\r\n arrayToBeExported = tempClone;\r\n }\r\n else if (optionId === 1) {\r\n for (var loopvariable = 0; loopvariable < this.props.colDefs2.length; loopvariable++) {\r\n\r\n for (var children = 0; children < this.props.colDefs2[loopvariable].children.length; children++) {\r\n if (exportColumns.indexOf(this.props.colDefs2[loopvariable].children[children].field) >= 0) {\r\n //Exists, do nothing. be part of export array\r\n }\r\n else {\r\n //not exists, removed from export array\r\n // var b = r1[loopvariable].children;\r\n tempClone2[loopvariable].children.splice(children, 1)\r\n children = children - 1;\r\n }\r\n }\r\n }\r\n arrayToBeExported = tempClone2;\r\n }\r\n //arrayToBeExported = tempClone;\r\n }\r\n else {\r\n if (this.props.functionId == 66)\r\n arrayToBeExported = this.props.colDefs;\r\n else\r\n arrayToBeExported = this.props.colDefs2;\r\n }\r\n\r\n\r\n\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, arrayToBeExported, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, arrayToBeExported, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n //this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.GetExportFileName(), true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n getFileName(formName: string) {\r\n var currentDate = new Date();\r\n return formName + (currentDate.getMonth() + 1) + currentDate.getDate() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(); //RCNG-1584\r\n }\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n\r\n //this.renderSheets();\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadReeferExcel1').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.closePopUp();\r\n\r\n this.props.closeModelDialog();\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n showMessageAndClosePopup() {\r\n if (this.state.isDownload) {\r\n //$('#btnDownloadReeferExcel1').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.closePopUp();\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n if (this.props.closeModelDialog != null && this.props.closeModelDialog != undefined)\r\n this.props.closeModelDialog();\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n GetExportFileName() {\r\n\r\n var FileName = this.props.formName;\r\n //RCNG-1584 start\r\n var ReeferId; var reefereList; var count;\r\n if (FileName == \"ReeferHistoryGrid\" || FileName == \"ReeferHistory\" || FileName == \"ReeferMapGrid\") {\r\n if (FileName == \"ReeferMapGrid\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"ReeferGrid_\";\r\n else {\r\n reefereList = this.props.gridData.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.ReeferID === reeferID.ReeferID)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_ReeferHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].ReeferID + \"_ReeferHistoryGrid_\";\r\n\r\n }\r\n }//End\r\n // Start RCNG-1585\r\n else if (FileName == \"GensetHistoryGrid\" || FileName == \"GensetHistory\" || FileName == \"GensetMap\") {\r\n if (FileName == \"GensetMap\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"GensetGrid_\";\r\n else {\r\n reefereList = this.props.gridData.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.AssetNumber === reeferID.AssetNumber)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_GensetHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].AssetNumber + \"_GensetHistoryGrid_\";\r\n\r\n }\r\n }\r\n //End\r\n //Start RCNG-1587\r\n else if (FileName == \"ChassisHistoryGrid\" || FileName == \"ChassisHistory\" || FileName == \"ChassisMap\") {\r\n if (FileName == \"ChassisMap\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"ChassisGrid_\";\r\n else {\r\n reefereList = this.props.gridData.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.AssetNumber === reeferID.AssetNumber)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_ChassisHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].AssetNumber + \"_ChassisHistoryGrid_\";\r\n\r\n }\r\n } //End\r\n //RCNG-1586 start\r\n else if (FileName == \"DryHistoryGrid\" || FileName == \"DryHistory\" || FileName == \"DryMap\") {\r\n if (FileName == \"DryMap\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"DryGrid_\";\r\n else {\r\n reefereList = this.props.gridData.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.AssetNumber === reeferID.AssetNumber)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_DryHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].AssetNumber + \"_DryHistoryGrid_\";\r\n\r\n }\r\n }\r\n //End\r\n switch (FileName) {\r\n //1. Reefers\r\n case \"ReeferGrid\":\r\n return \"ReeferGrid_\"; //RCNG-1584\r\n case \"ReeferStatusGrid\":\r\n return \"ReeferGrid_\"; //RCNG-1584\r\n case \"ReeferMapGrid\":\r\n return ReeferId; //RCNG-1584\r\n case \"ReeferHistoryGrid\":\r\n return ReeferId; //RCNG-1584\r\n case \"ReeferHistory\": //RCNG-1584\r\n return ReeferId;\r\n\r\n\r\n //2. Gensets\r\n case \"GensetHistoryGrid\":\r\n return ReeferId; //RCNG - 1585\r\n case \"GensetHistory\": //RCNG - 1585\r\n return ReeferId;\r\n case \"GensetMap\":\r\n return ReeferId; //RCNG - 1585\r\n case \"GensetStatusGrid\":\r\n return \"GensetGrid_\"; //RCNG - 1585\r\n case \"GensetStatus\":\r\n return \"GensetGrid_\"; //RCNG - 1585\r\n\r\n //3. Drys\r\n case \"DryStatusGrid\":\r\n return \"DryGrid_\"; //RCNG-1586\r\n case \"DryHistoryGrid\":\r\n return ReeferId; //RCNG-1586\r\n case \"DryHistory\":\r\n return ReeferId; //RCNG-1586\r\n case \"DryMap\":\r\n return ReeferId; //RCNG-1586\r\n case \"DryStatus\":\r\n return \"DryGrid_\"; //RCNG-1586\r\n\r\n\r\n //4. Chassis\r\n case \"ChassisStatusGrid\":\r\n return \"ChassisGrid_\";//RCNG-1587\r\n case \"ChassisHistoryGrid\":\r\n return ReeferId;//RCNG-1587\r\n case \"ChassisHistory\": //RCNG-1587\r\n return ReeferId;\r\n case \"ChassisMap\":\r\n return ReeferId; //RCNG-1587\r\n case \"ChassisStatus\":\r\n return \"ChassisGrid_\";//RCNG-1587\r\n\r\n default:\r\n return FileName;\r\n }\r\n\r\n }\r\n}\r\n\r\nexport class ExportToExcelConfirmWindow extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n static close() {\r\n $(\"#confirmPopUpModel .btn-close\").click();\r\n }\r\n static showConfirmBox(Message, OkMethod, cancelMethod, FunctionID, gridData, colDefs, formName, parentchild) {\r\n\r\n ReactDom.render(, document.getElementById('divMsboxDynamicContent'));\r\n setTimeout(function () {\r\n $('#confirmPopUpModel').show();\r\n }, 50);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n }\r\n}","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport $ from 'jquery';\r\nimport { ReeferMapGrid } from '../childcomponents/ReeferMapGrid';\r\nimport { AdvanceSearch } from '../childcomponents/AdvanceSearch';\r\nimport { ReeferMap } from '../childcomponents/ReeferMap';\r\nimport passed from '../../images/passed.png';\r\nimport failed from '../../images/failed.png';\r\nimport aborted from '../../images/aborted.png';\r\nimport runningtime from '../../images/running-time.png';\r\nimport questionMark from '../../images/questionMark.png';\r\nimport batterycritical from '../../images/battery-critical.svg';\r\nimport batterylow from '../../images/battery-low.svg';\r\nimport batterynormal from '../../images/battery-normal.svg';\r\nimport lodashfilter from 'lodash/filter';\r\nvar Config: any = require('../../Config.json');\r\nvar DateFormat = require('dateformat');\r\nvar tempFormat;\r\nvar timeFormat;\r\nvar PTReport;\r\nvar ReportReeferId;\r\n\r\nexport class PinInfoboxDescription extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n tempFormat = GetTempColumnFormatter();\r\n timeFormat = GetTimeZoneFormatter().toString();\r\n PTReport = '';\r\n ReportReeferId = ''; \r\n }\r\n componentDidMount() {\r\n $('#ancResolveaddress_' + this.props.divid).click(this.ResolveAddress.bind(this));\r\n $('#PreTripReport_' + this.props.divid).click(this.popUpGetPTIReport.bind(this));\r\n //$('.infobox-close').click(this.DisablePushpinHover.bind(this));\r\n $(\"#status\" + this.props.divid).show();\r\n $(document).ready(function () {\r\n //$(\".tab-content\").hide();\r\n //$(\"#map-callout-tabcontent\").find(\"#status\").show();\r\n $(\".tabs-menu a\").click(function (event) {\r\n event.preventDefault();\r\n $(this).parent().addClass(\"active\");\r\n $(this).parent().siblings().removeClass(\"active\");\r\n var tab = $(this).attr(\"href\");\r\n //$(\".tab-content\").not(tab).css(\"display\", \"none\"); \r\n //$(tab).fadeIn();\r\n //$(tab).show();\r\n $(\".tab-content\").hide();\r\n $(tab).show();\r\n // alert(tab);\r\n });\r\n \r\n }); \r\n \r\n }\r\n //DisablePushpinHover(){\r\n // $('.infobox-close').unbind('click');\r\n // ReeferCallout.ResetCalloutState();\r\n // MapCallout.ResetCalloutState();\r\n //}\r\n ResolveAddress() {\r\n var url = Config.ReverseGeocodeRestApi + this.props.selectedPin.GPSLatitude + \",\" + this.props.selectedPin.GPSLongitude + \"?key=\" + Config.BingMapsKey;\r\n //alert(url);\r\n //var request = RCUtils.FetchRequest(url, {\r\n // method: 'GET', headers: {\"Access-Control-Allow-Origin\": \"*\", mode: 'no-cors','Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(response => response)\r\n // .then(data => {\r\n // debugger\r\n // alert(JSON.stringify(data));\r\n // $('#ancResolveaddress').parent().html(data[\"formattedAddress\"]);\r\n // });\r\n var divid = this.props.divid;\r\n $.get(url, function (data, status) {\r\n var responseData = JSON.parse(JSON.stringify(data));\r\n if (responseData.resourceSets[0].resources.length == 0)\r\n $('#ancResolveaddress_' + divid).parent().html(\"No results found.\");\r\n else\r\n $('#ancResolveaddress_' + divid).parent().html(responseData.resourceSets[0].resources[0].address.formattedAddress);\r\n });\r\n \r\n }\r\n\r\n popUpGetPTIReport() { \r\n var selectedPin = this.props.selectedPin; \r\n if (selectedPin != undefined && selectedPin != null && selectedPin != '') { \r\n if (this.props.mapName == \"current\")\r\n ReeferMapGrid.popUpGetPTIReport(selectedPin);\r\n else if(this.props.mapName == \"status\")\r\n ReeferMap.popUpGetPTIReport(selectedPin);\r\n }\r\n }\r\n \r\n \r\n\r\n public render() {\r\n var alarmsCss = { 'color': '#000', 'word-wrap':'break-word' };\r\n //var reeferCss = { 'font-weight': 'bold' };\r\n var preTripClass = 'nav-item hidden';\r\n var selectedRow = this.props.selectedPin; \r\n\r\n if (this.props.mapName == \"current\" || this.props.mapName == \"status\")\r\n preTripClass = 'nav-item';\r\n\r\n var gpsLatLongCss = {};\r\n if (selectedRow.GPSLatitude != 0 && selectedRow.GPSLongitude != 0 && (selectedRow.GPSLockState == null || selectedRow.GPSLockState == '' || selectedRow.GPSLockState.toUpperCase() != \"LOCKED\"))\r\n if (selectedRow.GPSLatitude != null && selectedRow.GPSLongitude != null)\r\n gpsLatLongCss = { 'color': 'gray', 'font-style': 'italic' };\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Reefer ID:{selectedRow.ReeferID}
    Device Fence:{StringTypeFormatter(selectedRow.GeofenceName)}
    Server Fence:{StringTypeFormatter(selectedRow.ServerGeofenceName)}
    Latitude:{GPSLatitudeFormatter(selectedRow)}
    Longitude:{GPSLongitudeFormatter(selectedRow)}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Reefer ID:{selectedRow.ReeferID}
    Event Time {timeFormat}:{DateTimeConverter(selectedRow.EventDTTM)}
    Event:
    {EventDescriptionFormatters(selectedRow, this.props.reeferFormatters)}
    Setpoint Temp {tempFormat}:{TemperatureFormatter(selectedRow.SetPoint)}Alarm:
    {AlarmListFormatter(selectedRow.AlarmsList)}
    Return Temp {tempFormat}:{TemperatureFormatter(selectedRow.ReturnTemp1)}Reefer Attached:{YesNoFormatter(selectedRow.IsReeferPhysicallyConnected)}PWR:{pwrStateFormatter(selectedRow.DevicePowerSourceCd, selectedRow.DeviceConfig)}
    Supply Temp {tempFormat}:{TemperatureFormatter(selectedRow.SupplyTemp1)}RUN :{runStateFormatter(selectedRow.RunState)}
    Ambient Temp {tempFormat}:{TemperatureFormatter(selectedRow.AmbientTemp)}Device Bat. (V):{BattVoltageFormatter(selectedRow.BatteryVoltage)}
    Controller Mode:{StringTypeFormatter(selectedRow.ControlModeID)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Return Temp 2 {tempFormat}:{TemperatureFormatter(selectedRow.ReturnTemp2)} Humidity Setpoint:{HumiditySetpointFormatter(selectedRow.HumiditySetpoint)}
    Supply Temp 2 {tempFormat}:{TemperatureFormatter(selectedRow.SupplyTemp2)} O2 Setpoint:{SensorDataFormatter(selectedRow.O2Setpoint)}
    Suction Temp {tempFormat}:{TemperatureFormatter(selectedRow.CompressorSuctionTemp)} CO2 Setpoint:{SensorDataFormatter(selectedRow.CO2Setpoint)}
    Suction Press:{SensorDataFormatter(selectedRow.CompositeSuctionPressure)} USDA 1 {tempFormat}:{TemperatureFormatter(selectedRow.USDA1Temp)}
    Discharge Press:{SensorDataFormatter(selectedRow.DischargePressure)} USDA 2 {tempFormat}:{TemperatureFormatter(selectedRow.USDA2Temp)}
    Condenser Press:{sensorDataPCondFormatter(selectedRow.ReeferOEMTypeCd, selectedRow.CondenserPressure)} USDA 3 {tempFormat}:{TemperatureFormatter(selectedRow.USDA3Temp)}
    3-Phase Current:{Current3PhaseFormatter(selectedRow.ThreePhaseCurrent)} USDA 4/Cargo {tempFormat}:{TemperatureFormatter(selectedRow.Cargo4Temp)}
    Frequency:{LineFrequencyFormatter(selectedRow.LineFrequency, selectedRow.LineFrequencyQualifier, selectedRow.ReeferOEMTypeCd, selectedRow.ControllerTypeCd)} Fresh Air Ex:{selectedRow.VentPositionSensorCMH}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    Booking #:{StringTypeFormatter(selectedRow.BookingNumber)}
    BK temp {tempFormat}:{TemperatureFormatterForBooking(selectedRow.TemperatureUnit)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    PTI Time {timeFormat}:{DateTimeConverter(selectedRow.PTRDateTime)}
    PTI Report:
    {(selectedRow.ReeferID != null && ((selectedRow.ReeferOEMTypeCd != null && selectedRow.ReeferOEMTypeCd.trim() != 'T') || (selectedRow.OEMModel == 'MP3000A' || selectedRow.OEMModel == 'MP3000'))) ? Show Pre-Trip Results : '-NA-'}
    PTI Result:{(selectedRow.PTResult != null && selectedRow.PTResult.trim() != '-NA-' && selectedRow.PTResult.trim() != '') ? : '-NA-'}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport class GensetPinInfoboxDescription extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n tempFormat = GetTempColumnFormatter();\r\n timeFormat = GetTimeZoneFormatter().toString();\r\n }\r\n componentDidMount() {\r\n $('#ancResolveaddress_' + this.props.divid).click(this.ResolveGensetAddress.bind(this));\r\n $(\"#status\" + this.props.divid).show();\r\n $(document).ready(function () {\r\n //$(\".tab-content\").hide();\r\n //$(\"#map-callout-tabcontent\").find(\"#status\").show();\r\n $(\".tabs-menu a\").click(function (event) {\r\n event.preventDefault();\r\n $(this).parent().addClass(\"active\");\r\n $(this).parent().siblings().removeClass(\"active\");\r\n var tab = $(this).attr(\"href\");\r\n //$(\".tab-content\").not(tab).css(\"display\", \"none\"); \r\n //$(tab).fadeIn();\r\n //$(tab).show();\r\n $(\".tab-content\").hide();\r\n $(tab).show();\r\n // alert(tab);\r\n });\r\n });\r\n }\r\n ResolveGensetAddress() {\r\n var url = Config.ReverseGeocodeRestApi + this.props.selectedPin.Latitude + \",\" + this.props.selectedPin.Longitude + \"?key=\" + Config.BingMapsKey;\r\n //alert(url);\r\n //var request = RCUtils.FetchRequest(url, {\r\n // method: 'GET', headers: {\"Access-Control-Allow-Origin\": \"*\", mode: 'no-cors','Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(response => response)\r\n // .then(data => {\r\n // debugger\r\n // alert(JSON.stringify(data));\r\n // $('#ancResolveaddress').parent().html(data[\"formattedAddress\"]);\r\n // });\r\n var divid = this.props.divid;\r\n $.get(url, function (data, status) {\r\n var responseData = JSON.parse(JSON.stringify(data));\r\n if (responseData.resourceSets[0].resources.length == 0)\r\n $('#ancResolveaddress_' + divid).parent().html(\"No results found.\");\r\n else\r\n $('#ancResolveaddress_' + divid).parent().html(responseData.resourceSets[0].resources[0].address.formattedAddress);\r\n });\r\n\r\n }\r\n public render() {\r\n var alarmsCss = { 'color': '#000', 'word-wrap': 'break-word' };\r\n //var reeferCss = { 'font-weight': 'bold' };\r\n var selectedRow = this.props.selectedPin;\r\n\r\n var gpsLatLongCss = {};\r\n if (selectedRow.Latitude != 0 && selectedRow.Longitude != 0 && (selectedRow.GPSLockState == null || selectedRow.GPSLockState == '' || selectedRow.GPSLockState.toUpperCase() != \"LOCKED\"))\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null)\r\n gpsLatLongCss = { 'color': 'gray', 'font-style': 'italic' };\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    Genset ID:{selectedRow.AssetNumber}
    Device Fence:{StringTypeFormatter(selectedRow.FenceName)}
    Server Fence:{StringTypeFormatter(selectedRow.BackendGeofenceName)}
    Latitude:{GensetLatitudeFormatter(selectedRow)}
    Longitude:{GensetLongitudeFormatter(selectedRow)}
    \r\n \r\n {/* // RCNG 1257 */\r\n\r\n selectedRow.Address != '' && selectedRow.Address != null ?
    {selectedRow.Address}
    :\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Genset ID:{selectedRow.AssetNumber}
    Event Time {timeFormat}:{DateTimeConverter(selectedRow.EventDTTM)}
    Event:{StringTypeFormatter(selectedRow.EventDescription)}
    Switch:{gensetSwitchFormatter(selectedRow.IgnitionOn)}Device Bat. (V):{BattVoltageFormatter(selectedRow.BattVoltage)}
    Engine:{gensetRunningFormatter(selectedRow.HasOilPressureSwitch, selectedRow.GensetRunning, selectedRow.OEMTypeCD)}Genset Bat. (V):{BattVoltageFormatter(selectedRow.ExtBattVoltage)}
    Alarm:
    {AlarmListFormatter(selectedRow.AlarmsList)}
    Fuel (gal.):{fillLevelGalTrace(selectedRow.FuelLevel, selectedRow.FuelLevelQualifier, selectedRow.FuelLevelQualifierDesc, selectedRow.HasFuelSensor)}
    Reefer ID:{'-NA-'}Fuel Level:\r\n {(\r\n (selectedRow.HasFuelSensor != null && selectedRow.HasFuelSensor.toString().toUpperCase().trim() == \"TRUE\") ?\r\n (\r\n (selectedRow.FuelLevelQualifier != null && ((selectedRow.FuelLevelQualifier == 'A') ||\r\n (selectedRow.FuelLevelQualifier == 'P')) && selectedRow.FuelLevelTierNumber != null)\r\n ?\r\n \r\n :\r\n (fillLevelTrace(selectedRow) == \"FRU\" ?\r\n
    Fuel Reading Unavailable
    :\r\n fillLevelTrace(selectedRow) == \"FSE\" ?\r\n
    Sensor Error
    :\r\n fillLevelTrace(selectedRow))) : No Sensor)\r\n }
    Reefer State :{StringTypeFormatter(selectedRow.ReeferStateDsc)}
    \r\n
    \r\n
    \r\n
    \r\n
    {AlarmListFormatter(selectedRow.AlarmsList)}
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\n\r\nexport class DryPinInfoboxDescription extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n tempFormat = GetTempColumnFormatter();\r\n timeFormat = GetTimeZoneFormatter().toString();\r\n }\r\n componentDidMount() {\r\n $('#ancResolveaddress_' + this.props.divid).click(this.ResolveDryAddress.bind(this));\r\n $(\"#status\" + this.props.divid).show();\r\n $(document).ready(function () {\r\n //$(\".tab-content\").hide();\r\n //$(\"#map-callout-tabcontent\").find(\"#status\").show();\r\n $(\".tabs-menu a\").click(function (event) {\r\n event.preventDefault();\r\n $(this).parent().addClass(\"active\");\r\n $(this).parent().siblings().removeClass(\"active\");\r\n var tab = $(this).attr(\"href\");\r\n //$(\".tab-content\").not(tab).css(\"display\", \"none\"); \r\n //$(tab).fadeIn();\r\n //$(tab).show();\r\n $(\".tab-content\").hide();\r\n $(tab).show();\r\n // alert(tab);\r\n });\r\n });\r\n }\r\n ResolveDryAddress() {\r\n var url = Config.ReverseGeocodeRestApi + this.props.selectedPin.Latitude + \",\" + this.props.selectedPin.Longitude + \"?key=\" + Config.BingMapsKey;\r\n //alert(url);\r\n //var request = RCUtils.FetchRequest(url, {\r\n // method: 'GET', headers: {\"Access-Control-Allow-Origin\": \"*\", mode: 'no-cors','Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(response => response)\r\n // .then(data => {\r\n // debugger\r\n // alert(JSON.stringify(data));\r\n // $('#ancResolveaddress').parent().html(data[\"formattedAddress\"]);\r\n // });\r\n var divid = this.props.divid;\r\n $.get(url, function (data, status) {\r\n var responseData = JSON.parse(JSON.stringify(data));\r\n if (responseData.resourceSets[0].resources.length == 0)\r\n $('#ancResolveaddress_' + divid).parent().html(\"No results found.\");\r\n else\r\n $('#ancResolveaddress_' + divid).parent().html(responseData.resourceSets[0].resources[0].address.formattedAddress);\r\n });\r\n\r\n }\r\n public render() {\r\n var alarmsCss = { 'color': '#000', 'word-wrap': 'break-word' };\r\n //var reeferCss = { 'font-weight': 'bold' };\r\n var selectedRow = this.props.selectedPin;\r\n\r\n var gpsLatLongCss = {};\r\n if (selectedRow.Latitude != 0 && selectedRow.Longitude != 0 && (selectedRow.GPSLockState == null || selectedRow.GPSLockState == '' || selectedRow.GPSLockState.toUpperCase() != \"LOCKED\"))\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null)\r\n gpsLatLongCss = { 'color': 'gray', 'font-style': 'italic' };\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Dry Container ID:{selectedRow.AssetNumber}
    Device Fence:{StringTypeFormatter(selectedRow.FenceName)}
    Server Fence:{StringTypeFormatter(selectedRow.BackendGeofenceName)}
    Latitude:{GensetLatitudeFormatter(selectedRow)}
    Longitude:{GensetLongitudeFormatter(selectedRow)}
    Location accuracy (m):{StringTypeFormatter(selectedRow.PositionAccuracy)}
    \r\n {/* // RCNG 1232 */\r\n \r\n selectedRow.Address != '' && selectedRow.Address != null ?
    {selectedRow.Address}
    :\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Dry Container ID:{selectedRow.AssetNumber}
    Event Time {timeFormat}:{DateTimeConverter(selectedRow.EventDTTM)}
    Event:
    {StringTypeFormatter(selectedRow.EventDescription)}
    Device Bat. (V):{BattVoltageFormatter(selectedRow.BattVoltage)}
    Door:{DrydoorFormatter(selectedRow.Door1Open, selectedRow.HasDoorSensor)}
    \r\n
    \r\n
    \r\n
    \r\n
    {AlarmListFormatter(selectedRow.AlarmsList)}
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\nexport class ChassisPinInfoboxDescription extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n tempFormat = GetTempColumnFormatter();\r\n timeFormat = GetTimeZoneFormatter().toString();\r\n }\r\n componentDidMount() {\r\n $('#ancResolveaddress_' + this.props.divid).click(this.ResolveChassisAddress.bind(this));\r\n $(\"#status\" + this.props.divid).show();\r\n $(document).ready(function () {\r\n //$(\".tab-content\").hide();\r\n //$(\"#map-callout-tabcontent\").find(\"#status\").show();\r\n $(\".tabs-menu a\").click(function (event) {\r\n event.preventDefault();\r\n $(this).parent().addClass(\"active\");\r\n $(this).parent().siblings().removeClass(\"active\");\r\n var tab = $(this).attr(\"href\");\r\n //$(\".tab-content\").not(tab).css(\"display\", \"none\"); \r\n //$(tab).fadeIn();\r\n //$(tab).show();\r\n $(\".tab-content\").hide();\r\n $(tab).show();\r\n // alert(tab);\r\n });\r\n });\r\n }\r\n ResolveChassisAddress() {\r\n var url = Config.ReverseGeocodeRestApi + this.props.selectedPin.Latitude + \",\" + this.props.selectedPin.Longitude + \"?key=\" + Config.BingMapsKey;\r\n //alert(url);\r\n //var request = RCUtils.FetchRequest(url, {\r\n // method: 'GET', headers: {\"Access-Control-Allow-Origin\": \"*\", mode: 'no-cors','Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(response => response)\r\n // .then(data => {\r\n // debugger\r\n // alert(JSON.stringify(data));\r\n // $('#ancResolveaddress').parent().html(data[\"formattedAddress\"]);\r\n // });\r\n var divid = this.props.divid;\r\n $.get(url, function (data, status) {\r\n var responseData = JSON.parse(JSON.stringify(data));\r\n if (responseData.resourceSets[0].resources.length == 0)\r\n $('#ancResolveaddress_' + divid).parent().html(\"No results found.\");\r\n else\r\n $('#ancResolveaddress_' + divid).parent().html(responseData.resourceSets[0].resources[0].address.formattedAddress);\r\n });\r\n\r\n }\r\n public render() {\r\n var alarmsCss = { 'color': '#000', 'word-wrap': 'break-word' };\r\n //var reeferCss = { 'font-weight': 'bold' };\r\n var selectedRow = this.props.selectedPin;\r\n\r\n var gpsLatLongCss = {};\r\n if (selectedRow.Latitude != 0 && selectedRow.Longitude != 0 && (selectedRow.GPSLockState == null || selectedRow.GPSLockState == '' || selectedRow.GPSLockState.toUpperCase() != \"LOCKED\"))\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null)\r\n gpsLatLongCss = { 'color': 'gray', 'font-style': 'italic' };\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    Chassis ID:{selectedRow.AssetNumber}
    Device Fence:{StringTypeFormatter(selectedRow.FenceName)}
    Server Fence:{StringTypeFormatter(selectedRow.BackendGeofenceName)}
    Latitude:{GensetLatitudeFormatter(selectedRow)}
    Longitude:{GensetLongitudeFormatter(selectedRow)}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Chassis ID:{selectedRow.AssetNumber}
    Event Time {timeFormat}:{DateTimeConverter(selectedRow.EventDTTM)}
    Event:
    {StringTypeFormatter(selectedRow.EventDescription)}
    RUN:{'-NA-'}Device Bat. (V):{BattVoltageFormatter(selectedRow.BattVoltage)}
    Reefer ID:{'-NA-'}Vehicle Bat. (V):{selectedRow.DeviceBattery}
    PWR:{pwrStateFormatterChassis(selectedRow.PWR)}Tire Pressure:{FloatTypeFormatter(selectedRow.TyrePressure)}
    Loaded:{LoadedFormatter(selectedRow.Loaded)}Brake Signal:{BrakeSignalFormatter(selectedRow.BreakSignal)}
    BATT:{ChassisBatteryStatusFormatter(selectedRow.ChassisBatteryStatus)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\nexport class PinInfoboxNoLocation extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n }\r\n componentDidMount() {\r\n $('#btnClosePopup').click(this.ClosePopup.bind(this));\r\n }\r\n ClosePopup() {\r\n $(\"#infobox_\" + this.props.divid).hide();\r\n }\r\n public render() {\r\n var style = { 'min-height': '50px', 'width': '240px' };\r\n var disable = { 'display': 'none' };\r\n return (\r\n
    \r\n
    Alert
    \r\n
    \r\n
    -No Location-
    \r\n ) \r\n }\r\n}\r\n\r\nexport class PinInfoboxFenceLocation extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n timeFormat = GetTimeZoneFormatter().toString();\r\n }\r\n\r\n componentDidMount() {\r\n $('#ancFindAssets_' + this.props.divid).click(this.findAssetsAtThisLocation.bind(this));\r\n }\r\n\r\n findAssetsAtThisLocation() {\r\n var fenceTag = this.props.selectedPin.Tag;\r\n\r\n if (fenceTag != null && fenceTag != \"\" && fenceTag != undefined) {\r\n AdvanceSearch.FindAssetByFenceLocation(fenceTag);\r\n }\r\n }\r\n \r\n public render() {\r\n var selectedRow = this.props.selectedPin;\r\n //var reeferCss = { 'font-weight': 'bold' };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Fence ID:{selectedRow.Tag}
    Fence Name:{StringTypeFormatter(selectedRow.Name)}
    Address:{StringTypeFormatter(selectedRow.Address)}
    Fence Type:{FenceTypeFormatter(selectedRow.GeofenceCategoryCd)}
    Last Updated Time {timeFormat}:{DateTimeConverter(selectedRow.EffectiveDTTM)}
    \r\n {\r\n this.props.source == \"Dashboard\" ?\r\n \r\n : \"\"\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n ) \r\n }\r\n}\r\n\r\nfunction ReeferPowerSource(rcdPowerSourceCd) {\r\n var rcdPwrSource = '-NA-';\r\n if (rcdPowerSourceCd != null && rcdPowerSourceCd != undefined && rcdPowerSourceCd != '') {\r\n switch (rcdPowerSourceCd.toString().toUpperCase().trim()) {\r\n case \"A\":\r\n rcdPwrSource = \"AC\";\r\n break;\r\n case \"B\":\r\n rcdPwrSource = \"Battery\";\r\n break;\r\n }\r\n }\r\n return rcdPwrSource;\r\n}\r\nfunction FenceTypeFormatter(params) {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.toString().trim() == \"D\")\r\n return \"Device Fence\";\r\n else if (params.toString().trim() == \"R\")\r\n return \"Region Fence\";\r\n else if (params.toString().trim() == \"B\")\r\n return \"Server Fence\";\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n}\r\n\r\nfunction StringTypeFormatter(params) {\r\n if (params != null && params != undefined && params != '') {\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n}\r\nfunction gensetSwitchFormatter(params) {\r\n if (params != null && params != undefined) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"On\";\r\n else\r\n return \"Off\";\r\n }\r\n else\r\n return '-NA-';\r\n}\r\nfunction DateTimeConverter(dttmValue) {\r\n if (dttmValue == \"\" || dttmValue == null) {\r\n return '-NA-';\r\n }\r\n else {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date(dttmValue);\r\n var prefDateTime = new Date(eventdttm.getTime() + (parseInt(timeZoneOffset) * 60000));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n\r\n }\r\n}\r\nfunction YearFromDateTimeConverter(dttmValue) {\r\n if (dttmValue == \"\" || dttmValue == null) {\r\n return '-NA-';\r\n }\r\n else {\r\n var eventdttm = new Date(dttmValue);\r\n return eventdttm.getFullYear();\r\n\r\n }\r\n}\r\nfunction TemperatureFormatter(params) {\r\n //var tempRoundingValue = \"1\";\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else {\r\n var tempVal = parseFloat(params);\r\n\r\n if (tempUnitCd.toUpperCase() == \"F\") {\r\n tempVal = ((tempVal * 9) / 5) + 32;\r\n\r\n var param = parseFloat(tempVal.toString());\r\n // return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n return tempRoundingValue > 0 ? param.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n param.toFixed(parseInt(tempRoundingValue)) : param.toFixed(1);\r\n }\r\n else\r\n //return parseFloat(params.toFixed(parseInt(tempRoundingValue)));\r\n return tempRoundingValue > 0 ? params.toFixed(parseInt(tempRoundingValue)).toString() === \"-0.0\" ? parseFloat(\"0.0\").toFixed(1) :\r\n params.toFixed(parseInt(tempRoundingValue)) : params.toFixed(1);\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n}\r\nfunction TemperatureFormatterForBooking(params) {\r\n //var tempRoundingValue = \"1\";\r\n var tempRoundingValue = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureRoundPrecision;\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n var BookedTemperature = null;\r\n var TempUnit = null;\r\n if (params != null) {\r\n var strlstValues = params.split('@');\r\n BookedTemperature = strlstValues[0];\r\n TempUnit = strlstValues[1];\r\n if (TempUnit.toUpperCase() == \"N\")\r\n return \"Non-Running\";\r\n else if (TempUnit.toUpperCase() != tempUnitCd.toUpperCase()) {\r\n if (\"F\" == tempUnitCd.toUpperCase()) {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = ((tempValue * 9) / 5) + 32;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else {\r\n var tempValue = parseFloat(BookedTemperature.toString());\r\n tempValue = (tempValue - 32) * 5 / 9;\r\n var param = parseFloat(tempValue.toString());\r\n return parseFloat(param.toFixed(parseInt(tempRoundingValue)));\r\n }\r\n }\r\n else\r\n return parseFloat(parseFloat(BookedTemperature.toString()).toFixed(parseInt(tempRoundingValue)));\r\n }\r\n else\r\n return '-NA-';\r\n}\r\n//function GPSLongitudeFormatter(params) {\r\n// if (params != null && params != undefined && params != '') {\r\n// if (params.GPSLongitude != null) {\r\n// //params.GPSLongitude = ' ' + params.GPSLongitude + '';\r\n\r\n// return params.GPSLongitude;\r\n// }\r\n// else\r\n// return '-NA-';\r\n// }\r\n\r\n//}\r\n//function GensetLongitudeFormatter(params) {\r\n// if (params != null && params != undefined && params != '') {\r\n// if (params.Longitude != null) {\r\n// //params.GPSLongitude = ' ' + params.GPSLongitude + '';\r\n\r\n// return params.Longitude;\r\n// }\r\n// else\r\n// return '-NA-';\r\n// }\r\n\r\n//}\r\n//function GPSLatitudeFormatter(params) {\r\n// if (params != null && params != undefined && params != '') {\r\n// if (params.GPSLatitude != null) {\r\n// //params.GPSLatitude = ' ' + params.GPSLatitude + '';\r\n\r\n// return params.GPSLatitude;\r\n// }\r\n// else\r\n// return '-NA-';\r\n// }\r\n\r\n//}\r\n//function GensetLatitudeFormatter(params) {\r\n// if (params != null && params != undefined && params != '') {\r\n// if (params.Latitude != null) {\r\n// //params.GPSLatitude = ' ' + params.GPSLatitude + '';\r\n\r\n// return params.Latitude;\r\n// }\r\n// else\r\n// return '-NA-';\r\n// }\r\n\r\n//}\r\n\r\nfunction GensetLatitudeFormatter(params) {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.Latitude != null && params.Latitude != undefined && params.Latitude.toString() != \"\") {\r\n var lat = parseFloat(params.Latitude.toString());\r\n var param = parseFloat(lat.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n}\r\n\r\nfunction GensetLongitudeFormatter(params) {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.Longitude != null && params.Longitude != undefined && params.Longitude.toString() != \"\") {\r\n var longitute = parseFloat(params.Longitude.toString());\r\n var param = parseFloat(longitute.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n}\r\n\r\n\r\nfunction GPSLatitudeFormatter(params) {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.GPSLatitude != null && params.GPSLatitude != undefined && params.GPSLatitude.toString() != \"\") {\r\n var lat = parseFloat(params.GPSLatitude.toString());\r\n var param = parseFloat(lat.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n}\r\n\r\nfunction GPSLongitudeFormatter(params) {\r\n if (params != null && params != undefined) {\r\n var tempRoundingValue = \"6\";\r\n if (params.GPSLongitude != null && params.GPSLongitude != undefined && params.GPSLongitude.toString() != \"\") {\r\n var longitute = parseFloat(params.GPSLongitude.toString());\r\n var param = parseFloat(longitute.toFixed(parseInt(tempRoundingValue)).toString());\r\n return param;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n\r\n\r\nfunction YesNoFormatter(params) {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n if (params.toString().toUpperCase().trim() == \"0\" || params.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"No\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"1\" || params.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"Yes\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n}\r\nfunction gensetRunningFormatter(HasOilPressureSwitch, GensetRunning,OEMTypeCD) {\r\n if (HasOilPressureSwitch != null && GensetRunning != null) {\r\n if (HasOilPressureSwitch.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (OEMTypeCD != null && OEMTypeCD.toString().toUpperCase().trim() == \"C\") {\r\n return \"-NA-\";\r\n }\r\n\r\n if (GensetRunning.toString().toUpperCase().trim() == \"0\" || GensetRunning.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"Off\";//\"No\";\r\n }\r\n else if (GensetRunning.toString().toUpperCase().trim() == \"1\" || GensetRunning.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"On\";//\"Yes\";\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n}\r\nfunction runStateFormatter(RunState) {\r\n if (RunState != null && RunState != undefined) {\r\n if ((RunState.toString().toUpperCase().trim()) == 'I')\r\n return \"Running\";\r\n else if ((RunState.toString().toUpperCase().trim()) == 'S')\r\n return \"Standby\";\r\n else if ((RunState.toString().toUpperCase().trim()) == 'X')\r\n return \"Faulty\";\r\n else if ((RunState.toString().toUpperCase().trim()) == 'O')\r\n return \"Offline\";\r\n else\r\n return '';\r\n }\r\n\r\n return '';\r\n}\r\nfunction doorFormatter(Door1Open, HasDoorSensor) {\r\n if (HasDoorSensor != null && HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (Door1Open != null) {\r\n if (Door1Open.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\";\r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n}\r\nfunction DrydoorFormatter(Door1Open, HasDoorSensor) {\r\n if (HasDoorSensor != null && HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (Door1Open != null) {\r\n switch (Door1Open.toString().toUpperCase().trim()) {\r\n case \"OPN\":\r\n return \"Open\";\r\n case \"CLS\":\r\n return \"Closed\";\r\n case \"DIS\":\r\n return \"Sensor Error\"\r\n case \"UNP\":\r\n return \"No Sensor\";\r\n case \"UNK\":\r\n return \"-NA-\";\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n}\r\nfunction FenceStatusFormatter(params) {\r\n if (params != null && params != undefined && params.toString() != '') {\r\n if (params.toString().toUpperCase().trim() == \"0\" || params.toString().toUpperCase().trim() == \"FALSE\") {\r\n return \"OUT\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"1\" || params.toString().toUpperCase().trim() == \"TRUE\") {\r\n return \"IN\";\r\n }\r\n else {\r\n return \"-NA-\";\r\n }\r\n }\r\n return \"-NA-\";\r\n}\r\nfunction AlarmListFormatter(params) {\r\n // debugger;\r\n if (params != null && params != undefined && params != '') {\r\n if (params.toString().endsWith(\",\")) {\r\n params = params.slice(0, -1);\r\n }\r\n return params;\r\n }\r\n\r\n else return \"\";\r\n}\r\nfunction EventDescriptionFormatters(params, formatters) {\r\n var eventDesc = '-NA-';\r\n var customerSpecificEventList = formatters.CustomerSpecificEventList;\r\n var eventMasterList = formatters.EventMasterList;\r\n if (params != null && params != undefined && params != \"null\") {\r\n var reeferOEMTypeCd = params.ReeferOEMTypeCd == null ? \"\" : params.ReeferOEMTypeCd; // WI 26532\r\n if (params.EventMasterID != null && params.EventMasterID != \"\" && params.EventMasterID != \"null\") {\r\n var eventlist = lodashfilter(customerSpecificEventList, function (item) {\r\n return item.EventMasterID === params.EventMasterID;\r\n });\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n var custSpecificEventList = lodashfilter(eventlist, function (item) {\r\n return item.CustomerID === custId;\r\n });\r\n var finalcustSpecificEventList = lodashfilter(custSpecificEventList, function (item) {\r\n return item.OEMType === reeferOEMTypeCd.toString().trim();// WI 26532\r\n });\r\n if (finalcustSpecificEventList != null && finalcustSpecificEventList.length) {\r\n eventDesc = finalcustSpecificEventList.length > 0 ? finalcustSpecificEventList[0].EventDescription.toString() : \"\";\r\n }\r\n else {\r\n var eventDescription = lodashfilter(eventMasterList, function (item) {\r\n return item.EventMasterID === params.EventMasterID;\r\n });\r\n if (eventDescription.length > 0 && eventDescription != null) {\r\n if (eventDescription[0].OverrideEventDesc != null && eventDescription[0].OverrideEventDesc == true) {\r\n if (params.OEParams != null && params.OEParams != \"\" && params.OEParams.length > 0) {\r\n var OperationalEventParams = params.OEParams.trimEnd();\r\n if (OperationalEventParams != null && OperationalEventParams != \"\") {\r\n return eventDescription[0].EventDescription + OperationalEventParams; //WI26438 Operational event not shown properly in Status Grid\r\n }\r\n }\r\n }\r\n else {\r\n if (eventDescription[0].EventCd == \"ATP\" || eventDescription[0].EventCd == \"UTP\") {\r\n if (params.CustCd3P != null && params.CustCd3P != \"\" && params.CustName3P != null && params.CustName3P != \"\") {\r\n return eventDesc = eventDescription[0].EventDescription + params.CustCd3P + \" (\" + params.CustName3P + \")\";\r\n }\r\n }\r\n\r\n }\r\n return eventDesc = eventDescription[0].EventDescription;\r\n }\r\n\r\n }\r\n }\r\n return eventDesc;\r\n }\r\n\r\n return eventDesc;\r\n}\r\nfunction fillLevelGalTrace(FuelLevel, FuelLevelQualifier, FuelLevelQualifierDesc, HasFuelSensor) {\r\n if (HasFuelSensor != null && HasFuelSensor != undefined\r\n && HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n var tempRoundingValue = \"2\";\r\n if (FuelLevelQualifier != null && ((FuelLevelQualifier == 'A') || (FuelLevelQualifier == 'P'))) {\r\n return (FuelLevel != null) ? parseFloat(FuelLevel.toFixed(parseInt(tempRoundingValue))) : \"-NA-\";\r\n }\r\n else {\r\n return FuelLevelQualifierDesc;\r\n }\r\n }\r\n}\r\n\r\nfunction AlarmDescriptionFormatter(params, alarmsList, DeviceType) {\r\n var element = document.createElement(\"span\");\r\n if (params != null && params != undefined && params != '') {\r\n var lstAlarms = params.split(',');\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \"\\n\";//\", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (DeviceType != null && DeviceType != undefined && DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n //anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item + \" : \" + (alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\");\r\n anchorElement.style.color = '#F00';\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n //anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item + \" : \" + (alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\");\r\n anchorElement.style.color = '#F00';\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n }); \r\n return element.outerHTML;\r\n }\r\n\r\n else return \" No alarms \";\r\n\r\n}\r\nfunction LineFrequencyFormatter(LineFrequency: any, LineFrequencyQualifier: any, ReeferOEMTypeCd: any, ControllerTypeCd: any) {\r\n if (LineFrequency != null && LineFrequency != undefined) {\r\n if (ReeferOEMTypeCd.toString().toUpperCase().trim() == \"D\" && (ControllerTypeCd == 27 || ControllerTypeCd == 28 || ControllerTypeCd == 32)) {\r\n if (LineFrequencyQualifier != null && (LineFrequencyQualifier == 0 || LineFrequencyQualifier == 1)) {\r\n if (LineFrequency.toString().trim() == \"-999\")\r\n return \"Unknown\";\r\n return parseFloat(LineFrequency).toFixed(1).toString();\r\n }\r\n else if (LineFrequencyQualifier != null && LineFrequencyQualifier == 8) {\r\n //var value = params.value;\r\n //if(value == 19)\r\n return \"High\";\r\n }\r\n else if (LineFrequencyQualifier != null && LineFrequencyQualifier == 9) {\r\n //var value = params.value;\r\n //if(value == 35)\r\n return \"Low\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else {\r\n if (LineFrequency != null) {\r\n\r\n if (LineFrequency.toString().trim() == \"-999\") \r\n return \"OOR\";\r\n else\r\n return LineFrequency;\r\n }\r\n\r\n return \"-NA-\";\r\n }\r\n }\r\n else {\r\n if (LineFrequency != null) {\r\n\r\n if (LineFrequency.toString().trim() == \"-999\") \r\n return \"OOR\";\r\n else\r\n return LineFrequency;\r\n }\r\n\r\n return \"-NA-\";\r\n }\r\n}\r\n\r\nfunction SensorDataFormatter(params) {\r\n if (params != null) {\r\n\r\n if (params.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n\r\n return \"-NA-\";\r\n}\r\nfunction GetTempColumnFormatter() {\r\n var tempUnitCd = JSON.parse(sessionStorage.getItem('UserInfo')).TemperatureUnitCd.trim();\r\n if (tempUnitCd.toUpperCase() == \"F\")\r\n return \"(°F)\";\r\n else\r\n return \"(°C)\";\r\n}\r\nfunction GetTimeZoneFormatter() {\r\n var tempZoneCd = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneCd.trim();\r\n if (tempZoneCd != null && tempZoneCd != \"\")\r\n return \"(\" + tempZoneCd + \")\";\r\n}\r\nfunction Current3PhaseFormatter(params) {\r\n var currentValue1 = \"\";\r\n var currentValue2 = \"\";\r\n var currentValue3 = \"\";\r\n if (params != null) {\r\n var phases = params.split(\",\");\r\n if (phases[0].toString().trim() == \"-999\")\r\n currentValue1 = \"OOR\";\r\n else\r\n currentValue1 = phases[0].toString().trim();\r\n if (phases[1].toString().trim() == \"-999\")\r\n currentValue2 = \"OOR\";\r\n else\r\n currentValue2 = phases[1].toString().trim();\r\n if (phases[2].toString().trim() == \"-999\")\r\n currentValue3 = \"OOR\";\r\n else\r\n currentValue3 = phases[2].toString().trim();\r\n\r\n return currentValue1 + \", \" + currentValue2 + \", \" + currentValue3;\r\n }\r\n else\r\n return \"\";\r\n}\r\n\r\nfunction preTripFormatter(params) { \r\n var imagePath = \"\";\r\n if (params != null && params != undefined && params != '') {\r\n switch (params.toString().trim()) {\r\n case 'Passed':\r\n case 'OK':\r\n imagePath = passed;\r\n break;\r\n case 'Failed':\r\n case 'NG':\r\n imagePath = failed;\r\n break;\r\n case 'Aborted':\r\n imagePath = aborted;\r\n break;\r\n case 'Running':\r\n imagePath = runningtime;\r\n break;\r\n case 'Unknown':\r\n imagePath = questionMark;\r\n break;\r\n }\r\n }\r\n return imagePath;\r\n}\r\n\r\nfunction fillLevelTrace(params) {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor != undefined\r\n && params.HasFuelSensor === false) {\r\n return \"No Sensor\";\r\n }\r\n else {\r\n if (params != null && params != undefined && params != '') {\r\n if (params.HasFuelSensor != null && params.HasFuelSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (params.FuelLevelQualifier != null && ((params.FuelLevelQualifier == 'A') || (params.FuelLevelQualifier == 'P'))) {\r\n if (params.FuelLevelTierNumber != null) {\r\n return \"../images/FuelGaugeFractionImages/\" + params.FractionDisplayGif;\r\n }\r\n else {\r\n if (params.FuelLevelPct != null) {\r\n var tempRoundingValue = \"2\";\r\n return parseFloat(params.FuelLevelPct.toFixed(parseInt(tempRoundingValue))) + \" %\";\r\n }\r\n else {\r\n return \"FRU\";\r\n }\r\n }\r\n }\r\n else {\r\n if (params.FuelLevelQualifier == \"S\")\r\n return \"FSE\";\r\n else\r\n return params.FuelLevelQualifierDesc;\r\n }\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n}\r\n\r\nfunction sensorDataPCondFormatter(ReeferOEMypeCd, CondenserPressure) {\r\n if (ReeferOEMypeCd != null && ReeferOEMypeCd != undefined && ReeferOEMypeCd != '' && CondenserPressure != null && CondenserPressure != undefined && CondenserPressure != '') {\r\n if (ReeferOEMypeCd != null && ReeferOEMypeCd != '') {\r\n if (ReeferOEMypeCd.trim() == 'C')\r\n return '-NA-';\r\n else {\r\n if (CondenserPressure != null) {\r\n if (CondenserPressure.toString().trim() == \"-999\") //SensorOORIdentifier to be defined from RefApplicationParams\r\n return \"OOR\";\r\n else\r\n return CondenserPressure.toString();\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n return '-NA-';\r\n}\r\n\r\nfunction pwrStateFormatter(DevicePowerSourceCd, DeviceConfig) { \r\n if (DevicePowerSourceCd != null && DevicePowerSourceCd != undefined) { \r\n if (DevicePowerSourceCd == \"B\") {\r\n return \"On Battery\"; \r\n }\r\n else if (DeviceConfig != null && DeviceConfig != undefined && DeviceConfig.toString().toUpperCase().trim() == \"TRUE\" && DevicePowerSourceCd == \"A\") {\r\n return \"Charging\";\r\n }\r\n else {\r\n return \"Powered\";\r\n }\r\n }\r\n return '-NA-';\r\n}\r\n\r\nfunction pwrStateFormatterChassis(params) {\r\n //return \"-NA-\";\r\n //var imagePath = \"\";\r\n //if (params != null && params != undefined && params != '') {\r\n // switch (params.toString().toUpperCase().trim()) {\r\n // case \"C\":\r\n // imagePath = batterycritical;\r\n // break;\r\n // case \"L\":\r\n // imagePath = batterylow;\r\n // break;\r\n // case \"N\":\r\n // imagePath = batterynormal;\r\n // break;\r\n // }\r\n //}\r\n //return imagePath;\r\n if (params != null && params != undefined && params != '') {\r\n if (params.trim() == \"A\") return \"Powered\";\r\n else if (params.trim() == \"B\") return \"On Battery\";\r\n else return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n}\r\nfunction ChassisBatteryStatusFormatter(params) { \r\n if (params != null && params != undefined && params != '') { \r\n if (params.toString().toUpperCase().trim() == \"C\") {\r\n return \"Critical\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"L\") {\r\n return \"Low\";\r\n }\r\n else if (params.toString().toUpperCase().trim() == \"N\") {\r\n return \"Normal\";\r\n }\r\n return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n}\r\nfunction BrakeSignalFormatter(params) {\r\n\r\n return \"-NA-\";\r\n}\r\nfunction LoadedFormatter(params) {\r\n if (params != null && params != undefined) {\r\n if (params.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Loaded\";\r\n else\r\n return \"Empty\";\r\n }\r\n else\r\n return '-NA-';\r\n}\r\n\r\nfunction DoorFormatterChassis(HasDoorSensor, Door1OpenChassis) {\r\n if (HasDoorSensor != null && HasDoorSensor.toString().toUpperCase().trim() == \"TRUE\") {\r\n if (Door1OpenChassis != null && Door1OpenChassis != undefined) {\r\n if (Door1OpenChassis.toString().toUpperCase().trim() == \"TRUE\")\r\n return \"Open\";\r\n else\r\n return \"Closed\";\r\n }\r\n else\r\n return \"Unknown\";\r\n }\r\n else\r\n return \"No Sensor\";\r\n} \r\nfunction FloatTypeFormatter(params) {\r\n if (params != null && params != undefined) {\r\n return params;\r\n }\r\n else\r\n return '-NA-';\r\n}\r\nfunction BattVoltageFormatter(params) {\r\n var tempRoundingValue = \"1\";\r\n if (params != null && params != undefined) {\r\n return params.toFixed(parseInt(tempRoundingValue));\r\n }\r\n else\r\n return '-NA-';\r\n}\r\nfunction HumiditySetpointFormatter(params) {\r\n if (params != null && params != undefined) {\r\n if (params.toString().trim() == \"0\")\r\n return \"Off\";\r\n else if (params.toString().trim() == \"-999\") \r\n return \"OOR\";\r\n else\r\n return params;\r\n }\r\n return \"-NA-\";\r\n}\r\n\r\n","\r\n/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\n\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json');\r\n\r\n// STATE - This defines the type of data maintained in the Redux store.\r\nexport interface PreferenceSettingsState {\r\n searchFilters: server.PreferenceParamValues;\r\n preferences: any;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestPreferencesAction {\r\n type: 'REQUEST_PREFERENCES_SEARCH';\r\n searchFilters: server.PreferenceParamValues;\r\n}\r\n\r\ninterface ReceivePreferencesAction {\r\n type: 'RECEIVE_PREFERENCES_DETAILS';\r\n searchFilters: server.PreferenceParamValues;\r\n preferencesData: any;\r\n}\r\n\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestPreferencesAction | ReceivePreferencesAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n updatePreferences: (searchFilters: server.PreferenceParamValues): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/preferencesettings/UpdatePreferenceSettings', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n\r\n $('#globalLoader').show();\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_PREFERENCES_DETAILS', searchFilters: searchFilters, preferencesData: data }); \r\n if (data == \"true\") {\r\n //var userSession = JSON.parse(sessionStorage.getItem('UserInfo')); \r\n //userSession.TemperatureUnitCd = searchFilters.TempUnitCd;\r\n //userSession.TimeZoneCd = searchFilters.TimeZoneCd;\r\n //sessionStorage.setItem('UserInfo', JSON.stringify(userSession));\r\n //PopupWindow.showErrorMessage(\"Confirmation\", \"Preferences updated successfully.\");\r\n } \r\n else if (data == \"false\")\r\n PopupWindow.showErrorMessage(\"Error\", \"Please change preference settings.\");\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_PREFERENCES_SEARCH', searchFilters: searchFilters });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptySearchFilter = {\r\n TempUnitCd: null, TimeZoneCd: null, AutoPTR: null, sregardInactiveAlarm: null, TokenExpiry: null, InventoryState: null, HighestSeverityDesc:null,\r\n ModerateSeverityDesc: null, LowestSeverityDesc: null, HighestReeferAlarmSeverity: null, ModerateReeferAlarmSeverity: null,\r\n LowestReeferAlarmSeverity: null, DryInventoryState: null, SpeedUnitCd: null, OEMEndCustomerPrefixValues:null\r\n}\r\nconst unloadedState: PreferenceSettingsState = { searchFilters: emptySearchFilter, preferences: null };\r\n\r\nexport const reducer: Reducer = (state: PreferenceSettingsState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_PREFERENCES_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n preferences: state.preferences\r\n };\r\n case 'RECEIVE_PREFERENCES_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n preferences: state.preferences\r\n };\r\n }\r\n break;\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n\r\n","\r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\n\r\nimport { RCUtils } from './../RCUtils';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../Config.json');\r\n\r\nexport interface AdminCargoCareSettingsState {\r\n params: CargoCareSettingsParams,\r\n cargoCareSettingsData: CargoCareSettingsData,\r\n cargoCareSeverity: CargoCareSeverity[],\r\n bookingTempUnits: BookingTempUnits[],\r\n userLoginGeofences: UserLoginGeofences[],\r\n userLoginAGGGeofences: UserLoginGeofences[],\r\n isLoading: boolean\r\n}\r\nexport class CargoCareSettingsParams {\r\n CustomerId: number;\r\n UserId: number;\r\n CustomerTypeCd: string;\r\n}\r\nexport class CargoCareSettingsData {\r\n TempSevere: string;\r\n TempMinor: string;\r\n TempInformational: string;\r\n IsSevere: boolean;\r\n IsMinor: boolean;\r\n IsInformational: boolean;\r\n SevereReportingInterval: string;\r\n MinorReportingInterval: string;\r\n InfReportingInterval: string;\r\n IsMissingSchedule: boolean;\r\n MissingScheduleInterval: string;\r\n SeveritySelectedValue: any;\r\n IsBatteryPower: boolean;\r\n OffPowerInterval: string;\r\n BatterySeveritySelectedValue: any;\r\n CustTypeCd: string;\r\n CustomerID?: number;\r\n UserID?: number;\r\n\r\n IsMissingScheduleGenset: boolean;\r\n IsMissingScheduleDry: boolean;\r\n MissingScheduleIntervalGenset: string;\r\n MissingScheduleIntervalDry: string;\r\n CCDefrostCheck: boolean;\r\n\r\n //WI 26439\r\n IsGeofences?: boolean;\r\n}\r\n\r\nexport class RefCargoCareParam {\r\n CargoCareParamID: number;\r\n CargoCareParamCode: string;\r\n DefaultValue: number;\r\n}\r\nexport class CargoCareSeverity {\r\n SeverityStateID: number;\r\n SeverityStateCode: string;\r\n}\r\nexport class BookingTempUnits {\r\n BookTempAlertUnitsCode: string;\r\n BookTempAlertUnitsValue: string;\r\n}\r\nexport class UserLoginGeofences {\r\n GeofenceID: number;\r\n FenceID: number;\r\n Name: string;\r\n Tag: string;\r\n GeofenceCategoryCd: string;\r\n}\r\n\r\nexport class CargoCareSettingsGeofences {\r\n CustomerProfileId: number;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestCargoCareSettingsDataAction {\r\n type: 'REQUEST_ADMIN_CARGOCARESETTINGS';\r\n params: CargoCareSettingsParams;\r\n}\r\n\r\ninterface ReceiveCargoCareSettingsDataAction {\r\n type: 'RECEIVE_ADMIN_CARGOCARESETTINGS';\r\n params: CargoCareSettingsParams;\r\n cargoCareSettingsData: CargoCareSettingsData;\r\n}\r\ninterface SubmitCargoCareSettingsDataAction {\r\n type: 'SUBMIT_ADMIN_CARGOCARESETTINGS';\r\n params: CargoCareSettingsParams;\r\n cargoCareSettingsData: CargoCareSettingsData;\r\n\r\n}\r\ninterface ReceiveCargoCareSeverityDataAction {\r\n type: 'RECEIVE_ADMIN_CARGOCARESEVERITY';\r\n cargoCareSeverityData: CargoCareSeverity[];\r\n}\r\ninterface ReceiveBookingTempUnitsDataAction {\r\n type: 'RECEIVE_ADMIN_BOOKINGTEMPUNITS';\r\n bookingTempUnitsData: BookingTempUnits[];\r\n}\r\ninterface RequestUserGeofencesForCCSettings {\r\n type: 'RECEIVE_ADMIN_USERGEOFENCES';\r\n userGeofencesData: UserLoginGeofences[];\r\n}\r\ninterface RequestUserAGGGeofencesForCCSettings {\r\n type: 'RECEIVE_ADMIN_USERAGGGEOFENCES';\r\n userAGGGeofencesData: UserLoginGeofences[];\r\n}\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestCargoCareSettingsDataAction | ReceiveCargoCareSettingsDataAction | SubmitCargoCareSettingsDataAction | ReceiveCargoCareSeverityDataAction | ReceiveBookingTempUnitsDataAction | RequestUserGeofencesForCCSettings | RequestUserAGGGeofencesForCCSettings;\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\nexport const actionCreators = {\r\n RequestCargoCareSettingsData: (params: CargoCareSettingsParams): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n if (params !== getState().cargoCareSettingsData.params) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/AdminCargoCareSettings/CargoCareSettingsUI', { method: 'POST', body: JSON.stringify(params), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then((response => response.json() as Promise))\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_ADMIN_CARGOCARESETTINGS', params: params, cargoCareSettingsData: data });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_ADMIN_CARGOCARESETTINGS', params: params });\r\n }\r\n },\r\n SubmitCargoCareSettingsData: (cargoCareSettingsData: CargoCareSettingsData): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n if (cargoCareSettingsData !== getState().cargoCareSettingsData.cargoCareSettingsData) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/AdminCargoCareSettings/SaveCargoCareSettings', { method: 'POST', body: JSON.stringify(cargoCareSettingsData), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n dispatch({ type: 'RECEIVE_ADMIN_CARGOCARESETTINGS', params: getState().cargoCareSettingsData.params, cargoCareSettingsData: cargoCareSettingsData });\r\n if (data == \"CargoCare details updated successfully.\")\r\n PopupWindow.showErrorMessage(\"Confirmation\", data);\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", data);\r\n });\r\n }\r\n },\r\n RequestCargoCareSeverityData: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/AdminCargoCareSettings/GetRefSeverityCategories', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_ADMIN_CARGOCARESEVERITY', cargoCareSeverityData: data });\r\n });\r\n },\r\n RequestBookingTempUnitsData: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/AdminCargoCareSettings/GetRefBookTempAlertUnits', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_ADMIN_BOOKINGTEMPUNITS', bookingTempUnitsData: data });\r\n });\r\n },\r\n RequestUserGeofencesForCCSettings: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/AdminCargoCareSettings/GetUserGeofencesForCCSettings', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_ADMIN_USERGEOFENCES', userGeofencesData: data });\r\n });\r\n },\r\n RequestUserAGGGeofencesForCCSettings: (): AppThunkAction => (dispatch, getState) => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/AdminCargoCareSettings/GetUserSelectedGeofencesForCC', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_ADMIN_USERAGGGEOFENCES', userAGGGeofencesData: data });\r\n });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptyCargoCareSettingsParams = { CustomerId: 0, UserId: 0, CustomerTypeCd: 'SO' };\r\nconst emptycargoCareSeverity = [{ SeverityStateID: 1, SeverityStateCode: \"Severe\" }];\r\nconst emptyBookingTempUnits = [{ BookTempAlertUnitsCode: \"\", BookTempAlertUnitsValue: \"\" }];\r\nconst emptyUserLoginGeofences = [{ GeofenceID: 0, FenceID: 0, Name: \"\", Tag: \"\", GeofenceCategoryCd: \"\" }];\r\nconst emptyUserLoginAGGGeofences = [{ GeofenceID: 0, FenceID: 0, Name: \"\", Tag: \"\", GeofenceCategoryCd: \"\" }];\r\n\r\nconst unloadedState: AdminCargoCareSettingsState = {\r\n cargoCareSettingsData: new CargoCareSettingsData(), params: emptyCargoCareSettingsParams, cargoCareSeverity: emptycargoCareSeverity,\r\n bookingTempUnits: emptyBookingTempUnits, userLoginGeofences: emptyUserLoginGeofences, userLoginAGGGeofences: emptyUserLoginAGGGeofences, isLoading: true\r\n};\r\n\r\nexport const reducer: Reducer = (state: AdminCargoCareSettingsState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_ADMIN_CARGOCARESETTINGS':\r\n return {\r\n params: action.params,\r\n cargoCareSettingsData: state.cargoCareSettingsData,\r\n cargoCareSeverity: state.cargoCareSeverity,\r\n bookingTempUnits: state.bookingTempUnits,\r\n userLoginGeofences: state.userLoginGeofences,\r\n userLoginAGGGeofences: state.userLoginAGGGeofences,\r\n isLoading: true\r\n };\r\n case 'SUBMIT_ADMIN_CARGOCARESETTINGS':\r\n return {\r\n params: action.params,\r\n cargoCareSettingsData: state.cargoCareSettingsData,\r\n cargoCareSeverity: state.cargoCareSeverity,\r\n bookingTempUnits: state.bookingTempUnits,\r\n userLoginGeofences: state.userLoginGeofences,\r\n userLoginAGGGeofences: state.userLoginAGGGeofences,\r\n isLoading: true\r\n };\r\n case 'RECEIVE_ADMIN_CARGOCARESEVERITY':\r\n return {\r\n params: state.params,\r\n cargoCareSettingsData: state.cargoCareSettingsData,\r\n cargoCareSeverity: action.cargoCareSeverityData,\r\n bookingTempUnits: state.bookingTempUnits,\r\n userLoginGeofences: state.userLoginGeofences,\r\n userLoginAGGGeofences: state.userLoginAGGGeofences,\r\n isLoading: false\r\n };\r\n case 'RECEIVE_ADMIN_BOOKINGTEMPUNITS':\r\n return {\r\n params: state.params,\r\n cargoCareSettingsData: state.cargoCareSettingsData,\r\n cargoCareSeverity: state.cargoCareSeverity,\r\n bookingTempUnits: action.bookingTempUnitsData,\r\n userLoginGeofences: state.userLoginGeofences,\r\n userLoginAGGGeofences: state.userLoginAGGGeofences,\r\n isLoading: false\r\n };\r\n case 'RECEIVE_ADMIN_USERGEOFENCES':\r\n return {\r\n params: state.params,\r\n cargoCareSettingsData: state.cargoCareSettingsData,\r\n cargoCareSeverity: state.cargoCareSeverity,\r\n bookingTempUnits: state.bookingTempUnits,\r\n userLoginGeofences: action.userGeofencesData,\r\n userLoginAGGGeofences: state.userLoginAGGGeofences,\r\n isLoading: false\r\n };\r\n case 'RECEIVE_ADMIN_USERAGGGEOFENCES':\r\n return {\r\n params: state.params,\r\n cargoCareSettingsData: state.cargoCareSettingsData,\r\n cargoCareSeverity: state.cargoCareSeverity,\r\n bookingTempUnits: state.bookingTempUnits,\r\n userLoginGeofences: state.userLoginGeofences,\r\n userLoginAGGGeofences: action.userAGGGeofencesData,\r\n isLoading: false\r\n };\r\n case 'RECEIVE_ADMIN_CARGOCARESETTINGS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.params === state.params) {\r\n return {\r\n params: action.params,\r\n cargoCareSettingsData: action.cargoCareSettingsData,\r\n cargoCareSeverity: state.cargoCareSeverity,\r\n bookingTempUnits: state.bookingTempUnits,\r\n userLoginGeofences: state.userLoginGeofences,\r\n userLoginAGGGeofences: state.userLoginAGGGeofences,\r\n isLoading: false\r\n };\r\n };\r\n\r\n break;\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};","import { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\n\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json');\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface SubscriptionState {\r\n isLoading: boolean; \r\n searchFilters: server.ReeferSearchFilters;\r\n reeferStatus: server.USP_UnitCurrentConditionUI_Model[];\r\n columnDefs: any[];\r\n performCargoAction: boolean;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestReeferSearchAction {\r\n type: 'REQUEST_REEFER_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n colDefs: any[];\r\n}\r\n\r\ninterface ReceiveReeferSearchAction {\r\n type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n reeferStatusData: server.USP_UnitCurrentConditionUI_Model[];\r\n colDefs: any[];\r\n performCargoAction: boolean;\r\n}\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestReeferSearchAction | ReceiveReeferSearchAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestReeferAdvanceSearch: (searchFilters: server.ReeferSearchFilters, reeferCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading) \r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n if (data[0].ErrorMessage == null || data[0].ErrorMessage == \"\")\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: searchFilters, reeferStatusData: data, colDefs: reeferCols, performCargoAction: false });\r\n else {\r\n PopupWindow.showErrorMessage(\"Reefer Search\", data[0].ErrorMessage);\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: searchFilters, reeferStatusData: [], colDefs: reeferCols, performCargoAction: false });\r\n }\r\n }\r\n else\r\n dispatch({ type: 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS', searchFilters: searchFilters, reeferStatusData: [], colDefs: reeferCols, performCargoAction: false });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_REEFER_ADVANCE_SEARCH', searchFilters: searchFilters, colDefs: reeferCols });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptySearchFilter = {\r\n SelectedOem: null, SelectedCountry: null, SelectedReefer: null, SelectedGeofence: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedVesselCode: null, StatusFilters: [], AllReefers: null,\r\n CustomAttributeFilters: null, SelectedAssetTypes: null, SelectedAssetStates: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null , SelectedCargoCareProfiles: null //WI-26881\r\n}\r\nconst unloadedState: SubscriptionState = { isLoading: false, searchFilters: emptySearchFilter, reeferStatus: [], columnDefs: [], performCargoAction: false };\r\n\r\nexport const reducer: Reducer = (state: SubscriptionState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_REEFER_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n reeferStatus: state.reeferStatus,\r\n isLoading: true,\r\n columnDefs: state.columnDefs,\r\n performCargoAction: false\r\n }; \r\n case 'RECEIVE_REEFER_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n reeferStatus: action.reeferStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs,\r\n performCargoAction: action.performCargoAction\r\n };\r\n }\r\n break;\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","import { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nvar Config: any = require('../Config.json');\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface DeploymentSearchState {\r\n isLoading: boolean;\r\n searchFilters: server.DeploymentSearchFilters;\r\n deploymentStatus: server.USP_DeploymentStatusUI_Model[];\r\n columnDefs: any[];\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestDeploymentSearchAction {\r\n type: 'REQUEST_DEPLOYMENT_SEARCH';\r\n searchFilters: server.DeploymentSearchFilters;\r\n colDefs: any[];\r\n}\r\n\r\ninterface ReceiveDeploymentSearchAction {\r\n type: 'RECEIVE_DEPLOYMENT_SEARCH';\r\n searchFilters: server.DeploymentSearchFilters;\r\n deploymentStatusData: server.USP_DeploymentStatusUI_Model[];\r\n colDefs: any[];\r\n}\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestDeploymentSearchAction | ReceiveDeploymentSearchAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestDeploymentSearch: (searchFilters: server.DeploymentSearchFilters, reeferCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n let fetchTask = fetch(Config.ApiBaseUrl + '/api/deploymentstatus/DeploymentStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_DEPLOYMENT_SEARCH', searchFilters: searchFilters, deploymentStatusData: data, colDefs: reeferCols });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_DEPLOYMENT_SEARCH', searchFilters: searchFilters, colDefs: reeferCols });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\nconst emptySearchFilter = {\r\n CreatedBy: null, DeploymentName: null, DeploymentTypeId: null, FileName: null, FromDate: null, ModifiedBy: null,\r\n DeploymentStatusId: null, ToDate: null, Topresult: null, UserID: null, CustomerId: null, CustomerTypeCd: null\r\n}\r\nconst unloadedState: DeploymentSearchState = { isLoading: true, searchFilters: emptySearchFilter, deploymentStatus: [], columnDefs: [] };\r\n\r\nexport const reducer: Reducer = (state: DeploymentSearchState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_DEPLOYMENT_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n deploymentStatus: state.deploymentStatus,\r\n isLoading: true,\r\n columnDefs: state.columnDefs\r\n };\r\n case 'RECEIVE_DEPLOYMENT_SEARCH':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n deploymentStatus: action.deploymentStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs\r\n };\r\n }\r\n break;\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","\r\n/// \r\n/// \r\nimport { fetch, addTask } from 'domain-task';\r\nimport { Action, Reducer, ActionCreator } from 'redux';\r\nimport { AppThunkAction } from './';\r\nimport { RCUtils } from './../RCUtils';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nvar Config: any = require('../Config.json');\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface ChassisSearchState {\r\n isLoading: boolean;\r\n /* WI 26566 changes start */\r\n allAssetStatus: any[];\r\n gridType: any;\r\n gensetStatus: any[];\r\n reeferStatus: any[];\r\n dryStatus: any[];\r\n /* WI 26566 changes end */\r\n searchFilters: server.ReeferSearchFilters;\r\n chassisStatus: server.ChassisStatusData[];\r\n columnDefs: any[];\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestChassisSearchAction {\r\n type: 'REQUEST_CHASSIS_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n colDefs: any[];\r\n}\r\n\r\ninterface ReceiveChassisSearchAction {\r\n type: 'RECEIVE_CHASSIS_ADVANCE_SEARCH_DETAILS';\r\n searchFilters: server.ReeferSearchFilters;\r\n /* WI 26566 changes start */\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n gensetStatusData: any[];\r\n reeferStatusData: any[];\r\n dryStatusData: any[];\r\n /* WI 26566 changes end */\r\n chassisStatusData: server.ChassisStatusData[];\r\n colDefs: any[];\r\n}\r\n/* WI 26566 changes start */\r\ninterface ReceiveAllAssetTypeSearchAction {\r\n type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH';\r\n searchFilters: server.ReeferSearchFilters;\r\n allAssetStatusData: any[];\r\n gridType: any;\r\n gensetStatusData: any[];\r\n reeferStatusData: any[];\r\n dryStatusData: any[];\r\n chassisStatusData: server.ChassisStatusData[];\r\n colDefs: any[];\r\n}\r\n/* WI 26566 changes end */\r\n\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestChassisSearchAction | ReceiveChassisSearchAction | ReceiveAllAssetTypeSearchAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestChassisAdvanceSearch: (searchFilters: server.ReeferSearchFilters, reeferCols: any[]): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Asset/ChassisStatusDataSP', { method: 'POST', body: JSON.stringify(searchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n if (data[0].ErrorMessage != null && data[0].ErrorMessage != undefined && data[0].ErrorMessage != \"\") {\r\n if (data[0].ErrorMessage == \"Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.\") {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Server is busy. Please try after sometime.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: [], chassisStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData:[], colDefs: reeferCols });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Refine Search!\", \"Your search returns too many results. Please refine your search.\");\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: [], chassisStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], colDefs: reeferCols });\r\n }\r\n }\r\n else {\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: data, chassisStatusData: data, reeferStatusData: [], dryStatusData: [], gensetStatusData: [], colDefs: reeferCols });\r\n }\r\n }\r\n else\r\n dispatch({ type: 'RECEIVE_AllAssetType_ADVANCE_SEARCH', searchFilters: searchFilters, gridType: 'chassis', allAssetStatusData: [], chassisStatusData: [], reeferStatusData: [], dryStatusData: [], gensetStatusData: [], colDefs: reeferCols });\r\n });\r\n\r\n addTask(fetchTask); // Ensure server-side prerendering waits for this to complete\r\n dispatch({ type: 'REQUEST_CHASSIS_ADVANCE_SEARCH', searchFilters: searchFilters, colDefs: reeferCols });\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\n//const emptyAdvanceSearchFilter = { CustomerTypeCode: null, CustomerID: null, AssetType: null, AssetNumber: null, ServerFence: null, DeviceFence: null, Region: null, City: null, State: null,ZipCode: null, Country: null, Geofence: null, POI: null, Oem: null, ReportingInterval: null, GeofenceInside: null}\r\nconst emptySearchFilter = {\r\n SelectedOem: null, SelectedCountry: null, SelectedReefer: null, SelectedGeofence: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: null, SelectedAssetTypes: null, SelectedAssetStates: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null,\r\n SelectedVoyage: null, SelectedCargoCareProfiles: null //WI-26881\r\n}\r\nconst unloadedState: ChassisSearchState = { isLoading: false, gridType: '', allAssetStatus: [], reeferStatus: [], dryStatus: [], gensetStatus:[], searchFilters: emptySearchFilter, chassisStatus: [], columnDefs: [] };\r\n\r\nexport const reducer: Reducer = (state: ChassisSearchState, incomingAction: Action) => {\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_CHASSIS_ADVANCE_SEARCH':\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: state.gridType,\r\n /* WI 26566 changes start */\r\n allAssetStatus: state.allAssetStatus,\r\n reeferStatus: state.reeferStatus,\r\n dryStatus: state.dryStatus,\r\n gensetStatus: state.gensetStatus,\r\n /* WI 26566 changes end */\r\n chassisStatus: state.chassisStatus,\r\n isLoading: true,\r\n columnDefs: state.columnDefs\r\n };\r\n\r\n\r\n case 'RECEIVE_CHASSIS_ADVANCE_SEARCH_DETAILS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType,\r\n /* WI 26566 changes start */\r\n allAssetStatus: action.allAssetStatusData,\r\n reeferStatus: action.reeferStatusData,\r\n dryStatus: action.dryStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n /* WI 26566 changes end */\r\n chassisStatus: action.chassisStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs\r\n };\r\n }\r\n /* WI 26566 changes start */\r\n case 'RECEIVE_AllAssetType_ADVANCE_SEARCH':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.searchFilters === state.searchFilters) {\r\n return {\r\n searchFilters: action.searchFilters,\r\n gridType: action.gridType,\r\n allAssetStatus: action.allAssetStatusData,\r\n reeferStatus: action.reeferStatusData,\r\n dryStatus: action.dryStatusData,\r\n gensetStatus: action.gensetStatusData,\r\n chassisStatus: action.chassisStatusData,\r\n isLoading: false,\r\n columnDefs: action.colDefs\r\n };\r\n }\r\n /* WI 26566 changes end */\r\n break;\r\n\r\n default:\r\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\r\n const exhaustiveCheck: never = action;\r\n }\r\n\r\n return state || unloadedState;\r\n};\r\n","\r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport 'ag-grid-enterprise';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { ReeferHistoryGrid } from './ReeferHistoryGrid';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport ExportToExcel, * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport $ from 'jquery';\r\nimport uniq from 'lodash/uniq';\r\nimport forEach from 'lodash/forEach';\r\nimport moment from 'moment';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PingControl } from './../sharedcomponents/ForwardCommands/PingControl';\r\nimport { TempSetPoint } from './../sharedcomponents/ForwardCommands/TempSetPoint';\r\nimport { HumiditySetPoint } from './../sharedcomponents/ForwardCommands/HumiditySetPoint';\r\nimport { O2SetPoint } from './../sharedcomponents/ForwardCommands/O2SetPoint';\r\nimport { ReeferToggleButtonsFilter } from '../childcomponents/ReeferToggleButtonsFilter';\r\nimport { CO2SetPoint } from './../sharedcomponents/ForwardCommands/CO2SetPoint';\r\nimport { ChangeReeferId } from './../sharedcomponents/ForwardCommands/ChangeReeferId';\r\nimport { ChangeReportingInterval } from './../sharedcomponents/ForwardCommands/ChangeReportingInterval';\r\nimport { ChangeDataLogInterval } from './../sharedcomponents/ForwardCommands/ChangeDataLogInterval';\r\nimport { AssignPANID } from './../sharedcomponents/ForwardCommands/AssignPANID';\r\nimport { RebootReeferController } from './../sharedcomponents/ForwardCommands/RebootReeferController';\r\nimport { VerifyModelValidity } from './../sharedcomponents/ForwardCommands/VerifyModelValidity';\r\nimport { SyncReeferClock } from './../sharedcomponents/ForwardCommands/SyncReeferClock';\r\nimport { StartDeforst } from './../sharedcomponents/ForwardCommands/StartDeforst';\r\nimport { ChangeDeforstInterval } from './../sharedcomponents/ForwardCommands/ChangeDeforstInterval';\r\nimport { TraditionalDataDownload } from './../sharedcomponents/ForwardCommands/TraditionalDataDownload';\r\nimport { StopPTI } from './../sharedcomponents/ForwardCommands/StopPTI';\r\nimport { ScheduledPreTrip } from './../sharedcomponents/ForwardCommands/ScheduledPreTrip';\r\nimport { PreTrip } from './../sharedcomponents/ForwardCommands/PreTrip';\r\nimport { LastPretripResult } from './../sharedcomponents/ForwardCommands/LastPretripResult';\r\nimport { QueryReeferInventory } from './../sharedcomponents/ForwardCommands/QueryReeferInventory';\r\nimport { UpdateModelConfiguration } from './../sharedcomponents/ForwardCommands/UpdateModelConfiguration';\r\nimport { ChangeReeferClockSyncSetting } from './../sharedcomponents/ForwardCommands/ChangeReeferClockSyncSettings';\r\nimport { ChangeZigbeeSettings } from './../sharedcomponents/ForwardCommands/ChangeZigbeeSettings';\r\nimport { AutoConfiguration } from './../sharedcomponents/ForwardCommands/AutoConfiguration';\r\nimport { AssetConfiguration } from './../sharedcomponents/ForwardCommands/AssetConfiguration';\r\nimport { GuestReeferConfiguration } from './../sharedcomponents/ForwardCommands/GuestReeferConfiguration';\r\nimport { AssignBookingSystem, UnAssignBookingSystem, EditBookingSystem } from '../sharedcomponents/BookingSystem';\r\nimport { MultipleSetpoints } from './../sharedcomponents/ForwardCommands/MultipleSetpoints';\r\nimport { AutomaticColdTreatment } from './../sharedcomponents/ForwardCommands/AutomaticColdTreatment';\r\nimport { GetFreshAirType } from './../sharedcomponents/ForwardCommands/GetFreshAirType';\r\nimport { SetFreshAirType } from './../sharedcomponents/ForwardCommands/SetFreshAirType';\r\nimport { PopupConfirm } from './../sharedcomponents/PopupConfirm';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { GridReeferStatusToolBar } from '../sharedcomponents/GridReeferStatusToolBar';\r\nimport { CreateTrip } from '../childcomponents/CreateTrip';\r\nimport { TripStatus } from '../childcomponents/TripStatus';\r\nimport { TripDeviation } from '../childcomponents/TripDeviation';\r\nimport UserRights from '../../actions/UserRights';\r\nimport CommonActions from '../../actions/CommonActions';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ControlledAtmosphere } from './../sharedcomponents/ForwardCommands/ControlledAtmosphere';\r\nimport { DeviceReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { DeviceHardReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { ReeferGetAssetId } from './../sharedcomponents/ForwardCommands/ReeferGetAssetId';\r\nimport { EnableDoorSensor } from './../sharedcomponents/ForwardCommands/EnableDoorSensor';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport CCAlmTooltip from '../sharedcomponents/GridToolTips/CCAlmTooltip';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { TripWiseReport } from './../sharedcomponents/ForwardCommands/TripWiseReport';\r\nimport lodashfilter from 'lodash/filter';\r\nimport { NewBookingUnAssign } from '../sharedcomponents/NewBookingUnAssign';\r\nimport { ViewBookingDetails } from '../childcomponents/ViewBookingDetails';\r\nimport { EditVoyageVVC } from '../childcomponents/EditVoyageVVC';\r\nimport { DimiSetting } from './../sharedcomponents/ForwardCommands/DIMISettings';\r\nimport { IntelligentPTIFunction } from './../sharedcomponents/ForwardCommands/IntelligentPTIFunction';\r\nimport { FanSpeed } from './../sharedcomponents/ForwardCommands/FanSpeed';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nvar functionId;\r\nvar previousReeferid;\r\ninterface ReeferGridState {\r\n loading: boolean;\r\n Filters: server.ReeferSearchFilters;\r\n rowData: any[];\r\n columnDefs: any[];\r\n selectedItems: any[];\r\n overlayLoadingTemplate: any;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string;\r\n reeferFormatter: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n tempFilters: server.ReeferSearchFilters;\r\n exportFields: ExportFields;\r\n ToggleSearchParams: any;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n PTReport: string;\r\n ReportReeferId: string;\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n isStarCoolOem: boolean;\r\n CustomAttributes: server.CustomAttributes[];\r\n CustomerSpecificCommandData: any;\r\n fullPreTripCommandText: string;\r\n shortPreTripCommandText: string;\r\n funcPreTripCommandText: string;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n TWReport: string;\r\n CargoCareProfiles: any[];\r\n frameworkComponents: any;\r\n isFromCargoCareAlert: boolean;\r\n}\r\n\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar currentMousePos = { x: -1, y: -1 };\r\nvar self;\r\nvar selectedRowData;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customerTypeCd;\r\nvar custId;\r\nvar userEmail;\r\nvar dCXDownloads;\r\nvar customerAccessData: any[];\r\nvar viewBookingData: any[];\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar commandIssued: boolean = false;\r\nlet groupingDisabled = false;\r\nvar reeferAssetSensors: any[];\r\nvar selectedRowIndex: number;\r\nvar IsTriggered: boolean;\r\nvar EnableLynxCommands: boolean;\r\nvar EnableCT35ML5Commands: boolean;\r\nvar ShowTDDForCT36ML5: boolean;\r\nvar ShowTDDForCT35ML5: boolean;\r\nvar tripWISESupport: any;\r\nexport class ReeferStatusGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n customerAccessData = [];\r\n viewBookingData = [];\r\n selectedRowIndex = -1;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;//this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;//this.props.loggedInUserData.User.Customer.CustomerId;\r\n userEmail = JSON.parse(sessionStorage.getItem('UserInfo')).UserEmail;\r\n dCXDownloads = JSON.parse(sessionStorage.getItem('customerDetails')).DCXDownloads;\r\n functionId = 41; // functionId for ReeferStatus Grid\r\n var commandSpecificData: server.CommandSpecificData = { commandId: '', Oem: [] };\r\n \r\n var overlayTemplate = 'Loading...';\r\n\r\n var exportData = new ExportFields();\r\n this.state = {\r\n loading: true,\r\n Filters: this.props.statusFilter,\r\n rowData: this.props.propsReeferData,\r\n columnDefs: [],\r\n selectedItems: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n reeferFormatter: this.props.propsReeferFormatterData,\r\n tempFilters: null,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n ToggleSearchParams: null,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n PTReport: '',\r\n ReportReeferId: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: '',\r\n isStarCoolOem: false,\r\n CustomAttributes: [],\r\n CustomerSpecificCommandData: commandSpecificData,\r\n fullPreTripCommandText: 'Full',\r\n shortPreTripCommandText: 'Short',\r\n funcPreTripCommandText: 'Function Test',\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n autoGroupColumnDef: { minWidth: 200 },\r\n TWReport: '',\r\n CargoCareProfiles: [],\r\n frameworkComponents: { cCAlmTooltip: CCAlmTooltip },\r\n isFromCargoCareAlert:false\r\n };\r\n\r\n //RCNG-3056\r\n var refAppParams = this.props.refApplicationParams;\r\n if (refAppParams != null && refAppParams != undefined) {\r\n if (refAppParams.EnableLynxCommands != null && refAppParams.EnableLynxCommands != undefined)\r\n EnableLynxCommands = refAppParams.EnableLynxCommands == 'true' ? true : false;\r\n if (refAppParams.EnableCT35ML5Commands != null && refAppParams.EnableCT35ML5Commands != undefined)\r\n EnableCT35ML5Commands = refAppParams.EnableCT35ML5Commands == 'true' ? true : false;\r\n if (refAppParams.ShowTDDForCT36ML5 != null && refAppParams.ShowTDDForCT36ML5 != undefined)\r\n ShowTDDForCT36ML5 = refAppParams.ShowTDDForCT36ML5 == 'true' ? true : false;\r\n if (refAppParams.ShowTDDForCT35ML5 != null && refAppParams.ShowTDDForCT35ML5 != undefined)\r\n ShowTDDForCT35ML5 = refAppParams.ShowTDDForCT35ML5 == 'true' ? true : false;\r\n }\r\n tripWISESupport = this.props.tripWISESupportdeviceTypes;\r\n //RCNG-713\r\n this.GetCCprofileCode();\r\n self = this;\r\n }\r\n\r\n GetCCprofileCode() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetCargoCareCustomerProfiles');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CargoCareProfiles: data });\r\n });\r\n }\r\n\r\n toolTipValueGetter = (params) => ({ value: params.value });\r\n renderCustomAttributesColumns() {\r\n columnDefs = this.createColumnDefs();\r\n if (this.props.customerDeviceTypeSensor != null && this.props.customerDeviceTypeSensor != undefined) \r\n reeferAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'R');\r\n\r\n var newColumns = columnDefs;\r\n\r\n if (JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable) { \r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n //WI 26721 First Device sensors and next Custom attributes\r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n // generatedColumns = [];\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any; \r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, cellClass: 'OneDecimal', resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields , cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };//26784\r\n\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n \r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination);\r\n // this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n\r\n if (this.props.CustomAttributes != null && this.props.CustomAttributes != undefined && this.props.CustomAttributes.length > 0) {\r\n var generatedColumns = [];\r\n $.each(this.props.CustomAttributes, function (i, val) {\r\n var customAttributeObject = { headerName: '', field: '', enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: Formatters.stringTypeSortingForCustomefields, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n var attributeName = val.AttributeName;\r\n var columnHeaderName = attributeName.replace(' ', '');\r\n customAttributeObject.headerName = attributeName;\r\n customAttributeObject.field = columnHeaderName;\r\n generatedColumns.push(customAttributeObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Asset Attributes\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Asset Attributes\"))\r\n newColumns.push(newColumnDefination);\r\n // this.setState({ CustomAttributes: this.props.CustomAttributes });\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Asset Attributes\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n this.setState({ columnDefs: newColumns });\r\n }\r\n else {\r\n //columnDefs2 = columnDefs; \r\n var generatedColumns = [];\r\n \r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'OneDecimal', headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };//26784\r\n\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n }; \r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n\r\n this.setState({ columnDefs: newColumns });\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n const propsReeferData: any = this.props.propsReeferData;\r\n if (propsReeferData !== nextprops.propsReeferData)\r\n this.setState({ rowData: [] });\r\n \r\n if (nextprops.propsReeferData != null && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length > 0 && nextprops.statusFilter.StatusFilters != undefined\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.DryInGeofence && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.DryOutGeofence \r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOffNotReporting && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOffReporting\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOnNotReporting && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOnReporting\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisPwrOutGeofence\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisNotPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisNotPwrOutGeofence) {\r\n \r\n this.setState({ rowData: nextprops.propsReeferData });\r\n\r\n if (nextprops.statusFilter.SelectedCargoCareProfiles != null && nextprops.statusFilter.SelectedCargoCareProfiles != undefined\r\n && nextprops.statusFilter.SelectedCargoCareProfiles != \"\" && nextprops.propsReeferData != null\r\n && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length > 0) {\r\n \r\n let MASevere = nextprops.propsReeferData.filter((x) => { return x.MASeverityLevel == \"1\" }).length;\r\n let MAMinor = nextprops.propsReeferData.filter((x) => { return x.MASeverityLevel == \"2\" }).length;\r\n\r\n self.props.renderAlarmWidgetIfCCPSelected(MASevere, MAMinor);\r\n }\r\n\r\n if (self.state.ToggleSearchParams != null && self.state.ToggleSearchParams != undefined) {\r\n self.filterReeferStatusGrid(self.state.ToggleSearchParams);\r\n }\r\n }\r\n\r\n if (nextprops.propsReeferData != null && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length > 0) {\r\n self.props.getReeferStatusGridRows(nextprops.propsReeferData.length);\r\n } else if (nextprops.propsReeferData != null && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length === 0) {\r\n self.props.getReeferStatusGridRows(0);\r\n }\r\n\r\n if (nextprops.propsReeferFormatterData != null && nextprops.propsReeferFormatterData != null) {\r\n if (nextprops.propsReeferFormatterData.AlarmMasterList != null && nextprops.propsReeferFormatterData.AlarmMasterList != undefined && nextprops.propsReeferFormatterData.AlarmMasterList.length > 0) {\r\n if (nextprops.propsReeferData.length > 0) {\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.hideOverlay !== \"undefined\") {\r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n }\r\n }\r\n else {\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.showNoRowsOverlay !== \"undefined\") {\r\n self.state.gridApiParams.showNoRowsOverlay(); // RCNG-5070 OMP QA2: \"No Rows To Show\" caption is not showing in all grids in dashboard\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n if (nextprops.performCargoAction) {\r\n self.props.getSelectedRow(self.state.selectedItems);\r\n $('#globalLoader').show();\r\n }\r\n\r\n if (nextprops.propsReeferData != null && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length > 1 && self.state.isFromCargoCareAlert == true) {\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n self.props.clearGridHeaderExtension();\r\n //self.props.clearMapData();\r\n }\r\n //debugger;\r\n //var refAppParams = nextprops.refApplicationParams;\r\n //if (refAppParams != null && refAppParams != undefined)\r\n // if (refAppParams.EnableLynxCommands != null && refAppParams.EnableLynxCommands != undefined)\r\n // EnableLynxCommands = refAppParams.EnableLynxCommands == 'true' ? true : false;\r\n }\r\n\r\n componentDidMount() {\r\n columnDefs2 = this.createColumnDefs();\r\n setTimeout(() => {\r\n this.renderCustomAttributesColumns();\r\n }, 1000);\r\n \r\n self.setState({ tempFilters: this.state.Filters });\r\n $('.ag-column-hover').contextmenu(function (e) {\r\n var relX = e.pageX - $('.ag-column-hover').offset().left;\r\n var relY = (e.pageY - $('.ag-column-hover').offset().top);\r\n $(\"#context-menu\").toggle(100).css({\r\n top: relY,\r\n left: relX\r\n });\r\n $(\"#contextmenu\").hide();\r\n e.preventDefault();\r\n });\r\n \r\n \r\n \r\n \r\n $(document).mousemove(function (event) {\r\n currentMousePos.x = event.pageX;\r\n currentMousePos.y = event.pageY;\r\n event.preventDefault();\r\n });\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReport\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReportTW\"));\r\n }\r\n\r\n setCommandText(Oem: any) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandLabel';\r\n var input = JSON.stringify(Oem);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n this.setState({\r\n fullPreTripCommandText: data[0] != 'disabled' ? data[0] : 'Full',\r\n shortPreTripCommandText: data[1] != 'disabled' ? data[1] : 'Short',\r\n funcPreTripCommandText: data[2] != 'disabled' ? data[2] : 'Function Test'\r\n });\r\n //if (data[0] == 'disabled') {\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('disabled');\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('disabled');\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('enabled');\r\n //}\r\n //if (data[1] == 'disabled') {\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('disabled');\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('enabled');\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('disabled');\r\n //}\r\n\r\n //if (data[2] == 'disabled') {\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('disabled');\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('enabled');\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('disabled');\r\n //}\r\n });\r\n }\r\n\r\n \r\n\r\n getCommandWindowText(Oem: any[], command: string) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandData';\r\n this.state.CustomerSpecificCommandData.Oem = Oem;\r\n this.state.CustomerSpecificCommandData.commandId = command;\r\n var input = JSON.stringify(this.state.CustomerSpecificCommandData);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"Selected Reefers must have a valid OEM type.\" || data == \"Selected Reefers must have a Same OEM type.\") {\r\n PopupWindow.showErrorMessage(\"Alert\", data);\r\n }\r\n else\r\n this.setState({ pretripCmd: command, modelTitle: data }, () => self.RenderContextMenuPopUp('PreTrip', true));\r\n });\r\n }\r\n\r\n onRefreshData = () => {\r\n $('#globalLoader').show();\r\n this.setState({\r\n rowData: this.state.rowData\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n $('#globalLoader').hide(); \r\n }; \r\n static GetReeferStatusGridDataCount() {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData != [] && self.state.rowData.length > 0) {\r\n return self.state.rowData.length;\r\n }\r\n }\r\n \r\n static ClearReeferStatusGridData() {\r\n if (self != undefined) {\r\n //ReeferCallout.ResetMapPushpins();\r\n selectedRowIndex = -1;\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\")\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n }\r\n\r\n\r\n reeferContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.reefermapAction(this.state.selectedItems, 'Home');\r\n break;\r\n case \"History\": this.reeferhistoryAction(this.state.selectedItems,'Home');\r\n break;\r\n case \"CommandStatus\": this.reefercommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.reeferdetailsAction(this.state.selectedItems, 'Reefer','CurrentDetails');\r\n break;\r\n case \"Copy\": this.reeferdetailsCopyAction();\r\n break;\r\n case \"CopyWithHeader\": this.reeferdetailsCopyWithHeaderAction();\r\n break;\r\n case \"EditBooking\": this.reeferBookingAction(this.state.selectedItems, 'ReeferStatusGrid');\r\n break;\r\n case \"CreateBooking\": this.reeferCreateBookingAction(this.state.selectedItems, 'ReeferStatusGrid');\r\n break;\r\n case \"ViewBooking\": this.reeferViewBookingAction(this.state.selectedItems, 'ReeferStatusGrid');\r\n break;\r\n }\r\n }\r\n\r\n reeferdetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n reeferdetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n var isHistoryCall = false;\r\n\r\n var isHistorySelectionChanged = false; //RCNG 324\r\n if (this.state.selectedItems.length == 1 && previousReeferid != event.data.ReeferID)\r\n isHistorySelectionChanged = true;\r\n\r\n if ((selectedRowIndex != event.rowIndex) || (isHistorySelectionChanged == true) ){\r\n selectedRowIndex = event.rowIndex;\r\n isHistoryCall = true;\r\n }\r\n\r\n if (event.data != null && event.data != undefined) {\r\n self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === 0)\r\n this.reeferdetailsAction(this.state.selectedItems, 'Reefer', 'Comments');\r\n else if (isHistoryCall) {\r\n self.setState({ isFromCargoCareAlert: false }, () => {\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(event.data, false, self.props.reeferHistoryEnabled)\r\n })\r\n }\r\n \r\n }\r\n\r\n if (this.state.selectedItems.length == 1) //RCNG 324\r\n previousReeferid = event.data.ReeferID;\r\n }\r\n\r\n columnRowGroupChanged(params: any) {\r\n self.clearGridRowSelection(params);\r\n }\r\n\r\n /* WI 26428 implementation start */\r\n static validateReeferStatusHistoryMismatch(statusEventDttm: any, historyEventDttm: any, statusReceiptDttm: any, historyReceiptDttm: any) {\r\n IsTriggered = false;\r\n if (statusEventDttm != historyEventDttm && self.checkEventReportedDTTM(statusEventDttm, historyEventDttm, statusReceiptDttm, historyReceiptDttm) == true) // RCNG-1056\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"New events are available for the Reefer Status grid. Refresh now?\", self.onRefreshReeferStatusGrid.bind(this), self.onCancelRefreshStatusGrid.bind(this)); \r\n }\r\n\r\n checkEventReportedDTTM(statusEventDttm: any, reportedEventDttm: any, statusReceiptDttm: any, historyReceiptDttm: any) {\r\n if ((moment(new Date(reportedEventDttm)) > moment(new Date(statusEventDttm))) && \r\n (moment(new Date(historyReceiptDttm)) > moment(new Date(statusReceiptDttm)))) // RCNG-1056 //RCNG-1045\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n onCancelRefreshStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n onRefreshReeferStatusGrid() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n self.refreshStatusGridForNewEvents();\r\n }\r\n }\r\n /* WI 26428 implementation end */\r\n\r\n onRowDataChanged(params: any): void {\r\n var reeferIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n //var selItems = self.state.PrevSelectedItems;\r\n reeferIdSelected = self.state.PrevSelectedItems[0].ReeferID;\r\n // reeferIdSelected = \"TEST0000540\";\r\n }\r\n commandIssued = false;\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n var gridData = self.state.rowData;\r\n if (gridData != null && gridData != undefined && gridData.length > 0) {\r\n TotalCount = gridData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && reeferIdSelected !== \"\") {\r\n let count = 0;\r\n if (reeferIdSelected) {\r\n commandIssued = true;\r\n params.api.forEachLeafNode((node) => {\r\n count = count + 1;\r\n if (node.data.ReeferID === reeferIdSelected) {\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n //console.log('pageNo' + pageNo);\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n }); \r\n }\r\n }\r\n } \r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n reeferdetailsAction(data: any, dataSource: any, isOpenVia:any) {\r\n var reeferdetails = data;\r\n this.props.reeferdetailsAction(reeferdetails, self.state.reeferFormatter, dataSource, isOpenVia);\r\n }\r\n\r\n reeferhistoryAction(data: any, isOpenVia: any) {\r\n //var reeferdetails = data;\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.state.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.reeferhistoryAction(reeferdetails);\r\n }\r\n reeferBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.reeferbookingAction(reeferdetails);\r\n }\r\n reeferCreateBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.reefercreatebookingAction(reeferdetails);\r\n }\r\n reeferViewBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.reeferViewbookingAction(reeferdetails);\r\n } \r\n reefermapAction(data: any, isOpenVia: any) {\r\n //var reeferdetails = data;\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.state.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.reeferMapAction(reeferdetails);\r\n }\r\n\r\n reefercommandstatusAction(data: any) {\r\n var reeferdetails = data;\r\n this.props.reefercommandstatusAction(reeferdetails);\r\n }\r\n\r\n static SelectCurrentReefer(currentReefer: any) {\r\n self.state.gridApiParams.deselectAll();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n var countRecordPerPage = 0;\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode(function (node) {\r\n countRecordPerPage = countRecordPerPage + 1;\r\n if (node.data.ReeferID === currentReefer.ReeferID) {\r\n var currentPage = Math.trunc(countRecordPerPage / self.state.gridApiParams.paginationProxy.pageSize);\r\n if (currentPage > 1) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.paginationGoToPage(currentPage);\r\n }\r\n\r\n node.setSelected(true);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureIndexVisible(node.rowIndex);\r\n self.setState({ selectedItems: node.data });\r\n self.props.getLastSelectedRow(node.data);\r\n //$('#globalLoader').show();\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(node.data, true, self.props.reeferHistoryEnabled);\r\n }\r\n });\r\n }\r\n\r\n static ShowCurrentPTRSelectedReefer(currentReefer: any) {\r\n self.state.gridApiParams.deselectAll();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n var countRecordPerPage = 0;\r\n var PTRReeferFound = false;\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachLeafNode(function (node) {\r\n countRecordPerPage = countRecordPerPage + 1;\r\n if (node.data.ReeferID === currentReefer.ReeferID) {\r\n var currentPage = Math.trunc(countRecordPerPage / self.state.gridApiParams.paginationProxy.pageSize);\r\n if (currentPage > 1) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.paginationGoToPage(currentPage);\r\n }\r\n\r\n node.setSelected(true);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureIndexVisible(node.rowIndex);\r\n self.setState({ selectedItems: node.data });\r\n self.props.getLastSelectedRow(node.data);\r\n //$('#globalLoader').show();\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(node.data, true, self.props.reeferHistoryEnabled);\r\n PTRReeferFound = true;\r\n return;\r\n }\r\n });\r\n if (!PTRReeferFound) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer is not found in Reefer Grid.\");\r\n }\r\n }\r\n\r\n\r\n static SelectCurrentNode(currentReeferId: string) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachLeafNode(function (node) {\r\n if(node.data != null && node.data != \"undefined\")\r\n {\r\n if (node.data.ReeferID === currentReeferId) {\r\n node.setSelected(true);\r\n }\r\n }\r\n });\r\n }\r\n\r\n static ApplyReeferSearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean, isFromCargoCareAlert: boolean) {\r\n self.setState({ isFromCargoCareAlert: isFromCargoCareAlert }, () => { self.ReeferSearchFilter(filters, eventsRefresh, true, isFromCargoCareAlert) });\r\n //self.ReeferSearchFilter(filters, eventsRefresh, true,isFromCargoCareAlert);\r\n }\r\n\r\n ReeferSearchFilter(filters: server.ReeferSearchFilters, eventsRefresh: boolean, newSearch: boolean) {\r\n if (self != undefined) {\r\n $('#globalLoader').show();\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\") {\r\n //self.state.gridApiParams.showLoadingOverlay();\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n self.state.gridApiParams.deselectAll();\r\n }\r\n }\r\n\r\n if (filters != null && filters != undefined) {\r\n var customAttributesInfo = {};\r\n var filterset: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, \r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedAssetStates: null,\r\n SelectedBookingNumber: null, SelectedVesselCD: null, SelectedVoyage: null, SelectedCall: null //WI-26881\r\n ,SelectedCargoCareProfiles:''\r\n };\r\n\r\n filterset.SelectedCountry = (filters.SelectedCountry == \"\" || filters.SelectedCountry == undefined) ? null : filters.SelectedCountry;\r\n filterset.SelectedGeofence = (filters.SelectedGeofence == \"\" || filters.SelectedGeofence == undefined) ? null : filters.SelectedGeofence;\r\n filterset.SelectedGeofenceInside = (filters.SelectedGeofenceInside == \"\" || filters.SelectedGeofenceInside == undefined) ? null : filters.SelectedGeofenceInside;\r\n filterset.SelectedInterval = (filters.SelectedInterval == \"\" || filters.SelectedInterval == undefined) ? null : filters.SelectedInterval;\r\n filterset.SelectedAssetTypes = (filters.SelectedAssetTypes == \"\" || filters.SelectedAssetTypes == undefined) ? null : filters.SelectedAssetTypes;\r\n filterset.SelectedAssetStates = (filters.SelectedAssetStates == \"\" || filters.SelectedAssetStates == undefined) ? null : filters.SelectedAssetStates;\r\n filterset.SelectedOem = (filters.SelectedOem == \"\" || filters.SelectedOem == undefined) ? null : filters.SelectedOem;\r\n filterset.SelectedReefer = (filters.SelectedReefer == \"\" || filters.SelectedReefer == undefined) ? null : filters.SelectedReefer;\r\n filterset.AllReefers = (filters.AllReefers == \"\" || filters.AllReefers == undefined) ? null : filters.AllReefers;\r\n filterset.SelectedVesselCode = (filters.SelectedVesselCode == \"\" || filters.SelectedVesselCode == undefined) ? null : filters.SelectedVesselCode;\r\n filterset.SelectedCall = (filters.SelectedCall == \"\" || filters.SelectedCall == undefined) ? null : filters.SelectedCall; //WI-26881\r\n filterset.SelectedVesselCD = (filters.SelectedVesselCD == \"\" || filters.SelectedVesselCD == undefined) ? null : filters.SelectedVesselCD; //WI-26881\r\n filterset.SelectedVoyage = (filters.SelectedVoyage == \"\" || filters.SelectedVoyage == undefined) ? null : filters.SelectedVoyage; //WI-26881\r\n filterset.SelectedBookingNumber = (filters.SelectedBookingNumber == \"\" || filters.SelectedBookingNumber == undefined) ? null : filters.SelectedBookingNumber;//WI-4487\r\n filterset.StatusFilters = filters.StatusFilters;\r\n filterset.CustomAttributeFilters = filters.CustomAttributeFilters;\r\n filterset.SelectedCargoCareProfiles = (filters.SelectedCargoCareProfiles == \"\" || filters.SelectedCargoCareProfiles == undefined) ? null : filters.SelectedCargoCareProfiles;\r\n self.setState({\r\n tempFilters: filterset\r\n });\r\n\r\n var resultSet = self.props.requestReeferAdvanceSearch(filterset, eventsRefresh, newSearch,true);\r\n }\r\n }\r\n }\r\n \r\n onGridReady(params: any) {\r\n $('#globalLoader').show(); \r\n //this.gridApi.sizeColumnsToFit();\r\n self.setState({ gridApiParams: params.api });\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 4);\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n $('#globalLoader').hide();\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferStatusGrid\");\r\n }, 3000); \r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"ReeferStatusGrid\");\r\n }\r\n \r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 4);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"ReeferStatusGrid\");\r\n }, 3000); \r\n }\r\n \r\n\r\n showGridPreferenceColumns() {\r\n var gridApi = self.state.gridApiParams;\r\n var defaultColumns = gridApi.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApi.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 4);\r\n $('#globalLoader').hide();\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, gridApi, gridPreferencesData, \"ReeferStatusGrid\");\r\n }\r\n\r\n static ClearSelection() {\r\n $('#globalLoader').show();\r\n selectedRowIndex = -1;\r\n //ReeferHistoryGrid.ClearHistoryGridData();\r\n //this.props.clearGridHeaderExtension();\r\n if (self != undefined) {\r\n self.state.gridApiParams.deselectAll();\r\n }\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'status', this.state.reeferFormatter.AlarmMasterList);\r\n \r\n \r\n $('#globalLoader').hide();\r\n\r\n }\r\n\r\n onGridPaginationChanged(params: any) { \r\n if (params.newPage) {\r\n self.props.clearGridHeaderExtension();\r\n if (!commandIssued)\r\n params.api.deselectAll();\r\n commandIssued = false;\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'status');\r\n }\r\n if (params.api.getDisplayedRowCount() == 1 && (self.props.hasReefer && !self.props.hasGenset && !self.props.hasDry && !self.props.hasChassis)) { \r\n var rowindex = 0;\r\n var rowNode = params.api.getRowNode(rowindex);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null) {\r\n rowNode.setSelected(true);\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(rowNode.data, false, self.props.reeferHistoryEnabled);\r\n }\r\n } \r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.UnitEventDTTM)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n onSort(params: any) {\r\n params.api.clearFocusedCell();\r\n this.clearGridRowSelection(params);\r\n }\r\n onGridSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n if (selectedRows.length != 0) {\r\n //var selected = params.api.getFocusedCell();\r\n //if (selected != null) {\r\n //var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n //ReeferCallout.ResetMapPushpins(); // Clear existing pushpins\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n //}\r\n\r\n //var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: ''\r\n });\r\n\r\n self.props.getSelectedRow(selectedRows);\r\n }\r\n }\r\n\r\n ValidateBookingID(reeferData: any) {\r\n if (reeferData.length > 0 && reeferData[0].LastBookingEventMasterId != null && reeferData[0].LastBookingEventMasterId.length > 0) {\r\n for (var lastBookingID in reeferData[0].LastBookingEventMasterId) {\r\n if (reeferData[0].EventMasterID == parseInt(reeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static ReeferStatusResult() {\r\n self.ReeferSearchFilter(self.state.tempFilters, false, false);\r\n }\r\n HideAllContextMenus() {\r\n $(\"#gensetcontextmenu\").hide();\r\n $(\".gensetcontext-menu\").hide();\r\n $(\"#drycontextmenu\").hide();\r\n $(\".drycontext-menu\").hide();\r\n $(\"#chassiscontextmenu\").hide();\r\n $(\".chassiscontext-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n $(\".context-menu\").hide();\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getReeferContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"ReeferID\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) { \r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var reeferid = selectedrowNode.data.ReeferID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.ReeferID === reeferid)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n \r\n var distinctOEM = [];\r\n var fullPreTripLabel = 'Full';\r\n var shortPreTripLabel = 'Short';\r\n var funcPreTripLabel = 'Function Test';\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if ($.inArray(val.ReeferOEMTypeCd, distinctOEM) === -1) {\r\n distinctOEM.push(val.ReeferOEMTypeCd);\r\n }\r\n }\r\n });\r\n if (distinctOEM.length == 1) {\r\n if (self.state.reeferFormatter != null || self.state.reeferFormatter != undefined) {\r\n var customerSpecificCommandList = self.state.reeferFormatter.CustomerSpecificCommandList;\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n if (customerSpecificCommandList != null && customerSpecificCommandList.length > 0) {\r\n var custSpecificCommandList = lodashfilter(customerSpecificCommandList, function (item) {\r\n return item.CustomerId === custId;\r\n });\r\n if (custSpecificCommandList != null && custSpecificCommandList.length > 0) {\r\n var fullCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartFullPTI\";\r\n });\r\n if (fullCustSpecificCommandList != null && fullCustSpecificCommandList.length > 0) {\r\n fullPreTripLabel = fullCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n }\r\n var shortCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartShortPTI\";\r\n });\r\n if (shortCustSpecificCommandList != null && shortCustSpecificCommandList.length > 0) {\r\n shortPreTripLabel = shortCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n shortPreTripLabel = 'Auto 3';\r\n }\r\n var funcCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartCAShortPTI\";\r\n });\r\n if (funcCustSpecificCommandList != null && funcCustSpecificCommandList.length > 0) {\r\n funcPreTripLabel = funcCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n shortPreTripLabel = 'Auto 3';\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n shortPreTripLabel = 'Auto 3';\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n }\r\n self.setState({\r\n fullPreTripCommandText: fullPreTripLabel,\r\n shortPreTripCommandText: shortPreTripLabel,\r\n funcPreTripCommandText: funcPreTripLabel\r\n });\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.reeferContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('14'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.reeferContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('154'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.reeferContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('15'),\r\n },\r\n {\r\n name: 'Command History',\r\n action: () => {\r\n this.reeferContextMenuClick(\"CommandStatus\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('155'),\r\n },\r\n {\r\n name: 'CargoCare',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('76, 77, 224', params),\r\n subMenu: [\r\n {\r\n name: 'Assign to CargoCare',\r\n subMenu: this.assignToCargoCareSubMenu(selectedReeferData[0].CCProfileCode, params),\r\n //action: () => {\r\n // this.assignCargoCare();\r\n //},\r\n cssClasses: UserRights.checkMenuItemVisibility('76'),\r\n //disabled: UserRights.checkMenuItemDisabled(params, 'AssigntoCargoCare'),\r\n },\r\n {\r\n name: 'Unassign from CargoCare',\r\n action: () => {\r\n this.unAssignCaregoCare();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('77'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'UnassignfromCargoCare'),\r\n },\r\n {\r\n name: 'Clear CargoCare Alerts',\r\n subMenu: this.ClearCargoCareAlertsSubMenu(selectedReeferData),\r\n\r\n cssClasses: UserRights.checkMenuItemVisibility('224'),//RCNG-588\r\n disabled: UserRights.checkClearCargoCareAlertsSubMenuItemDisabled(params, 'ClearCargoCareAlerts'),\r\n },\r\n /*{\r\n name: 'Clear Set Point',\r\n action: () => {\r\n this.clearSetPoint();\r\n },\r\n //disabled: UserRights.checkMenuItemClearSetPointDisabled(params),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ClearSetPoint'),\r\n },*/\r\n ],\r\n },\r\n {\r\n name: 'Commands',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('18, 19, 20, 21, 22, 23, 26, 27, 24, 25, 28, 29, 30, 31, 32, 33, 80, 81, 83, 84, 85, 89, 90, 92, 103, 104, 106, 108, 109, 111, 112, 113, 114, 115, 116, 118, 122, 123, 125, 126, 145, 150, 270', params),\r\n disabled:\r\n //EnableLynxCommands ? UserRights.checkMenuItemDisabledForCommands(params, 'Commands'):\r\n UserRights.checkMenuItemDisabledForLynxCommands(params, 'Commands', EnableLynxCommands, EnableCT35ML5Commands, self.state.reeferFormatter.RefControllerTypes),//RCNG-1842, RCNG-3425\r\n subMenu: [\r\n {\r\n name: 'Reporting',\r\n ////cssClasses: UserRights.checkMenuItemVisibilityMultiple('26, 81, 145, 150'),\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('26, 81, 145, 150', params, 'Reporting', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Ping / Report',\r\n action: () => {\r\n this.popUpPing();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('26', params, 'Ping', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set Reporting Interval',\r\n action: () => {\r\n this.popUpChangeReporting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('81', params, 'SetReportingInterval', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'SetReportingInterval'),\r\n },\r\n {\r\n name: 'Device Reset',\r\n action: () => {\r\n this.popUpDeviceReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('145', params, 'DeviceReset', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Reset To Defaults',\r\n action: () => {\r\n this.popUpDeviceHardReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('150', params, 'DeviceResetToDefaults', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n\r\n name: 'Reefer Settings',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25, 28, 92, 108,267,268,269', params, 'ReeferSettings', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Change Setpoints',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25', params, 'ChangeSetpoints', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Temperature',\r\n action: () => {\r\n this.popUpChangeTempSetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('23'),\r\n },\r\n {\r\n name: 'Humidity',\r\n action: () => {\r\n this.popUpHumiditySetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('27', params, 'Humidity', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Humidity'),\r\n },\r\n {\r\n name: 'O2',\r\n action: () => {\r\n this.popUpO2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('24', params, 'O2', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CO2',\r\n action: () => {\r\n this.popUpCo2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('25', params, 'CO2', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Clock',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('92, 108', params, 'Clock', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Sync to Device',\r\n action: () => {\r\n this.popUpSyncReeferClock();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('92', params, 'SynctoDevice', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Clock Sync Settings',\r\n action: () => {\r\n this.popUpChangeReeferClockSyncSetting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('108', params, 'ClockSyncSettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Change Reefer ID',\r\n action: () => {\r\n this.popUpChangeReeferId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('28', params, 'ChangeReeferID', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ChangeReeferID'),\r\n },\r\n {\r\n name: 'Controlled Atmosphere',\r\n action: () => {\r\n this.popUpControlledAtmosphere();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('139', params, 'ControlledAtmosphere', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Fan Speed',\r\n action: () => {\r\n this.popUpFanSpeed();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('269', params, 'FanSpeed', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledforDimiSetting(params, 'FanSpeed'),\r\n },\r\n {\r\n name: 'OEM PTI',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('267,268', params, 'OEMPTI', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledforDimiSetting(params, 'OEMPTI'),\r\n subMenu: [\r\n {\r\n name: 'DIMI Settings',\r\n action: () => {\r\n this.popUpDIMISettings();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('267', params, 'DIMISettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Intelligent PTI Function',\r\n action: () => {\r\n this.popUpIntelligentPTIFunction();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('268', params, 'IntelligentPTIFunction', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n }\r\n ],\r\n },\r\n {\r\n name: 'Reefer Data Log',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByDataForTDD('29, 31, 32, 80', params, 'ReeferDataLog', self.state.reeferFormatter.RefControllerTypes, ShowTDDForCT36ML5, ShowTDDForCT35ML5),\r\n disabled: UserRights.checkMenuItemDisabledForTDD(params, 'ReeferDataLog', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Get Data Log',\r\n action: () => {\r\n this.popUpDLTraditional(this);\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyDataForTDD('31', params, 'GetDataLog', self.state.reeferFormatter.RefControllerTypes, ShowTDDForCT36ML5, ShowTDDForCT35ML5),\r\n },\r\n {\r\n name: 'Set Data Log Interval',\r\n action: () => {\r\n this.popUpChangeDatalog();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('29', params, 'SetDataLogInterval', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Real-Time Retrieval Settings',\r\n //action: () => {\r\n // to do Check \r\n //this.popUpChangeDatalog();\r\n //},\r\n cssClasses: UserRights.checkMenuItemVisibility('32, 80'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Reefer Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('18, 19, 20, 21, 30, 106, 206', params, 'ReeferPreTrip', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Start Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('18, 19, 20'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StartPre-Trip'),\r\n subMenu: [\r\n {\r\n name: this.state.fullPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripFull();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('18', params, 'fullPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.shortPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripShort();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('19', params, 'shortPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.funcPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('20', params, 'funcPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled',\r\n action: () => {\r\n this.popUpChangeToChilled();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('140', params, 'Chilled', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Frozen',\r\n action: () => {\r\n this.popUpChangeToFrozen();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('141', params, 'Frozen', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA',\r\n action: () => {\r\n this.popUpChangeToCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('142', params, 'CA', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Full',\r\n action: () => {\r\n this.popUpChangeToCAFullPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('143', params, 'CAFull', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Function Test',\r\n action: () => {\r\n this.popUpChangeToCAFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('144', params, 'CAFunctionTest', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled and CA',\r\n action: () => {\r\n this.popUpChangeToChilledandCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('148', params, 'ChilledandCA', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Stop Pre-Trip',\r\n action: () => {\r\n this.popUpStopPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('21', params, 'StopPre-Trip', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StopPre-Trip'),\r\n },\r\n {\r\n name: 'Scheduled Pre-Trip',\r\n action: () => {\r\n this.popUpSchedulePTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('106', params, 'ScheduledPre-Trip', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Get Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'GetPre-TripResults', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Show Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTIReport();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'ShowPre-TripResults', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ShowPreTripResults'),\r\n },\r\n ,\r\n {\r\n name: 'Get TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWR();\r\n },\r\n cssClasses: UserRights.checkTripWISEVisibilitybyData('206', params, 'GetTripWISEReport', tripWISESupport),\r\n },\r\n {\r\n name: 'Show TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWReport();\r\n },\r\n cssClasses: UserRights.checkTripWISEVisibilitybyData('261', params, 'ShowTripWISEReport', tripWISESupport),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ShowTripWISEReport'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Reboot Reefer Controller',\r\n action: () => {\r\n this.popUpRebootReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('22', params, 'RebootReeferController', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Query Reefer Inventory',\r\n action: () => {\r\n this.popUpQueryReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('83,84,85', params, 'QueryReeferInventory', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Reefer Model Configuration',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('89, 90', params, 'ReeferModelConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Update',\r\n action: () => {\r\n this.popUpUpdateModelConfig();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('89', params, 'Update', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Verify',\r\n action: () => {\r\n this.popUpVerifyModelValidity();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('90', params, 'Verify', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Verify'),\r\n },\r\n ],\r\n\r\n },\r\n {\r\n name: 'Defrost',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('103, 104', params, 'Defrost', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Defrost'),\r\n\r\n subMenu: [\r\n\r\n {\r\n name: 'Start Defrost',\r\n action: () => {\r\n this.popUpStartDeforst();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('103', params, 'StartDefrost', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Change Defrost Interval',\r\n action: () => {\r\n this.popUpChangeDeforstInterval();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('104', params, 'ChgDefrostInterval', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledForDefrost(params, 'ChgDefrostInterval', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n\r\n name: 'Multiple Setpoints',\r\n action: () => {\r\n this.popUpMSC();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('123', params, 'MultipleSetpoints', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Automatic Cold Treatment',\r\n action: () => {\r\n this.popUpACT();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('122', params, 'AutomaticColdTreatment', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Guest Reefer configuration',\r\n action: () => {\r\n this.popUpGuestReeferConfigCmd();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('112, 113, 114, 115, 116', params, 'GuestReeferconfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Change Zigbee Config Settings',\r\n action: () => {\r\n this.popUpZigbeeSettings();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('118', params, 'ChangeZigbeeConfigSettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Assign PAN Id',\r\n action: () => {\r\n this.popUpAssignPanId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('109', params, 'AssignPANId', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Configuration',\r\n action: () => {\r\n this.popAutoConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('110', params, 'DeviceConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Asset Configuration',\r\n action: () => {\r\n this.popAssetConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('121', params, 'AssetConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Fresh Air Type',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('125, 126', params, 'FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n\r\n {\r\n name: 'Get - Fresh Air Type',\r\n action: () => {\r\n this.popUpGetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('125', params, 'Get-FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set - Fresh Air Type',\r\n action: () => {\r\n this.popUpSetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('126', params, 'Set-FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Get Asset ID',\r\n action: () => {\r\n this.popUpGetAssetId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('199', params, 'GetAssetId', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Enable Door Sensor',\r\n action: () => {\r\n this.popUpEnableDoorSensor();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('207', params, 'EnableDoorSensor', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('94, 95, 98'),\r\n subMenu: [\r\n {\r\n name: 'Create Trip',\r\n action: () => {\r\n this.popUpCreateTrip();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('95'),\r\n },\r\n {\r\n name: 'Trip Status',\r\n action: () => {\r\n this.popUpTripStatus();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('94'),\r\n },\r\n {\r\n name: 'Clear Deviation',\r\n action: () => {\r\n this.popUpClearDeviation();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('98'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ClearDeviation'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Booking and Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('40, 82, 100, 101, 102'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'BookingandAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('40, 100, 102'),\r\n },\r\n {\r\n name: 'Unassign',\r\n action: () => {\r\n this.popUpUnAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('82, 101'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'Unassign',self.state.reeferFormatter.EventMasterList),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Bookings',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('212,211,213,214,249'), //Added Right id for RCNG-945\r\n disabled: UserRights.checkMenuItemDisabled(params, 'NewBookingandAccess'),\r\n subMenu: [\r\n {\r\n name: 'Create New Booking',\r\n action: () => {\r\n this.reeferContextMenuClick(\"CreateBooking\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('211'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'NewBookingCreate', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Edit Booking',\r\n action: () => {\r\n this.reeferContextMenuClick(\"EditBooking\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('212'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'NewBookingEdit', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'View Booking',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"ViewBooking\");\r\n this.popUpViewBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('213'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'ViewBooking', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Unassign Booking',\r\n action: () => {\r\n this.popUpNewUnAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('214'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'Unassign', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Third-Party Access',\r\n action: () => {\r\n this.popUpAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('249'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Edit Voyage',\r\n action: () => {\r\n this.popUpEditVoyage();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('248'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'EditVoyage'),\r\n },\r\n {\r\n name: 'Inventory',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('208,209'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'RetireOrReactivate'),\r\n subMenu: [\r\n {\r\n name: 'Retire',\r\n action: () => {\r\n this.popUpRetire();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('208',params,\"Retire\"),\r\n },\r\n {\r\n name: 'Reactivate',\r\n action: () => {\r\n this.popUpReactivate();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('209', params,\"Reactivate\"),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Confirm Controller Swap',\r\n action: () => {\r\n this.popUpControllerSwap();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('47'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ConfirmControllerSwap'),\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n \r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: true,\r\n sortable: true,\r\n enableRowGroup: true,\r\n resizable: true,\r\n }]\r\n }\r\n \r\n \r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"CC\", field: \"CCSeverityLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.CargoCareFormatterForFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter, tooltipComponent: 'cCAlmTooltip',\r\n tooltipValueGetter: this.toolTipValueGetter, cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList },onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.statusIndicatorWithDescriptionForALMForFilter(params) } }, valueGetter: (params) => { return ReeferFormatters.statusALMSorting(params); }, resizable: true, width: 65, cellRenderer: (params) => { return ReeferCellRenderer.StatusIndicatorWithDescriptionForAlarms(params, self.state.reeferFormatter.AlarmMasterList) }, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return ReeferFormatters.runStateFormatterForFilter(params); } }, resizable: true, valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferCellRenderer.RunStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.pwrStateFormatterForFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: ReeferCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BATT\", field: \"ReeferBatteryPct\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.reeferBatteryPctFormatterFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return Formatters.reeferBatteryPctSorting(params); }, cellRenderer: ReeferCellRenderer.BatteryPctFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VVC Dep\", field: \"DepartingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.DepartingVVCstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VVC Arr\", field: \"ArrivingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.ArrivingVVCstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltipField: \"TripNameAndStatus\", width: 70, valueGetter: (params) => { return ReeferFormatters.TripSorting(params); }, cellRenderer: ReeferCellRenderer.TripstatusIndicator, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: true, cellClass: 'myExcelStyle', filter: true, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: ReeferCellRenderer.AssetStateFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Identification\",\r\n children: [\r\n {\r\n headerName: \"OEM\", field: \"ReeferOEMTypeCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.oemTypeFormatterForFilter(params); } }, resizable: true,\r\n valueGetter: params => { return ReeferFormatters.OEMTypeValueFormatterFieldName(params); },\r\n width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n\r\n\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ReeferID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Model\", field: \"OEMModel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.UnitTypesListFormatters(params, self.state.reeferFormatter.UnitTypesList); } , cellRenderer: (params) => { return ReeferFormatters.UnitTypesListFormatters(params, self.state.reeferFormatter.UnitTypesList); }, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Booking\",\r\n children: [\r\n { headerName: \"Booking #\", field: \"BookingNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BookingNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK temp \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"TemperatureUnit\"); }, cellRenderer: ReeferFormatters.TemperatureFormatterForBooking, field: \"TemperatureUnit\", columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Assigned to\", field: \"CustomerName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); }, filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } }, cellRenderer: ReeferCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"CC profile\", field: \"CCProfileCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CCProfileCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"CC alerts\", field: \"CCAlarms\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.CCAlarmAliasDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.CCAlertAlarmAliasDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList) }, tooltipComponent: 'cCAlmTooltip', tooltipValueGetter: this.toolTipValueGetter, cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"BK VV\", field: \"BKVV\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.BKVVstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK POR\", field: \"BKPOR\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOR\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK POL\", field: \"BKPOL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK POD\", field: \"BKPOD\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOD\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK DEL\", field: \"BKDEL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKDEL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK Customer\", field: \"BKCustomer\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKCustomer\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Trip Start\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripStartForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripStart\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripStart\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Trip End \", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripEndForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripEnd\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripEnd\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: 'Report Date/Time and Location',\r\n children: [\r\n //26422 - added params\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params,\r\n self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList,\r\n self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.state.reeferFormatter.Ref_SensorAlerts);\r\n }, cellRenderer: (params) => { \r\n return ReeferFormatters.EventDescriptionFormatters(params,\r\n self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList\r\n , self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.state.reeferFormatter.Ref_SensorAlerts);\r\n\r\n }, getQuickFilterText: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList,\r\n self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.state.reeferFormatter.Ref_SensorAlerts\r\n );\r\n }, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Event time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"Event notes\", field: \"EventNotes\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventNotes\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Door\", field: \"DoorOpen\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, getQuickFilterText: ReeferFormatters.doorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.DoorFormatterSorting(params); }, cellRenderer: ReeferFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DoorEventDtm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DoorEventDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence\", field: \"GeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"GeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence\", field: \"ServerGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: ReeferFormatters.stringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence ID\", field: \"Geofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Geofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence ID\", field: \"ServerGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: ReeferFormatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: ReeferCellRenderer.GPSCoordsFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.reeferSecondsToTimeConverterFilter(params); }, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Zip\", field: \"Zip\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Zip\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Datalog Events',\r\n children: [\r\n { headerName: \"DL event\", field: \"DLEventMasterID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, cellRenderer: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, getQuickFilterText: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"DL event time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDLEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DLEventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DLEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 1\", field: \"DLParam1\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam1\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 2\", field: \"DLParam2\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam2\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 3\", field: \"DLParam3\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam3\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 4\", field: \"DLParam4\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam4\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 5\", field: \"DLParam5\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam5\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) } \r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Status and Sensor Reporting',\r\n children: [\r\n { headerName: \"Alarm\", field: \"AlarmsList\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.AlarmDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.AlarmsDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList) }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Opr mode\", field: \"RunningMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.OperatingModeFormatter(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Reefer data\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"UnitEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T set \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SetPoint\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp2\", columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp2\", columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T amb \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"AmbientTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"AmbientTemp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HumiditySetpoint\"); }, cellRenderer: ReeferFormatters.HumiditySetpointFormatter, getQuickFilterText: ReeferFormatters.HumiditySetpointFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH read\", field: \"Humidity\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.HumiditySettingFormatter(params); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 set\", field: \"CO2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 read\", field: \"CO2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 set\", field: \"O2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 read\", field: \"O2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T evap in \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorInletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorInletSensor\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T evap out \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorOutletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorOutletSensor\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P suc\", field: \"CompositeSuctionPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompositeSuctionPressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T suc \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorSuctionTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorSuctionTemp\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P dis\", field: \"DischargePressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"DischargePressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T dis \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T dis 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp2\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T econ in \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerInTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerInTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"T econ out \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerOutTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerOutTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"P cond\", field: \"CondenserPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataPCondFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T cond wall \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CondenserTemperature\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CondenserTemperature\", columnGroupShow: 'open', width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"M cond\", field: \"CondenserFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CondenserFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Evap fan set\", field: \"EvaporatorFanSpeedControl\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EvaporatorFanSpeedControl\"); }, columnGroupShow: 'open', cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"LS evap\", field: \"LowSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LowSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"HS evap\", field: \"HighSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HighSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Air pump hr\", field: \"AirPumpRunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.AirPumpRunHoursSorting(params); }, cellRenderer: ReeferFormatters.AirPumpRunHoursFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"Heat on\", field: \"HeaterOnTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HeaterOnTime\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open exp\", field: \"EvaporatorExpansionValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenExpFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open suc\", field: \"SuctionModulationValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenSucFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HotGasValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open econ\", field: \"EconomizerValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"EconomizerValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp freq\", field: \"CompressorFrequency\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp curr\", field: \"CompressorCurrent\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorCurrent\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp hr\", field: \"CompressorRunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CompressorRunHoursSorting(params); }, cellRenderer: ReeferFormatters.CompressorRunHoursFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CT state\", field: \"ColdTreatmentState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ColdTreatmentState\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"CT dur (d)\", field: \"CTDuration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTDurationSorting(params); }, cellRenderer: ReeferFormatters.CTDurationFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' }, // RCNG-1818\r\n { headerName: \"CT max \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTTempLimit\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTTempLimit\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },//RCNG-1818\r\n { headerName: \"CT final \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTPostSetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTPostSetPoint\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },//RCNG-1818\r\n { headerName: \"CT rem (hr)\", field: \"CTRemainingTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTRemainingTimeSorting(params); }, cellRenderer: ReeferFormatters.CTRemainingTimeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' }, // RCNG-1818\r\n { headerName: \"CT Time\", cellClass: 'myExcelStyle', enableRowGroup: true, sortable: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCTTimeForFilter(params); } }, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CTTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CTTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)},\r\n { headerName: \"USDA 1 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA1Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA1Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA2Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA2Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 3 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA3Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA3Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 4 cargo \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"Cargo4Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"Cargo4Temp\", width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Vent pos\", field: \"VentPositionSensorCMH\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VentPositionSensorCMH\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CA mode\", field: \"ControlledAtmosphereMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ControlledAtmosphereMode(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Bulb mode\", field: \"BulbMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BulbMode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CA hr\", field: \"CARunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CARunHoursSorting(params); }, cellRenderer: ReeferFormatters.CARunHoursFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"CA SW ver\", field: \"CASoftwareRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CASWVerSorting(params); }, cellRenderer: ReeferFormatters.CASWVerFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"3 ph curr\", field: \"ThreePhaseCurrent\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ThreePhaseCurrentSortingFieldName(params, \"ThreePhaseCurrent\"); }, cellRenderer: ReeferFormatters.Current3PhaseFormatter, columnGroupShow: 'open', width: 135, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Tot curr\", field: \"TotalCurrentDraw\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"TotalCurrentDraw\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage1\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage2\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage3\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n {\r\n headerName: \"EverFRESH\", field: \"EverFRESH\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n getQuickFilterText: ReeferFormatters.everFreshQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.everFreshFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.everFreshFormatterSorting(params); },\r\n cellRenderer: ReeferFormatters.everFreshFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"VFD\", field: \"VFD\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VFD\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"OEM PTI state\", field: \"TripWiseStatusDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TripWiseStatusSorting(params, self.state.reeferFormatter.TripWiseStatusList); }, cellRenderer: (params) => { return ReeferCellRenderer.TripWiseStatusFormatter(params, self.state.reeferFormatter.TripWiseStatusList); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"OEM PTI exp (d)\", field: \"TripWiseExpiration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.TripWiseExpirationSorting(params); }, cellRenderer: ReeferFormatters.TripWiseExpirationFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }, // RCNG-169\r\n { headerName: \"OEM PTI type\", field: \"DimiStartAfter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DimiStartAfter\"); }, cellRenderer: ReeferCellRenderer.OEMPTITypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"OEM PTI time left (hr)\", field: \"DimiRemainTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiRemainTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) }, \r\n { headerName: \"PTI state\", field: \"PTIState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, cellRenderer: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, getQuickFilterText: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI result\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltip: Formatters.toolTipFormatter, valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); }, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PTIType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"PTRDateTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Freq\", field: \"LineFrequency\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.LineFrequencySorting(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont s/n\", field: \"ControllerSerialNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerSerialNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DataLoggerDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont SW version\", field: \"SoftwareRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SoftwareRevision\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont set\", field: \"ControllerTypeSetting\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerTypeSetting\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FreshAirType\"); }, cellRenderer: Formatters.FreshAirTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Defrost int\", field: \"DefrostInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DefrostInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"Tot pwr kWh\", field: \"PowerMeter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.PowerMeterSorting(params); }, cellRenderer: ReeferFormatters.PowerMeterFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: \"Device Status\",\r\n children: [\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: ReeferFormatters.rcdPowerSourceFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"ReeferACPowerLevel\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MAIN');}, cellRenderer: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'BL');}, cellRenderer: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MESH');}, cellRenderer: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device temp \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"DeviceTemp\", columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BatteryVoltage\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.BattVoltageSortingFieldName(params, \"BatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.BatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door bat (V)\", field: \"DoorSensorBatteryVoltage\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.DoorBattVoltageSortingFieldName(params, \"DoorSensorBatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.DoorBatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Geofence revision\", field: \"RevisionNum\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RevisionNum\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MCC (country)\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, field: \"CountryName\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.MNCSorting(params); }, cellRenderer: ReeferCellRenderer.MNCTypeFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: ReeferCellRenderer.RSSITypeFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"RFR Comms\", field: \"RCDRfrComErr\", columnGroupShow: 'open', cellRenderer: ReeferFormatters.reeferCommsFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device config\", field: \"DeviceConfig\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', filterParams: { valueGetter: params => { return Formatters.GuestReeferModeFormatterForFilter(params); } }, cellRenderer: Formatters.GuestReeferModeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n //{ headerName: \"Cmd P\", field: \"PendingCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Cmd A\", field: \"ActiveCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Cmd E\", field: \"ErrorCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Receipt time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterModifiedDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"ModifiedDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"ModifiedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Comments\", field: \"CommentExists\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CommentExistsSorting(params); }, cellRenderer: ReeferCellRenderer.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this) } \r\n ]\r\n //},\r\n //{\r\n // headerName: 'Device Sensor',\r\n // children: [\r\n // { headerName: \"Temp Sup. 1 \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorSupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorSupplyTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n // { headerName: \"Temp Rtn. 1 \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorReturnTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }\r\n // ]\r\n } \r\n ];\r\n }\r\n\r\n clearGridRowSelection(params: any) { \r\n self.props.renderClearSelection();\r\n params.api.deselectAll();\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState,SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n \r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) { \r\n // self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var colDef = params.node.columnApi.columnController.filter(x => x.colId == fieldName);\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"BatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"DoorSensorBatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"TripWiseExpiration\" && fieldName.toString().trim() != \"HumiditySetpoint\" && fieldName.toString().trim() != \"LineFrequency\") // RCNG-169\r\n return \"OOR\";\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n //if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"HumiditySetpoint\" )\r\n // return \"OOR\";\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"UnitEventDTTM\" || fieldName.toString() == \"PTRDateTime\" || fieldName.toString() == \"DataLoggerDtm\" || fieldName.toString() == \"ModifiedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"RunState\":\r\n return ReeferCellRenderer.RunStateFormatterGrouping(fieldValue);\r\n case \"AssetState\":\r\n return ReeferCellRenderer.AssetStateFormatterGrouping(fieldValue);//added Asset State\r\n case \"MASeverityLevel\":\r\n return ReeferCellRenderer.StatusIndicatorALMFormatterGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return ReeferCellRenderer.PowerStateFormatterGrouping(fieldValue);\r\n case \"CCSeverityLevel\":\r\n return ReeferCellRenderer.CargoCareFormatterGrouping(fieldValue);\r\n case \"VesselCd\":\r\n return fieldValue == \"-NA-\" ? \"No VSL\" : fieldValue;\r\n case \"TripStatusCdAndDFlag\":\r\n return ReeferCellRenderer.TripStatusFormatterGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return ReeferCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExists\":\r\n return ReeferCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"PTResult\":\r\n return ReeferCellRenderer.PTResultGrouping(fieldValue);\r\n /* RCNG 108 start*/\r\n case \"AlarmsList\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return ReeferCellRenderer.AlarmDescriptionGroupingFormatter(fieldValue, DeviceType, self.state.reeferFormatter.AlarmMasterList);\r\n }\r\n /* RCNG 108 end*/\r\n //case \"Humidity\":\r\n // return Formatters.HumidityGrouping(params);\r\n //case \"CondenserPressure\":\r\n // return Formatters.sensorDataPCondGrouping(params);\r\n //case \"EvaporatorExpansionValveOpening\":\r\n // return Formatters.sensorDataOpenExpGrouping(params);\r\n //case \"SuctionModulationValveOpening\":\r\n // return Formatters.sensorDataOpenSucGrouping(params);\r\n //case \"ControlledAtmosphereMode\":\r\n // return Formatters.ControlledAtmosphereModeGrouping(params);\r\n case \"TripWiseExpiration\": // RCNG-169\r\n return Formatters.TripWiseExpirationGrouping(fieldValue);\r\n case \"DimiRemainTerm\":\r\n return Formatters.DimiRemainTermGrouping(fieldValue);\r\n case \"CTDuration\": // RCNG-1818\r\n return Formatters.CTDurationGrouping(params);\r\n case \"CTRemainingTime\": // RCNG-1818\r\n return Formatters.CTRemainingTimeGrouping(params);\r\n //case \"RunningMode\":\r\n // return Formatters.RunningModeGrouping(fieldValue);\r\n case \"Cargo4Temp\":\r\n case \"USDA3Temp\":\r\n case \"USDA2Temp\":\r\n case \"USDA1Temp\":\r\n case \"SetPoint\":\r\n case \"SupplyTemp1\":\r\n case \"SupplyTemp2\":\r\n case \"ReturnTemp1\":\r\n case \"AmbientTemp\":\r\n case \"ReturnTemp2\":\r\n case \"EvaporatorTemp\":\r\n case \"CompressorSuctionTemp\":\r\n case \"CompressorDischargeTemp\":\r\n case \"EvaporatorInletSensor\": \r\n case \"EvaporatorOutletSensor\":\r\n case \"CompressorDischargeTemp2\":\r\n case \"EconomizerInTemp\": \r\n case \"EconomizerOutTemp\":\r\n case \"CondenserTemperature\":\r\n case \"DeviceTemp\":\r\n case \"SensorReturnTemp1\":\r\n case \"SensorSupplyTemp1\":\r\n case \"CTTempLimit\"://RCNG-1818\r\n case \"CTPostSetPoint\"://RCNG-1818\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.TemperatureFormatterGrouping(fieldValue, fieldName, params, DeviceType);\r\n }\r\n \r\n case \"TemperatureUnit\":\r\n return Formatters.BookingTemperatureFormatterGrouping(fieldValue, fieldName, params);\r\n case \"EventDTTM\":\r\n case \"UnitEventDTTM\":\r\n case \"PTRDateTime\":\r\n case \"DataLoggerDtm\":\r\n case \"ModifiedDTTM\":\r\n case \"DLEventDTTM\":\r\n case \"DoorEventDtm\":\r\n case \"TripStart\":\r\n case \"TripEnd\":\r\n case \"CTTime\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"HumiditySetpoint\":\r\n {\r\n \r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n return Formatters.HumiditySetpointGrouping(fieldValue, HumiditySetpointStatus);\r\n }\r\n case \"TripWiseStatusDescription\":\r\n {\r\n var ReeferOEMTypeCd; var DimiResultActuator; var DimiResultAlarm; var DimiResultOOR;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR);\r\n }\r\n case \"DoorOpen\":\r\n return ReeferFormatters.DoorFormatterGrouping(fieldValue);//RCNG-1106\r\n case \"EverFRESH\":\r\n return Formatters.EverFreshFormatterGrouping(fieldValue);\r\n case 'DimiStartAfter':\r\n return Formatters.OEMPTITypeFormatter(fieldValue);\r\n case 'ReeferBatteryPct':\r\n return ReeferCellRenderer.ReeferDoorBattPctFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n // GridReeferStatusToolBar.GetColumns(params);\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n var gridPreferencesData: any\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0 && self.state.gridApiParams.gridOptionsWrapper!=null && self.state.gridApiParams.gridOptionsWrapper!=undefined) { //RCNG-207\r\n // RCNG 239 && self.state.gridApiParams.gridOptionsWrapper.length > 0\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n // RCNG 5198 - OMP - UI:The selected grid columns are not displayed for Export excel and send Email\r\n \r\n if (self.props != null && self.props.dashboardWidgetsSearch != null && self.props.dashboardWidgetsSearch != undefined) {\r\n gridPreferencesData= self.props.dashboardWidgetsSearch.filter(x => x.DashboardWidgetId == 4);\r\n }\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferStatusGrid\");\r\n }, 2000); \r\n });\r\n\r\n }\r\n \r\n refreshStatusGrid() {\r\n //$('#globalLoader').show();\r\n //ReeferToggleButtonsFilter.ClearToggleFilters();\r\n selectedRowIndex = -1;\r\n this.GetCCprofileCode();//RCNG-713\r\n this.props.clearGridHeaderExtension();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: ''\r\n }, () => this.ReeferSearchFilter(self.props.statusFilter, false, false));\r\n }\r\n static refreshStatusGrid() {\r\n //$('#globalLoader').show();\r\n //ReeferToggleButtonsFilter.ClearToggleFilters();\r\n selectedRowIndex = -1;\r\n self.GetCCprofileCode(); //RCNG-713\r\n self.props.clearGridHeaderExtension();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n self.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: ''\r\n }, () => self.ReeferSearchFilter(self.props.statusFilter, false, false));\r\n }\r\n refreshStatusGridForNewEvents() { \r\n selectedRowIndex = -1;\r\n this.GetCCprofileCode();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: ''\r\n }, () => this.ReeferSearchFilter(self.props.statusFilter, true, false));\r\n }\r\n\r\n refreshDashboardReeferGrids() { //RCNG-1172\r\n selectedRowIndex = -1;\r\n this.GetCCprofileCode();\r\n ReeferHistoryGrid.refreshHistoryGrid(true);\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: ''\r\n }, () => this.ReeferSearchFilter(self.props.statusFilter, false, false));\r\n }\r\n\r\n static refreshDashboardGrid() {\r\n self.refreshDashboardReeferGrids(); //RCNG-1172\r\n }\r\n\r\n static refreshToggleFilters() { \r\n if (self != undefined) {\r\n if (self.state.ToggleSearchParams != undefined && self.state.ToggleSearchParams != null)\r\n self.setState({ ToggleSearchParams: null });\r\n self.setState({ rowData: [] });\r\n }\r\n }\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n \r\n switch (popUpName) {\r\n \r\n case 'SendEmail':\r\n return 0 ? true : false} sensorData={reeferAssetSensors}/>\r\n case 'Export':\r\n return ;\r\n case 'Ping':\r\n return ;\r\n case 'ChangeTempSetPoint':\r\n return ;\r\n case 'ChangeHumiditySetPoint':\r\n return ;\r\n case 'ChangeO2SetPoint':\r\n return ;\r\n case 'ChangeCO2SetPoint':\r\n return ;\r\n case 'ChangeControlledAtmosphere':\r\n return ;\r\n case 'GetDLTraditional':\r\n return ;\r\n case 'PreTrip':\r\n return ;\r\n case 'StopPTI':\r\n return ;\r\n case 'SchedulePreTrip':\r\n return ;\r\n case 'GetPTI':\r\n return ;\r\n case 'RebootReefer':\r\n return ;\r\n case 'ChangeDatalogInterval':\r\n return ;\r\n case 'ChangeReeferId':\r\n return ;\r\n case 'ChangeReportingInterval':\r\n return ;\r\n case 'QueryReeferInventory':\r\n return ;\r\n case 'UpdateModelConfiguration':\r\n return ;\r\n case 'VerifyModelValidity':\r\n return ;\r\n case 'SyncReeferClock':\r\n return ;\r\n case 'StartDeforst':\r\n return ;\r\n case 'ChangeDeforstInterval':\r\n return ;\r\n case 'AssignPanId':\r\n return ;\r\n case 'GuestReeferConfiguration':\r\n return ;\r\n case 'CreateTrip':\r\n return ;\r\n case 'TripStatus':\r\n return ;\r\n case 'ClearDeviation':\r\n return ;\r\n case 'AssignBooking':\r\n return ;\r\n case 'UnAssignBooking':\r\n return ;\r\n case 'ViewBooking':\r\n return ;\r\n case 'EditBooking':\r\n return ;\r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n case 'ControllerSwap':\r\n return ;\r\n case 'ChangeReeferClockSyncSettings':\r\n return ;\r\n case 'Zigbee':\r\n return ;\r\n case 'AutoConfig':\r\n return ;\r\n case 'AssetConfig':\r\n return \r\n case 'MSC':\r\n return ;\r\n case 'ACT':\r\n return ;\r\n case 'GetFreshAirType':\r\n return ;\r\n case 'SetFreshAirType':\r\n return ;\r\n case 'DeviceReset':\r\n return ;\r\n case 'DeviceHardReset':\r\n return ;\r\n case 'GetAssetId':\r\n return ;\r\n case 'GetTWR':\r\n return ;\r\n case 'EnableDoorSensor':\r\n return ;\r\n case 'NewUnAssignBooking':\r\n return ;\r\n case 'EditVoyage':\r\n return ;\r\n case 'DS':\r\n return ;\r\n case 'IntelligentPTIFunction':\r\n return ;\r\n case 'FanSpeed':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var reeferData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.USP_UnitCurrentConditionUI_Model[];\r\n filterSet = reeferData;\r\n var filterParams = JSON.stringify(filterSet);\r\n var checkBoxInfo = this.state.VCCheckBoxInfo;\r\n if (isCommands) {\r\n if (reeferData != undefined && reeferData != null) {\r\n if (popUpName == \"GetDLTraditional\" || popUpName == \"SchedulePreTrip\") {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData, checkBoxInfo) }, () => { self.props.getCommandPopupTitle(this.state.modelTitle); self.props.getCommandPopupContent(this.state.popUpHtml); });\r\n $('#btnTriggerPopup').click();\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/CheckIsMsgFromVessel', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n var vesselid = data;\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetVesselInformation?customerID=' + custId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n checkBoxInfo.dropDownVCData = result;\r\n if (result.length > 0) {\r\n if (vesselid == \"-1\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n else if (vesselid == \"0\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = false;\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = true;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = false;\r\n checkBoxInfo.selectedVCData = checkBoxInfo.dropDownVCData.find(d => d.VesselId == parseInt(vesselid));\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n }\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n $('#globalLoader').hide();\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) }, () => { self.props.getCommandPopupTitle(this.state.modelTitle); self.props.getCommandPopupContent(this.state.popUpHtml); });\r\n $('#btnTriggerPopup').click();\r\n });\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n if (popUpName == \"TripStatus\") {\r\n this.setState({\r\n modelTitle: 'Trip Status' + \" - \" + this.state.selectedItems[0].ReeferID\r\n });\r\n }\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) }, () => {\r\n self.props.getCommandPopupTitle(this.state.modelTitle);\r\n self.props.getCommandPopupContent(this.state.popUpHtml);\r\n });\r\n $('#btnTriggerPopup').click(); \r\n }\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n self.setState({ VCCheckBoxInfo: VCInfo });\r\n } \r\n\r\n popUpGetPTIReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ PTReport: result }, () => { self.props.getCommandPopupPTReport(this.state.PTReport); });\r\n this.setState({ ReportReeferId: reeferData[0].ReeferID }, () => { self.props.getCommandPopupReportReeferId(this.state.ReportReeferId); });\r\n $('#globalLoader').hide();\r\n if (this.state.PTReport == null || this.state.PTReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'Pre-Trip Report', popUpHtml:
    }, () => { self.props.getCommandPopupTitleReport(this.state.modelTitle); self.props.getCommandPopupContentReport(this.state.popUpHtml); });\r\n $('#btnTriggerReport').click();\r\n }\r\n });\r\n }\r\n }\r\n\r\n popUpGetTWReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetTripWISEReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ TWReport: result, ReportReeferId: reeferData[0].ReeferID }, () => { this.bindTWReport(); });\r\n });\r\n }\r\n }\r\n bindTWReport() { \r\n self.props.getCommandPopupTWReport(this.state.TWReport);\r\n self.props.getCommandPopupReportReeferId(this.state.ReportReeferId);\r\n $('#globalLoader').hide();\r\n if (this.state.TWReport == null || this.state.TWReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No TripWISE reports have been collected for this reefer. Execute the ‘Get TripWISE Report’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'TripWISE Report', popUpHtml:
    }, () => { self.props.getCommandPopupTitleReport(this.state.modelTitle); self.props.getCommandPopupContentReport(this.state.popUpHtml); });\r\n $('#btnTriggerReportTW').click();\r\n }\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', true);\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n\r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n\r\n popUpChangeTempSetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('SET', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Temperature Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeTempSetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpHumiditySetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('HUM', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemDaikinCount > 0 && oemDaikinCount != self.state.selectedItems.length)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n else {\r\n if (carrrierCount <= 0) {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C'? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpO2SetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('ORC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n var isSekstantFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isSekstantFound = val.DeviceType.trim() == 'Sekstant' ? isSekstantFound + 1 : isSekstantFound;\r\n });\r\n if (isSekstantFound > 0 && StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpCo2SetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('CO2', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n var isSekstantFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isSekstantFound = val.DeviceType.trim() == 'Sekstant' ? isSekstantFound + 1 : isSekstantFound;\r\n });\r\n if (isSekstantFound > 0 && StarCoolCount == self.state.selectedItems.length)\r\n {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n\r\n popUpChangeToChilled() {\r\n var IsValid = CommonActions.validateCommandSupport('SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Star Cool OEM.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToChilledandCA() {\r\n var IsValid = CommonActions.validateCommandSupport('SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for this combination of OEM Model and Software.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToFrozen() {\r\n var IsValid = CommonActions.validateCommandSupport('SFR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ pretripCmd: 'StartFrozenPTI', modelTitle: 'Start Frozen Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCA() {\r\n var IsValid = CommonActions.validateCommandSupport('SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAPTI', modelTitle: 'Start CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCAFullPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFullPTI', modelTitle: 'Start CA Full' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCAFunctionTest() {\r\n var IsValid = CommonActions.validateCommandSupport('SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var StarCoolCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFunctionTest', modelTitle: 'Start CA Function Test' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpControlledAtmosphere() {\r\n var IsValid = CommonActions.validateCommandSupport('SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemStarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemStarCoolCount == self.state.selectedItems.length) {\r\n if (this.props.refApplicationParams != null && this.props.refApplicationParams != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand != null && this.props.refApplicationParams.ValidateCACommand != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand == \"true\") {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else if (oemDaikinCount == self.state.selectedItems.length) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: false }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else if (oemStarCoolCount >= 1 || oemDaikinCount >= 1) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TK and Carrier OEMs.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpDLTraditional(e) {\r\n var IsValid = CommonActions.validateCommandSupport('TDD', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDLCommand(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get Traditional Download' });\r\n self.RenderContextMenuPopUp('GetDLTraditional', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpPreTripFull() {\r\n var IsValid = CommonActions.validateCommandSupport('SFP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartFullPTI');\r\n //self.setState({ pretripCmd: 'StartFullPTI', modelTitle: 'Start Full Pre-Trip' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpPreTripShort() {\r\n var IsValid = CommonActions.validateCommandSupport('SSP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartShortPTI');\r\n //self.setState({ pretripCmd: 'StartShortPTI', modelTitle: 'Start Short Pre-Trip' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpFunctionTest() {\r\n var IsValid = CommonActions.validateCommandSupport('SCP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (DaikinCount <= 0) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartCAShortPTI');\r\n //self.setState({ pretripCmd: 'StartCAShortPTI', modelTitle: 'Start Function Test' });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin OEM.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpStopPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('SPP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Stop Pre-Trip' });\r\n self.RenderContextMenuPopUp('StopPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSchedulePTI() {\r\n self.setState({ modelTitle: 'Scheduled Pre-Trip' });\r\n self.RenderContextMenuPopUp('SchedulePreTrip', true);\r\n }\r\n\r\n popUpGetPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('LPR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n if (self.state.selectedItems.filter(row => row.ReeferOEMTypeCd.trim() == 'D' && (row.UnitTypeCd == null || row.UnitTypeCd == \"UK\")).length == 0) {\r\n self.setState({ modelTitle: 'Get Last Pre-Trip Result' });\r\n self.RenderContextMenuPopUp('GetPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should have valid OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpGetTWR() {\r\n var IsValid = CommonActions.validateCommandSupport('TWR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Get TripWISE Report' });\r\n self.RenderContextMenuPopUp('GetTWR', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpRebootReefer() {\r\n var IsValid = CommonActions.validateCommandSupport('RFC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Reboot Reefer Controller' });\r\n self.RenderContextMenuPopUp('RebootReefer', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeDatalog() {\r\n var IsValid = CommonActions.validateCommandSupport('SDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateAllOEMs(self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReeferId() {\r\n var IsValid = CommonActions.validateCommandSupport('WRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer ID' });\r\n self.RenderContextMenuPopUp('ChangeReeferId', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReporting() {\r\n self.setState({ modelTitle: 'Set Reporting Interval' });\r\n self.RenderContextMenuPopUp('ChangeReportingInterval', true);\r\n }\r\n\r\n popUpQueryReefer() {\r\n var IsValid = CommonActions.validateCommandSupport('QRI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Query Reefer Inventory' });\r\n self.RenderContextMenuPopUp('QueryReeferInventory', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpUpdateModelConfig() {\r\n var IsValid = CommonActions.validateCommandSupport('UMC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Update Model Configuration' });\r\n self.RenderContextMenuPopUp('UpdateModelConfiguration', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpVerifyModelValidity() {\r\n var IsValid = CommonActions.validateCommandSupport('VMV', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var TKReceiverCount = CommonActions.validateOEMType('TR', self.state.selectedItems);\r\n if (TKReceiverCount == self.state.selectedItems.length) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TKReceiver OEM.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Verify Model Validity' });\r\n self.RenderContextMenuPopUp('VerifyModelValidity', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSyncReeferClock() {\r\n var IsValid = CommonActions.validateCommandSupport('SRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Sync Reefer Clock' });\r\n self.RenderContextMenuPopUp('SyncReeferClock', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReeferClockSyncSetting() {\r\n var IsValid = CommonActions.validateCommandSupport('RCS', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer Clock Sync Settings' });\r\n self.RenderContextMenuPopUp('ChangeReeferClockSyncSettings', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpStartDeforst() {\r\n var IsValid = CommonActions.validateCommandSupport('DSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateMultipleOEMs(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Start Defrost' });\r\n self.RenderContextMenuPopUp('StartDeforst', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeDeforstInterval() {\r\n var IsValid = CommonActions.validateCommandSupport('CDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateStarCoolCarrierDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n this.setState({ isChangeDeforstInterval: true });\r\n self.setState({ modelTitle: 'Change Defrost Interval' });\r\n self.RenderContextMenuPopUp('ChangeDeforstInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSetFreshAirType() {\r\n var IsValid = CommonActions.validateCommandSupport('SFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Set - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('SetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpGetFreshAirType() {\r\n var IsValid = CommonActions.validateCommandSupport('GFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('GetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpAssignPanId() {\r\n self.setState({ modelTitle: 'Assign PAN ID' });\r\n self.RenderContextMenuPopUp('AssignPanId', true);\r\n }\r\n\r\n popUpGuestReeferConfigCmd() {\r\n self.setState({ modelTitle: 'Guest Reefer configuration commands' });\r\n self.RenderContextMenuPopUp('GuestReeferConfiguration', true);\r\n }\r\n\r\n popAutoConfiguration() {\r\n if (self.state.selectedItems.length > 0) {\r\n var reeferData = self.state.selectedItems;\r\n var customerIdsCount = 0;\r\n var DeviceTypeCount = 0;\r\n\r\n $.each(reeferData, function (key, value) {\r\n var customerId = reeferData[0].CustomerID;\r\n if (value.CustomerID != customerId) {\r\n customerIdsCount++;\r\n }\r\n });\r\n $.each(reeferData, function (key, value) {\r\n var DeviceType = reeferData[0].DeviceType;\r\n if (value.DeviceType != DeviceType) {\r\n DeviceTypeCount++;\r\n }\r\n });\r\n if (customerIdsCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same customer.\");\r\n }\r\n else if (DeviceTypeCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same device type.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Device Configuration' });\r\n self.RenderContextMenuPopUp('AutoConfig', true);\r\n }\r\n };\r\n }\r\n\r\n popAssetConfiguration() {\r\n self.setState({ modelTitle: 'Asset Configuration' });\r\n self.RenderContextMenuPopUp('AssetConfig', true);\r\n }\r\n\r\n popUpMSC() {\r\n var IsValid = CommonActions.validateCommandSupport('MSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Multiple Setpoint Change' });\r\n self.RenderContextMenuPopUp('MSC', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpACT() {\r\n var IsValid = CommonActions.validateCommandSupport('ACT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Automatic Cold Treatment' });\r\n self.RenderContextMenuPopUp('ACT', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n popUpDIMISettings() {\r\n var validationMessage = CommonActions.validateDaikinDimiTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'DIMI Settings', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('DS', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n popUpIntelligentPTIFunction() {\r\n var validationMessage = CommonActions.validateDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Intelligent PTI Function', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('IntelligentPTIFunction', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n popUpFanSpeed() {\r\n var validationMessage = CommonActions.validateDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Fan Speed', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('FanSpeed', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n //RCNG-3 -start\r\n popUpRetire() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a retired asset does not appear in search results, nor does it contribute to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesRetire.bind(this),\r\n self.onCancelRefreshStatusGrid.bind(this)); \r\n }\r\n popUpReactivate() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a reactivated asset appears in search results and contributes to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesReactivate.bind(this),\r\n self.onCancelRefreshStatusGrid.bind(this)); \r\n }\r\n onYesRetire() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits() //RCNG-45\r\n //var reeferData = self.state.selectedItems;//RCNG-45\r\n //if (reeferData != undefined && reeferData != null) {//RCNG-45\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/RetireAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })//RCNG-45\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/RetireAsset?containerID=' + reeferData[0].ReeferID;//RCNG-45\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });//RCNG-45\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Retired.\");\r\n //self.refreshStatusGrid();\r\n self.refreshDashboardReeferGrids();//RCNG-1172\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n //}\r\n\r\n }\r\n //}//RCNG-45\r\n }\r\n onYesReactivate() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits()//RCNG-45\r\n //var reeferData = self.state.selectedItems;//RCNG-45\r\n //if (reeferData != undefined && reeferData != null) {//RCNG-45\r\n $('#globalLoader').show();\r\n RCNGWindow.ConfirmWindow.close();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReactivateAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })//RCNG-45\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/ReactivateAsset?containerID=' + reeferData[0].ReeferID;//RCNG-45\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });//RCNG-45\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Reactivated.\");\r\n //self.refreshStatusGrid();\r\n self.refreshDashboardReeferGrids();//RCNG-1172\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n //}\r\n }\r\n }\r\n //RCNG-3 -end\r\n\r\n popUpGetAssetId() {\r\n self.setState({ modelTitle: 'Get Asset ID' });\r\n self.RenderContextMenuPopUp('GetAssetId', true);\r\n }\r\n\r\n popUpEnableDoorSensor() {\r\n self.setState({ modelTitle: 'Enable Door Sensor' });\r\n self.RenderContextMenuPopUp('EnableDoorSensor', true);\r\n }\r\n\r\n popUpCreateTrip() {\r\n self.setState({ modelTitle: 'Trip Details' });\r\n self.RenderContextMenuPopUp(\"CreateTrip\", false);\r\n }\r\n\r\n popUpTripStatus() {\r\n self.setState({ modelTitle: 'Trip Status' });\r\n self.RenderContextMenuPopUp(\"TripStatus\", false);\r\n }\r\n\r\n popUpClearDeviation() {\r\n self.setState({ modelTitle: 'Clear Deviation' });\r\n self.RenderContextMenuPopUp('ClearDeviation', false);\r\n }\r\n\r\n popUpViewBooking() {\r\n $('#globalLoader').show();\r\n viewBookingData = [];\r\n self.setState({ modelTitle: 'View Booking' }); \r\n \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + self.state.selectedItems[0].BookingNumber) \r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n viewBookingData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('ViewBooking', false);\r\n });\r\n }\r\n\r\n popUpAssignBooking() {\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Third-Party Access' }); //Modified for RCNG-945\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } }); \r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignBooking', false);\r\n });\r\n }\r\n\r\n popUpUnAssignBooking() {\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Booking and Access' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignBooking', false);\r\n }); \r\n }\r\n popUpEditVoyage() {\r\n self.setState({ modelTitle: 'Edit Voyage' });\r\n self.RenderContextMenuPopUp('EditVoyage', false);\r\n }\r\n popUpNewUnAssignBooking() {\r\n $('#globalLoader').show();\r\n if (JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd == '3P')//Added for RCNG-975\r\n self.setState({ modelTitle: 'Unassign Booking' });\r\n else\r\n self.setState({ modelTitle: 'Unassign Booking and Access' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('NewUnAssignBooking', false);\r\n });\r\n }\r\n \r\n\r\n popUpControllerSwap() {\r\n self.setState({ modelTitle: 'Change Controller swap' });\r\n self.RenderContextMenuPopUp('ControllerSwap', false);\r\n }\r\n\r\n popUpZigbeeSettings() {\r\n self.setState({ modelTitle: 'Change Zigbee Config Settings' });\r\n self.RenderContextMenuPopUp('Zigbee', true);\r\n }\r\n\r\n popUpDeviceReset() {\r\n self.setState({ modelTitle: 'Device Reset' });\r\n self.RenderContextMenuPopUp('DeviceReset', true);\r\n }\r\n\r\n popUpDeviceHardReset() {\r\n self.setState({ modelTitle: 'Device Reset To Defaults' });\r\n self.RenderContextMenuPopUp('DeviceHardReset', true);\r\n }\r\n\r\n assignToCargoCareSubMenu(customerProfileCode: any, params: any) {\r\n var cargoCareSubMenus: any = [];\r\n $.each(this.state.CargoCareProfiles, (index, item) => {\r\n var objCCSubMenu: any = {\r\n name: item.CargoCareCustomerProfileCode,\r\n action: () => {\r\n //this.assignCargoCare(item.CargoCareCustomerProfileID);\r\n self.checkUnitAssignedToCargoCare(item.CargoCareCustomerProfileID, customerProfileCode, item.CargoCareCustomerProfileCode);\r\n },\r\n disabled: UserRights.checkCCAssignSubMenuItemDisabled(params, item.CargoCareCustomerProfileID, 'AssigntoCargoCare')\r\n }\r\n cargoCareSubMenus.push(objCCSubMenu);\r\n });\r\n\r\n return cargoCareSubMenus;\r\n }\r\n\r\n checkUnitAssignedToCargoCare(CCCustomerProfileId: any, customerProfileCode: any, newCustomerProfileCode: any) {\r\n if (customerProfileCode != null && customerProfileCode != \"\" && customerProfileCode != undefined) {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"The chosen profile \" + newCustomerProfileCode + \", will replace any other profiles currently in use by the selected reefer(s). The reefer(s) will be unassigned from those profiles and all of their CargoCare alerts will be cleared prior to reassignment to \" + newCustomerProfileCode + \". Continue?\",\r\n self.onYesAssignToCargoCare.bind(this, CCCustomerProfileId),\r\n self.onCancelRefreshStatusGrid.bind(this));\r\n }\r\n else\r\n self.assignCargoCare(CCCustomerProfileId);\r\n }\r\n\r\n onYesAssignToCargoCare(CCCustomerProfileId: any) {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n\r\n RCNGWindow.ConfirmWindow.close();\r\n self.assignCargoCare(CCCustomerProfileId);\r\n }\r\n }\r\n \r\n ClearCargoCareAlertsSubMenu(selectedReeferData: any) {\r\n var ccAlertsSubMenus: any = [];\r\n var alarmsList = self.state.reeferFormatter.AlarmMasterList;\r\n if (selectedReeferData[0].CCAlarmsList != undefined && selectedReeferData[0].CCAlarmsList != null && selectedReeferData[0].CCAlarmsList != \"\") {\r\n var ccAlarms = selectedReeferData[0].CCAlarmsList.split(',');\r\n $.each(ccAlarms, function (index, item) {\r\n var lstAlerts = item.split(':');\r\n var almCd = lstAlerts[3] != \"\" ? lstAlerts[3].trim() : '';\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === almCd);\r\n if (alarmDescription.length > 0) {\r\n var objCCSubMenu: any = {\r\n name: alarmDescription[0].AlarmAlias + \" : \" + alarmDescription[0].Description + \" : \" + lstAlerts[2],\r\n action: () => {\r\n self.clearActiveCargoCareAlert(alarmDescription[0].AlarmMasterID);\r\n },\r\n icon: ReeferCellRenderer.GetCargoCareAlmImg(lstAlerts[1]), \r\n }\r\n ccAlertsSubMenus.push(objCCSubMenu);\r\n\r\n }\r\n\r\n\r\n });\r\n\r\n if (ccAlertsSubMenus.length > 1) {\r\n var objCCAllSubMenuSep: any = 'separator';\r\n ccAlertsSubMenus.push(objCCAllSubMenuSep);\r\n var objCCAllSubMenu: any = {\r\n name: \"Clear All\",\r\n action: () => {\r\n self.clearActiveCargoCareAllAlerts();\r\n },\r\n //disabled: UserRights.checkMenuItemDisabled(params, 'AssigntoCargoCare')\r\n }\r\n ccAlertsSubMenus.push(objCCAllSubMenu);\r\n }\r\n }\r\n return ccAlertsSubMenus;\r\n }\r\n\r\n assignCargoCare(CargoCareCustomerProfileID: any) {\r\n $('#globalLoader').show();\r\n //this.props.requestAssignCargoCare(this.getForwardCommandUnits());\r\n //this.refreshStatusGrid();\r\n var commandUnits = this.getCargoCareCommandUnits(null, CargoCareCustomerProfileID);\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/AssignCargoCare', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care assigned successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n //this.refreshStatusGrid();\r\n this.refreshDashboardReeferGrids();//RCNG-1172\r\n }\r\n });\r\n\r\n }\r\n\r\n unAssignCaregoCare() {\r\n $('#globalLoader').show();\r\n //this.props.requestUnAssignCargoCare(this.getForwardCommandUnits());\r\n //this.refreshStatusGrid();\r\n\r\n var commandUnits = this.getCargoCareCommandUnits(null, null);\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/UnAssignCargoCare', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care unassigned successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n //this.refreshStatusGrid(); \r\n this.refreshDashboardReeferGrids();//RCNG-1172\r\n }\r\n });\r\n }\r\n\r\n clearActiveCargoCareAlert(alarmMasterId: any) {\r\n var commandUnits = this.getCargoCareCommandUnits(alarmMasterId, null);\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearCargoCareAlert', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care alert(s) cleared successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n //this.refreshStatusGrid();\r\n this.refreshDashboardReeferGrids();//RCNG-1172\r\n }\r\n }); \r\n }\r\n\r\n clearActiveCargoCareAllAlerts() {\r\n var commandUnits = this.getCargoCareCommandUnits(null, null);\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearAllCargoCareAlerts', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care alerts cleared successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n //this.refreshStatusGrid();\r\n this.refreshDashboardReeferGrids();//RCNG-1172\r\n }\r\n }); \r\n }\r\n \r\n clearSetPoint() {\r\n var commandUnits = this.getForwardCommandUnits();\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearSetPoint', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Clear set point is done\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n //this.refreshStatusGrid(); \r\n this.refreshDashboardReeferGrids();//RCNG-1172\r\n }\r\n });\r\n }\r\n\r\n exportToExcel() {\r\n \r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.state.rowData != 'object' ? JSON.parse(this.state.rowData) : this.state.rowData;\r\n }\r\n\r\n $(\"#globalLoader\").show();\r\n var r = this.state.columnDefs;\r\n try {\r\n var formName = 'ReeferGrid';\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridReeferStatusToolBar.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n\r\n getCargoCareCommandUnits(alarmMasterId: any, CCCustomerProfileId: any) {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userData.UserId,\r\n \"TripId\": value.TripId,\r\n \"RCDReportingInterval\": value.RCDReportingInterval,\r\n \"SetTemp\": value.SetPoint,\r\n \"CustomerID\": value.CustomerID,\r\n \"CCCustomerProfileId\": CCCustomerProfileId,\r\n \"AlarmMasterId\": alarmMasterId\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userData.UserId,\r\n \"TripId\": value.TripId,\r\n\r\n \"RCDReportingInterval\": value.RCDReportingInterval,\r\n \"SetTemp\": value.SetPoint,\r\n \"CustomerID\": value.CustomerID,\r\n \"CCCustomerProfileId\": null,\r\n \"AlarmMasterId\": null\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup:boolean, sensorData:any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, reeferAssetSensors);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n renderExportToExcelDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData:any) { \r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, reeferAssetSensors);\r\n }\r\n\r\n filterReeferStatusGrid(searchParam: any) {\r\n self.setState({ ToggleSearchParams: searchParam });\r\n $('#globalLoader').show();\r\n ReeferCallout.ResetMapPushpins();\r\n var reeferData = [];\r\n var reeferSearchData = this.props.propsReeferData;\r\n if (!searchParam.AllReefer && !searchParam.Running && !searchParam.MissedRunning && !searchParam.Stopped && !searchParam.MissedStopped && !searchParam.AllMicroAlaram && !searchParam.MASevere && !searchParam.MAMinor && !searchParam.AllCargoCare && !searchParam.CCSevere && !searchParam.CCMinor && !searchParam.CCInformational) {\r\n reeferData.push(...reeferSearchData);\r\n }\r\n\r\n if (searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData);\r\n }\r\n\r\n if (searchParam.Running && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"I\"));\r\n }\r\n\r\n if (searchParam.MissedRunning && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"S\"));\r\n }\r\n\r\n if (searchParam.Stopped && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"X\"));\r\n }\r\n\r\n if (searchParam.MissedStopped && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"O\"));\r\n }\r\n\r\n if (searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && (x.MASeverityLevel == \"1\" || x.MASeverityLevel == \"2\")));\r\n }\r\n\r\n if (searchParam.MASevere && !searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != \"\" && x.MASeverityLevel == \"1\"));\r\n }\r\n\r\n if (searchParam.MAMinor && !searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != \"\" && x.MASeverityLevel == \"2\"));\r\n }\r\n\r\n if (searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && x.CCSeverityLevel != \"\"));\r\n }\r\n\r\n if (searchParam.CCSevere && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"1\")));\r\n }\r\n\r\n if (searchParam.CCMinor && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"2\")));\r\n }\r\n\r\n if (searchParam.CCInformational && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"3\")));\r\n }\r\n\r\n let reeferFilterData = uniq(reeferData);\r\n\r\n ReeferCallout.BindClusterMapPushpins(reeferFilterData, 'status', this.state.reeferFormatter);\r\n\r\n this.setState({\r\n rowData: reeferFilterData\r\n });\r\n setTimeout(() => {\r\n $('#globalLoader').hide();\r\n }, 500);\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != []) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"ReeferStatusGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params:any) => {\r\n //console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n \r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n }; \r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size:12\r\n },\r\n \r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'OneDecimal',\r\n numberFormat: {\r\n format: '0.0',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'TwoDecimal',\r\n numberFormat: {\r\n format: '0.00',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n nodeB.key ? 1 : 0;\r\n //if (nodeA.key < nodeB.key) {\r\n // return -1;\r\n //} else if (nodeA.key > nodeB.key) {\r\n // return 1;\r\n //} else {\r\n // return 0;\r\n //}\r\n }\r\n }\r\n allowContextMenuWithControlKey={true}\r\n excelStyles={excelStyles}\r\n getContextMenuItems={this.getReeferContextMenuItems}\r\n paginationPageSize={this.state.pageSize}\r\n onRowDataChanged={this.onRowDataChanged}\r\n onPaginationChanged={this.onGridPaginationChanged}\r\n frameworkComponents={this.state.frameworkComponents}\r\n overlayLoadingTemplate={this.state.overlayLoadingTemplate}\r\n tooltipShowDelay={0}\r\n tooltipHideDelay={8000}\r\n onBodyScroll={this.onGridScroll}\r\n \r\n >\r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\nclass ReeferHistorySearch {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\n\r\ninterface ReeferMasterStatus {\r\n UnitRCDAssociationHistoryID: number,\r\n LastParentEventID: number,\r\n ParentEventID: number,\r\n UnitMasterID: number,\r\n UnitPrefix: string,\r\n UnitNumber: string,\r\n ReeferID: string,\r\n UnitEventID: number,\r\n AlarmsList: string,\r\n CCAlarms: string,\r\n CCSeverityLevel: string,\r\n MicroAlarms: string,\r\n MASeverityLevel: string,\r\n UnitUSDAHistoryID: number,\r\n USDA1Temp: number,\r\n USDA2Temp: number,\r\n USDA3Temp: number,\r\n Cargo4Temp: number,\r\n O2Setpoint: number,\r\n CO2Setpoint: number,\r\n RunningMode: string,\r\n URH_UnitReadingsHistoryID: number,\r\n Humidity: number,\r\n UnitTypeCd: string,\r\n AmbientTemp: number,\r\n CompressorSuctionTemp: number,\r\n CompressorDischargeTemp: number,\r\n ReturnTemp1: number,\r\n SupplyTemp1: number,\r\n SupplyTemp2: number,\r\n ReturnTemp2: number,\r\n EvaporatorTemp: number,\r\n NumberOfAlarmsInQue: number,\r\n DischargePressure: number,\r\n CompositeSuctionPressure: number,\r\n VentPositionSensorCMH: number,\r\n PretripTestStateID: any,\r\n SetPoint: number,\r\n O2Reading: number,\r\n CO2Reading: number,\r\n TotalCurrentDraw: number,\r\n LowSpeedEvaporatorFanOutPut: string,\r\n HighSpeedEvaporatorFanOutPut: string,\r\n CondenserFanOutPut: string,\r\n HumiditySetpoint: number,\r\n SoftwareRevision: string,\r\n ControllerSerialNumber: string,\r\n CompressorFrequency: number,\r\n CondenserTemperature: number,\r\n CondenserPressure: number,\r\n HeaterOnTime: number,\r\n EvaporatorExpansionValveOpening: number,\r\n LineFrequency: number,\r\n DataLoggerDtm: string,\r\n TimeToDefrost: number,\r\n CurrentPhaseA: number,\r\n CurrentPhaseB: number,\r\n CurrentPhaseC: number,\r\n ThreePhaseCurrent: string,\r\n ReturnTempLongAvg: number,\r\n AmbientTempLongAvg: number,\r\n CompositeSuctionPressureLongAvg: number,\r\n DischargePressureLongAvg: number,\r\n SupplyTemperatureLongAvg: number,\r\n ReturnTemperatureLongAvg: number,\r\n CompressorSuctionTempLongAvg: number,\r\n CompressorCondensorTempLongAvg: number,\r\n RCDEventID: number,\r\n R_EventMasterID: number,\r\n R_ParentEventID: number,\r\n RCDMasterID: number,\r\n RCDMasterHistoryID: number,\r\n RCDGSMPositionHistoryID: number,\r\n RCDLocationHistoryID: number,\r\n RCDGPSPositionHistoryID: number,\r\n RCDStateReportedHistoryID: number,\r\n RCDAlarmSummaryHistoryID: number,\r\n R_EventDTTM: string,\r\n RunState: number,\r\n ControlledAtmosphereMode: string;\r\n R_RCDStateReportedHistoryID: number,\r\n IsAcceptableACVoltage: boolean,\r\n IsAcceptableBatteryVoltage: boolean,\r\n BatteryVoltage: number,\r\n RCDPowerSourceCd: string,\r\n ReeferACPowerLevel: number,\r\n ReeferOEMTypeCd: string,\r\n LineVoltage1: number,\r\n LineVoltage2: number,\r\n LineVoltage3: number,\r\n DeviceTemp: number,\r\n LastUnitEventID: number,\r\n EventMasterID: number,\r\n EventDTTM: any,\r\n ModifiedDTTM: any,\r\n U_UnitAlarmSummaryHistoryID: number,\r\n UnitControlEventID: number,\r\n C_EventDTTM: any,\r\n C_EventMasterID: number,\r\n C_ParentEventID: number,\r\n UnitVesselOperationsID: any,\r\n UnitCargoCareID: any,\r\n C_UnitAlarmSummaryHistoryID: any,\r\n Status: any,\r\n IsOnVessel: any,\r\n IsCargoCare: any,\r\n C_ModifiedDTTM: any,\r\n GeofenceName: string,\r\n RCDID: string,\r\n RCDFirmwareVersion: string,\r\n RCDBootloaderVersion: string,\r\n RCDMeshFirmwareVersion: string,\r\n RevisionNum: number,\r\n GPSLatitude: number,\r\n GPSLongitude: number,\r\n GPSLastLock: number,\r\n GPSCoords: string\r\n GPSLockState: string,\r\n IsInsideGeofence: boolean,\r\n Geofence: string,\r\n ActiveCommands: boolean,\r\n PendingCommands: boolean,\r\n ErrorCommands: boolean,\r\n CustomerAccessGroupIDList: string,\r\n TowerBaseStationID: number,\r\n TowerLocalizationAreaCode: number,\r\n MNC: number,\r\n SuctionModulationValveOpening: number,\r\n HotGasValveOpening: number,\r\n EconomizerValveOpening: number,\r\n RSSI: number,\r\n MSISDN: string,\r\n SIM_IMSI: string,\r\n ICCID: string,\r\n CompressorEvaporatorTempLongAvg: number,\r\n CompressorDischargeTempLongAvg: number,\r\n CountryCd: string,\r\n CountryName: string,\r\n UnitEventDTTM: any,\r\n PowerProfileCd: string,\r\n NotReportingFlag: number,\r\n PowerStateIsActive: boolean,\r\n PtiRunning: boolean,\r\n ControllerSerialNumberChgFlag: boolean,\r\n IsActiveAssociation: boolean,\r\n IsReeferCommunicationEstablished: boolean,\r\n UnitSettingsHistoryID: number,\r\n RCDReportingInterval: number,\r\n ReeferConfigTypeCd: string,\r\n Street: string,\r\n City: string,\r\n State: string,\r\n Zip: string,\r\n CustomerID: number,\r\n CustomerName: string,\r\n RCDRfrComErr: boolean,\r\n VesselID: string,\r\n VoyageID: string,\r\n PortOfDestination: string,\r\n PortOfDeparture: string,\r\n TripId: number,\r\n TripStatusCd: string,\r\n TripStatusCdAndDFlag: string,\r\n DeviationFlg: boolean,\r\n TripDefStatusDsc: string,\r\n TripNameAndStatus: string,\r\n TripRouteWaypointId: number,\r\n BookedTemperature: number,\r\n BookingNumber: string,\r\n TemperatureUnit: string,\r\n CommentExists: number,\r\n ErrorMessage: string,\r\n ArrivingVVC: string,\r\n DepartingVVC: string,\r\n CargoCareCustomerProfileID?: number,\r\n CCProfileCode: string,\r\n ColdTreatmentState: string,\r\n}\r\n\r\n//WI-23853\r\nenum GensetAndDryAndChassisStatusEnum {\r\n PowerOnReporting = 12,\r\n PowerOnNotReporting = 13,\r\n PowerOffReporting = 14,\r\n PowerOffNotReporting = 15,\r\n DryInGeofence = 16,\r\n DryOutGeofence = 17,\r\n\r\n ChassisPwrInGeofence = 18,\r\n ChassisPwrOutGeofence = 19,\r\n ChassisNotPwrInGeofence = 20,\r\n ChassisNotPwrOutGeofence = 21\r\n}","module.exports = __webpack_public_path__ + \"static/media/bookingView.664dd443.svg\";","module.exports = __webpack_public_path__ + \"static/media/bookingSlashView.220aa380.svg\";","module.exports = __webpack_public_path__ + \"static/media/bookingfileSlashView.cf469da2.svg\";","import * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport Formatters from '../../actions/Formatters';\r\nimport Excel from '../../actions/ExportToExcel.js';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from './../sharedcomponents/ConfirmationWindow';\r\nimport DateFormat from 'dateformat';\r\nimport reeferFormatters from '../../actions/ReeferFormatter';\r\n\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface SendEmailState {\r\n EmailFilters: EmailFields;\r\n okMethod: Function;\r\n cancelMethod: Function;\r\n confirmationMsg: string;\r\n dateTime: any;\r\n confirmOk: boolean;\r\n exportColumns: any[];\r\n isUserPreference: boolean;\r\n selectedOption: any;\r\n isIncludeRowGroup: any;\r\n gridApiParams: any;\r\n onlyselected: boolean;\r\n isIncludeColumnGroup: any;\r\n sensorData: any[];\r\n}\r\n\r\nvar currentDateTime;\r\nvar self;\r\nvar optionId;\r\nvar fName;\r\nvar columnsToBeExported: any;\r\nvar ProcessfirstCellOnlyRowIndex = -1;\r\n\r\nexport class EmailControlExcelPreference extends React.Component {\r\n myRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.clearEmailFilters();\r\n this.state = {\r\n EmailFilters: filterSet, okMethod: Function, cancelMethod: Function, confirmationMsg: '', dateTime: currentDateTime, confirmOk: false, exportColumns: []\r\n , isUserPreference: false, selectedOption: '',\r\n isIncludeRowGroup: this.props.isIncludeRowGroup,\r\n gridApiParams: this.props.gridApiParams,\r\n onlyselected: this.props.onlyselected != null && this.props.onlyselected != undefined ? this.props.onlyselected : false,\r\n isIncludeColumnGroup: true, sensorData: this.props.sensorData\r\n\r\n };\r\n\r\n this.handleOptionChange = this.handleOptionChange.bind(this);\r\n this.onChangeIncludeRowGroup = this.onChangeIncludeRowGroup.bind(this);\r\n\r\n this.getGroupDisplayValueName = this.getGroupDisplayValueName.bind(this);\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.IsUserPreference(this.props.dashboardPreferenceId, this.props.widgetId);\r\n }\r\n\r\n FromEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedFrom = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Subjectchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedSubject = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n ToEmailchange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedTo = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n Messagechange(event: React.FormEvent) {\r\n var filters = this.state.EmailFilters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedMessage = Value;\r\n this.setState({\r\n EmailFilters: filters\r\n });\r\n }\r\n\r\n dateTypeFormatter(eventDate: Date) {\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return DateFormat(prefDateTime, 'mm/dd/yyyy HH:MM:ss');\r\n }\r\n\r\n clearEmailFilters() {\r\n\r\n var ele = document.getElementsByName(\"options\");\r\n for (var i = 0; i < ele.length; i++) {\r\n var elementOfi = document.getElementsByName(\"options\")[i] as HTMLInputElement;\r\n elementOfi.checked = false;\r\n\r\n }\r\n //Addded Fix RCNG-3952\r\n var selectedTo = \"\";\r\n var selectedSubject = \"\";\r\n var selectedAttachment = \"\";\r\n var selectedMessage = \"\";\r\n if ($(\"#dashBoardEmailPopUp\").is(':visible')) {\r\n selectedTo = this.state.EmailFilters.SelectedTo;\r\n selectedSubject = this.state.EmailFilters.SelectedSubject;\r\n selectedAttachment = this.state.EmailFilters.SelectedAttachment;\r\n selectedMessage = this.state.EmailFilters.SelectedMessage;\r\n }\r\n //Ended Fix RCNG-3952\r\n currentDateTime = this.dateTypeFormatter((new Date()));\r\n var filters: EmailFields = {\r\n SelectedTo: selectedTo, SelectedFrom: Config.DefaultEmailAddress, SelectedSubject: selectedSubject, SelectedAttachment: selectedAttachment, SelectedMessage: selectedMessage, SelectedForm: \"\"\r\n };\r\n this.setState({\r\n EmailFilters: filters, confirmOk: false, dateTime: currentDateTime\r\n });\r\n return filters;\r\n }\r\n static clearOptionFilters() {\r\n\r\n var elementOfi = document.getElementById(\"option1\") as HTMLInputElement;\r\n if (elementOfi != null && elementOfi != undefined)\r\n elementOfi.checked = false;\r\n var elementOfi2 = document.getElementById(\"option2\") as HTMLInputElement;\r\n if (elementOfi2 != null && elementOfi2 != undefined)\r\n elementOfi2.checked = false;\r\n\r\n }\r\n componentWillReceiveProps(nextprops: any) {\r\n \r\n if (nextprops.FunctionID != 'undefined' && nextprops.FunctionID != undefined && nextprops.FunctionID != 0) {\r\n this.IsUserPreference(nextprops.dashboardPreferenceId, nextprops.widgetId);\r\n }\r\n\r\n this.setState({\r\n isIncludeRowGroup: nextprops.isIncludeRowGroup,\r\n gridApiParams: nextprops.gridApiParams,\r\n onlyselected: nextprops.onlyselected != null && nextprops.onlyselected != undefined ? nextprops.onlyselected : false,\r\n isIncludeColumnGroup: nextprops.isIncludeRowGroup, sensorData: nextprops.sensorData\r\n });\r\n fName = nextprops.formName;\r\n $('#ExportModeSection').show();\r\n\r\n this.clearEmailFilters();\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n IsUserPreference(dashboardPreferenceId: any, widgetId: any) {\r\n if (dashboardPreferenceId != 'undefined' && dashboardPreferenceId != undefined && dashboardPreferenceId != 0) {\r\n var preferenceParams: any = { WidgetId : widgetId, DashboardPreferenceId: dashboardPreferenceId };\r\n var url = Config.ApiBaseUrl + '/api/User/IsUserPreference';//this.props.functionId;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferenceParams), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json'} });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data === false) {\r\n //optionId = 1;\r\n this.setState({ isUserPreference: false, selectedOption: 'AllColumns' });\r\n }\r\n else {\r\n //optionId = 2;\r\n this.setState({ isUserPreference: true, selectedOption: 'SelectedColumns' });\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n onChangeIncludeRowGroup(e) {\r\n this.setState({\r\n isIncludeRowGroup: !this.state.isIncludeRowGroup,\r\n isIncludeColumnGroup: !self.state.isIncludeRowGroup\r\n });\r\n }\r\n onChangeIncludeColumnGroup(e) {\r\n\r\n self.setState({\r\n isIncludeColumnGroup: !self.state.isIncludeColumnGroup,\r\n });\r\n }\r\n myHeaderCallback(params) {\r\n if (params != undefined && params != null) {\r\n\r\n var fieldName = params.column.getColDef().field;\r\n var fieldHeaderName = params.column.getColDef().headerName;\r\n\r\n switch (fieldName) {\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DLEventDTTM': case 'DoorEventDtm': case 'Door1EventDttm':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n {\r\n return Formatters.TimeZoneFormatter(fieldHeaderName);\r\n }\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp':\r\n case 'CompressorSuctionTemp': case 'CompressorDischargeTemp': case 'TemperatureUnit': case 'InsideTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint'://RCNG-1818\r\n {\r\n return Formatters.TemperatureHeaderFormatter(fieldHeaderName);\r\n }\r\n case 'Door1BattPct': case 'BatteryPct': case 'ReeferBatteryPct':\r\n return Formatters.DoorBattPctHeaderFormatter(fieldHeaderName);\r\n default:\r\n return params.column.getColDef().headerName;\r\n }\r\n }\r\n //return params.column.getColDef().headerName.toUpperCase();\r\n }\r\n\r\n getGroupDisplayValueName(params) {\r\n \r\n if (params != undefined && params != null) {\r\n\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && (fieldName === 'BatteryVoltage' || fieldName === 'ExtBattVoltage' || fieldName === 'BattVoltage' || fieldName === 'DeviceBattery' || fieldName === 'TWState' || fieldName === 'DoorSensorBatteryVoltage'))\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-1\" && fieldName === 'Door1BattPct')\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-1\" && (fieldName === 'BatteryPct' || fieldName === 'ReeferBatteryPct'))\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"TripWiseExpiration\") //RCNG-169\r\n return \"OOR\";\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\" && fieldName != 'TWState')\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && self.validateFieldName(fieldName.toString().trim()))\r\n return \"OOR\";\r\n\r\n switch (fieldName) {\r\n case 'Door1BattPct': case 'BatteryPct':\r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-1') ? '-NA-' : Formatters.DoorBattPctSortingGrouping(fieldValue);\r\n case 'ReeferBatteryPct':\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.ReeferBattPctSortingGrouping(fieldValue, DeviceType);\r\n }\r\n case \"IgnitionOn\":\r\n return Formatters.GensetSwitchFormatterGroupingExcel(fieldValue);\r\n case \"GensetRunning\":\r\n return Formatters.EngineSortingFormatterGroupingExcel(fieldValue);\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DLEventDTTM': case 'DoorEventDtm': case 'Door1EventDttm':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'CompressorCurrent': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'CompressorCurrent':\r\n {\r\n return Formatters.sensorDataFormatterforExcel(fieldValue);\r\n }\r\n \r\n case 'AlarmsList': if (params.value != undefined && params.value != null)\r\n return Formatters.AlarmListFormatterforExcel(params.value);\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint'://RCNG-1818\r\n {\r\n return Formatters.TemperatureFormatterforExcel(fieldValue);\r\n }\r\n case \"DeviceTemp\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.DevcieTempGrouping(fieldValue, DeviceType);\r\n }\r\n case \"InsideTemp\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.InsideTempGrouping(fieldValue, DeviceType);\r\n }\r\n case 'XAxis': case 'YAxis': case 'ZAxis':\r\n {\r\n return Formatters.GravityVectorValueFormatterforGroup(fieldValue);\r\n }\r\n case 'Illumination':\r\n {\r\n return Formatters.LuxValueFormatterforGroup(fieldValue);\r\n }\r\n case 'TemperatureUnit':\r\n return Formatters.TemperatureFormatterForBookingforExcel(fieldValue);\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasOilPressureSwitch':\r\n {\r\n return Formatters.YesNoConverterforExcel(fieldValue);\r\n }\r\n case \"RunState\":\r\n return Formatters.RunStateFormatterGroupingForExcel(fieldValue);\r\n case 'AssetState':\r\n return Formatters.AssetStateFormatterGroupingForExcel(fieldValue);//Asset State changes\r\n case \"MASeverityLevel\":\r\n return Formatters.statusIndicatorforALMforGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return Formatters.PowerStateFormatterGroupingForExcel(fieldValue);//done\r\n case \"CCSeverityLevel\":\r\n return Formatters.CargoCareFormatterGroupingForExcel(fieldValue);\r\n case \"TripStatusCdAndDFlag\":\r\n {\r\n\r\n return Formatters.TripStatusFormatterGroupingForExcel(fieldValue);\r\n }\r\n case 'GPSHDOP':\r\n return Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.GPSHDOP, params.node.data.GPSLockState);\r\n case 'PositionAccuracy':\r\n return Formatters.GPSAcctypeFormatterForExcel(fieldValue);\r\n case 'GPSSatelliteCount':\r\n return Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.GPSSatelliteCount, params.node.data.GPSLockState);\r\n case 'DryGPSHDOP':\r\n return Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.DryGPSHDOP, params.node.data.GPSLockState);\r\n case 'DryGPSSatelliteCount':\r\n return Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.DryGPSSatelliteCount, params.node.data.GPSLockState);\r\n case 'ChassisGPSHDOP':\r\n return Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.ChassisGPSHDOP, params.node.data.GPSLockState);\r\n case 'ChassisGPSSatelliteCount':\r\n return Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.ChassisGPSSatelliteCount, params.node.data.GPSLockState);\r\n case 'ExtBattVoltage': case 'BattVoltage': case 'DeviceBattery':\r\n {\r\n return (fieldValue == \"\" || fieldValue == null || fieldValue === '-NA-' || fieldValue === '-999') ? '-NA-' : Formatters.BattVoltageSortingGrouping(fieldValue);\r\n }\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n\r\n return Formatters.GuestReeferModeFormatterForExcel(fieldValue);\r\n }\r\n case 'DrySpeed': case 'ChassisSpeed':\r\n {\r\n return Formatters.SpeedConverterforExcel(fieldValue);\r\n }\r\n\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) return Formatters.rcdPowerSourceFormatterforExcel(fieldValue);\r\n\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"-NA-\" : fieldValue;\r\n case \"ReeferOEMTypeCd\": case \"OEMTypeCD\": // WI-26787\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return Formatters.RSSIFormatterGroupingForExcel(fieldValue);\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"BatteryStatus\": //case \"PWR\":\r\n return Formatters.ChassisBatteryStatusFormatterGroupingExcel(fieldValue);\r\n case \"ChassisBatteryStatus\":\r\n return Formatters.ChassisBatteryStatusFormatterGroupingExcel(fieldValue);\r\n case \"PWR\": case \"DryPWR\":\r\n return Formatters.ChassisPWRFormatterGroupingForExcel(fieldValue);\r\n case \"DoorOpen\"://RCNG-1106\r\n return reeferFormatters.DoorFormatterGrouping(fieldValue);\r\n case \"Door1Open\":\r\n return Formatters.Door1FormatterGrouping(fieldValue); //RCNG-2377\r\n case \"TWState\":\r\n {\r\n var ReeferOemTypeCd; var DimiResultActuator; var DimiResultAlarm; var DimiResultOOR; var DimiMode = null; var DimiResultTerm=null;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOemTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOemTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n DimiMode = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiMode;\r\n DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm; //Added DimiResultTerm\r\n }\r\n return Formatters.TripWiseGroupingForExcel(fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm,DimiMode);//Updated for RCNG 5364\r\n }\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterForExcel(fieldValue, params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, self.state.sensorData, colDef);\r\n case \"HumiditySetpoint\":\r\n {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n return Formatters.HumiditySetpointForExcel(fieldValue, HumiditySetpointStatus);\r\n }\r\n case \"EverFRESH\":\r\n return Formatters.EverFreshFormatterGrouping(fieldValue);\r\n case 'DimiStartAfter':\r\n return Formatters.OEMPTITypeFormatter(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n }\r\n }\r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n myRowGroupCallback(params) {\r\n\r\n var indent = '--';\r\n var node = params.node;\r\n //var label = node.key.toUpperCase();\r\n\r\n var label = self.getGroupDisplayValueName(params);\r\n if (!node.parent.parent) {\r\n return label; // top level node, parent is root node\r\n }\r\n label = '> ' + label;\r\n // indent once per level in the row group hierarchy\r\n while (node.parent.parent) {\r\n label = indent + label;\r\n node = node.parent;\r\n }\r\n return label;\r\n }\r\n\r\n myCellCallback(params) {\r\n \r\n var serverSideEnabled = JSON.parse(sessionStorage.getItem('SSRM'));\r\n var returnValue;\r\n if (serverSideEnabled) {\r\n if (params.node.group && ProcessfirstCellOnlyRowIndex != params.node.rowGroupIndex) {\r\n ProcessfirstCellOnlyRowIndex = params.node.rowGroupIndex\r\n if (params.node.key != null && params.node.key != undefined)\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (params.node.group && params.column.colId === \"0\") {\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (!params.node.group) {\r\n switch (params.column.colId) {\r\n\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID': case 'Value1':\r\n case 'Value3': case 'Value4':\r\n {\r\n if (params.value == undefined || params.value == \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = '\\t' + params.value;\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'CompressorCurrent': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'VFD': \r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'LineFrequency' :\r\n {\r\n var OEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n OEMTypeCd = params.node.data.ReeferOEMTypeCd;\r\n }\r\n else {\r\n OEMTypeCd = \"\";\r\n }\r\n if(OEMTypeCd != null && OEMTypeCd != \"\") {\r\n if (OEMTypeCd.toString().toUpperCase().trim() == \"D\" && (params.node.data.ControllerTypeCd == 27 || params.node.data.ControllerTypeCd == 28 || params.node.data.ControllerTypeCd == 32))//RCNG 5353 Fix\r\n if (params.value != undefined && params.value != null && params.value != '-NA-')\r\n returnValue = Formatters.lineFrequencyFormatterforExcel(params.node.data.LineFrequencyQualifier, params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n else { \r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n } \r\n }\r\n else {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n break;\r\n case 'CompositeSuctionPressure': case 'DischargePressure': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'CompressorCurrent':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcelTwoDecimal(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint'://RCNG-1818\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp': case 'InsideTemp':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'XAxis': case 'YAxis': case 'ZAxis':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.GravityVectorValueFormatter(params);\r\n else\r\n returnValue = \"-NA-\";\r\n \r\n }\r\n break\r\n case 'Illumination': \r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.LuxValueFormatter(params);\r\n else\r\n returnValue = \"-NA-\";\r\n\r\n }\r\n break\r\n case 'TemperatureUnit':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DoorEventDtm': case 'Door1EventDttm':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.dateTypeFormatterforExcel(params.value);\r\n }\r\n break\r\n case 'Name': case 'Description': case 'RCDBootloaderVersion': case 'PTResult': case 'VesselCd': case 'DeviceType':\r\n case 'GeofenceTag': case 'VesselName': case 'Origin': case 'Handler': case 'TripStatusCdAndDFlag':\r\n case 'UserName': case 'TagName': case 'Created': case 'DeploymentName': case 'CreatedBy': case 'ModifiedBy': case 'SubmittedBy':\r\n case 'FullName': case 'Zip': case 'CCSeverityLevelGenset': case 'OEMModel': \r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.stringTypeFormatterChildFormsNew(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'DimiStartAfter':\r\n returnValue = Formatters.OEMPTITypeFormatter(params.value);\r\n break;\r\n case 'CommentExists': case 'CommentExistsGenset': case 'CommentExistsDC': case 'CommentExistsChassis':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.CommentExistsforExcel(params.value);\r\n }\r\n break;\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasOilPressureSwitch':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n case 'GPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.GPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'GPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.GPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'DryGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.DryGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'PositionAccuracy':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSAcctypeFormatterForExcel(params.node.data.PositionAccuracy);\r\n }\r\n break;\r\n case 'DryGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.DryGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.ChassisGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.ChassisGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ExtBattVoltage': case 'BattVoltage': case 'DeviceBattery': case 'BatteryVoltage': case 'DoorSensorBatteryVoltage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'DrySpeed': case 'ChassisSpeed': case 'Speed':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.SpeedConverterforExcel(params.value);\r\n }\r\n break;\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n case 'RunState': if (params.value != undefined && params.value != null) returnValue = Formatters.RunStateFormatterGroupingForExcel(params.value);\r\n break;\r\n case 'AssetState': if (params.value != undefined && params.value != null) returnValue = Formatters.AssetStateFormatterGroupingForExcel(params.value);//Asset State changes\r\n break;\r\n case 'R_HighestSeverityLevel': {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.value);\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlertSeverityID': if (params.value != undefined && params.value != null) returnValue = Formatters.statusIndicatorforALRforExcel(params.value); break;\r\n case 'IsOnVessel': if (params.value != undefined && params.value != null) returnValue = Formatters.isOnVesselFormatterChildForms(params.value); break;\r\n case 'GPSLastLock':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.secondsToTimeConverterForExcel(params.node.data.GPSLastLock);\r\n }\r\n break;\r\n case 'AlarmsList': if (params.value != undefined && params.value != null) returnValue = Formatters.AlarmListFormatterforExcel(params.value); break;\r\n case 'TemperatureUnit': if (params.value != undefined && params.value != null) returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value); break;\r\n case 'ThreePhaseCurrent': if (params.value != undefined && params.value != null) returnValue = Formatters.Current3PhaseFormatterforExcel(params.value); break;\r\n case 'FilerepositoryActionCD': if (params.value != undefined && params.value != null) returnValue = Formatters.GetFileRepositoryActionDesc(params.value); break;\r\n case 'GeofenceCategoryCd': if (params.value != undefined && params.value != null) returnValue = Formatters.fenceTypeFormatterForExcel(params.value); break;\r\n case 'IgnitionOn': if (params.value != undefined && params.value != null) returnValue = Formatters.gensetSwitchFormatterForExcel(params.value); break;\r\n case 'BatteryStatus': if (params.value != undefined && params.value != null) returnValue = Formatters.ChassisBatteryStatusFormatterForExcel(params.node.data.BatteryStatus); break;\r\n case 'BreakSignal': if (params.value != undefined && params.value != null) returnValue = Formatters.BrakeSignalFormatterForExcel(params.value); break;\r\n case 'TripWiseExpiration': if (params.value != undefined && params.value != null) returnValue = Formatters.TripWiseExpirationFormatterforExcel(params.value); break;\r\n case 'DimiRemainTerm': if (params.value != undefined && params.value != null) returnValue = Formatters.DimiRemainTermFormatterforExcel(params.value); break;\r\n //RCNG-169\r\n case 'AirPumpRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.AirPumpRunHoursFormatterforExcel(params.value); break;\r\n case 'CompressorRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CompressorRunHoursFormatterforExcel(params.value); break; \r\n case 'CARunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CARunHoursFormatterforExcel(params.value); break; \r\n case 'PowerMeter': if (params.value != undefined && params.value != null) returnValue = Formatters.PowerMeterFormatterforExcel(params.value); break; \r\n case 'CASoftwareRevision': if (params.value != undefined && params.value != null) returnValue = Formatters.CASWVerFormatterforExcel(params.value); break; \r\n case 'CTDuration': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CTRemainingTime': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CustomerName': if (params.value != undefined && params.value != null) returnValue = Formatters.stringTypeFormatterFor3PExcel(params.value); break;\r\n case 'TWState': if (params.value != undefined && params.value != null) returnValue = Formatters.tripWiseFormatterForExcel(params); break;\r\n //case 'PWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.node.data.PWR); break;\r\n case 'PWR': case 'DryPWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.value); break;\r\n case 'Loaded': if (params.value != undefined && params.value != null) returnValue = Formatters.LoadedFormatterForExcel(params.value); break;\r\n case \"RSSI\": if (params.value != undefined && params.value != null) returnValue = params.node.data.RSSI; break;\r\n case 'FractionDisplay': {\r\n\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifier = params.node.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HasFuelSensor = params.node.HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = \"\";\r\n }\r\n\r\n }\r\n\r\n\r\n var isFuelinfo = {\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FractionDisplay: params.value,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null && HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelTraceFormatterforExcel(isFuelinfo);\r\n }\r\n case 'HasFuelSensor': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifier = params.node.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifierDesc = params.node.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n\r\n var isFuelinfo2 = {\r\n HasFuelSensor: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc\r\n };\r\n\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null)\r\n returnValue = Formatters.FuelSensorTraceFormatterforExcel(isFuelinfo2);\r\n }\r\n break;\r\n }\r\n case 'ManufacturedDate':\r\n {\r\n if (params.value != undefined && params.value != null) returnValue = Formatters.YearFromdateTypeFormatterForExcelNew(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = Formatters.AssetTypeFormatterForExcel(params.value); break;\r\n case 'PreTrip': {\r\n if (params.value != undefined && params.value != null) {\r\n if (this.props.formName == \"PreTrip\")\r\n returnValue = Formatters.PTIStateforExcel(params.value);\r\n else\r\n returnValue = Formatters.stringTypeFormatterChildForms(params.value);\r\n }\r\n }\r\n break;\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var IsCargoCare;\r\n //IsCargocare = self.getOtherColumnCellValue(params, \"IsCargocare\");\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null) {\r\n //if (self.state.excelGridData[params.node.rowIndex].IsCargoCare != undefined\r\n // && self.state.excelGridData[params.node.rowIndex].IsCargoCare != null)\r\n //IsCargocare = self.state.excelGridData[params.node.rowIndex].IsCargoCare;\r\n //if (params.node != undefined\r\n // && params.node != null)\r\n // IsCargoCare = params.node.IsCargoCare;\r\n //}\r\n if (params.node != undefined && params.node != null && params.node.data != undefined && params.node.data != null)\r\n IsCargoCare = params.node.data.IsCargoCare; //RCNG-241 Renamed Normal to Assigned\r\n else {\r\n IsCargoCare = false;\r\n }\r\n if (IsCargoCare != undefined && IsCargoCare != null)\r\n returnValue = Formatters.CargoCareFormatterforExcel({ isCargocare: IsCargoCare, CCSeverityLevel: params.value });\r\n }\r\n }\r\n break;\r\n case 'Door1Open':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.Door1FormatterExcel(params.value); //RCNG-2377\r\n }\r\n else\r\n returnValue = '-NA-';\r\n }\r\n break;\r\n case 'DoorOpen'://RCNG-1106\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n //var HasDoorSensor;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // HasDoorSensor = params.node.HasDoorSensor;\r\n //}\r\n //else {\r\n // HasDoorSensor = false;\r\n //}\r\n //if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n // returnValue = Formatters.DoorFormatterForExcel({ Door1Open: params.value, HasDoorSensor: HasDoorSensor });\r\n returnValue = reeferFormatters.DoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Humidity':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n var HumiditySetpointStatus;\r\n //HumiditySetpointStatus1 = this.getOtherColumnCellValue(params, \"HumiditySetpointStatus\");\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HumiditySetpointStatus = params.node.HumiditySetpointStatus;\r\n }\r\n else {\r\n HumiditySetpointStatus = \"\";\r\n }\r\n\r\n if (HumiditySetpointStatus != undefined && HumiditySetpointStatus != null)\r\n returnValue = Formatters.HumiditySettingFormatterforExcel({ Humidity: params.value, HumiditySetpointStatus: HumiditySetpointStatus });\r\n else\r\n returnValue = '-NA-'; // WI 26545\r\n }\r\n }\r\n break;\r\n case 'ControlledAtmosphereMode': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.ControlledAtmosphereModeforExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, ControlledAtmosphereMode: params.value });\r\n }\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n SuctionModulationValveOpeningQualifier = params.node.SuctionModulationValveOpeningQualifier;\r\n }\r\n else {\r\n SuctionModulationValveOpeningQualifier = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.value\r\n };\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null && SuctionModulationValveOpeningQualifier != undefined && SuctionModulationValveOpeningQualifier != null)\r\n returnValue = Formatters.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n }\r\n break;\r\n case 'CondenserPressure': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataPCondFormatterExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, CondenserPressure: params.value });\r\n }\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n ReeferOEMTypeCd = params.node.ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n var EEVData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.value\r\n };\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n }\r\n break;\r\n case 'GensetRunning': {\r\n if (params.value != undefined && params.value != null) {\r\n // Start WI-26787\r\n //var HasOilPressureSwitch;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // HasOilPressureSwitch = params.node.HasOilPressureSwitch;\r\n //}\r\n //else {\r\n // HasOilPressureSwitch = false;\r\n //}\r\n\r\n //if (HasOilPressureSwitch != undefined && HasOilPressureSwitch != null)\r\n // returnValue = Formatters.gensetRunningFormatterforExcel({ GensetRunning: params.value, HasOilPressureSwitch: HasOilPressureSwitch });\r\n var isGensetRunning = {\r\n GensetRunning: params.node.data.GensetRunning,\r\n HasOilPressureSwitch: params.node.data.HasOilPressureSwitch,\r\n OEMTypeCD: params.node.data.OEMTypeCD\r\n };\r\n returnValue = Formatters.EngFormatterforExcel(isGensetRunning);\r\n // End WI-26787\r\n }\r\n }\r\n break;\r\n case 'FuelLevel': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifier = params.node.FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FuelLevelQualifierDesc = params.node.FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n var FractionDisplay;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n FractionDisplay = params.node.FractionDisplay;\r\n }\r\n else {\r\n FractionDisplay = false;\r\n }\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HasFuelSensor = params.node.HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo3 = {\r\n FuelLevel: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc,\r\n FractionDisplay: FractionDisplay,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n FuelLevelQualifierDesc != undefined && FuelLevelQualifierDesc != null &&\r\n FractionDisplay != undefined && FractionDisplay != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelGalTraceFormatterforExcel(isFuelinfo3);\r\n }\r\n }\r\n break;\r\n case 'DevicePowerSourceCd': {\r\n if (params.value != undefined && params.value != null) {\r\n //var DeviceConfig;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // DeviceConfig = params.node.DeviceConfig;\r\n //}\r\n //else {\r\n // DeviceConfig = false;\r\n //}\r\n\r\n //var DeviceType;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && params.node != undefined\r\n // && params.node != null) {\r\n // DeviceType = params.node.DeviceType;\r\n //}\r\n //else {\r\n // DeviceType = \"\";\r\n //}\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: params.node.data.DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: params.node.data.DeviceType\r\n };\r\n \r\n //if (DeviceType != undefined && DeviceType != null && DeviceConfig != undefined && DeviceConfig != null)\r\n returnValue = Formatters.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'Door1OpenChassis': {\r\n if (params.value != undefined && params.value != null) {\r\n var HasDoorSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && params.node != undefined\r\n && params.node != null) {\r\n HasDoorSensor = params.node.HasDoorSensor;\r\n }\r\n else {\r\n HasDoorSensor = false;\r\n }\r\n\r\n var door1ChassisStateFormatter = {\r\n HasDoorSensor: HasDoorSensor,\r\n Door1OpenChassis: params.value\r\n };\r\n\r\n if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n returnValue = Formatters.DoorFormatterChassisforExcel(door1ChassisStateFormatter);\r\n }\r\n }\r\n break;\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGroupingForExcel(params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n if (self.state.sensorData != undefined && self.state.sensorData != null) {\r\n var columnFieldName = params.column.colId;\r\n var deviceType = params.node.data.DeviceType;\r\n var name = columnFieldName.split(\"_\");\r\n var fieldName = name[0];\r\n var value = params.node.data[name[0]];\r\n\r\n if (value != null && value != undefined && deviceType != null) {\r\n var sensorcolumn = self.state.sensorData.filter(x => x.FieldName == fieldName && x.DeviceTypeCd.trim() == deviceType.trim());\r\n if (sensorcolumn[0] != undefined && sensorcolumn[0] != null) {\r\n if (sensorcolumn[0].SensorTypeCd.trim() == \"T\")\r\n return Formatters.TemperatureSensorFormatterForExcel(params);\r\n else\r\n return Formatters.DigitalSensorFormatterForExcel(params);\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n }\r\n break;\r\n case 'HumiditySetpoint':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.HumiditySetpointForExcel(params.value, params.node.data.HumiditySetpointStatus);\r\n }\r\n }\r\n break;\r\n case 'EverFRESH':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.EverFreshFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Door1BattPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.Door1BattPct); //door1BattPct);\r\n }\r\n break;\r\n case 'BatteryPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.BatteryPct); \r\n }\r\n break;\r\n case 'ReeferBatteryPct':\r\n {\r\n returnValue = Formatters.ReeferBattPctFormatterforExcel(params.node.data.ReeferBatteryPct, params.node.data.DeviceType);\r\n }\r\n break;\r\n default: {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n returnValue = params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n } else {\r\n if (params.node.group && ProcessfirstCellOnlyRowIndex != params.node.rowGroupIndex) {\r\n ProcessfirstCellOnlyRowIndex = params.node.rowGroupIndex\r\n if (params.node.key != null && params.node.key != undefined)\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (params.node.group && params.column.colId === \"0\") {\r\n return self.myRowGroupCallback(params);\r\n }\r\n\r\n if (!params.node.group) {\r\n switch (params.column.colId) {\r\n case 'Door1BattPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.Door1BattPct); //door1BattPct);\r\n }\r\n break;\r\n case 'BatteryPct':\r\n {\r\n returnValue = Formatters.DoorBattPctFormatterforExcel(params.node.data.BatteryPct);\r\n }\r\n break;\r\n case 'ReeferBatteryPct':\r\n {\r\n returnValue = Formatters.ReeferBattPctFormatterforExcel(params.node.data.ReeferBatteryPct, params.node.data.DeviceType);\r\n }\r\n break;\r\n case 'RCDID': case 'RCDId': case 'TowerBaseStationID': case 'ICCID': case 'MSISDN': case 'SIM_IMSI': case 'RcdID': case 'Value1':\r\n case 'Value3': case 'Value4':\r\n {\r\n if (params.value == undefined || params.value == \"-NA-\")\r\n returnValue = \"-NA-\";\r\n else\r\n returnValue = '\\t' + params.value;\r\n }\r\n break;\r\n case 'CO2Setpoint': case 'CO2Reading': case 'O2Setpoint': case 'O2Reading': case 'EvaporatorTemp':\r\n case 'CompositeSuctionPressure': case 'CompressorSuctionTemp': case 'DischargePressure': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'CondenserFanOutPut': case 'LowSpeedEvaporatorFanOutPut': case 'HighSpeedEvaporatorFanOutPut':\r\n case 'HeaterOnTime': case 'HotGasValveOpening': case 'EconomizerValveOpening': case 'CompressorFrequency': case 'CompressorCurrent': case 'VentPositionSensorCMH':\r\n case 'TotalCurrentDraw': case 'LineVoltage1': case 'LineVoltage2': case 'LineVoltage3': case 'VFD': case 'CompressorCurrent':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'LineFrequency' :\r\n {\r\n var OEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n OEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n if(OEMTypeCd != null && OEMTypeCd != undefined) {\r\n if(OEMTypeCd.toString().toUpperCase().trim() == \"D\" && (params.node.data.ControllerTypeCd == 27 || params.node.data.ControllerTypeCd == 28 || params.node.data.ControllerTypeCd == 32))\r\n if (params.value != undefined && params.value != null && params.value != '-NA-')\r\n returnValue = Formatters.lineFrequencyFormatterforExcel(params.node.data.LineFrequencyQualifier, params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n else {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n } \r\n\r\n }\r\n else {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.sensorDataFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n break;\r\n case 'SetPoint': case 'SupplyTemp1': case 'SupplyTemp2': case 'ReturnTemp1': case 'ReturnTemp2':\r\n case 'AmbientTemp': case 'EvaporatorInletSensor': case 'EvaporatorOutletSensor': case 'CompressorDischargeTemp2': case 'EconomizerInTemp': case 'EconomizerOutTemp': case 'CompressorSuctionTemp': case 'CompressorDischargeTemp':\r\n case 'CondenserTemperature': case 'USDA1Temp': case 'USDA2Temp': case 'USDA3Temp': case 'Cargo4Temp': case 'SensorSupplyTemp1': case 'SensorReturnTemp1':\r\n case 'CTTempLimit': case 'CTPostSetPoint'://RCNG-1818\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'DeviceTemp': case 'InsideTemp':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.TemperatureFormatterExcelForDeviceTemp(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'XAxis': case 'YAxis': case 'ZAxis':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.GravityVectorValueFormatter(params);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'Illumination':\r\n {\r\n if (params != undefined && params != null)\r\n returnValue = Formatters.LuxValueFormatter(params);\r\n else\r\n returnValue = \"-NA-\";\r\n\r\n }\r\n break\r\n case 'TemperatureUnit':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break\r\n case 'UnitEventDTTM': case 'DataLoggerDtm': case 'ModifiedDTTM': case 'EventDTTM': case 'R_EventDTTM': case 'R_ModifiedDTTM':\r\n case 'CreatedDTTM': case 'CreateDTTM': case 'StatusDate': case 'SubmittedOn': case 'EndDate': case 'scheduledCreatedDTTM':\r\n case 'StartDate': case 'LastPreTripDTTM': case 'PTRDateTime': case 'TTL': case 'GPSDTTM': case 'DeviceDataTime': case 'ExpirationTime':\r\n case 'EarliestDepartureDtm': case 'ArrivalDtm': case 'TWTime': case 'DLEventDTTM': case 'DoorEventDtm': case 'Door1EventDttm':\r\n case 'TripStart': case 'TripEnd': case \"CTTime\":\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.dateTypeFormatterforExcel(params.value);\r\n }\r\n break\r\n case 'Name': case 'Description': case 'RCDBootloaderVersion': case 'PTResult': case 'VesselCd': case 'DeviceType':\r\n case 'GeofenceTag': case 'VesselName': case 'Origin': case 'Handler': case 'TripStatusCdAndDFlag':\r\n case 'UserName': case 'TagName': case 'Created': case 'DeploymentName': case 'CreatedBy': case 'ModifiedBy': case 'SubmittedBy':\r\n case 'FullName': case 'Zip': case 'CCSeverityLevelGenset': case 'OEMModel':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.stringTypeFormatterChildFormsNew(params.value);\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n break;\r\n case 'DimiStartAfter':\r\n returnValue = Formatters.OEMPTITypeFormatter(params.value);\r\n break;\r\n case 'CommentExists': case 'CommentExistsGenset': case 'CommentExistsDC': case 'CommentExistsChassis':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.CommentExistsforExcel(params.value);\r\n }\r\n break;\r\n case 'IsInsideGeofence': case 'IsActive': case 'HasOilPressureSwitch':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.YesNoConverterforExcel(params.value);\r\n }\r\n break\r\n case 'ReeferOEMTypeCd': case 'ÓEMTypeCD':\r\n {\r\n //if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GetOEMTypeDescription(params.value);\r\n }\r\n break;\r\n case 'GPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.GPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'GPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.GPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'DryGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.DryGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'PositionAccuracy':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSAcctypeFormatterForExcel(params.node.data.PositionAccuracy);\r\n }\r\n break;\r\n case 'DryGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.DryGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSHDOP':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSHDOPTypeFormatterForExcel(params.node.data.ChassisGPSHDOP, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ChassisGPSSatelliteCount':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GPSSatCountTypeFormatterForExcel(params.node.data.ChassisGPSSatelliteCount, params.node.data.GPSLockState);\r\n }\r\n break;\r\n case 'ExtBattVoltage': case 'BattVoltage': case 'DeviceBattery': case 'BatteryVoltage': case 'DoorSensorBatteryVoltage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.BattVoltageFormatterforExcel(params.value);\r\n }\r\n break;\r\n case 'DeviceConfig': case 'GuestReeferMode':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.GuestReeferModeFormatterForExcel(params.value);\r\n }\r\n break;\r\n case 'DrySpeed': case 'ChassisSpeed': case 'Speed':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.SpeedConverterforExcel(params.value);\r\n }\r\n break;\r\n case 'RCDPOWERSOURCECD': if (params.value != undefined && params.value != null) returnValue = Formatters.rcdPowerSourceFormatterforExcel(params.value);\r\n break;\r\n case 'RunState': if (params.value != undefined && params.value != null) returnValue = Formatters.RunStateFormatterGroupingForExcel(params.value);\r\n break;\r\n case 'AssetState': if (params.value != undefined && params.value != null) returnValue = Formatters.AssetStateFormatterGroupingForExcel(params.value);//RCNG-43\r\n break;\r\n case 'R_HighestSeverityLevel': {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.value);\r\n }\r\n break;\r\n case 'MASeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.statusIndicatorforALMforExcel(params.node.data.MASeverityLevel);\r\n }\r\n break;\r\n case 'AlertSeverityID': if (params.value != undefined && params.value != null) returnValue = Formatters.statusIndicatorforALRforExcel(params.value); break;\r\n case 'IsOnVessel': if (params.value != undefined && params.value != null) returnValue = Formatters.isOnVesselFormatterChildForms(params.value); break;\r\n case 'GPSLastLock':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.secondsToTimeConverterForExcel(params.node.data.GPSLastLock);\r\n }\r\n break;\r\n case 'AlarmsList': if (params.value != undefined && params.value != null) returnValue = Formatters.AlarmListFormatterforExcel(params.value); break;\r\n case 'TemperatureUnit': if (params.value != undefined && params.value != null) returnValue = Formatters.TemperatureFormatterForBookingforExcel(params.value); break;\r\n case 'ThreePhaseCurrent': if (params.value != undefined && params.value != null) returnValue = Formatters.Current3PhaseFormatterforExcel(params.value); break;\r\n case 'FilerepositoryActionCD': if (params.value != undefined && params.value != null) returnValue = Formatters.GetFileRepositoryActionDesc(params.value); break;\r\n case 'GeofenceCategoryCd': if (params.value != undefined && params.value != null) returnValue = Formatters.fenceTypeFormatterForExcel(params.value); break;\r\n case 'IgnitionOn': if (params.value != undefined && params.value != null) returnValue = Formatters.gensetSwitchFormatterForExcel(params.value); break;\r\n case 'BatteryStatus': if (params.value != undefined && params.value != null) returnValue = Formatters.ChassisBatteryStatusFormatterForExcel(params.node.data.BatteryStatus); break;\r\n case 'ChassisBatteryStatus': if (params.value != undefined && params.value != null) returnValue = Formatters.ChassisBatteryStatusFormatterForExcel(params.node.data.ChassisBatteryStatus); break;\r\n case 'BreakSignal': if (params.value != undefined && params.value != null) returnValue = Formatters.BrakeSignalFormatterForExcel(params.value); break;\r\n case 'TripWiseExpiration':\r\n {\r\n if (params.value != undefined && params.value != null) returnValue = Formatters.TripWiseExpirationFormatterforExcel(params.value);\r\n }\r\n break; //RCNG-169\r\n case 'DimiRemainTerm': if (params.value != undefined && params.value != null) returnValue = Formatters.DimiRemainTermFormatterforExcel(params.value); break;\r\n case 'AirPumpRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.AirPumpRunHoursFormatterforExcel(params.value); break;\r\n case 'CompressorRunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CompressorRunHoursFormatterforExcel(params.value); break; \r\n case 'CARunHours': if (params.value != undefined && params.value != null) returnValue = Formatters.CARunHoursFormatterforExcel(params.value); break; \r\n case 'PowerMeter': if (params.value != undefined && params.value != null) returnValue = Formatters.PowerMeterFormatterforExcel(params.value); break; \r\n case 'CASoftwareRevision': if (params.value != undefined && params.value != null) returnValue = Formatters.CASWVerFormatterforExcel(params.value); break; \r\n case 'CTDuration': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CTRemainingTime': if (params.value != undefined && params.value != null) returnValue = Formatters.CTDurationorRemainingTimeFormatterforExcel(params.value); break;//RCNG-1818\r\n case 'CustomerName': if (params.value != undefined && params.value != null) returnValue = Formatters.stringTypeFormatterFor3PExcel(params.value); break;\r\n case 'TWState': if (params.value != undefined && params.value != null) returnValue = Formatters.tripWiseFormatterForExcel(params); break;\r\n //case 'PWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.node.data.PWR); break;\r\n case 'PWR': case 'DryPWR': if (params.value != undefined && params.value != null) returnValue = Formatters.pwrStateFormatterChassisforExcel(params.value); break;\r\n case 'Loaded': if (params.value != undefined && params.value != null) returnValue = Formatters.LoadedFormatterForExcel(params.value); break;\r\n case \"RSSI\": if (params.value != undefined && params.value != null) returnValue = params.node.data.RSSI; break;\r\n case 'FractionDisplay': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var FractionDisplay;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FractionDisplay = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FractionDisplay;\r\n }\r\n else {\r\n FractionDisplay = false;\r\n }\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HasFuelSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo = {\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FractionDisplay: FractionDisplay,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n //FractionDisplay != undefined && FractionDisplay != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelTraceFormatterforExcel(isFuelinfo);\r\n }\r\n }\r\n break;\r\n case 'HasFuelSensor': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifierDesc = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n\r\n var isFuelinfo2 = {\r\n HasFuelSensor: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc\r\n };\r\n\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null)\r\n returnValue = Formatters.FuelSensorTraceFormatterforExcel(isFuelinfo2);\r\n }\r\n break;\r\n }\r\n case 'ManufacturedDate':\r\n {\r\n if (params.value != undefined && params.value != null) returnValue = Formatters.YearFromdateTypeFormatterForExcelNew(params.value);\r\n }\r\n break;\r\n case 'AssetType': returnValue = Formatters.AssetTypeFormatterForExcel(params.value); break;\r\n case 'PreTrip': {\r\n if (params.value != undefined && params.value != null) {\r\n if (this.props.formName == \"PreTrip\")\r\n returnValue = Formatters.PTIStateforExcel(params.value);\r\n else\r\n returnValue = Formatters.stringTypeFormatterChildForms(params.value);\r\n }\r\n }\r\n break;\r\n case 'CCSeverityLevel':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n\r\n var IsCargoCare;\r\n //IsCargocare = self.getOtherColumnCellValue(params, \"IsCargocare\");\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null) {\r\n //if (self.state.excelGridData[params.node.rowIndex].IsCargoCare != undefined\r\n // && self.state.excelGridData[params.node.rowIndex].IsCargoCare != null)\r\n //IsCargocare = self.state.excelGridData[params.node.rowIndex].IsCargoCare;\r\n //if (self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null)\r\n // IsCargoCare = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].IsCargoCare; \r\n //}\r\n if (params.node != undefined && params.node != null && params.node.data != undefined && params.node.data != null)\r\n IsCargoCare = params.node.data.IsCargoCare; //RCNG-241 Renamed Normal to Assigned\r\n else {\r\n IsCargoCare = false;\r\n }\r\n if (IsCargoCare != undefined && IsCargoCare != null)\r\n returnValue = Formatters.CargoCareFormatterforExcel({ isCargocare: IsCargoCare, CCSeverityLevel: params.value });\r\n }\r\n }\r\n break;\r\n case 'DoorOpen'://RCNG-1106\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n //var HasDoorSensor;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // HasDoorSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasDoorSensor;\r\n //}\r\n //else {\r\n // HasDoorSensor = false;\r\n //}\r\n //if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n // returnValue = Formatters.DoorFormatterForExcel({ Door1Open: params.value, HasDoorSensor: HasDoorSensor });\r\n returnValue = reeferFormatters.DoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'DoorOpen':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n //var HasDoorSensor;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // HasDoorSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasDoorSensor;\r\n //}\r\n //else {\r\n // HasDoorSensor = false;\r\n //}\r\n //if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n // returnValue = Formatters.DoorFormatterForExcel({ Door1Open: params.value, HasDoorSensor: HasDoorSensor });\r\n returnValue = Formatters.DoorFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n case 'Door1Open': \r\n {\r\n //RCNG-2377\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.Door1FormatterExcel(params.value);\r\n }\r\n else\r\n returnValue = '-NA-';\r\n }\r\n break;\r\n case 'Humidity':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n var HumiditySetpointStatus;\r\n //HumiditySetpointStatus1 = this.getOtherColumnCellValue(params, \"HumiditySetpointStatus\");\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n else {\r\n HumiditySetpointStatus = \"\";\r\n }\r\n\r\n if (HumiditySetpointStatus != undefined && HumiditySetpointStatus != null)\r\n returnValue = Formatters.HumiditySettingFormatterforExcel({ Humidity: params.value, HumiditySetpointStatus: HumiditySetpointStatus });\r\n else\r\n returnValue = '-NA-'; // WI 26545\r\n }\r\n }\r\n break;\r\n case 'ControlledAtmosphereMode': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.ControlledAtmosphereModeforExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, ControlledAtmosphereMode: params.value });\r\n }\r\n }\r\n break;\r\n case 'SuctionModulationValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n SuctionModulationValveOpeningQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].SuctionModulationValveOpeningQualifier;\r\n }\r\n else {\r\n SuctionModulationValveOpeningQualifier = \"\";\r\n }\r\n\r\n var SuctionModulationValveOpeningData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n SuctionModulationValveOpeningQualifier: SuctionModulationValveOpeningQualifier,\r\n SuctionModulationValveOpening: params.value\r\n };\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null && SuctionModulationValveOpeningQualifier != undefined && SuctionModulationValveOpeningQualifier != null)\r\n returnValue = Formatters.sensorDataOpenSucFormatterForExcel(SuctionModulationValveOpeningData);\r\n }\r\n }\r\n break;\r\n case 'CondenserPressure': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataPCondFormatterExcel({ ReeferOEMTypeCd: ReeferOEMTypeCd, CondenserPressure: params.value });\r\n }\r\n }\r\n break;\r\n case 'EvaporatorExpansionValveOpening': {\r\n if (params.value != undefined && params.value != null) {\r\n var ReeferOEMTypeCd;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n }\r\n else {\r\n ReeferOEMTypeCd = \"\";\r\n }\r\n var EEVData = {\r\n ReeferOEMTypeCd: ReeferOEMTypeCd,\r\n EvaporatorExpansionValveOpening: params.value\r\n };\r\n if (ReeferOEMTypeCd != undefined && ReeferOEMTypeCd != null)\r\n returnValue = Formatters.sensorDataOpenExpFormatterExcel(EEVData);\r\n }\r\n }\r\n break;\r\n case 'GensetRunning': {\r\n if (params.value != undefined && params.value != null) {\r\n // Start WI-26787\r\n //var HasOilPressureSwitch;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // HasOilPressureSwitch = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasOilPressureSwitch;\r\n //}\r\n //else {\r\n // HasOilPressureSwitch = false;\r\n //}\r\n\r\n //if (HasOilPressureSwitch != undefined && HasOilPressureSwitch != null)\r\n // returnValue = Formatters.gensetRunningFormatterforExcel({ GensetRunning: params.value, HasOilPressureSwitch: HasOilPressureSwitch });\r\n var isGensetRunning = {\r\n GensetRunning: params.node.data.GensetRunning,\r\n HasOilPressureSwitch: params.node.data.HasOilPressureSwitch,\r\n OEMTypeCD: params.node.data.OEMTypeCD\r\n };\r\n returnValue = Formatters.EngFormatterforExcel(isGensetRunning);\r\n // End WI-26787\r\n }\r\n }\r\n break;\r\n case 'FuelLevel': {\r\n if (params.value != undefined && params.value != null) {\r\n var FuelLevelQualifier;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifier = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifier;\r\n }\r\n else {\r\n FuelLevelQualifier = \"\";\r\n }\r\n var FuelLevelQualifierDesc;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FuelLevelQualifierDesc = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FuelLevelQualifierDesc;\r\n }\r\n else {\r\n FuelLevelQualifierDesc = \"\";\r\n }\r\n var FractionDisplay;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n FractionDisplay = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].FractionDisplay;\r\n }\r\n else {\r\n FractionDisplay = false;\r\n }\r\n var HasFuelSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HasFuelSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasFuelSensor;\r\n }\r\n else {\r\n HasFuelSensor = false;\r\n }\r\n\r\n var isFuelinfo3 = {\r\n FuelLevel: params.value,\r\n FuelLevelQualifier: FuelLevelQualifier,\r\n FuelLevelQualifierDesc: FuelLevelQualifierDesc,\r\n FractionDisplay: FractionDisplay,\r\n HasFuelSensor: HasFuelSensor\r\n };\r\n if (FuelLevelQualifier != undefined && FuelLevelQualifier != null &&\r\n //FuelLevelQualifierDesc != undefined && FuelLevelQualifierDesc != null &&\r\n //FractionDisplay != undefined && FractionDisplay != null &&\r\n HasFuelSensor != undefined && HasFuelSensor != null)\r\n returnValue = Formatters.FillLevelGalTraceFormatterforExcel(isFuelinfo3);\r\n }\r\n }\r\n break;\r\n case 'DevicePowerSourceCd': {\r\n if (params.value != undefined && params.value != null) {\r\n //var DeviceConfig;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // DeviceConfig = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceConfig;\r\n //}\r\n //else {\r\n // DeviceConfig = false;\r\n //}\r\n\r\n //var DeviceType;\r\n //if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n // && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n // DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n //}\r\n //else {\r\n // DeviceType = \"\";\r\n //}\r\n\r\n var ispwrStateFormatter = {\r\n DeviceType: params.node.data.DeviceConfig,\r\n DevicePowerSourceCd: params.node.data.DevicePowerSourceCd,\r\n DeviceTypeCd: params.node.data.DeviceType\r\n };\r\n \r\n //if (DeviceType != undefined && DeviceType != null && DeviceConfig != undefined && DeviceConfig != null)\r\n returnValue = Formatters.pwrStateFormatterforExcel(ispwrStateFormatter);\r\n }\r\n }\r\n break;\r\n case 'Door1OpenChassis': {\r\n if (params.value != undefined && params.value != null) {\r\n var HasDoorSensor;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HasDoorSensor = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HasDoorSensor;\r\n }\r\n else {\r\n HasDoorSensor = false;\r\n }\r\n\r\n var door1ChassisStateFormatter = {\r\n HasDoorSensor: HasDoorSensor,\r\n Door1OpenChassis: params.value\r\n };\r\n\r\n if (HasDoorSensor != undefined && HasDoorSensor != null)\r\n returnValue = Formatters.DoorFormatterChassisforExcel(door1ChassisStateFormatter);\r\n }\r\n }\r\n break;\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGroupingForExcel(params);\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n if (self.state.sensorData != undefined && self.state.sensorData != null) {\r\n var columnFieldName = params.column.colId;\r\n var deviceType = params.node.data.DeviceType;\r\n var name = columnFieldName.split(\"_\");\r\n var fieldName = name[0];\r\n var value = params.node.data[name[0]];\r\n\r\n if (value != null && value != undefined && deviceType != null) {//RCNG-1578\r\n var sensorcolumn = self.state.sensorData.filter(x => x.FieldName == fieldName && x.DeviceTypeCd.trim() == deviceType.trim());\r\n if (sensorcolumn[0] != undefined && sensorcolumn[0] != null) {\r\n if (sensorcolumn[0].SensorTypeCd.trim() == \"T\")\r\n return Formatters.TemperatureSensorFormatterForExcel(params);\r\n else\r\n return Formatters.DigitalSensorFormatterForExcel(params);\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n }\r\n break;\r\n case 'HumiditySetpoint':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.HumiditySetpointForExcel(params.value, params.node.data.HumiditySetpointStatus);\r\n }\r\n }\r\n break;\r\n case 'EverFRESH':\r\n {\r\n if (params.value != undefined && params.value != null) {\r\n returnValue = Formatters.EverFreshFormatterExcel(params.value);\r\n }\r\n }\r\n break;\r\n default: {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n returnValue = params.value;\r\n }\r\n else if (params.column.colId === \"0\") {\r\n return \"\";\r\n }\r\n else\r\n returnValue = \"-NA-\";\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n }\r\n }\r\n\r\n myGroupHeaderCallback(params) {\r\n\r\n var displayName = params.columnApi.getDisplayNameForColumnGroup(\r\n params.columnGroup\r\n );\r\n return displayName;//.toUpperCase();\r\n }\r\n\r\n closeConfirmation() {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n SendEmailToUser() {\r\n var uri;\r\n if (this.state.EmailFilters.SelectedTo != undefined || this.state.EmailFilters.SelectedTo != \"\") { // WI-26789\r\n var SendTo = this.state.EmailFilters.SelectedTo;\r\n var SendFrom = this.state.EmailFilters.SelectedForm;\r\n var SendToArray = SendTo.split(\",\");\r\n var validemail = true;\r\n var myEmailVLD = /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9\\-\\.])+\\.([A-Za-z]{2,4})$/;\r\n if (SendToArray != null && SendToArray != undefined && SendToArray.length > 0) {\r\n for (var i = 0; i < SendToArray.length; i++) {\r\n var valid = myEmailVLD.test(SendToArray[i]);\r\n if (!valid) {\r\n validemail = false;\r\n }\r\n }\r\n }\r\n\r\n if (validemail) {\r\n if ((this.state.confirmOk == false) && (this.state.EmailFilters.SelectedSubject == \"\" || this.state.EmailFilters.SelectedMessage == \"\")) {\r\n this.setState({\r\n confirmOk: true\r\n });\r\n if (this.state.EmailFilters.SelectedSubject == \"\" && !(this.state.EmailFilters.SelectedMessage == \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject\";\r\n else if (!(this.state.EmailFilters.SelectedSubject == \"\") && (this.state.EmailFilters.SelectedMessage == \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Message?\";\r\n else if (this.state.EmailFilters.SelectedSubject == \"\" && (this.state.EmailFilters.SelectedMessage == \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject and Message?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.SendEmailToUser.bind(this), this.closeConfirmation.bind(this));\r\n }\r\n else {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n\r\n\r\n if (this.props.parentchild == \"P\") {\r\n uri = Excel.SendmailExcelExportParent(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formName);\r\n //uri = Excel.SendmailExcelExportParent(this.props.reeferStatusResult, arrayToBeExported, this.props.formname);\r\n }\r\n else {\r\n uri = Excel.SendmailExcelExport(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formName);\r\n //uri = Excel.SendmailExcelExport(this.props.reeferStatusResult, arrayToBeExported, this.props.formname);\r\n }\r\n\r\n this.state.EmailFilters.SelectedForm = this.props.formName;\r\n this.state.EmailFilters.SelectedAttachment = JSON.stringify(uri);\r\n var filterParams = JSON.stringify(this.state.EmailFilters);\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Email/SendEmailWithGroup', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n //fetch(request)\r\n // .then(response => response)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n $('#sendEmail .close').click();\r\n var responseData = data;\r\n if (this.props.formName === undefined || this.props.formName == null || this.props.formName == undefined || this.props.formName == 'undefined') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"ReeferFileRepositoryGrid\")) {\r\n $(\"#ReeferFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"GeofenceFileRepositoryGrid\")) {\r\n $(\"#GeofenceFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"RCDFileRepositoryGrid\")) {\r\n $(\"#RCDFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() !== \"ReeferCommands\") && (this.props.formName.trim() !== \"TripStatus\") && (this.props.formName.trim() !== \"LastPreTrip\") && (this.props.formName.trim() !== \"PreTrip\")\r\n && (this.props.formName.trim() !== \"SchedulePreTrip\") && (this.props.formName.trim() !== \"StopPTI\")) {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n\r\n $('#' + this.props.formName + ' .close').click();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').removeClass('show');\r\n $('#modal-backdrop-confirmation').hide();\r\n $('#modal-backdrop-confirmation').removeClass('show');\r\n PopupWindow.showErrorMessage(\"Information\", data);//\"Email Sent Successfully.\");\r\n })\r\n .catch(err => {\r\n\r\n $('#globalLoader').hide();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').removeClass('show');\r\n $('#modal-backdrop-confirmation').hide();\r\n $('#modal-backdrop-confirmation').removeClass('show');\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n //}\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please verify entered email addresse(s).\");\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter email address.\");\r\n }\r\n }\r\n\r\n SendEmailToUserNew(arrayToBeExported: any[]) {\r\n var uri;\r\n if (this.props.parentchild == \"P\") {\r\n //uri = Excel.SendmailExcelExportParent(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n uri = Excel.SendmailExcelExportParent(this.props.reeferStatusResult, arrayToBeExported, this.props.formName);\r\n }\r\n else {\r\n //uri = Excel.SendmailExcelExport(this.props.reeferStatusResult, this.props.columnDefinition, this.props.formname);\r\n uri = Excel.SendmailExcelExport(this.props.reeferStatusResult, arrayToBeExported, this.props.formName);\r\n }\r\n\r\n this.state.EmailFilters.SelectedForm = this.GetExportFileName();//this.props.formName;WI-24078\r\n this.state.EmailFilters.SelectedAttachment = JSON.stringify(uri);\r\n var filterParams = JSON.stringify(this.state.EmailFilters);\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Email/SendEmailWithGroup', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n //fetch(request)\r\n // .then(response => response)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n $('#sendEmail .close').click();\r\n var responseData = data;\r\n if (this.props.formName === undefined || this.props.formName == null || this.props.formName == undefined || this.props.formName == 'undefined') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"ReeferFileRepositoryGrid\")) {\r\n $(\"#ReeferFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"GeofenceFileRepositoryGrid\")) {\r\n $(\"#GeofenceFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"RCDFileRepositoryGrid\")) {\r\n $(\"#RCDFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() !== \"ReeferCommands\") && (this.props.formName.trim() !== \"TripStatus\") && (this.props.formName.trim() !== \"LastPreTrip\") &&\r\n (this.props.formName.trim() !== \"PreTrip\") && (this.props.formName.trim() !== \"SchedulePreTrip\") && (this.props.formName.trim() !== \"StopPTI\")) {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n\r\n $('#' + this.props.formName + ' .close').click();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').removeClass('show');\r\n $('#modal-backdrop-confirmation').hide();\r\n $('#modal-backdrop-confirmation').removeClass('show');\r\n PopupWindow.showErrorMessage(\"Information\", data);// \"Email Sent Successfully.\");\r\n }).catch(err => {\r\n\r\n $('#globalLoader').hide();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').removeClass('show');\r\n $('#modal-backdrop-confirmation').hide();\r\n $('#modal-backdrop-confirmation').removeClass('show');\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n }\r\n\r\n SendEmailToUserNewExport(columnsToBeExported: any, isAllColumns: boolean) {\r\n var uri;\r\n $('#globalLoader').show();\r\n if (!isAllColumns) {\r\n if (self.state.onlyselected && this.state.onlyselected) {\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: false, columnKeys: columnsToBeExported, onlySelected: true,\r\n processCellCallback: this.myCellCallback, skipGroups: true,\r\n processHeaderCallback: this.myHeaderCallback,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n\r\n }\r\n else if (this.state.isIncludeRowGroup==true && this.state.isIncludeColumnGroup==true) {\r\n\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: true, //columnKeys: columnsToBeExported, onlySelected: true,\r\n allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n\r\n }\r\n else if (self.state.isIncludeRowGroup && !this.state.isIncludeColumnGroup) {\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: false,\r\n allColumns: true, //columnKeys: columnsToBeExported,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback,\r\n processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n\r\n }\r\n else {\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv({\r\n columnGroups: false, skipGroups: true,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n columnKeys: columnsToBeExported,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n }\r\n }\r\n else if (isAllColumns) {\r\n if (this.state.onlyselected) {\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: false, allColumns: true, onlySelected: true, columnKeys: columnsToBeExported,\r\n processCellCallback: this.myCellCallback, skipGroups: true,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n }\r\n else if (this.state.isIncludeRowGroup && this.state.isIncludeColumnGroup) {\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: true, allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n\r\n }\r\n else if (this.state.isIncludeRowGroup && !this.state.isIncludeColumnGroup) {\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv(\r\n {\r\n columnGroups: false, allColumns: true,\r\n processGroupHeaderCallback: this.myGroupHeaderCallback, processHeaderCallback: this.myHeaderCallback,\r\n processRowGroupCallback: this.myRowGroupCallback, processCellCallback: this.myCellCallback,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n }\r\n else {\r\n var IsGroupsExist = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false;\r\n if (IsGroupsExist) {\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv({\r\n columnGroups: false,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n allColumns: true, skipGroups: true,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n } else {\r\n var allColumns = this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n for (var i = allColumns.length - 1; i >= 0; i--) {\r\n if (allColumns[i].colDef.headerName === 'Group') {\r\n allColumns.splice(i, 1);\r\n }\r\n }\r\n uri = this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getDataAsCsv({\r\n columnGroups: true, columnKeys: columnsToBeExported,\r\n processCellCallback: this.myCellCallback,\r\n processHeaderCallback: this.myHeaderCallback,\r\n //columnKeys: allColumns,\r\n skipGroups: true,\r\n //fileName: this.getFileName(this.GetExportFileName())\r\n })\r\n }\r\n }\r\n }\r\n\r\n\r\n this.state.EmailFilters.SelectedForm = this.GetExportFileName();//this.props.formName;WI-24078\r\n this.state.EmailFilters.SelectedAttachment = uri;//JSON.stringify(uri);\r\n var filterParams = JSON.stringify(this.state.EmailFilters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/Email/SendEmailWithGroup', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n //fetch(request)\r\n // .then(response => response)\r\n RCUtils.fetchRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n $('#sendEmail .close').click();\r\n var responseData = data;\r\n if (this.props.formName === undefined || this.props.formName == null || this.props.formName == undefined || this.props.formName == 'undefined') {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"ReeferFileRepositoryGrid\")) {\r\n $(\"#ReeferFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"GeofenceFileRepositoryGrid\")) {\r\n $(\"#GeofenceFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() == \"RCDFileRepositoryGrid\")) {\r\n $(\"#RCDFRContextMenu .btn-close\").click();\r\n }\r\n else if ((this.props.formName.trim() !== \"ReeferCommands\") && (this.props.formName.trim() !== \"TripStatus\") && (this.props.formName.trim() !== \"LastPreTrip\") &&\r\n (this.props.formName.trim() !== \"PreTrip\") && (this.props.formName.trim() !== \"SchedulePreTrip\") && (this.props.formName.trim() !== \"StopPTI\")) {\r\n $(\"#contextMenuModel .btn-close\").click();\r\n }\r\n\r\n $('#' + this.props.formName + ' .close').click();\r\n $('#PopupEmailTo').hide();\r\n $('#' + this.props.formName).hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').removeClass('show');\r\n $('#modal-backdrop-confirmation').hide();\r\n $('#modal-backdrop-confirmation').removeClass('show');\r\n PopupWindow.showErrorMessage(\"Information\", data);//\"Email Sent Successfully.\");\r\n })\r\n .catch(err => {\r\n $('#globalLoader').hide();\r\n $('#PopupEmailTo').hide();\r\n $('#dashBoardEmailPopUp').hide();\r\n $('#modal-backdrop-email').removeClass('show');\r\n $('#modal-backdrop-confirmation').hide();\r\n $('#modal-backdrop-confirmation').removeClass('show');\r\n $('#' + this.props.formName).hide();\r\n PopupWindow.showErrorMessage(\"Error\", \"Error Occurred. Please try again.\")\r\n });\r\n }\r\n\r\n SelectedOption(value) {\r\n\r\n if (value == 'SelectedColumns') {\r\n optionId = 2;\r\n }\r\n else if (value == 'AllDefaultColumns') {\r\n optionId = 1;\r\n }\r\n }\r\n\r\n handleOptionChange(e) {\r\n this.setState({\r\n selectedOption: e.target.value\r\n });\r\n }\r\n\r\n Validation() {\r\n var isLimitNumberOfEmailsReached: boolean = false;\r\n var isOption1 = $('#option1:checked').val() ? true : false;\r\n var isÒption2 = $('#option2:checked').val() ? true : false;\r\n\r\n var SendTo = this.state.EmailFilters.SelectedTo;\r\n var SendFrom = this.state.EmailFilters.SelectedForm;\r\n var SendToArray = SendTo.split(\",\");\r\n var validemail = true;\r\n var myEmailVLD = /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9\\-\\.])+\\.([A-Za-z]{2,4})$/;\r\n //if (fName != null && fName != undefined) {//&& fName == \"PTResultGrid\"\r\n // isOption1 = true;\r\n // optionId = 1;\r\n //}\r\n if (!isOption1 && !isÒption2) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select the Export Mode\");\r\n }\r\n else if (this.state.EmailFilters.SelectedTo == undefined || this.state.EmailFilters.SelectedTo == \"\") { // WI-26789\r\n\r\n PopupWindow.showErrorMessage(\"Error\", \"Please enter email address.\");\r\n }\r\n else {\r\n if (SendToArray !== null && SendToArray !== undefined && SendToArray.length < Config.SendEmailLimit) {\r\n if (SendToArray != null && SendToArray != undefined && SendToArray.length > 0) {\r\n for (var i = 0; i < SendToArray.length; i++) {\r\n var valid = myEmailVLD.test(SendToArray[i]);\r\n if (!valid) {\r\n validemail = false;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n isLimitNumberOfEmailsReached = true;\r\n validemail = false;\r\n }\r\n\r\n if (validemail) {\r\n if ((this.state.confirmOk == false) && (this.state.EmailFilters.SelectedSubject == \"\" || this.state.EmailFilters.SelectedMessage == \"\")) {\r\n //this.setState({\r\n // confirmOk: true\r\n //}); \r\n if (this.state.EmailFilters.SelectedSubject == \"\" && !(this.state.EmailFilters.SelectedMessage == \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject\";\r\n else if (!(this.state.EmailFilters.SelectedSubject == \"\") && (this.state.EmailFilters.SelectedMessage == \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Message?\";\r\n else if (this.state.EmailFilters.SelectedSubject == \"\" && (this.state.EmailFilters.SelectedMessage == \"\"))\r\n var confirmationMessage = \"Are you sure you want to send email without Subject and Message?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, this.sendEmail.bind(this), this.closeConfirmation.bind(this));\r\n\r\n }\r\n else {\r\n this.setState({\r\n confirmOk: false\r\n });\r\n RCNGWindow.ConfirmWindow.close();\r\n\r\n this.sendEmail();\r\n }\r\n\r\n }\r\n else {\r\n if (isLimitNumberOfEmailsReached) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please check the recipient email id. The recipients email should not be more than \" + Config.SendEmailLimit + \".\");\r\n isLimitNumberOfEmailsReached = false;\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", \"Please verify entered email addresse(s).\");\r\n }\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n static ClearFilters() {\r\n if (self != undefined)\r\n self.clearEmailFilters();\r\n }\r\n\r\n sendEmail() {\r\n\r\n var arrayToBeExported: any[];\r\n var tempClone: any[];\r\n tempClone = this.props.columnDefinition;\r\n\r\n var tempClone2: any[];\r\n tempClone2 = this.props.colDefs2;\r\n\r\n if (this.state.selectedOption === 'SelectedColumns') {\r\n optionId = 2;\r\n }\r\n else if (this.state.selectedOption === 'AllColumns') {\r\n optionId = 1;\r\n }\r\n\r\n if (optionId == 2) {\r\n /*\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + this.props.FunctionID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n this.setState({ exportColumns: preferenceData.SelectedColumnValues });\r\n\r\n if (preferenceData.SelectedColumnValues != null) {\r\n\r\n for (var loopvariable = 0; loopvariable < this.props.columnDefinition.length; loopvariable++) {\r\n\r\n for (var children = 0; children < this.props.columnDefinition[loopvariable].children.length; children++) {\r\n if (preferenceData.SelectedColumnValues.indexOf(this.props.columnDefinition[loopvariable].children[children].field) >= 0) {\r\n //Exists, do nothing. be part of export array\r\n }\r\n else {\r\n //not exists, removed from export array\r\n // var b = r1[loopvariable].children;\r\n tempClone[loopvariable].children.splice(children, 1)\r\n children = children - 1;\r\n }\r\n }\r\n }\r\n\r\n arrayToBeExported = tempClone;\r\n\r\n }\r\n\r\n this.SendEmailToUserNew(arrayToBeExported);\r\n }\r\n else {\r\n\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Preference setting found.\");\r\n }\r\n });\r\n */\r\n var dbPreID: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerPreferenceData?FunctionId=' + this.props.FunctionID + '&DashboardPreferenceId=' + dbPreID;\r\n var request = RCUtils.FetchRequest(url, {\r\n method: 'GET',\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }\r\n });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var columnNames = null;\r\n //var gridPreferencesData: any = data.dashboardLayoutPreferences.DashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == self.props.widgetId);\r\n var gridPreferencesData: any = null; //RCNG 5353 Fix\r\n if (data != null && data.dashboardLayoutPreferences != null && data.dashboardLayoutPreferences.DashboardWidgetsSearch != null)\r\n gridPreferencesData = data.dashboardLayoutPreferences.DashboardWidgetsSearch.filter(x => x.DashboardWidgetId == this.props.widgetId);\r\n\r\n if (gridPreferencesData != null && gridPreferencesData.length > 0) {\r\n var preferenceData = JSON.parse(gridPreferencesData[0].SearchData);\r\n if (preferenceData.SelectedColumnValues != \"\" && preferenceData.SelectedColumnValues != null) {\r\n var userColumnNames = preferenceData.SelectedColumnValues;\r\n if (data.CustomerPreference != null) {\r\n var customerPreference = JSON.parse(data.CustomerPreference);\r\n var customerSelectedColumns = customerPreference.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== customerSelectedColumns.indexOf(value));\r\n }\r\n //else\r\n // columnNames = preferenceData.SelectedColumnValues;\r\n else {\r\n if (data.DefaultCustomerPreference != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultCustomerPreference);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.CustomerAttributes).concat(data.DeviceSensors);\r\n //columnNames = preferenceData.SelectedColumnValues;\r\n columnNames = userColumnNames.filter(value => -1 !== defaultCustomerColumns.indexOf(value));\r\n }\r\n else\r\n columnNames = preferenceData.SelectedColumnValues;\r\n }\r\n\r\n //this.ExportToExcel(columnNames, optionId);\r\n /*\r\n if (columnNames != null) {\r\n\r\n for (var loopvariable = 0; loopvariable < this.props.columnDefinition.length; loopvariable++) {\r\n\r\n for (var children = 0; children < this.props.columnDefinition[loopvariable].children.length; children++) {\r\n if (columnNames.indexOf(this.props.columnDefinition[loopvariable].children[children].field) >= 0) {\r\n //Exists, do nothing. be part of export array\r\n }\r\n else {\r\n //not exists, removed from export array\r\n // var b = r1[loopvariable].children;\r\n tempClone[loopvariable].children.splice(children, 1)\r\n children = children - 1;\r\n }\r\n }\r\n }\r\n\r\n arrayToBeExported = tempClone;\r\n\r\n }\r\n */\r\n //this.SendEmailToUserNew(arrayToBeExported);\r\n this.SendEmailToUserNewExport(columnNames, false);\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Preference setting found.\");\r\n }\r\n });\r\n }\r\n else if (optionId == 1) {\r\n\r\n //arrayToBeExported = this.props.columnDefinition;\r\n arrayToBeExported = this.props.colDefs2;\r\n //this.SendEmailToUserNew(arrayToBeExported);\r\n var customerId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n var url = Config.ApiBaseUrl + '/api/User/CustomerPreferenceAttachment';\r\n var preferencedata = {\r\n CustomerId: JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId,\r\n FunctionId: this.props.FunctionID,\r\n PreferenceData: null\r\n }\r\n var request = RCUtils.FetchRequest(url, {\r\n method: 'POST',\r\n body: JSON.stringify(preferencedata),\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }\r\n });\r\n\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n var columnNames = null;\r\n if (data.PreferenceData != null || data.DefaultPreferenceData != null) {\r\n //var preferenceData = JSON.parse(data.PreferenceData);\r\n //this.setState({ exportColumns: preferenceData.SelectedColumnValues });\r\n //columnNames = preferenceData.SelectedColumnValues;\r\n\r\n if (data.PreferenceData != null) {\r\n var customerPreferenceData = JSON.parse(data.PreferenceData);\r\n var customerSelectedColumns = customerPreferenceData.SelectedColumnValues;\r\n columnNames = customerSelectedColumns;\r\n }\r\n //else\r\n // columnNames = preferenceData.SelectedColumnValues;\r\n else if (data.DefaultPreferenceData != null) {\r\n var defaultCustomerPreference = JSON.parse(data.DefaultPreferenceData);\r\n var defaultCustomerColumns = defaultCustomerPreference.SelectedColumnValues;\r\n defaultCustomerColumns = defaultCustomerColumns.concat(data.CustomerAttributes).concat(data.DeviceSensors);\r\n columnNames = defaultCustomerColumns;\r\n }\r\n /*if (preferenceData.SelectedColumnValues != null) {\r\n for (var loopvariable = 0; loopvariable < this.props.colDefs2.length; loopvariable++) {\r\n\r\n for (var children = 0; children < this.props.colDefs2[loopvariable].children.length; children++) {\r\n if (preferenceData.SelectedColumnValues.indexOf(this.props.colDefs2[loopvariable].children[children].field) >= 0) {\r\n //Exists, do nothing. be part of export array\r\n }\r\n else {\r\n //not exists, removed from export array\r\n // var b = r1[loopvariable].children;\r\n tempClone2[loopvariable].children.splice(children, 1)\r\n children = children - 1;\r\n }\r\n }\r\n }\r\n\r\n arrayToBeExported = tempClone2;\r\n }\r\n */\r\n //this.SendEmailToUserNew(arrayToBeExported);\r\n this.SendEmailToUserNewExport(columnNames, false);\r\n }\r\n else {\r\n if (this.props.functionId == 66)\r\n arrayToBeExported = this.props.colDefs;\r\n else\r\n arrayToBeExported = this.props.colDefs2;\r\n\r\n //this.SendEmailToUserNew(arrayToBeExported);\r\n this.SendEmailToUserNewExport(columnNames, true);\r\n }\r\n });\r\n }\r\n\r\n //RCNGWindow.ConfirmWindow.close();\r\n $('#confirmPopUpModel').hide();\r\n }\r\n\r\n public render() {\r\n var rowGroupLength = this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? 0 : this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi == null ? 0 : //RCNG-161\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length;\r\n var onlyselected = this.props.onlyselected;\r\n\r\n return
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.SelectedOption('AllDefaultColumns')} \r\n /> All Columns \r\n
    \r\n
    \r\n this.SelectedOption('SelectedColumns')} \r\n />\r\n Grid Preference Columns \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n \r\n
    Note: Enter multiple email addresses separated by comma(,)
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n this.ToEmailchange(e)} value={this.state.EmailFilters.SelectedTo} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.Subjectchange(e)} value={this.state.EmailFilters.SelectedSubject} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n Attachment:
    \r\n
    \r\n {this.props.formName} {this.state.dateTime}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {onlyselected ? \"\" :\r\n rowGroupLength > 0 ?\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n\r\n {this.state.isIncludeRowGroup ?\r\n\r\n\r\n
    \r\n\r\n \r\n \r\n
    : \"\"}\r\n\r\n
    \r\n : \"\"\r\n }\r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n\r\n //WI-24078-start\r\n GetExportFileName() {\r\n\r\n var FileName = this.props.formName;\r\n //RCNG-1584 start\r\n var ReeferId; var reefereList; var count;\r\n if (FileName == \"ReeferHistoryGrid\" || FileName == \"ReeferHistory\" || FileName == \"ReeferMapGrid\") {\r\n if (FileName == \"ReeferMapGrid\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"ReeferGrid_\";\r\n else {\r\n reefereList = this.props.reeferStatusResult.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.ReeferID === reeferID.ReeferID)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_ReeferHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].ReeferID + \"_ReeferHistoryGrid_\";\r\n\r\n }\r\n }//End\r\n // Start RCNG-1585\r\n else if (FileName == \"GensetHistoryGrid\" || FileName == \"GensetHistory\" || FileName == \"GensetMap\") {\r\n if (FileName == \"GensetMap\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"GensetGrid_\";\r\n else {\r\n reefereList = this.props.reeferStatusResult.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.AssetNumber === reeferID.AssetNumber)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_GensetHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].AssetNumber + \"_GensetHistoryGrid_\";\r\n\r\n }\r\n }\r\n //End\r\n //Start RCNG-1587\r\n else if (FileName == \"ChassisHistoryGrid\" || FileName == \"ChassisHistory\" || FileName == \"ChassisMap\") {\r\n if (FileName == \"ChassisMap\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"ChassisGrid_\";\r\n else {\r\n reefereList = this.props.reeferStatusResult.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.AssetNumber === reeferID.AssetNumber)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_ChassisHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].AssetNumber + \"_ChassisHistoryGrid_\";\r\n\r\n }\r\n } //End\r\n //RCNG-1586 start\r\n else if (FileName == \"DryHistoryGrid\" || FileName == \"DryHistory\" || FileName == \"DryMap\") {\r\n if (FileName == \"DryMap\" && this.props.isMapHistory == \"False\")\r\n ReeferId = \"DryGrid_\";\r\n else {\r\n reefereList = this.props.reeferStatusResult.filter((reeferID, i, arr) => {\r\n return arr.indexOf(arr.find(t => t.AssetNumber === reeferID.AssetNumber)) === i;\r\n });\r\n count = reefereList.length;\r\n\r\n if (count > 1)\r\n ReeferId = \"Multiple\" + \"_DryHistoryGrid_\";\r\n else\r\n ReeferId = reefereList[0].AssetNumber + \"_DryHistoryGrid_\";\r\n\r\n }\r\n }\r\n //End\r\n switch (FileName) {\r\n //1. Reefers\r\n case \"ReeferGrid\":\r\n return \"ReeferGrid_\"; //RCNG-1584\r\n case \"ReeferStatusGrid\":\r\n return \"ReeferGrid_\"; //RCNG-1584\r\n case \"ReeferMapGrid\":\r\n return ReeferId; //RCNG-1584\r\n case \"ReeferHistoryGrid\":\r\n return ReeferId; //RCNG-1584\r\n case \"ReeferHistory\": //RCNG-1584\r\n return ReeferId;\r\n\r\n //2. Gensets\r\n case \"GensetHistoryGrid\":\r\n return ReeferId; //RCNG - 1585\r\n case \"GensetHistory\": //RCNG - 1585\r\n return ReeferId;\r\n case \"GensetMap\":\r\n return ReeferId; //RCNG - 1585\r\n case \"GensetStatusGrid\":\r\n return \"GensetGrid_\"; //RCNG - 1585\r\n case \"GensetStatus\":\r\n return \"GensetGrid_\"; //RCNG - 1585\r\n\r\n //3. Drys\r\n case \"DryStatusGrid\":\r\n return \"DryGrid_\"; //RCNG-1586\r\n case \"DryHistoryGrid\":\r\n return ReeferId; //RCNG-1586\r\n case \"DryHistory\":\r\n return ReeferId; //RCNG-1586\r\n case \"DryMap\":\r\n return ReeferId; //RCNG-1586\r\n case \"DryStatus\":\r\n return \"DryGrid_\"; //RCNG-1586\r\n\r\n\r\n //4. Chassis\r\n case \"ChassisStatusGrid\":\r\n return \"ChassisGrid_\";//RCNG-1587\r\n case \"ChassisHistoryGrid\":\r\n return ReeferId;//RCNG-1587\r\n case \"ChassisHistory\": //RCNG-1587\r\n return ReeferId;\r\n case \"ChassisMap\":\r\n return ReeferId; //RCNG-1587\r\n case \"ChassisStatus\":\r\n return \"ChassisGrid_\";//RCNG-1587\r\n\r\n default:\r\n return FileName;\r\n }\r\n\r\n }\r\n //WI-24078-end\r\n}\r\n\r\nclass EmailFields {\r\n SelectedTo: string;\r\n SelectedFrom: string;\r\n SelectedSubject: string;\r\n SelectedAttachment: string;\r\n SelectedMessage: string;\r\n SelectedForm: string;\r\n}","/// \r\n/// \r\nimport * as React from 'react';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport Select from 'react-select';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface SearchState {\r\n Oemtypes: server.vRefOEMTypeUIModel[],\r\n RefCountry: server.RefCountryModel[],\r\n RefGeofences: string[],\r\n suggestionsFenceId: any[],\r\n targetId: string,\r\n Filters: server.ReeferSearchFilters,\r\n stayOpen: boolean,\r\n disabled: boolean,\r\n removeSelected: boolean,\r\n rtl: boolean,\r\n AssetStates: any[],\r\n}\r\nconst assetStates = [\r\n { label: \"Active\", value: 'A' },\r\n { label: \"Disconnected\", value: 'D' },\r\n { label: \"Retired\", value: 'R' },\r\n];\r\nexport class DryStatusSearch extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var customAttributesInfo = {};\r\n var filter: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedGeofence: '', SelectedGeofenceInside: '', SelectedInterval: '', SelectedReefer: '', SelectedAssetStates: JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState,\r\n SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: '', SelectedBookingNumber: ''\r\n , SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: ''//WI-26881\r\n };\r\n \r\n if (this.props.stateData != null && this.props.stateData != undefined && this.props.stateData != null) {\r\n filter.SelectedOem = this.props.stateData.SelectedOem == null ? '' : this.props.stateData.SelectedOem;\r\n filter.SelectedCountry = this.props.stateData.SelectedCountry == null ? '' : this.props.stateData.SelectedCountry;\r\n filter.SelectedAssetStates = this.props.stateData.SelectedAssetStates == null ? JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState : this.props.stateData.SelectedAssetStates; ///RCNG-70\r\n filter.SelectedGeofence = this.props.stateData.SelectedGeofence == null ? '' : this.props.stateData.SelectedGeofence;\r\n filter.SelectedGeofenceInside = this.props.stateData.SelectedGeofenceInside == null ? '' : this.props.stateData.SelectedGeofenceInside;\r\n filter.SelectedInterval = this.props.stateData.SelectedInterval == null ? '' : this.props.stateData.SelectedInterval;\r\n filter.SelectedReefer = this.props.stateData.SelectedReefer == null ? '' : this.props.stateData.SelectedReefer;\r\n filter.SelectedVesselCode = this.props.stateData.SelectedVesselCode == null ? '' : this.props.stateData.SelectedVesselCode;\r\n filter.SelectedBookingNumber = this.props.stateData.SelectedBookingNumber == null ? '' : this.props.stateData.SelectedBookingNumber;\r\n filter.StatusFilters = this.props.stateData.StatusFilters;\r\n filter.AllReefers = this.props.stateData.AllReefers == null ? '' : this.props.stateData.AllReefers;\r\n filter.SelectedVesselCD = this.props.stateData.SelectedVesselCD == null ? '' : this.props.stateData.SelectedVesselCD;//WI-26881\r\n filter.SelectedVoyage = this.props.stateData.SelectedVoyage == null ? '' : this.props.stateData.SelectedVoyage;//WI-26881\r\n filter.SelectedCall = this.props.stateData.SelectedCall == null ? '' : this.props.stateData.SelectedCall;//WI-26881\r\n }\r\n\r\n this.state = {\r\n Oemtypes: [], RefGeofences: [], suggestionsFenceId: [],\r\n targetId: '', RefCountry: [], Filters: filter, stayOpen: false, disabled: false, removeSelected: false, rtl: false, AssetStates: assetStates,\r\n };\r\n \r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/OemTypes')\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({ Oemtypes: data });\r\n // });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetGeofences')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var fenceData = data.map(fence => fence.Tag);\r\n this.setState({ RefGeofences: fenceData });\r\n }\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/RefCountry')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefCountry: data });\r\n });\r\n }\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n suggestionsFenceId: this.getFenceNameSuggestions(value)\r\n });\r\n };\r\n\r\n getFenceNameSuggestions(value) {\r\n var geofences = this.state.RefGeofences;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : geofences.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n suggestionsFenceId: []\r\n });\r\n };\r\n\r\n onChangeFenceId = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SelectedGeofence = newValue;\r\n\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n };\r\n\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n InsideGeofencechange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedGeofenceInside = null;\r\n else\r\n filters.SelectedGeofenceInside = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n //Vesselcodechange(event: React.FormEvent) {\r\n // var filters = this.state.Filters;\r\n // var Value: string = event.currentTarget.value;\r\n // filters.SelectedVesselCode = Value;\r\n // this.setState({\r\n // Filters: filters\r\n // });\r\n //} \r\n AssetStateChange(value) {\r\n var filters = this.state.Filters;\r\n filters.SelectedAssetStates = value;\r\n if (value == \"\")\r\n $('#InventoryState .Select-control').addClass(\"MandatoryBorder\");\r\n else\r\n $('#InventoryState .Select-control').removeClass(\"MandatoryBorder\");\r\n this.setState({ Filters: filters });\r\n }\r\n Assetschange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n var commaValue = this.GetMultiLineCsv(Value);\r\n filters.SelectedReefer = commaValue;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n //Reeferchange(event: React.FormEvent) {\r\n // var filters = this.state.Filters;\r\n // var Value: string = event.currentTarget.value;\r\n // filters.SelectedReefer = Value;\r\n // this.setState({\r\n // Filters: filters\r\n // });\r\n //}\r\n\r\n GetMultiLineCsv(value) {\r\n while (value.includes('\\r') || value.includes('\\n') || value.includes(';') || value.includes(' ')) {\r\n value = value.replace('\\r'.toString(), \",\");\r\n value = value.replace('\\n'.toString(), \",\");\r\n value = value.replace(';'.toString(), \",\");\r\n value = value.replace(' '.toString(), \",\");\r\n }\r\n\r\n while (value.includes(\",,\")) {\r\n value = value.replace(\",,\", \",\");\r\n }\r\n return value;\r\n }\r\n\r\n Oemchange(event: React.FormEvent) {\r\n\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedOem = null;\r\n else\r\n filters.SelectedOem = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n Countrychange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedCountry = null;\r\n else\r\n filters.SelectedCountry = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ReportingIntervalchange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedInterval = null;\r\n else\r\n filters.SelectedInterval = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ClearFilter() {\r\n var filters = this.state.Filters;\r\n filters.SelectedCountry = \"\";\r\n filters.SelectedGeofence = \"\";\r\n filters.SelectedGeofenceInside = \"\";\r\n filters.SelectedInterval = \"\";\r\n filters.SelectedOem = \"\";\r\n filters.SelectedReefer = \"\";\r\n filters.SelectedAssetStates = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;\r\n filters.SelectedVesselCode = \"\";\r\n filters.StatusFilters = [];\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n isNullOrEmpty(value) {\r\n return value == null || value === \"\";\r\n }\r\n\r\n ApplyFilter() {\r\n var filter = this.state.Filters;\r\n var that = this;\r\n this.state.Filters.AllReefers = \"\";\r\n this.state.Filters.StatusFilters = [];\r\n if (!this.isNullOrEmpty(this.state.Filters.SelectedCountry) || !this.isNullOrEmpty(this.state.Filters.SelectedGeofence) || !this.isNullOrEmpty(this.state.Filters.SelectedGeofenceInside)\r\n || !this.isNullOrEmpty(this.state.Filters.SelectedInterval) || !this.isNullOrEmpty(this.state.Filters.SelectedOem) || !this.isNullOrEmpty(this.state.Filters.SelectedReefer) || !this.isNullOrEmpty(this.state.Filters.SelectedVesselCode)) {\r\n if (this.state.Filters.SelectedAssetStates == \"\" || this.state.Filters.SelectedAssetStates == null) {//RCNG-61\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n else {\r\n this.props.bindingDryStatusGrid(this.state.Filters);\r\n }\r\n }\r\n else {\r\n this.state.Filters.AllReefers = \"All Assets\";\r\n if (this.state.Filters.SelectedAssetStates == \"\" || this.state.Filters.SelectedAssetStates == null) {//RCNG-61\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n else {\r\n this.props.bindingDryStatusGrid(this.state.Filters);\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n $(document).ready(function () {\r\n $('.advance-search').bind('keypress', function (e) {\r\n if (e.keyCode === 13) {\r\n $('#button_search').trigger('click');\r\n }\r\n });\r\n });\r\n }\r\n\r\n public render() {\r\n const { suggestionsFenceId } = this.state;\r\n\r\n const FenceIdListinputProps = {\r\n id: 'geofenceID',\r\n placeholder: 'Geofence ID',\r\n value: this.state.Filters.SelectedGeofence,\r\n onChange: this.onChangeFenceId.bind(this)\r\n };\r\n var assetStates = this.state.AssetStates;\r\n if (assetStates != undefined && assetStates != null && assetStates.length > 0) {\r\n var assetStatesOptions = assetStates.map(function (states) {\r\n return (\r\n { value: states.value, label: states.label }\r\n );\r\n });\r\n }\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n false}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n {/*
    \r\n Reporting (min):\r\n
    \r\n \r\n
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\n\r\nimport ImgPending1 from '../images/Img_Pending1.png';\r\n//import ImgPending1 from '../../src/images/Img_Pending1.png';\r\n\r\n\r\n\r\nimport ImgWarning1 from '../images/Img_Warning1.png';\r\nimport ImgSuccess1 from '../images/Img_Success1.png';\r\n\r\nimport deletepng from '../images/delete.png';\r\n\r\nimport DBP0 from '../images/DoorBattPct/0.svg';\r\nimport DBP10 from '../images/DoorBattPct/10.svg';\r\nimport DBP20 from '../images/DoorBattPct/20.svg';\r\nimport DBP30 from '../images/DoorBattPct/30.svg';\r\nimport DBP40 from '../images/DoorBattPct/40.svg';\r\nimport DBP50 from '../images/DoorBattPct/50.svg';\r\nimport DBP60 from '../images/DoorBattPct/60.svg';\r\nimport DBP70 from '../images/DoorBattPct/70.svg';\r\nimport DBP80 from '../images/DoorBattPct/80.svg';\r\nimport DBP90 from '../images/DoorBattPct/90.svg';\r\nimport DBP100 from '../images/DoorBattPct/100.svg';\r\n\r\nexport class CellRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n static CommandValidator(params) {\r\n \r\n if (params.value != null && params.value != undefined) {\r\n \r\n switch (params.value.toString().trim()) {\r\n case 'E':\r\n return ;\r\n //imageElement.src = ImgPending1;\r\n //break;\r\n case 'W':\r\n return ;\r\n //imageElement.src = ImgWarning1;\r\n //break;\r\n default:\r\n return ;\r\n //imageElement.src = ImgSuccess1;\r\n //break;\r\n\r\n }\r\n }\r\n\r\n return \"-NA-\";\r\n }\r\n\r\n static StringTypeValueFormatter(params) {\r\n if (params.value != \"-NA-\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static StringTypeFormatter(params) {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n\r\n }\r\n\r\n static removeIndicator(params: any) {\r\n return {\r\n params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n }}>;\r\n }\r\n\r\n static deviceFirmwareFormatter(params) {\r\n var tempRoundingValue = \"2\";\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n if (params.data.DeviceType != null && params.data.DeviceType.trim() == \"CT4000\") {\r\n var tempVal = params.value.split(\" \");\r\n var param = tempVal[1];\r\n if (param != null && param != undefined) {\r\n var val = parseFloat(param.toString());\r\n var firmwareRev = tempVal[0] + \" \" + val.toFixed(parseInt(tempRoundingValue));\r\n\r\n return {firmwareRev};\r\n }\r\n else\r\n return {params.value};\r\n }\r\n else\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static battPctFormatter(params) { \r\n if (params.data != null && params.data != undefined) {\r\n if(params.data.AssetType !=null && params.data.AssetType !=undefined && params.data.AssetType !=\"\") {\r\n if(params.data.AssetType.toUpperCase().trim() == \"D\") {\r\n var doorBattPct: any = params.data.DoorSensorBatteryVoltage;\r\n if (doorBattPct != null && doorBattPct != undefined) {\r\n var battPct = (Math.round(params.data.DoorSensorBatteryVoltage / 10.0)) * 10;\r\n \r\n switch (battPct){\r\n case 0:\r\n return ;\r\n case 10:\r\n return ;\r\n case 20:\r\n return ;\r\n case 30:\r\n return ;\r\n case 40:\r\n return ;\r\n case 50:\r\n return ;\r\n case 60:\r\n return ;\r\n case 70:\r\n return ;\r\n case 80:\r\n return ;\r\n case 90:\r\n return ;\r\n case 100:\r\n return ;\r\n }\r\n }\r\n }\r\n else {\r\n if (params.value == -999)\r\n return \"-NA-\";\r\n else {\r\n var val = parseFloat(params.value.toString());\r\n return val.toFixed(1);\r\n }\r\n }\r\n } \r\n else {\r\n if (params.value == -999)\r\n return \"-NA-\";\r\n else {\r\n var val = parseFloat(params.value.toString());\r\n return val.toFixed(1);\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n static DoorBattPctFormatterGrouping(param) { \r\n if (param != null && param != undefined) {\r\n if (param == \"-1\") return '*No Door bat';\r\n else {\r\n switch (param.toString()){\r\n case \"0\":\r\n return
    {param.toString()}
    ;\r\n case \"10\":\r\n return
    {param.toString()}
    ;\r\n case \"20\":\r\n return
    {param.toString()}
    ;\r\n case \"30\":\r\n return
    {param.toString()}
    ;\r\n case \"40\":\r\n return
    {param.toString()}
    ;\r\n case \"50\":\r\n return
    {param.toString()}
    ;\r\n case \"60\":\r\n return
    {param.toString()}
    ;\r\n case \"70\":\r\n return
    {param.toString()}
    ;\r\n case \"80\":\r\n return
    {param.toString()}
    ;\r\n case \"90\":\r\n return
    {param.toString()}
    ;\r\n case \"100\":\r\n return
    {param.toString()}
    ;\r\n }\r\n }\r\n }\r\n }\r\n}","export default __webpack_public_path__ + \"static/media/animated-loader.c7e20d37.gif\";","/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport { RCUtils } from './../RCUtils';\r\nimport * as MapCallouts from './../components/childcomponents/BingMapCallouts';\r\nimport { PopupWindow } from '../components/sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../components/sharedcomponents/ConfirmationWindow';\r\nimport GeofenceManagement from '../components/routecomponents/GeofenceManagement';\r\nimport { initialize, whenLoaded } from \"bing-maps-loader\";\r\n\r\n//import { loadBingApi, Microsoft } from \"../actions/BingMapLoader\";\r\n//import '../actions/bingmaps.api';\r\n//require('../actions/bingmaps.api.js');\r\nvar pinInfobox = null;\r\nvar geofenceMap = null;\r\nvar fenceLayer = null;\r\nvar Config: any = require('../Config.json');\r\n\r\nvar drawingFinishedEventHandler = null;\r\n//var drawingStartedEventHandler = null;\r\nvar GeofencesData = [];\r\nvar drawingTools = null;\r\n//var drawingManager = null;\r\nvar currentShape;\r\nvar currentMode = null;\r\nvar currentFence = null;\r\nvar events = [];\r\nvar autoSuggestManager = null;\r\nvar flag = false;\r\n\r\nclass GeofenceMap {\r\n static InitializeMap(params: any) { \r\n whenLoaded.then(() => {\r\n geofenceMap = new Microsoft.Maps.Map(document.getElementById(params), {\r\n credentials: Config.BingMapsKey,\r\n mapTypeId: Microsoft.Maps.MapTypeId.road,\r\n zoom: 4,\r\n showMapTypeSelector: true,\r\n disableKeyboardInput: true,\r\n liteMode: true\r\n });\r\n\r\n //Load the DrawingTools and SpatialMath modules.\r\n Microsoft.Maps.loadModule(['Microsoft.Maps.DrawingTools', 'Microsoft.Maps.SpatialMath'], function () {\r\n\r\n drawingFinishedEventHandler = Microsoft.Maps.Events.addHandler(geofenceMap, 'dblclick', function (args) { drawingFinished(args); });\r\n\r\n //Create an instance of the DrawingTools class and bind it to the map.\r\n drawingTools = new Microsoft.Maps.DrawingTools(geofenceMap);\r\n\r\n });\r\n });\r\n\r\n }\r\n\r\n static InitializeDrawingManager() {\r\n whenLoaded.then(() => {\r\n if (drawingTools != null && drawingTools != undefined) {\r\n //Load the DrawingTools and SpatialMath modules.\r\n Microsoft.Maps.loadModule(['Microsoft.Maps.DrawingTools', 'Microsoft.Maps.SpatialMath'], function () {\r\n\r\n drawingFinishedEventHandler = Microsoft.Maps.Events.addHandler(geofenceMap, 'dblclick', function (args) { drawingFinished(args); });\r\n\r\n //Create an instance of the DrawingTools class and bind it to the map.\r\n drawingTools = new Microsoft.Maps.DrawingTools(geofenceMap);\r\n\r\n });\r\n }\r\n //Load the AutoSuggest module.\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', function () {\r\n var options = {\r\n maxResults: 4,\r\n map: geofenceMap,\r\n businessSuggestions: true,\r\n autoDetectLocation: false\r\n };\r\n autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n autoSuggestManager.attachAutosuggest('#txtSearchBox', '#searchBoxContainer', selectedSuggestion);\r\n });\r\n });\r\n }\r\n \r\n static pointInPolygon(polygon) {\r\n var inside = false;\r\n var center = Microsoft.Maps.SpatialMath.Geometry.centroid(polygon);\r\n //var intersects = Microsoft.Maps.SpatialMath.Geometry.intersects(center, polygon);\r\n var x = center.latitude, y = center.longitude;\r\n\r\n for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n var xi = polygon[i].latitude, yi = polygon[i].longitude;\r\n var xj = polygon[j].latitude, yj = polygon[j].longitude;\r\n\r\n var intersect = ((yi > y) != (yj > y))\r\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n if (intersect) inside = !inside;\r\n }\r\n\r\n return inside;\r\n }\r\n\r\n static BindGeofencePolygons(fences) {\r\n if (fenceLayer != null)\r\n fenceLayer.clear();\r\n\r\n GeofencesData = [];\r\n GeofencesData = fences;\r\n\r\n //Create a layer for the drawn shapes.\r\n fenceLayer = new Microsoft.Maps.Layer();\r\n\r\n //Clear map infobox\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n //Create an infobox at the center of the map but don't show it.\r\n pinInfobox = new Microsoft.Maps.Infobox(geofenceMap.getCenter(), {\r\n visible: false\r\n });\r\n //Assign the infobox to a map instance.\r\n pinInfobox.setMap(geofenceMap);\r\n\r\n $.each(fences, function (selectedIndex, selectedValue) {\r\n var exteriorRing = selectedValue.FormatedCoordinates;\r\n var selectedFence = selectedValue;\r\n var polygon;\r\n if (selectedValue.GeofenceCategoryCd == \"B\")\r\n polygon = new Microsoft.Maps.Polygon(exteriorRing, { strokeDashArray: [1, 3] });\r\n else\r\n polygon = new Microsoft.Maps.Polygon(exteriorRing, null); \r\n fenceLayer.add(polygon);\r\n\r\n Microsoft.Maps.Events.addHandler(polygon, 'mousedown', function (args) { displayFenceInfoboxOnClick(args, selectedFence, polygon); });\r\n });\r\n\r\n geofenceMap.layers.insert(fenceLayer);\r\n }\r\n\r\n static SetDrawingMode(mode, elm) {\r\n //clearSelection('DrawingModes', 'btn btn-secondary editButton');\r\n //elm.className = 'btn btn-outline-secondary active';\r\n clearSelection('DrawingModes', 'btn btn-outline-secondary');\r\n currentFence = null;\r\n if (mode == \"polygon\") {\r\n if (currentMode != mode) {\r\n document.getElementById(\"DrawPolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").show();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n drawPolygon();\r\n }\r\n else {\r\n document.getElementById(\"DrawPolygonMode\").className = 'btn btn-outline-secondary';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n drawPolygon();\r\n }\r\n }\r\n else if (mode == \"edit\") {\r\n if (currentMode != mode) {\r\n document.getElementById(\"EditPolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").show();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n edit();\r\n }\r\n else {\r\n document.getElementById(\"EditPolygonMode\").className = 'btn btn-outline-secondary';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n edit();\r\n }\r\n }\r\n else if (mode == \"erase\") {\r\n if (currentMode != mode) {\r\n document.getElementById(\"DeletePolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").show();\r\n erase();\r\n }\r\n else {\r\n document.getElementById(\"DeletePolygonMode\").className = 'btn btn-outline-secondary';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n erase();\r\n }\r\n }\r\n\r\n }\r\n\r\n static DisposeDrawingManager() {\r\n if (fenceLayer != null) {\r\n fenceLayer.clear(); \r\n\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n }\r\n if (drawingTools != null && drawingTools != undefined) {\r\n drawingTools.dispose(); \r\n //Remove event handlers. \r\n Microsoft.Maps.Events.removeHandler(drawingFinishedEventHandler);\r\n setMode(null);\r\n }\r\n\r\n if (autoSuggestManager != null && autoSuggestManager != undefined) {\r\n autoSuggestManager.dispose();\r\n $(\"#txtSearchBox\").val(null);\r\n } \r\n }\r\n\r\n static ShowSelectedGeofence(selectedRow: any) {\r\n var dataItem = null;\r\n \r\n for (var i = 0; i < GeofencesData.length; i++) {\r\n if (GeofencesData[i].GeofenceHistoryID.toString() == selectedRow.GeofenceHistoryID.toString()) {\r\n dataItem = GeofencesData[i];\r\n break;\r\n }\r\n }\r\n\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var exteriorRing = dataItem.FormatedCoordinates;\r\n var polygon = new Microsoft.Maps.Polygon(exteriorRing, null);\r\n\r\n var center = Microsoft.Maps.SpatialMath.Geometry.centroid(polygon);\r\n var popOffset = new Microsoft.Maps.Point(-4, 100);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.PinInfoboxFenceLocation, { selectedPin: dataItem, divid: identityCode, source: \"GeofenceMgmt\" });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 80,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: new Microsoft.Maps.Location(center.latitude, center.longitude),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //geofenceMap.setView({\r\n // center: center,\r\n // zoom: 12\r\n //});\r\n\r\n var bound = Microsoft.Maps.LocationRect.fromLocations(exteriorRing);\r\n geofenceMap.setView({ bounds: bound, center: center, padding: 100 });\r\n\r\n pinInfobox.setMap(geofenceMap);\r\n\r\n //showGeofencePanelData(dataItem.Coordinates);\r\n }\r\n\r\n static CancelDrawing() {\r\n //fenceLayer.remove(currentShape);\r\n if (!flag) {\r\n drawingTools.dispose();\r\n drawingTools = new Microsoft.Maps.DrawingTools(geofenceMap);\r\n currentMode = null;\r\n currentShape = null;\r\n clearSelection('DrawingModes', 'btn btn-outline-secondary');\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n }\r\n }\r\n\r\n static ContinueDrawing() {\r\n flag = true;\r\n currentMode = 'edit';\r\n document.getElementById(\"DrawPolygonMode\").className = 'btn btn-outline-secondary';\r\n document.getElementById(\"EditPolygonMode\").className = 'btn btn-outline-secondary active';\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").show();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n }\r\n\r\n static resetFlag() {\r\n flag = false;\r\n }\r\n\r\n static ResetDrawing() {\r\n resetDrawing();\r\n } \r\n\r\n static EraseMode() {\r\n eraseMode();\r\n }\r\n}\r\n\r\n//function showGeofencePanelData(coordinates) {\r\n// var coordinatesHtml = \"\";\r\n// $.each(coordinates, function (index, value) {\r\n// coordinatesHtml += '' + value.Latitude + ', ' + value.Longitude + '
    ';\r\n// });\r\n \r\n// $(\"#panelCoordinates\").html(coordinatesHtml); \r\n//}\r\n\r\nfunction selectedSuggestion(suggestionResult) {\r\n geofenceMap.entities.clear();\r\n\r\n geofenceMap.setView({ bounds: suggestionResult.bestView });\r\n}\r\n\r\n//Removes the selected state for the style options.\r\nfunction clearSelection(parentId, className) {\r\n var parent = document.getElementById(parentId);\r\n if (parent != null && parent!=undefined) {\r\n for (var i = 0; i < parent.children.length; i++) {\r\n parent.children[i].className = className;\r\n }\r\n}\r\n}\r\n\r\nvar style = {\r\n color: 'purple',\r\n fillColor: 'rgba(0,255,0,0.5)',\r\n strokeColor: 'blue',\r\n strokeThickness: 1\r\n};\r\n\r\nfunction drawPolygon() {\r\n if (setMode('polygon')) {\r\n //Create a new polygon.\r\n drawingTools.create(Microsoft.Maps.DrawingTools.ShapeType.polygon, function (s) {\r\n s.setOptions(style);\r\n currentShape = s;\r\n });\r\n }\r\n}\r\n\r\nfunction edit() {\r\n if (setMode('edit')) {\r\n //Enable pushpin dragging in layer.\r\n setPushpinDraggability(true);\r\n events.push(Microsoft.Maps.Events.addHandler(fenceLayer, 'click', function (e) {\r\n resetDrawingState();\r\n currentShape = e.primitive;\r\n //if (e.primitive.metadata && e.primitive.metadata.type === 'circle') {\r\n // editCircle(e);\r\n //} else if (e.primitive.metadata && e.primitive.metadata.type === 'rectangle') {\r\n // editRectangle(e);\r\n //}\r\n if (e.primitive instanceof Microsoft.Maps.Polygon) {\r\n //Remove the shape from the map as the drawing tools will display it in the drawing layer.\r\n fenceLayer.remove(e.primitive);\r\n //Pass the shape to the drawing tools to be edited.\r\n drawingTools.edit(e.primitive);\r\n }\r\n }));\r\n } else {\r\n //Disable pushpin dragging in layer.\r\n setPushpinDraggability(false);\r\n }\r\n}\r\n\r\nfunction erase() {\r\n var IsReprocess = false;\r\n if (setMode('erase')) {\r\n events.push(Microsoft.Maps.Events.addHandler(fenceLayer, 'click', function (e) {\r\n var selectedfence = e.primitive;\r\n var message = '';\r\n if (currentFence == null)\r\n message = 'The geofence will be permanently deleted. Continue?';\r\n else\r\n message = \"Fence ID '\" + currentFence.Tag + \"' will be permanently deleted. Continue?\";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(message, function (e) {\r\n if (!IsReprocess) {\r\n if (currentFence == null) {\r\n fenceLayer.remove(selectedfence);//remove from layer\r\n //resetDrawing(); \r\n eraseMode();\r\n }\r\n else {\r\n GeofenceManagement.DeleteCustomerGeofence(currentFence, fenceLayer, selectedfence);\r\n //resetDrawing(); \r\n }\r\n IsReprocess = true;\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n }, function (e) {\r\n RCNGWindow.ConfirmWindow.close();\r\n });\r\n\r\n }));\r\n }\r\n}\r\n\r\nfunction eraseMode() {\r\n currentFence = null;\r\n currentMode = null;\r\n if (!$(\"#DeletePolygonMode\").hasClass(\"active\")) $('#DeletePolygonMode').addClass('active');\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").show();\r\n erase();\r\n}\r\n\r\nfunction resetDrawing() {\r\n drawingTools.dispose();\r\n drawingTools = new Microsoft.Maps.DrawingTools(geofenceMap);\r\n setMode(null);\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n}\r\n\r\nfunction setPushpinDraggability(draggable) {\r\n var shapes = fenceLayer.getPrimitives();\r\n for (var i = 0, len = shapes.length; i < len; i++) {\r\n if (shapes[i] instanceof Microsoft.Maps.Pushpin) {\r\n shapes[i].setOptions({ draggable: draggable });\r\n }\r\n }\r\n}\r\n\r\n\r\n//Sets the drawing mode, or toggles out of a mode if it is already set. \r\n//Returns true if the specified mode is new.\r\nfunction setMode(mode) {\r\n //Remove all attached events.\r\n for (var i = 0; i < events.length; i++) {\r\n Microsoft.Maps.Events.removeHandler(events[i]);\r\n }\r\n events = [];\r\n //Unlock map so incase it has been locked previously.\r\n //reeferMap.setOptions({ disablePanning: true });\r\n var state = false;\r\n if (currentMode === mode || mode == null) {\r\n //Toggle out of currentMode mode.\r\n currentMode = null;\r\n clearSelection('DrawingModes', 'btn btn-outline-secondary');\r\n } else {\r\n currentMode = mode;\r\n state = true;\r\n }\r\n resetDrawingState();\r\n return state;\r\n}\r\n\r\nfunction resetDrawingState() {\r\n //Stop any current drawing.\r\n if (currentShape != null && currentShape != undefined) {\r\n var locs = currentShape.getLocations();\r\n if (locs.length > 0) {\r\n drawingTools.finish(function (s) {\r\n //Add the completed shape to the drawing layer.\r\n fenceLayer.add(s);\r\n });\r\n }\r\n currentShape = null;\r\n }\r\n if (currentMode !== 'edit') {\r\n //Disable pushpin dragging in layer.\r\n setPushpinDraggability(false);\r\n }\r\n}\r\n\r\nfunction validateGeofencePolygon(locs, currentMode, currentFence, GeofencesData) {\r\n //Api call\r\n GeofenceManagement.ValidatePolygonGeofence(locs, currentMode, currentFence, GeofencesData); \r\n}\r\n\r\nfunction drawingFinished(params) {\r\n if (currentShape != null && currentShape != undefined) { \r\n var locs = currentShape.getLocations();\r\n //var dt = Microsoft.Maps.DrawingTools;\r\n //var da = dt.DrawingMode;\r\n if (locs != null && locs != undefined) {\r\n var latlonArray = [];\r\n $.each(locs, function (index, value) {\r\n if (!(latlonArray.indexOf(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9)) > -1))\r\n latlonArray.push(value.latitude.toFixed(9) + ',' + value.longitude.toFixed(9));\r\n });\r\n if (latlonArray.length > 12) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Maximum of 12 points is allowed.\");\r\n }\r\n else if (latlonArray.length < 3) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Minimum of 3 points is required.\");\r\n }\r\n else \r\n validateGeofencePolygon(locs, currentMode, currentFence, GeofencesData); \r\n }\r\n }\r\n}\r\n\r\nfunction displayFenceInfoboxOnClick(event, selectedFence, polygon) {\r\n currentFence = selectedFence;\r\n if (event.targetType == \"polygon\" && (currentMode == 'polygon' || currentMode == null)) {\r\n try {\r\n var dataItem = null;\r\n\r\n for (var i = 0; i < GeofencesData.length; i++) {\r\n if (GeofencesData[i].GeofenceHistoryID.toString() == selectedFence.GeofenceHistoryID.toString()) {\r\n dataItem = GeofencesData[i];\r\n break;\r\n }\r\n }\r\n\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var center = Microsoft.Maps.SpatialMath.Geometry.centroid(polygon);\r\n var popOffset = new Microsoft.Maps.Point(-4, 100);\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.PinInfoboxFenceLocation, { selectedPin: dataItem, divid: identityCode, source: \"GeofenceMgmt\" });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 80,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: new Microsoft.Maps.Location(center.latitude, center.longitude),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = geofenceMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = geofenceMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = geofenceMap.tryLocationToPixel(geofenceMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n geofenceMap.setView({ center: geofenceMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction GenerateAlphaNumericCode(length) {\r\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\r\n result = \"\"\r\n for (var i = length; i > 0; --i)\r\n result += chars[Math.round(Math.random() * (chars.length - 1))]\r\n return result\r\n}\r\n\r\nexport default GeofenceMap;","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport $ from 'jquery';\r\n\r\nimport { TemperatureGraph } from '../childcomponents/TemperatureGraph';\r\nimport { GensetMonitorGraph } from '../childcomponents/GensetMonitorGraph';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport Select from 'react-select';\r\nimport forEach from 'lodash/forEach';\r\nimport Workbook from 'react-excel-workbook';\r\n\r\n\r\nvar Excel = Exceljs.default;\r\n\r\n\r\ninterface ToolBarState {\r\n renderEmailHtml: any;\r\n renderGridPreferenceHtml: any;\r\n temperatureGraphHtml: any;\r\n gensetMonitoringGraphHtml: any;\r\n modelDialogHtml: any;\r\n exportFields: ExportFields;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n renderExportToExcelHTML: any; \r\n selectedheaderName: string;\r\n isClearable: boolean;\r\n AllColumns: any[];\r\n PrevGroupId: number;\r\n PrevColId: string;\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\n\r\nexport class GridToolBarExcel extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = new ReeferHistoryFilter();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n renderEmailHtml: '', modelDialogHtml: '', temperatureGraphHtml: '', gensetMonitoringGraphHtml: '', exportFields: exportData, excelData: [], headerData: [], isDownload: false,\r\n excelGridData: this.props.gridData, formName: this.props.formName, fileTitle: this.props.formName, sheetInfo: '', renderGridPreferenceHtml: '', renderExportToExcelHTML: '',\r\n selectedheaderName: null, isClearable: true, AllColumns: [], PrevGroupId: -1, PrevColId: null\r\n };\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n\r\n renderEmailControl() {\r\n if (this.props.functionId != undefined && this.props.functionId != null && this.props.functionId > 0) {\r\n //new control - which has preference\r\n\r\n return 0 ? true : false} sensorData={this.props.sensorData} isMapHistory={this.props.isHistory} //RCNG-1584\r\n />;\r\n\r\n }\r\n else {\r\n //no preference form support\r\n return ;\r\n }\r\n }\r\n\r\n renderGridPreferenceControl(functionId: any, widgetId: any) {\r\n //if (this.props.formName == \"ReeferGrid\" || this.props.formName == \"ReeferHistory\" || this.props.formName == \"ReeferMapGrid\")\r\n // return ;\r\n //else\r\n return ;\r\n \r\n }\r\n\r\n renderETEConfirmationWindowControl() {\r\n\r\n return ; //RCNG-1584\r\n\r\n }\r\n\r\n renderTempratureGraphHtml() {\r\n return \r\n }\r\n\r\n renderGensetMonitoringGraph() {\r\n return \r\n }\r\n\r\n modelDialogGensetGraphHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Genset Monitoring Data - {this.props.gensetId}
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.gensetMonitoringGraphHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogTempGraphHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n

    Reefer Monitoring Data - {this.props.reeferId}

    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.temperatureGraphHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogEmailHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n {this.state.renderEmailHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogGridPreferenceHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Grid Preference
    \r\n \r\n
    \r\n
    \r\n {this.state.renderGridPreferenceHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n modelDialogExportToExcelHtml() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n
    Export To Excel
    \r\n \r\n
    \r\n
    \r\n {this.state.renderExportToExcelHTML}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n\r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n //this.props.exportToExcel(); \r\n var arrData;\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n arrData = typeof this.props.gridData != 'object' ? JSON.parse(this.props.gridData) : this.props.gridData;\r\n $(\"#globalLoader\").show();\r\n //WI-21469 - start\r\n if (arrData.length > 0) {\r\n var i;\r\n var valueString = \"\";\r\n for (i = 0; i < arrData.length; i++) {\r\n if (arrData[i].RunningMode != 'undefined' && arrData[i].RunningMode != null) {\r\n var inputValue = arrData[i].RunningMode;\r\n\r\n if (inputValue != null && inputValue != undefined && inputValue != '') {\r\n valueString = inputValue.replace('/^\\s+/g', '');\r\n if (valueString.startsWith(\",\")) {\r\n valueString = valueString.substring(1, valueString.length);\r\n }\r\n\r\n if (valueString.endsWith(\",\")) {\r\n valueString = valueString.substring(0, valueString.length - 1);\r\n }\r\n\r\n if (valueString != \"\") {\r\n arrData[i].RunningMode = valueString;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n //WI-21469 - end\r\n\r\n var r = this.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n\r\n if (this.props.parentchild == 'P') {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeExportParentGridExportToXLSX(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n } else {\r\n // Excel.InitializeExportParent(arrData, r, this.props.formName);\r\n uri = Excel.InitializeChildGridExportToExcel(arrData, r, this.props.formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n this.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => this.downloadExcel(this.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closeToolBarModel() {\r\n $('#' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n $('#StatusGrid_' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarTempGraphModel() {\r\n $('#TempGraph_' + this.props.formName).hide();\r\n }\r\n\r\n closeToolBarGensetGraphModel() {\r\n $('#GensetGraph_' + this.props.formName).hide();\r\n }\r\n closeToolBarGridExportToExcelPreference() {\r\n $('#DashboardStatus_' + this.props.formName).hide();\r\n }\r\n\r\n\r\n EmailTo() {\r\n EmailControlExcelPreference.ClearFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ReeferStatusGrid\" || this.props.formName == \"ReeferHistoryGrid\" || this.props.formName == \"PTResultGrid\") {\r\n this.props.renderEmailDialog(this.props.gridData, this.props.colDefs, this.props.formName, this.props.parentchild,\r\n this.props.functionId, this.props.widgetId, this.props.gridApiParams,\r\n this.props.gridApiParams.gridOptionsWrapper == undefined\r\n && this.props.gridApiParams.gridOptionsWrapper == null ? false :\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getRowGroupColumns().length > 0 ? true : false, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderEmailHtml: this.renderEmailControl() });\r\n $('#' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Email.\");\r\n }\r\n }\r\n\r\n GridPreference(functionId: any, widgetId: any) {\r\n this.setState({ renderGridPreferenceHtml: this.renderGridPreferenceControl(functionId, widgetId) });\r\n $('#StatusGrid_' + this.props.formName).show();\r\n }\r\n\r\n ExportToExcelNew(functionId: any) {\r\n ExportToExcelConfirmationWindow.clearOptionFilters();\r\n if (this.props.gridData != undefined && this.props.gridData != null && this.props.gridData.length > 0) {\r\n if (this.props.formName == \"ReeferStatusGrid\") {\r\n this.props.renderExportToExcelDialog(functionId, this.props.widgetId, this.props.gridApiParams, this.props.formName, this.props.gridData,\r\n this.props.colDefs, this.props.parentchild, this.props.sensorData);\r\n }\r\n else {\r\n this.setState({ renderExportToExcelHTML: this.renderETEConfirmationWindowControl() });\r\n $('#DashboardStatus_' + this.props.formName).show();\r\n }\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n openTemperatureGraph() {\r\n if (this.props.gridData.length > 0) {\r\n this.setState({ temperatureGraphHtml: this.renderTempratureGraphHtml() });\r\n $('#TempGraph_' + this.props.formName).show();\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No data to draw graph\");\r\n }\r\n\r\n openGensetMonitoringGraph() {\r\n if (this.props.gridData.length > 0) {\r\n this.setState({ gensetMonitoringGraphHtml: this.renderGensetMonitoringGraph() });\r\n $('#GensetGraph_' + this.props.formName).show();\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No data to draw graph\");\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadExcel').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n ClearQuickFilter() {\r\n $(\"#GridExcelFilter\").val('');\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter('');\r\n }\r\n\r\n onQuickFilterChanged(event: any) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setQuickFilter(event.target.value);\r\n }\r\n ColumnChange(event: any) {\r\n if (event != null) {\r\n var name: string = event.value;\r\n this.setState({\r\n selectedheaderName: name\r\n });\r\n var defaultKeys = this.state.AllColumns.filter(x => x.colDef.headerName == name);\r\n var colId = defaultKeys[0].colId;\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n if (defaultKeys.length > 0 && defaultKeys[0].colDef.columnGroupShow == \"open\") {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(defaultKeys[0].parent.groupId, true);\r\n //this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.onGroupExpandedOrCollapsed();\r\n setTimeout(() => {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n }, 200);\r\n this.setState({ PrevGroupId: defaultKeys[0].parent.groupId, PrevColId: colId });\r\n }\r\n else {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(colId).headerClass = \"ColumHighlightBg\";\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n \r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureColumnVisible(colId, 'middle');//RCNG-2543\r\n this.setState({ PrevGroupId: -1, PrevColId: colId });\r\n }\r\n }\r\n else {\r\n this.setState({\r\n selectedheaderName: null\r\n });\r\n if (this.state.PrevGroupId != -1) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnGroupOpened(this.state.PrevGroupId, false);\r\n }\r\n if (this.state.PrevColId != null) {\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.getColumnDef(this.state.PrevColId).headerClass = '';\r\n this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.refreshHeader();\r\n }\r\n }\r\n }\r\n static GetColumns(params: any) {\r\n var newColumns = [];\r\n var Displayedcolumns = params.columnApi.getAllDisplayedColumnGroups();\r\n forEach(Displayedcolumns, function (value, key) {\r\n forEach(value.children, function (bv, bk) {\r\n newColumns.push(bv);\r\n });\r\n });\r\n self.setState({ AllColumns: newColumns })\r\n }\r\n public render() {\r\n //var enableGridPreference = JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable;\r\n var gridPrefCss = 'btn btn-outline-secondary';\r\n //if (enableGridPreference)\r\n // gridPrefCss = 'btn btn-default hide';\r\n var readOnly :any = this.props.isReadOnly;\r\n if(readOnly == true)\r\n gridPrefCss = 'btn btn-outline-secondary disabled';\r\n\r\n if (this.props.formName == \"ReeferGrid\" || this.props.formName == \"ReeferHistory\" || this.props.formName == \"GensetStatus\" || this.props.formName == \"GensetHistory\") {\r\n if (this.state.AllColumns != null && this.state.AllColumns.length > 0) {\r\n var Alldisplayedcolumns = this.state.AllColumns;\r\n\r\n if (Alldisplayedcolumns != undefined && Alldisplayedcolumns != null && Alldisplayedcolumns.length > 0) {\r\n var Selectedcolumns = Alldisplayedcolumns.map(function (Columns) {\r\n return (\r\n { value: Columns.colDef.headerName, label: Columns.colDef.headerName }\r\n );\r\n });\r\n }\r\n }\r\n }\r\n return
    \r\n \r\n
    \r\n \r\n\r\n {this.props.formName == \"ReeferGrid\" || this.props.formName == \"GensetStatus\" || this.props.formName == \"DryStatus\" || this.props.formName == \"ChassisStatus\"\r\n || this.props.formName == \"ReeferHistory\" || this.props.formName == \"GensetHistory\" || this.props.formName == \"DryHistory\" || this.props.formName == \"ChassisHistory\"\r\n || this.props.formName == \"ReeferMapGrid\" || this.props.formName == \"GensetMap\" || this.props.formName == \"DryMap\" || this.props.formName == \"ChassisMap\"\r\n ?\r\n \r\n :\r\n \r\n }\r\n\r\n \r\n\r\n {this.props.formName == \"ReeferHistory\" ?\r\n : \"\"}\r\n {this.props.formName == \"GensetHistory\" ?\r\n : \"\"}\r\n\r\n {this.props.formName == \"ReeferGrid\" ?\r\n : \"\"}\r\n {this.props.formName == \"ReeferHistory\" || this.props.formName == \"ReeferMapGrid\" || this.props.formName == \"ReeferDetailsHistory\" ?\r\n : \"\"}\r\n {this.props.formName == \"GensetStatus\" ?\r\n : \"\"}\r\n {this.props.formName == \"GensetHistory\" || this.props.formName == \"GensetMap\" || this.props.formName == \"GensetDetailsHistory\" ?\r\n : \"\"}\r\n {this.props.formName == \"DryStatus\" ?\r\n : \"\"}\r\n {this.props.formName == \"DryHistory\" || this.props.formName == \"DryMap\" || this.props.formName == \"DryDetailsHistory\" ?\r\n : \"\"}\r\n {this.props.formName == \"ChassisStatus\" ?\r\n : \"\"}\r\n {this.props.formName == \"ChassisHistory\" || this.props.formName == \"ChassisMap\" || this.props.formName == \"ChassisDetailsHistory\" ?\r\n : \"\"}\r\n\r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n \r\n\r\n {this.props.formName == \"ReeferGrid\" || this.props.formName == \"GensetStatus\" || this.props.formName == \"ChassisStatus\" ?\r\n
    \r\n this.onQuickFilterChanged(e)} required />\r\n \r\n
    : \"\"}\r\n {\r\n this.props.formName == \"ReeferGrid\" || this.props.formName == \"GensetStatus\" ?\r\n
    \r\n \r\n
    \r\n :\r\n this.props.formName == \"ReeferHistory\" || this.props.formName == \"GensetHistory\"?\r\n
    \r\n \r\n
    :\r\n \"\"\r\n }\r\n {this.modelDialogEmailHtml()}\r\n {this.modelDialogGridPreferenceHtml()}\r\n {this.modelDialogTempGraphHtml()}\r\n {this.modelDialogGensetGraphHtml()}\r\n {this.modelDialogExportToExcelHtml()}\r\n
    \r\n }\r\n}","// @ts-nocheck\r\n/// \r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport * as MapCallouts from './../components/childcomponents/BingMapCallouts';\r\nimport { DryMapGrid } from './../components/childcomponents/DryMapGrid';\r\nimport { RCUtils } from './../RCUtils';\r\nimport pushpingray from '../images/MapPushPins/pushpin_gray.png';\r\nimport pushpinyellow from '../images/MapPushPins/pushpin_yellow.png';\r\nimport pushpinblue from '../images/MapPushPins/pushpin_blue.png';\r\nimport pushpingreen from '../images/MapPushPins/pushpin_green.png';\r\nimport pushpinred from '../images/MapPushPins/pushpin_red.png';\r\nimport pushpin_green_yellow from '../images/MapPushPins/pushpin_green_yellow.png';\r\nimport pushpin_blue_yellow from '../images/MapPushPins/pushpin_blue_yellow.png';\r\nimport { initialize, whenLoaded } from \"bing-maps-loader\";\r\n\r\n//import { loadBingApi, Microsoft } from \"../actions/BingMapLoader\";\r\n//import '../actions/bingmaps.api';\r\n//require('../actions/bingmaps.api.js');\r\nvar Config: any = require('../Config.json');\r\n\r\nvar pinInfobox = null;\r\nvar toolTip = null;\r\nvar reeferHistoryMap = null;\r\nvar layer = null;\r\nvar traceLayer = null;\r\nvar geoZonesLayer = null;\r\nvar PushpinsData = [];\r\nvar gridName = null;\r\nvar calloutState = true;\r\nvar reeferMasterData = null;\r\n\r\nclass MapCallout {\r\n static InitializeMap(params: any) {\r\n whenLoaded.then(() => {\r\n reeferHistoryMap = new Microsoft.Maps.Map(document.getElementById(params), {\r\n credentials: Config.BingMapsKey,\r\n //center: new Microsoft.Maps.Location(latitude, longitude),\r\n mapTypeId: Microsoft.Maps.MapTypeId.road,\r\n zoom: 12,\r\n showMapTypeSelector: true\r\n });\r\n\r\n Microsoft.Maps.Events.addHandler(reeferDetailsMap, 'maptypechanged', function (args) {\r\n mapTypeChanged(args);\r\n });\r\n });\r\n\r\n //var bounds = Microsoft.Maps.LocationRect.fromCorners(new Microsoft.Maps.Location(40.5, -123.5), new Microsoft.Maps.Location(40, -123));\r\n //var overlay = new PanningOverlay(bounds);\r\n //reeferHistoryMap.layers.insert(overlay);\r\n\r\n }\r\n \r\n static ClearMapPushpins () {\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n\r\n ClearMapLayers();\r\n\r\n calloutState = true;\r\n }\r\n \r\n static ResetCalloutState(){\r\n calloutState = true;\r\n }\r\n\r\n static BindTraceMapPushpins(selectedRows: any, gridType: any, formatterData: any) {\r\n gridName = gridType;\r\n reeferMasterData = formatterData;\r\n PushpinsData = [];\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n ClearMapLayers();\r\n layer = new Microsoft.Maps.Layer();\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.GPSLatitude != null && selectedValue.GPSLongitude != null) {\r\n var latitude = selectedValue.GPSLatitude;\r\n var longitude = selectedValue.GPSLongitude;\r\n \r\n var imageSource = '';\r\n if (gridType == \"current\") {\r\n if (selectedValue.GPSLatitude != 0 && selectedValue.GPSLongitude != 0 && ((selectedValue.GPSLockState == null || selectedValue.GPSLockState == \"\") || selectedValue.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n imageSource = pushpingray;\r\n else\r\n imageSource = pushpinyellow;\r\n }\r\n else {\r\n if (selectedValue.GPSLatitude != 0 && selectedValue.GPSLongitude != 0 && ((selectedValue.GPSLockState == null || selectedValue.GPSLockState == \"\") || selectedValue.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n imageSource = pushpingray;\r\n else if (selectedIndex == 0) {\r\n //imageSource = pushpinyellow;\r\n if (selectedValue.EventMasterID.toString() == \"52\" && selectedValue.DeviceConfig == true)\r\n imageSource = pushpin_green_yellow;\r\n else if (selectedValue.EventMasterID.toString() == \"53\" && selectedValue.DeviceConfig == true)\r\n imageSource = pushpin_blue_yellow;\r\n else\r\n imageSource = pushpinyellow;\r\n }\r\n //else if (selectedIndex == parseInt(selectedRows.length) - 1)\r\n // imageSource = pushpinblue;\r\n //else if (selectedValue.EventMasterID.toString() == \"57\" || (selectedValue.DeviceType != null && selectedValue.DeviceType.trim() == \"CT3100\" && selectedValue.EventMasterID.toString() == \"52\"))\r\n // imageSource = pushpingreen;\r\n //else if (selectedValue.EventMasterID.toString() == \"58\" || (selectedValue.DeviceType != null && selectedValue.DeviceType.trim() == \"CT3100\" && selectedValue.EventMasterID.toString() == \"53\"))\r\n // imageSource = pushpinred;\r\n else if (selectedValue.EventMasterID.toString() == \"52\" && selectedValue.DeviceConfig == true)\r\n imageSource = pushpingreen;\r\n else if (selectedValue.EventMasterID.toString() == \"53\" && selectedValue.DeviceConfig == true)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude);\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n \r\n pushpin.setOptions({ color: selectedValue.ParentEventID });\r\n \r\n /* InfoBox Code Starts */\r\n //pushpin.Description = '
    ';\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferHistoryMap);\r\n // Add handler for the pushpin click event.\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayReeferHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferHistoryInfoboxOnClick(args); });\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfobox(args) });\r\n // Hide the infobox when the map is moved.\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', function (args) { hideReeferInfobox(args) });\r\n /* InfoBox Code end */\r\n layer.add(pushpin); \r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferHistoryMap.layers.insert(layer); \r\n }\r\n static DisplaySelectedPushpin(selectedRow: any,reeferMasterData:any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n calloutState = false;\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n if (selectedRow.GPSLatitude != null && selectedRow.GPSLongitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.GPSLatitude;\r\n var longitude = selectedRow.GPSLongitude;\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.ParentEventID == selectedRow.ParentEventID) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n });\r\n\r\n var imageSource = '';\r\n if (gridName == \"current\") {\r\n if (selectedRow.GPSLatitude != 0 && selectedRow.GPSLongitude != 0 && ((selectedRow.GPSLockState == null || selectedRow.GPSLockState == \"\") || selectedRow.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n imageSource = pushpingray;\r\n else\r\n imageSource = pushpinyellow;\r\n }\r\n else {\r\n if (selectedRow.GPSLatitude != 0 && selectedRow.GPSLongitude != 0 && ((selectedRow.GPSLockState == null || selectedRow.GPSLockState == \"\") || selectedRow.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n imageSource = pushpingray;\r\n else if (rowIndex == 0) {\r\n //imageSource = pushpinyellow;\r\n if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpin_green_yellow;\r\n else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpin_blue_yellow;\r\n else\r\n imageSource = pushpinyellow;\r\n }\r\n //else if (rowIndex == PushpinsData.length - 1)\r\n // imageSource = pushpinblue;\r\n //else if (selectedRow.EventMasterID.toString() == \"57\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"52\"))\r\n // imageSource = pushpingreen;\r\n //else if (selectedRow.EventMasterID.toString() == \"58\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"53\"))\r\n // imageSource = pushpinred;\r\n else if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpingreen;\r\n else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n\r\n var pushpinImage = imageSource;\r\n\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n\r\n pushpin.setOptions({ color: selectedRow.ParentEventID });\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode, mapName: gridName, reeferFormatters: reeferMasterData });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferHistoryMap.setView({\r\n center: latLong,\r\n centerOffset: new Microsoft.Maps.Point(0, 50)//RCNG-3126\r\n });\r\n\r\n pinInfobox.setMap(reeferHistoryMap);\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayReeferHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferHistoryInfoboxOnClick(args); });\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0\r\n reeferHistoryMap.layers.insert(traceLayer);\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferHistoryMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n\r\n reeferHistoryMap.setView({\r\n center: center\r\n });\r\n\r\n toolTip.setMap(reeferHistoryMap);\r\n\r\n }\r\n } \r\n //static DisplaySelectedPushpin(selectedRow: any) { \r\n // if (traceLayer != null)\r\n // traceLayer.clear();\r\n // traceLayer = new Microsoft.Maps.Layer();\r\n // calloutState = false;\r\n\r\n // if (toolTip != null) {\r\n // toolTip.setOptions({ visible: false });\r\n // toolTip.setMap(null);\r\n // }\r\n // if (selectedRow.GPSLatitude != null && selectedRow.GPSLongitude != null) {\r\n // if (pinInfobox != null){ \r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n // } \r\n\r\n // var latitude = selectedRow.GPSLatitude;\r\n // var longitude = selectedRow.GPSLongitude;\r\n // var rowIndex = 0;\r\n // $.each(PushpinsData, function (index, value) {\r\n // if (value.ParentEventID == selectedRow.ParentEventID) {\r\n // rowIndex = index;\r\n // return false;\r\n // }\r\n // });\r\n\r\n // var imageSource = '';\r\n // if (gridName == \"current\") {\r\n // if (selectedRow.GPSLatitude != 0 && selectedRow.GPSLongitude != 0 && ((selectedRow.GPSLockState == null || selectedRow.GPSLockState == \"\") || selectedRow.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n // imageSource = pushpingray;\r\n // else\r\n // imageSource = pushpinyellow;\r\n // }\r\n // else {\r\n // if (selectedRow.GPSLatitude != 0 && selectedRow.GPSLongitude != 0 && ((selectedRow.GPSLockState == null || selectedRow.GPSLockState == \"\") || selectedRow.GPSLockState.toString().toUpperCase() != \"LOCKED\"))\r\n // imageSource = pushpingray;\r\n // else if (rowIndex == 0) {\r\n // //imageSource = pushpinyellow;\r\n // if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n // imageSource = pushpin_green_yellow;\r\n // else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n // imageSource = pushpin_blue_yellow;\r\n // else\r\n // imageSource = pushpinyellow;\r\n // }\r\n // //else if (rowIndex == PushpinsData.length - 1)\r\n // // imageSource = pushpinblue;\r\n // //else if (selectedRow.EventMasterID.toString() == \"57\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"52\"))\r\n // // imageSource = pushpingreen;\r\n // //else if (selectedRow.EventMasterID.toString() == \"58\" || (selectedRow.DeviceType != null && selectedRow.DeviceType.trim() == \"CT3100\" && selectedRow.EventMasterID.toString() == \"53\"))\r\n // // imageSource = pushpinred;\r\n // else if (selectedRow.EventMasterID.toString() == \"52\" && selectedRow.DeviceConfig == true)\r\n // imageSource = pushpingreen;\r\n // else if (selectedRow.EventMasterID.toString() == \"53\" && selectedRow.DeviceConfig == true)\r\n // imageSource = pushpinblue;\r\n // else\r\n // imageSource = pushpingray;\r\n // }\r\n\r\n // var pushpinImage = imageSource;\r\n\r\n // var popOffset = new Microsoft.Maps.Point(-4, 160);\r\n // //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n // var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n // var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n // var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n\r\n // pushpin.setOptions({ color: selectedRow.ParentEventID });\r\n \r\n // var identityCode = GenerateAlphaNumericCode(6);\r\n // /* InfoBox Code Starts */\r\n // var description = '
    ';\r\n // var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode, mapName: gridName, alarmData: alarmMasterData });\r\n // RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // // Create the infobox for the pushpin\r\n // pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n // maxHeight: 200,\r\n // maxWidth: 540,\r\n // showPointer: true,\r\n // description: description,\r\n // offset: popOffset,\r\n // showCloseButton: true\r\n // });\r\n // reeferHistoryMap.setView({\r\n // center: latLong\r\n // });\r\n\r\n // pinInfobox.setMap(reeferHistoryMap);\r\n\r\n // Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayReeferHistoryInfobox(args); });\r\n // Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferHistoryInfoboxOnClick(args); });\r\n\r\n // traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0\r\n // reeferHistoryMap.layers.insert(traceLayer); \r\n // }\r\n // else {\r\n // if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // //pinInfobox.setMap(null);\r\n // }\r\n // var identityCode = GenerateAlphaNumericCode(6);\r\n // var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n // /* InfoBox Code Starts */\r\n // var description = '
    ';\r\n // var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n // RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n // /* InfoBox Code Ends */\r\n // var center = reeferHistoryMap.getCenter();\r\n // toolTip = new Microsoft.Maps.Infobox(center, {\r\n // htmlContent: description,\r\n // offset: popOffset,\r\n // maxHeight: 50,\r\n // maxWidth: 240\r\n // });\r\n\r\n // reeferHistoryMap.setView({\r\n // center: center\r\n // });\r\n\r\n // toolTip.setMap(reeferHistoryMap);\r\n\r\n // }\r\n //} \r\n static BindGensetTraceMapPushpins(selectedRows: any, gridType: any) {\r\n gridName = gridType;\r\n PushpinsData = [];\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n ClearMapLayers();\r\n layer = new Microsoft.Maps.Layer();\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.Latitude != null && selectedValue.Longitude != null) {\r\n var latitude = selectedValue.Latitude;\r\n var longitude = selectedValue.Longitude;\r\n\r\n //var imageSource = 'genset_normal.png'; \r\n var imageSource = '';\r\n if (gridType == \"gensetTrace\") {\r\n if (selectedIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (selectedIndex== parseInt(selectedRows.length) - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n else {\r\n imageSource = pushpinyellow;\r\n }\r\n\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude);\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n //pushpin.setOptions({ color: selectedValue.GensetCurrentConditionId });\r\n if (gridName == \"gensetTrace\") {\r\n pushpin.setOptions({ color: selectedValue.GensetHistoryID });\r\n } else {\r\n pushpin.setOptions({ color: selectedValue.GensetCurrentConditionId });\r\n }\r\n\r\n /* InfoBox Code Starts */\r\n //pushpin.Description = '
    ';\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferHistoryMap);\r\n // Add handler for the pushpin click event.\r\n if (gridName == \"gensetTrace\") {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayGensetHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayGensetHistoryInfoboxOnClick(args); });\r\n }\r\n else {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayGensetStatusInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayGensetStatusInfoboxOnClick(args); });\r\n }\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfobox(args) });\r\n // Hide the infobox when the map is moved.\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', function (args) { hideReeferInfobox(args) });\r\n /* InfoBox Code end */\r\n layer.add(pushpin); \r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferHistoryMap.layers.insert(layer);\r\n }\r\n \r\n static BindGeoZonesLayer() {\r\n if(geoZonesLayer != null)\r\n geoZonesLayer.clear();\r\n var selectedDry: any = PushpinsData[0];\r\n if(selectedDry.Latitude !=null && selectedDry.Longitude !=null && (selectedDry.PositionAccuracy !=null && selectedDry.PositionAccuracy > 0)) {\r\n geoZonesLayer = new Microsoft.Maps.Layer();\r\n geoZonesLayer.setZIndex(10400);\r\n var loc = new Microsoft.Maps.Location(selectedDry.Latitude, selectedDry.Longitude);\r\n Microsoft.Maps.loadModule('Microsoft.Maps.SpatialMath', function () {\r\n var paths = Microsoft.Maps.SpatialMath.getRegularPolygon(loc, selectedDry.PositionAccuracy, 36, Microsoft.Maps.SpatialMath.DistanceUnits.Meters);\r\n var polygon = new Microsoft.Maps.Polygon(paths, null);\r\n geoZonesLayer.add(polygon); \r\n reeferHistoryMap.layers.insert(geoZonesLayer);\r\n });\r\n }\r\n }\r\n \r\n static DisposeGeozonesLayer() {\r\n if (geoZonesLayer != null)\r\n geoZonesLayer.clear();\r\n }\r\n\r\n static BindDryTraceMapPushpins(selectedRows: any, gridType: any) {\r\n gridName = gridType;\r\n PushpinsData = [];\r\n //if (pinInfobox != null) {\r\n // pinInfobox.setOptions({ visible: false });\r\n // pinInfobox.setMap(null);\r\n //}\r\n clearInfoboxPopup();\r\n ClearMapLayers();\r\n layer = new Microsoft.Maps.Layer();\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.Latitude != null && selectedValue.Longitude != null) {\r\n var latitude = selectedValue.Latitude;\r\n var longitude = selectedValue.Longitude;\r\n\r\n //var imageSource = 'purple_pushpin.png';\r\n var imageSource = '';\r\n if (gridType == \"dryTrace\") {\r\n if (selectedIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (selectedIndex == parseInt(selectedRows.length) - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n else {\r\n imageSource = pushpinyellow;\r\n }\r\n\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude);\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n //pushpin.setOptions({ color: selectedValue.GensetCurrentConditionId });\r\n if (gridName == \"dryTrace\") {\r\n pushpin.setOptions({ color: selectedValue.DCHistoryID });\r\n } else {\r\n pushpin.setOptions({ color: selectedValue.DCCurrentConditionID });\r\n }\r\n\r\n /* InfoBox Code Starts */\r\n //pushpin.Description = '
    ';\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferHistoryMap);\r\n // Add handler for the pushpin click event.\r\n if (gridName == \"dryTrace\") {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayDryHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayDryHistoryInfoboxOnClick(args); });\r\n }\r\n else {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayDryStatusInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayDryStatusInfoboxOnClick(args); });\r\n }\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayReeferInfobox(args) });\r\n // Hide the infobox when the map is moved.\r\n //Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', function (args) { hideReeferInfobox(args) });\r\n /* InfoBox Code end */\r\n layer.add(pushpin);\r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferHistoryMap.layers.insert(layer);\r\n }\r\n\r\n static BindChassisTraceMapPushpins(selectedRows: any, gridType: any) {\r\n gridName = gridType;\r\n PushpinsData = [];\r\n clearInfoboxPopup();\r\n ClearMapLayers();\r\n layer = new Microsoft.Maps.Layer();\r\n $.each(selectedRows, function (selectedIndex, selectedValue) {\r\n if (selectedValue.Latitude != null && selectedValue.Longitude != null) {\r\n var latitude = selectedValue.Latitude;\r\n var longitude = selectedValue.Longitude; \r\n var imageSource = '';\r\n if (gridType == \"chassisTrace\") {\r\n if (selectedIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (selectedIndex == parseInt(selectedRows.length) - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n else {\r\n imageSource = pushpinyellow;\r\n }\r\n\r\n var pushpinImage = imageSource;\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var center = new Microsoft.Maps.Location(latitude, longitude);\r\n var pushpin = new Microsoft.Maps.Pushpin(center, pushpinOptions);\r\n if (gridName == \"chassisTrace\") {\r\n pushpin.setOptions({ color: selectedValue.ChassisHistoryID });\r\n } else {\r\n pushpin.setOptions({ color: selectedValue.ChassisCurrentConditionID });\r\n }\r\n pinInfobox = new Microsoft.Maps.Infobox(pushpin.getLocation(), {\r\n visible: false\r\n });\r\n pinInfobox.setMap(reeferHistoryMap);\r\n if (gridName == \"chassisTrace\") {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayChassisHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayChassisHistoryInfoboxOnClick(args); });\r\n }\r\n else {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayChassisStatusInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayChassisStatusInfoboxOnClick(args); });\r\n }\r\n layer.add(pushpin);\r\n }\r\n PushpinsData.push(selectedValue);\r\n });\r\n reeferHistoryMap.layers.insert(layer);\r\n }\r\n static DisplayGensetSelectedPushpin(selectedRow: any) { \r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n calloutState = false;\r\n var isTrace = false;\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.Latitude;\r\n var longitude = selectedRow.Longitude;\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.GensetCurrentConditionId) {\r\n if (value.GensetCurrentConditionId == selectedRow.GensetCurrentConditionId) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n } else if (value.GensetHistoryID) {\r\n if (value.GensetHistoryID == selectedRow.GensetHistoryID) {\r\n rowIndex = index;\r\n isTrace = true;\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n //var imageSource = 'genset_normal.png'; \r\n\r\n var imageSource = '';\r\n if (isTrace) {\r\n if (rowIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (rowIndex == PushpinsData.length - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n else {\r\n imageSource = pushpinyellow;\r\n }\r\n var pushpinImage = imageSource;\r\n\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n if (isTrace) {\r\n pushpin.setOptions({ color: selectedRow.GensetHistoryID });\r\n } else {\r\n pushpin.setOptions({ color: selectedRow.GensetCurrentConditionId });\r\n }\r\n\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferHistoryMap.setView({\r\n center: latLong,\r\n centerOffset: new Microsoft.Maps.Point(0, 30)//RCNG-227\r\n });\r\n\r\n pinInfobox.setMap(reeferHistoryMap);\r\n if (isTrace) {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayGensetHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayGensetHistoryInfoboxOnClick(args); });\r\n } else {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayGensetStatusInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayGensetStatusInfoboxOnClick(args); });\r\n }\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0 \r\n reeferHistoryMap.layers.insert(traceLayer); \r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferHistoryMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n\r\n reeferHistoryMap.setView({\r\n center: center\r\n });\r\n\r\n toolTip.setMap(reeferHistoryMap);\r\n\r\n }\r\n } \r\n static DisplayChassisSelectedPushpin(selectedRow: any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n calloutState = false;\r\n var isTrace = false;\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.Latitude;\r\n var longitude = selectedRow.Longitude;\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.ChassisCurrentConditionID) {\r\n if (value.ChassisCurrentConditionID == selectedRow.ChassisCurrentConditionID) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n } else if (value.ChassisHistoryID) {\r\n if (value.ChassisHistoryID == selectedRow.ChassisHistoryID) {\r\n rowIndex = index;\r\n isTrace = true;\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n //var imageSource = 'genset_normal.png'; \r\n\r\n var imageSource = '';\r\n if (isTrace) {\r\n if (rowIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (rowIndex == PushpinsData.length - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n else {\r\n imageSource = pushpinyellow;\r\n }\r\n var pushpinImage = imageSource;\r\n\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n if (isTrace) {\r\n pushpin.setOptions({ color: selectedRow.ChassisHistoryID });\r\n } else {\r\n pushpin.setOptions({ color: selectedRow.ChassisCurrentConditionID });\r\n }\r\n\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferHistoryMap.setView({\r\n center: latLong,\r\n centerOffset: new Microsoft.Maps.Point(0, 30)//RCNG-227\r\n });\r\n\r\n pinInfobox.setMap(reeferHistoryMap);\r\n if (isTrace) {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayChassisHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayChassisHistoryInfoboxOnClick(args); });\r\n } else {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayChassisStatusInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayChassisStatusInfoboxOnClick(args); });\r\n }\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0 \r\n reeferHistoryMap.layers.insert(traceLayer);\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferHistoryMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n\r\n reeferHistoryMap.setView({\r\n center: center\r\n });\r\n\r\n toolTip.setMap(reeferHistoryMap);\r\n\r\n }\r\n } \r\n static DisplayDrySelectedPushpin(selectedRow: any) {\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n traceLayer = new Microsoft.Maps.Layer();\r\n calloutState = false;\r\n var isTrace = false;\r\n\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n if (selectedRow.Latitude != null && selectedRow.Longitude != null) {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n\r\n var latitude = selectedRow.Latitude;\r\n var longitude = selectedRow.Longitude;\r\n var rowIndex = 0;\r\n $.each(PushpinsData, function (index, value) {\r\n if (value.DryCurrentConditionId) {\r\n if (value.DryCurrentConditionId == selectedRow.DryCurrentConditionId) {\r\n rowIndex = index;\r\n return false;\r\n }\r\n } else if (value.DCHistoryID) {\r\n if (value.DCHistoryID == selectedRow.DCHistoryID) {\r\n rowIndex = index;\r\n isTrace = true;\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n //var imageSource = 'purple_pushpin.png';\r\n var imageSource = '';\r\n if (isTrace) {\r\n if (rowIndex == 0)\r\n imageSource = pushpinyellow;\r\n else if (rowIndex == PushpinsData.length - 1)\r\n imageSource = pushpinblue;\r\n else\r\n imageSource = pushpingray;\r\n }\r\n else {\r\n imageSource = pushpinyellow;\r\n }\r\n\r\n var pushpinImage = imageSource;\r\n\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n //var pushpinImage = require(process.env.PUBLIC_URL + '/images/bingcenterSelected_icon.png');\r\n var pushpinOptions = { icon: pushpinImage, height: 31, width: 20, anchor: new Microsoft.Maps.Point(11, 8) };\r\n var latLong = new Microsoft.Maps.Location(latitude, longitude); //reeferHistoryMap.getCenter();\r\n var pushpin = new Microsoft.Maps.Pushpin(latLong, pushpinOptions);\r\n if (isTrace) {\r\n pushpin.setOptions({ color: selectedRow.DCHistoryID });\r\n } else {\r\n pushpin.setOptions({ color: selectedRow.DCCurrentConditionID });\r\n }\r\n\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: selectedRow, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n // Create the infobox for the pushpin\r\n pinInfobox = new Microsoft.Maps.Infobox(latLong, {\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n offset: popOffset,\r\n showCloseButton: true\r\n });\r\n reeferHistoryMap.setView({\r\n center: latLong,\r\n centerOffset: new Microsoft.Maps.Point(0, 30)//RCNG-227\r\n });\r\n\r\n pinInfobox.setMap(reeferHistoryMap);\r\n if (isTrace) {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayDryHistoryInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayDryHistoryInfoboxOnClick(args); });\r\n } else {\r\n Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', function (args) { displayDryStatusInfobox(args); });\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', function (args) { displayDryStatusInfoboxOnClick(args); });\r\n }\r\n\r\n traceLayer.add(pushpin, 0); // adding selected row to layer object at index 0 \r\n reeferHistoryMap.layers.insert(traceLayer);\r\n }\r\n else {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n //pinInfobox.setMap(null);\r\n }\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n var popOffset = new Microsoft.Maps.Point(-120, 100);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var htmlElement = React.createElement(MapCallouts.PinInfoboxNoLocation, { selectedPin: null, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, htmlElement);\r\n /* InfoBox Code Ends */\r\n var center = reeferHistoryMap.getCenter();\r\n toolTip = new Microsoft.Maps.Infobox(center, {\r\n htmlContent: description,\r\n offset: popOffset,\r\n maxHeight: 50,\r\n maxWidth: 240\r\n });\r\n\r\n reeferHistoryMap.setView({\r\n center: center\r\n });\r\n\r\n toolTip.setMap(reeferHistoryMap);\r\n\r\n }\r\n } \r\n static UpdateGensetGridName(gridname: any) {\r\n gridName = gridname;\r\n }\r\n static UpdateChassisGridName(gridname: any) {\r\n gridName = gridname;\r\n }\r\n}\r\n//class PanningOverlay extends Microsoft.Maps.CustomOverlay{\r\n// bounds: Microsoft.Maps.LocationRect;\r\n// private panUpBtn: HTMLInputElement;\r\n// private panDownBtn: HTMLInputElement;\r\n// private panLeftBtn: HTMLInputElement;\r\n// private panRightBtn: HTMLInputElement;\r\n\r\n// constructor(bounds: Microsoft.Maps.LocationRect) {\r\n// super({ beneathLabels: false });\r\n// this.bounds = bounds; \r\n \r\n// this.panUpBtn = document.createElement('input');\r\n// this.panUpBtn.type = 'button';\r\n// this.panUpBtn.value = '˄';\r\n// this.panUpBtn.onclick = () =>{\r\n// this.panMap('up');\r\n// };\r\n// this.panDownBtn = document.createElement('input');\r\n// this.panDownBtn.type = 'button';\r\n// this.panDownBtn.value = '˅';\r\n// this.panDownBtn.onclick = () =>{\r\n// this.panMap('down');\r\n// };\r\n// this.panLeftBtn = document.createElement('input');\r\n// this.panLeftBtn.type = 'button';\r\n// this.panLeftBtn.value = '<';\r\n// this.panLeftBtn.onclick = () =>{\r\n// this.panMap('left');\r\n// };\r\n// this.panRightBtn = document.createElement('input');\r\n// this.panRightBtn.type = 'button';\r\n// this.panRightBtn.value = '>';\r\n// this.panRightBtn.onclick = () =>{\r\n// this.panMap('right');\r\n// };\r\n \r\n// }\r\n// onAdd(){\r\n// var container = document.createElement('div');\r\n// container.appendChild(this.panUpBtn);\r\n// container.appendChild(this.panDownBtn);\r\n// container.appendChild(this.panLeftBtn);\r\n// container.appendChild(this.panRightBtn);\r\n// container.style.position = 'absolute';\r\n// container.style.top = '10px';\r\n// container.style.left = '10px';\r\n// this.setHtmlElement(container);\r\n// }\r\n// panMap(dir: any){\r\n// var dx = 0, dy = 0;\r\n// switch (dir) {\r\n// case 'up':\r\n// dy = -30;\r\n// break;\r\n// case 'down':\r\n// dy = 30;\r\n// break;\r\n// case 'left':\r\n// dx = -30;\r\n// break;\r\n// case 'right':\r\n// dx = 30;\r\n// break;\r\n// }\r\n// var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter());\r\n// cp.x += dx;\r\n// cp.y += dy;\r\n// reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp) });\r\n// }\r\n//}\r\nfunction displayReeferHistoryInfoboxOnClick(event) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ParentEventID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n \r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: dataItem, divid: identityCode, mapName: gridName, reeferFormatters: reeferMasterData });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n \r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction displayReeferHistoryInfobox(event) {\r\n if(calloutState) {\r\n calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ParentEventID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n \r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.PinInfoboxDescription, { selectedPin: dataItem, divid: identityCode, mapName: gridName, reeferFormatters: reeferMasterData });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n \r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction displayGensetHistoryInfobox(event) {\r\n if (calloutState) {\r\n calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null; \r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetCurrentConditionId) {\r\n if (PushpinsData[i].GensetCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].GensetHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n }\r\n}\r\nfunction displayChassisHistoryInfobox(event) {\r\n if (calloutState) {\r\n calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisCurrentConditionID) {\r\n if (PushpinsData[i].ChassisCurrentConditionID == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].ChassisHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n }\r\n}\r\nfunction displayDryHistoryInfobox(event) {\r\n if (calloutState) {\r\n calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n //for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].GensetCurrentConditionId.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n //}\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DryCurrentConditionId) {\r\n if (PushpinsData[i].DryCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].DCHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction displayGensetHistoryInfoboxOnClick(event) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null; \r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetCurrentConditionId) {\r\n if (PushpinsData[i].GensetCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].GensetHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction displayDryHistoryInfoboxOnClick(event) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n //for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].GensetConditionLogID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n //}\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DryCurrentConditionId) {\r\n if (PushpinsData[i].DryCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].DCHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\nfunction displayChassisHistoryInfoboxOnClick(event) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisCurrentConditionID) {\r\n if (PushpinsData[i].ChassisCurrentConditionID == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].ChassisHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\nfunction displayGensetStatusInfobox(event) {\r\n if (calloutState) {\r\n calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null; \r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetCurrentConditionId) {\r\n if (PushpinsData[i].GensetCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction displayDryStatusInfobox(event) {\r\n if (calloutState) {\r\n calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n //for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n //}\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DryCurrentConditionId) {\r\n if (PushpinsData[i].DryCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].DCHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n }\r\n}\r\nfunction displayChassisStatusInfobox(event) {\r\n if (calloutState) {\r\n calloutState = false;\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisCurrentConditionID) {\r\n if (PushpinsData[i].ChassisCurrentConditionID == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].ChassisHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n }\r\n}\r\nfunction displayGensetStatusInfoboxOnClick(event) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null; \r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].GensetCurrentConditionId) {\r\n if (PushpinsData[i].GensetCurrentConditionId == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.GensetPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction displayDryStatusInfoboxOnClick(event) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n //var index1 = e.target.Description.indexOf(\"id=\") + 3;\r\n //var index2 = e.target.Description.indexOf(\"style\") - 1;\r\n //var unitMasterId = e.target.Description.substring(index1, index2);\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n //for (var i = 0; i < PushpinsData.length; i++) {\r\n // if (PushpinsData[i].CurrentConditionID.toString() == eventId) {\r\n // dataItem = PushpinsData[i];\r\n // break;\r\n // }\r\n //}\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].DCCurrentConditionID) {\r\n if (PushpinsData[i].DCCurrentConditionID == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].DCHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.DryPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\n\r\nfunction displayChassisStatusInfoboxOnClick(event) {\r\n if (event.targetType == 'pushpin') {\r\n try {\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n var eventId = event.target._options.color;\r\n var dataItem = null;\r\n for (var i = 0; i < PushpinsData.length; i++) {\r\n if (PushpinsData[i].ChassisCurrentConditionID) {\r\n if (PushpinsData[i].ChassisCurrentConditionID == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n } else {\r\n if (PushpinsData[i].ChassisHistoryID.toString() == eventId) {\r\n dataItem = PushpinsData[i];\r\n break;\r\n }\r\n }\r\n }\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n }\r\n var popOffset = new Microsoft.Maps.Point(-4, 182);\r\n\r\n var identityCode = GenerateAlphaNumericCode(6);\r\n /* InfoBox Code Starts */\r\n var description = '
    ';\r\n var DescElement = React.createElement(MapCallouts.ChassisPinInfoboxDescription, { selectedPin: dataItem, divid: identityCode });\r\n RCUtils.RenderChildComponent(identityCode, DescElement);\r\n\r\n // Create the infobox for the pushpin\r\n pinInfobox.setOptions({\r\n maxHeight: 200,\r\n maxWidth: 540,\r\n showPointer: true,\r\n description: description,\r\n location: event.target.getLocation(),\r\n visible: true, offset: popOffset,\r\n showCloseButton: true\r\n });\r\n\r\n //#### A buffer limit to use to specify the infobox must be away from the edges of the map.\r\n var buffer = 30;\r\n var infoboxOffset = pinInfobox.getOffset();\r\n var infoboxAnchor = pinInfobox.getAnchor();\r\n var infoboxLocation = reeferHistoryMap.tryLocationToPixel(event.target.getLocation(), Microsoft.Maps.PixelReference.control);\r\n var dx = infoboxLocation.x + infoboxOffset.x - infoboxAnchor.x;\r\n var dy = infoboxLocation.y - 20 - infoboxAnchor.y;\r\n if (dy < buffer) {\r\n //#### Offset in opposite direction.\r\n dy *= -1;\r\n //#### add buffer from the top edge of the map.\r\n dy += buffer;\r\n }\r\n else {\r\n //#### If dy is greater than zero than it does not overlap.\r\n dy = 0;\r\n }\r\n if (dx < buffer) {\r\n //#### Offset in opposite direction.\r\n dx *= -1;\r\n //#### add a buffer from the left edge of the map.\r\n dx += buffer;\r\n }\r\n else {\r\n dx = reeferHistoryMap.getWidth() - infoboxLocation.x + infoboxAnchor.x - pinInfobox.getWidth();\r\n //#### If dx is greater than zero then it does not overlap.\r\n if (dx > buffer) {\r\n dx = 0;\r\n }\r\n else {\r\n //#### add a buffer from the right edge of the map.\r\n dx -= buffer;\r\n }\r\n }\r\n //#### Adjust the map so infobox is in view\r\n if (dx != 0 || dy != 0) {\r\n //map.setView({\r\n // centerOffset: new Microsoft.Maps.Point(dx, dy),\r\n // center: map.getCenter()\r\n //});\r\n var cp = reeferHistoryMap.tryLocationToPixel(reeferHistoryMap.getCenter(), Microsoft.Maps.PixelReference.control);\r\n cp.x -= dx;\r\n cp.y -= dy;\r\n reeferHistoryMap.setView({ center: reeferHistoryMap.tryPixelToLocation(cp, Microsoft.Maps.PixelReference.control) });\r\n }\r\n }\r\n catch (ex) {\r\n //alert(ex.message + \" \" + ex.description);\r\n }\r\n }\r\n}\r\nfunction hideReeferInfobox(e) {\r\n if (pinInfobox != null) \r\n pinInfobox.setOptions({ visible: false });\r\n}\r\n\r\nfunction ClearMapLayers() {\r\n if (layer != null)\r\n layer.clear();\r\n if (traceLayer != null)\r\n traceLayer.clear();\r\n if (geoZonesLayer != null)\r\n geoZonesLayer.clear();\r\n}\r\n\r\nfunction GenerateAlphaNumericCode(length) {\r\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\r\n result = \"\"\r\n for (var i = length; i > 0; --i)\r\n result += chars[Math.round(Math.random() * (chars.length - 1))]\r\n return result\r\n}\r\n\r\nfunction clearInfoboxPopup() {\r\n if (pinInfobox != null) {\r\n pinInfobox.setOptions({ visible: false });\r\n pinInfobox.setMap(null);\r\n }\r\n if (toolTip != null) {\r\n toolTip.setOptions({ visible: false });\r\n toolTip.setMap(null);\r\n }\r\n}\r\nfunction mapTypeChanged(params) {\r\n var mapType = reeferHistoryMap.getImageryId();\r\n if (mapType == \"Aerial\") { \r\n $(\"#geoZones\").removeClass('map-Geofence');\r\n $(\"#geoZones\").addClass('mapGeofenceAerial');\r\n DryMapGrid.UpdateFenceImage('A');\r\n }\r\n else { \r\n $(\"#geoZones\").removeClass('mapGeofenceAerial');\r\n $(\"#geoZones\").addClass('map-Geofence'); \r\n DryMapGrid.UpdateFenceImage('R');\r\n }\r\n}\r\nexport default MapCallout;","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport $ from 'jquery';\r\nimport lodashfilter from 'lodash/filter';\r\n\r\nimport NormalCC from '../images/Status/Alarms/NormalCC.png';\r\nimport MediumCC from '../images/Status/Alarms/MediumCC.png';\r\nimport LowCC from '../images/Status/Alarms/LowCC.png';\r\nimport HighCC from '../images/Status/Alarms/HighCC.png';\r\nimport HighALM from '../images/Status/Alarms/HighALM.png';\r\nimport MediumALM from '../images/Status/Alarms/MediumALM.png';\r\n\r\nimport PlugSolid from '../images/PlugSolid.svg';\r\nimport batterycritical from '../images/battery-critical.svg';\r\nimport batterylow from '../images/battery-low.svg';\r\nimport batterynormal from '../images/battery-normal.svg';\r\nimport BatteryIndicator from '../images/BatteryIndicator.svg';\r\nimport DualColorBattery from '../images/DualColorBattery.svg';\r\n\r\nimport TripInprogress from '../images/Status/RouteDeviation/TripInprogress.png';\r\nimport TripCompletedDeviation from '../images/Status/RouteDeviation/TripCompletedDeviation.png';\r\nimport TripCompleted from '../images/Status/RouteDeviation/TripCompleted.png';\r\nimport TripProblemetic from '../images/Status//RouteDeviation/TripProblemetic.png';\r\nimport TripPending from '../images/Status/RouteDeviation/TripPending.png';\r\nimport TripDeleted from '../images/Status/RouteDeviation/TripDeleted.png';\r\nimport TripCancelDeviation from '../images/Status/RouteDeviation/TripCancelDeviation.png';\r\nimport TripCancel from '../images/Status/RouteDeviation/TripCancel.png';\r\nimport UnknownStatus from '../images/Status/UnknownStatus.png';\r\nimport ErrorStatus from '../images/Status/ErrorStatus.png';\r\nimport PendingStatus from '../images/Status/PendingStatus.png';\r\nimport IssuedStatus from '../images/Status/IssuedStatus.png';\r\nimport ExpiredStatus from '../images/Status/ExpiredStatus.png';\r\nimport CancelStatus from '../images/Status/CancelStatus.png';\r\nimport SucessStatus from '../images/Status/SucessStatus.png';\r\nimport AcceptedStatus from '../images/Status/AcceptedStatus.png';\r\nimport RejectedStatus from '../images/Status/RejectedStatus.png';\r\nimport DiscardedStatus from '../images/Status/DiscardedStatus.png';\r\nimport RetryStatus from '../images/Status/RetryStatus.png';\r\nimport AcceptedByBusyRCDStatus from '../images/Status/AcceptedByBusyRCDStatus.png';\r\nimport AwaitingPrerequisites from '../images/Status/AwaitingPrerequisites.png';\r\nimport CancellationRequest from '../images/Status/CancellationRequest.png';\r\nimport SendToVC from '../images/Status/SendToVC.png';\r\nimport ValidationPendingStatus from '../images/Status/ValidationPendingStatus.png';\r\nimport UndeliverableStatus from '../images/Status/UndeliverableStatus.png';\r\nimport AssetStateActive from '../images/AssetState/ActiveRA.svg';\r\nimport AssetStateDisconnected from '../images/AssetState/DisconnectedRA.png';\r\nimport AssetStateRetired from '../images/AssetState/RetiredRA.svg';\r\n\r\n\r\nimport DBP0 from '../images/DoorBattPct/0.svg';\r\nimport DBP10 from '../images/DoorBattPct/10.svg';\r\nimport DBP20 from '../images/DoorBattPct/20.svg';\r\nimport DBP30 from '../images/DoorBattPct/30.svg';\r\nimport DBP40 from '../images/DoorBattPct/40.svg';\r\nimport DBP50 from '../images/DoorBattPct/50.svg';\r\nimport DBP60 from '../images/DoorBattPct/60.svg';\r\nimport DBP70 from '../images/DoorBattPct/70.svg';\r\nimport DBP80 from '../images/DoorBattPct/80.svg';\r\nimport DBP90 from '../images/DoorBattPct/90.svg';\r\nimport DBP100 from '../images/DoorBattPct/100.svg';\r\n\r\nimport RSSIUNK from '../images/RSSI/RSSI_UNK.png';\r\nimport RSSI1 from '../images/RSSI/RSSI_1.png';\r\nimport RSSI2 from '../images/RSSI/RSSI_2.png';\r\nimport RSSI3 from '../images/RSSI/RSSI_3.png';\r\nimport RSSI4 from '../images/RSSI/RSSI_4.png';\r\nimport RSSI5 from '../images/RSSI/RSSI_5.png';\r\n\r\nimport GroupChat from '../images/GroupChat.png';\r\nimport ImgPending1 from '../images/Img_Pending1.png';\r\nimport ImgWarning1 from '../images/Img_Warning1.png';\r\nimport ImgSuccess1 from '../images/Img_Success1.png';\r\nimport deletepng from '../images/delete.png';\r\n\r\nimport bulletcommand from '../images/bullet_command.png';\r\n\r\nexport class ReeferCellRenderer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n static RunStateFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.RunState != null && params.data.RunState != undefined) {\r\n if ((params.data.RunState.toString().toUpperCase().trim()) == 'I')\r\n return ;\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'S')\r\n return ;\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'X')\r\n return ;\r\n\r\n\r\n else if ((params.data.RunState.toString().toUpperCase().trim()) == 'O')\r\n return ;\r\n\r\n else\r\n return '-NA-';\r\n\r\n }\r\n\r\n return '-NA-';\r\n }\r\n }\r\n static GetCargoCareAlmImg(almIcon) {\r\n\r\n if (almIcon == \"\") {\r\n return \"\";\r\n } \r\n else if (almIcon == \"1\") {\r\n //return ''\r\n var imageHighCCElement = document.createElement(\"img\");\r\n imageHighCCElement.src = HighCC;\r\n return imageHighCCElement;\r\n }\r\n else if (almIcon == \"2\") {\r\n //return ''\r\n var imageMediumCCElement = document.createElement(\"img\");\r\n imageMediumCCElement.src = MediumCC;\r\n return imageMediumCCElement;\r\n }\r\n else if (almIcon == \"3\") {\r\n //return ''\r\n var imageLowCCElement = document.createElement(\"img\");\r\n imageLowCCElement.src = LowCC;\r\n return imageLowCCElement;\r\n }\r\n }\r\n static CargoCareFormatter(params) {\r\n\r\n if (params != null && params != undefined && params != '') {\r\n\r\n var cellColor = \"\";\r\n var isCargoCare = false;\r\n\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n isCargoCare = params.data.IsCargoCare;\r\n\r\n if (params.data.CCAlarms != \"\" && params.data.CCAlarms != null && params.data.CCSeverityLevel != \"\" && params.data.CCSeverityLevel != null) {\r\n if (params.data.CCSeverityLevel.toString() == \"1\") {\r\n cellColor = \"Tomato\";\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"2\") {\r\n cellColor = \"Orange\";\r\n }\r\n else if (params.data.CCSeverityLevel.toString() == \"3\") {\r\n cellColor = \"Yellow\";\r\n }\r\n }\r\n else {\r\n cellColor = \"\";\r\n }\r\n\r\n if (cellColor == \"\" && !isCargoCare) {\r\n return \"\";\r\n }\r\n else if (isCargoCare && cellColor == \"\") {\r\n return ;\r\n }\r\n else if (isCargoCare && cellColor == \"Tomato\") {\r\n return ;\r\n }\r\n else if (isCargoCare && cellColor == \"Orange\") {\r\n return ;\r\n }\r\n else if (isCargoCare && cellColor == \"Yellow\") {\r\n return ;\r\n }\r\n }\r\n\r\n }\r\n\r\n return ;\r\n }\r\n\r\n static StatusIndicatorWithDescriptionForALM(params) {\r\n //var element = document.createElement(\"span\");\r\n //element.className = \"reefer-alert\";\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n //var imageElement = document.createElement(\"img\");\r\n\r\n //switch (params.value.trim()) {\r\n // case '1':\r\n // imageSrc = HighALM;\r\n // break;\r\n // case '2':\r\n // imageSrc = MediumALM;\r\n // break;\r\n // default:\r\n // return \"\";\r\n\r\n //}\r\n var alarmsList = params.colDef.refData;\r\n if (params.value.trim() == '1' || params.value.trim() == '2') {\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.data != null && params.data != undefined) {\r\n var lstAlerts = params.data.AlarmsList.split(',');\r\n var _alarmsList = \"\";\r\n $.each(lstAlerts, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n }\r\n //var anchorElement = document.createElement(\"span\");\r\n var _alarmDesc = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n _alarmsList = _alarmsList != \"\" ? _alarmsList + \"\\n\" + item + \" - \" + _alarmDesc : item + \" - \" + _alarmDesc;\r\n //imageElement.title = _alarmsList;\r\n }\r\n });\r\n if (params.value.trim() == '1')\r\n return ;\r\n else if (params.value.trim() == '2')\r\n return ;\r\n\r\n }\r\n }\r\n }\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n\r\n static StatusIndicatorWithDescriptionForAlarms(params:any, lstAlarms:any) {\r\n //var element = document.createElement(\"span\");\r\n //element.className = \"reefer-alert\";\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n //var imageElement = document.createElement(\"img\");\r\n\r\n //switch (params.value.trim()) {\r\n // case '1':\r\n // imageSrc = HighALM;\r\n // break;\r\n // case '2':\r\n // imageSrc = MediumALM;\r\n // break;\r\n // default:\r\n // return \"\";\r\n\r\n //}\r\n var alarmsList = lstAlarms;\r\n if (params.value.trim() == '1' || params.value.trim() == '2') {\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.data != null && params.data != undefined) {\r\n var lstAlerts = params.data.AlarmsList.split(',');\r\n var _alarmsList = \"\";\r\n $.each(lstAlerts, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n }\r\n //var anchorElement = document.createElement(\"span\");\r\n var _alarmDesc = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n _alarmsList = _alarmsList != \"\" ? _alarmsList + \"\\n\" + item + \" - \" + _alarmDesc : item + \" - \" + _alarmDesc;\r\n //imageElement.title = _alarmsList;\r\n }\r\n });\r\n if (params.value.trim() == '1')\r\n return ;\r\n else if (params.value.trim() == '2')\r\n return ;\r\n\r\n }\r\n }\r\n }\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n\r\n static PwrStateFormatter(params) {\r\n\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\") {\r\n if (params.data.AssetType != null && params.data.AssetType != undefined && params.data.AssetType.toString().toUpperCase().trim() == \"C\") {\r\n if (params.data.ChassisPWR != null && params.data.ChassisPWR != undefined && params.data.ChassisPWR.toString().toUpperCase().trim() == \"A\") {\r\n return ;\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\") {\r\n\r\n return ;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"L\") {\r\n\r\n return ;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"N\") {\r\n\r\n return ;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"C\") {\r\n\r\n return ;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"L\") {\r\n\r\n return ;\r\n }\r\n else if (params.data.DevicePowerSourceCd == \"N\") {\r\n\r\n return ;\r\n }\r\n }\r\n }\r\n }\r\n else if (params.data.DevicePowerSourceCd != null && params.data.DevicePowerSourceCd != undefined) {\r\n if (params.data.DevicePowerSourceCd == \"B\") {\r\n\r\n return ;\r\n }\r\n else if (params.data.DeviceConfig.toString().toUpperCase().trim() == \"TRUE\" && params.data.DevicePowerSourceCd == \"A\") {\r\n\r\n return ;\r\n }\r\n else {\r\n\r\n return ;\r\n }\r\n }\r\n\r\n }\r\n\r\n return '-NA-';\r\n }\r\n\r\n static TripstatusIndicator(params){\r\n var deviationFlg = '';\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n\r\n //var imageSrc = '';\r\n var valueString = params.value.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n //imageSrc = TripInprogress;\r\n return ;\r\n //break;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n //imageSrc = TripCompletedDeviation; /* WI19591 checking Trip is deviated */\r\n return ;\r\n else\r\n //imageSrc = TripCompleted;\r\n return ;\r\n //break;\r\n case 'D':\r\n //imageSrc = TripProblemetic;\r\n return ;\r\n //break;\r\n case 'P':\r\n //imageSrc = TripPending;\r\n return ;\r\n //break;\r\n case 'R':\r\n //imageSrc = TripDeleted;\r\n return ;\r\n //break;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n //imageSrc = TripCancelDeviation; /* WI19591 checking Trip is deviated */\r\n return ;\r\n else\r\n //imageSrc = TripCancel;\r\n return ;\r\n //break;\r\n default:\r\n break;\r\n\r\n }\r\n }\r\n\r\n return ;\r\n\r\n }\r\n return ;\r\n }\r\n\r\n static AssetStateFormatter(params){\r\n //var element = document.createElement(\"span\");\r\n\r\n if (params.data != null && params.data != undefined) {\r\n //var imageElement = document.createElement(\"img\");\r\n var assetState = params.data.AssetState;\r\n if (params.data.AssetState != null && params.data.AssetState != undefined) {\r\n if (assetState.toUpperCase().trim() == 'A') {\r\n return ;\r\n }\r\n else if (assetState.toUpperCase().trim() == 'D') {\r\n return ;\r\n }\r\n else if (assetState.toUpperCase().trim() == 'R') {\r\n return ;\r\n }\r\n }\r\n }\r\n\r\n return '-NA-';\r\n }\r\n\r\n static StringTypeValueFormatter(params) {\r\n if (params.value != \"-NA-\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static OEMPTITypeFormatter(params) {\r\n var returnValue = '';\r\n\r\n if (params.value != \"-NA-\") {\r\n\r\n returnValue = params.value.toUpperCase().trim() == \"FULLPTI\" ? \"Full\" : params.value.toUpperCase().trim() == \"SHORTPTI\" ? \"Short\" : params.value;\r\n\r\n return {returnValue};\r\n }\r\n else\r\n return '-NA-'; \r\n }\r\n static StringTypeCommodityValueFormatter(params) {\r\n if (params.value != \"-NA-\" && params.value != null) {\r\n if (params.value != \"\" && params.value.length > 0 && params.value != \"\" && params.value.length > 39 ) {\r\n return {params.value.slice(0, 40).concat(\"...\")};}\r\n else{\r\n return {params.value};\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n static StringTypeFormatter(params) {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != \"null\") {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n\r\n }\r\n static AlarmListFormatter(params) {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n if (params.value.toString().endsWith(\",\")) {\r\n return {params.value.slice(0, -1)};\r\n }\r\n return {params.value};\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n\r\n static StringTypeFormatterFor3P(params) {\r\n if (params.value != null && params.value != \"null\" && params.value != undefined && params.value != '' && params.value != '-NA-') {\r\n if (params.value === JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName)\r\n return '-NA-';\r\n else\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static RSSITypeFormatter(params) {\r\n var imageSrc = \"\";\r\n if (params.data != null && params.data != undefined) {//WI-21812:For Unknown RSSI Id image is not showing\r\n if (params.data.RSSI != null && params.data.RSSI != undefined) {\r\n if (params.data.RSSI == 0)\r\n imageSrc = RSSIUNK;\r\n else if (params.data.RSSI <= -111)\r\n imageSrc = RSSI1;\r\n else if (params.data.RSSI >= -110 && params.data.RSSI <= -100)\r\n imageSrc = RSSI2;\r\n else if (params.data.RSSI >= -99 && params.data.RSSI <= -88)\r\n imageSrc = RSSI3;\r\n else if (params.data.RSSI >= -87 && params.data.RSSI <= -76)\r\n imageSrc = RSSI4;\r\n else if (params.data.RSSI >= -75)\r\n imageSrc = RSSI5;\r\n else\r\n imageSrc = RSSIUNK;\r\n }\r\n else\r\n imageSrc = RSSIUNK;//WI-21812:For Unknown RSSI Id image is not showing\r\n }\r\n return ;\r\n\r\n }\r\n\r\n static CommentExistsFormatter(params) {\r\n\r\n if (params.value != null && params.value != undefined && params.value != '-NA-') {\r\n if (params.value == 0) {\r\n return ;\r\n }\r\n else\r\n return \"-NA-\";\r\n }\r\n return \"-NA-\";\r\n }\r\n\r\n static MNCTypeFormatter(params) {\r\n if (params.value != null && params.value != undefined) {\r\n return {params.value};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static TripWiseStatusFormatter(params, TripWiseStatusList) {\r\n var TripWiseStatusDescription = '-NA-';\r\n var TripWiseStatusID = null;\r\n if (params != null && params != undefined && params.data != null && params.data != undefined && params.data.ReeferOEMTypeCd != null && params.data.ReeferOEMTypeCd.toUpperCase().trim() != \"D\") {\r\n TripWiseStatusID = params.data.TripWiseStatusID;\r\n\r\n if (TripWiseStatusID != null) {\r\n if (TripWiseStatusList != null && TripWiseStatusList != undefined && TripWiseStatusList.length > 0) {\r\n var TripWiseStatusId = lodashfilter(TripWiseStatusList, function (item) {\r\n return item.TripWiseStatusID === TripWiseStatusID;\r\n });\r\n if (TripWiseStatusId != null && TripWiseStatusId.length > 0) {\r\n TripWiseStatusDescription = TripWiseStatusId[0].Description;\r\n\r\n if (TripWiseStatusDescription == 'Off') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Expired') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Check') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Passed') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Running') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Unknown') {\r\n return ;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (params != null && params != undefined && params.data != null && params.data != undefined) {\r\n var DimiState = '-NA-';\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n TripWiseStatusDescription = 'Off';\r\n return ;\r\n }\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"ON\") {\r\n if (params.data.DimiResultActuator == \"Passed\" && params.data.DimiResultAlarm == \"Passed\" &&\r\n params.data.DimiResultOOR == \"Passed\" && params.data.DimiResultTerm == \"Passed\") {\r\n TripWiseStatusDescription= \"Passed\";\r\n }\r\n else if ((params.data.DimiResultTerm == \"Failed\") &&\r\n (params.data.DimiResultActuator == \"Passed\" || params.data.DimiResultActuator == \"Unknown\") &&\r\n (params.data.DimiResultAlarm == \"Passed\" || params.data.DimiResultAlarm == \"Unknown\") &&\r\n (params.data.DimiResultOOR == \"Passed\" || params.data.DimiResultOOR == \"Unknown\")) {\r\n TripWiseStatusDescription= \"Expired\";\r\n }\r\n else if ((params.data.DimiResultActuator == \"Unknown\" || params.data.DimiResultAlarm == \"Unknown\"\r\n || params.data.DimiResultOOR == \"Unknown\" || params.data.DimiResultTerm == \"Unknown\") &&\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\")) {\r\n TripWiseStatusDescription= \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\" || params.data.DimiResultOOR == \"Failed\") {\r\n TripWiseStatusDescription= \"Check\";\r\n }\r\n if (TripWiseStatusDescription == \"Check\") {\r\n var ErrorCount = 0;\r\n var text = 'Check – ';\r\n if (params.data.DimiResultActuator == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Actuator,';\r\n }\r\n if (params.data.DimiResultAlarm == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Alarms,';\r\n }\r\n if (params.data.DimiResultOOR == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Out of Range,';\r\n }\r\n if (text.endsWith(\",\")) {\r\n text = text.substring(0, text.length - 1);\r\n }\r\n if (ErrorCount > 1) {\r\n return ;\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\") {\r\n return ;// New icon\r\n }\r\n else if (params.data.DimiResultAlarm == \"Failed\") {\r\n return ;// New icon\r\n }\r\n else if (params.data.DimiResultOOR == \"Failed\") {\r\n return ;// New icon\r\n }\r\n }\r\n else if (TripWiseStatusDescription == 'Expired') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Passed') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Unknown') {\r\n return ;\r\n }\r\n }\r\n }\r\n }\r\n return TripWiseStatusDescription;\r\n }\r\n\r\n static AlarmDescriptionFormatter(params) {\r\n var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.AlarmsList != null && params.data.AlarmsList != undefined && params.data.AlarmsList != '') {\r\n var lstAlarms = params.data.AlarmsList.split(',');\r\n var alarmsList = params.colDef.refData;\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n });\r\n var almHtmldata = element.innerHTML;\r\n if (almHtmldata != null && almHtmldata != \"\") {\r\n return
    \r\n } else {\r\n return \"-NA-\";\r\n }\r\n //return element.innerText;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }\r\n\r\nstatic CCAlarmDescriptionFormatter(params) {\r\n var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CCAlarms != null && params.data.CCAlarms != undefined && params.data.CCAlarms != '') {\r\n var lstAlarms = params.data.CCAlarms.split(',');\r\n var alarmsList = params.colDef.refData;\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n });\r\n var almHtmldata = element.innerHTML;\r\n if (almHtmldata != null && almHtmldata != \"\") {\r\n return
    \r\n } else {\r\n return \"-NA-\";\r\n }\r\n //return element.innerText;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }\r\n\r\n\r\n static AlarmsDescriptionFormatter(params: any, alarmsList: any) {\r\n var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.AlarmsList != null && params.data.AlarmsList != undefined && params.data.AlarmsList != '') {\r\n var lstAlarms = params.data.AlarmsList.split(',');\r\n /* var alarmsList = lstAlarms;*/\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n });\r\n var almHtmldata = element.innerHTML;\r\n if (almHtmldata != null && almHtmldata != \"\") {\r\n return
    \r\n } else {\r\n return \"-NA-\";\r\n }\r\n //return element.innerText;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }\r\n static CCAlertAlarmAliasDescriptionFormatter(params: any, alarmsList: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CCAlarms != null && params.data.CCAlarms != undefined && params.data.CCAlarms != '') {\r\n if (params.data.CCAlarms != \"-NA-\") {\r\n //if (params.data.CCAlarms.toString().endsWith(\",\")) { //Added if condition code for RCNG-839 \r\n var lstalarmcd: any = params.data.CCAlarms.split(',');\r\n var alarmalias: any = \"\";\r\n if(lstalarmcd.length > 0) {\r\n $.each(lstalarmcd, function (index, almCd) {\r\n var alarm = alarmsList.filter(e => e.AlarmCd === almCd);\r\n //if (alarm[0].AlarmAlias != \"\" && alarm[0].AlarmAlias != null) {\r\n if (alarm.length > 0) {//RCNG-2051\r\n alarmalias += alarm[0].AlarmAlias + \",\";\r\n } \r\n });\r\n return {alarmalias.slice(0, -1)};\r\n }\r\n\r\n var alarmcd = params.data.CCAlarms;\r\n var alarm = alarmsList.filter(e => e.AlarmCd === alarmcd);\r\n //if (alarm[0].AlarmAlias != \"\" && alarm[0].AlarmAlias != null) {\r\n if (alarm.length > 0) {//RCNG-2051\r\n return {alarm[0].AlarmAlias};\r\n } \r\n \r\n }\r\n else\r\n return '-NA-';\r\n \r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }\r\n static CCAlertAlarmsDescriptionFormatter(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CCAlarms != null && params.data.CCAlarms != undefined && params.data.CCAlarms != '') {\r\n if (params.data.CCAlarms != \"-NA-\") {\r\n if (params.data.CCAlarms.toString().endsWith(\",\")) { //Added if condition code for RCNG-839\r\n return {params.data.CCAlarms.slice(0, -1)};\r\n }\r\n \r\n return {params.data.CCAlarms};\r\n }\r\n else\r\n return '-NA-';\r\n \r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }\r\n static CCAlarmsDescriptionFormatter(params: any, alarmsList: any) {\r\n var element = document.createElement(\"span\");\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.CCAlarms != null && params.data.CCAlarms != undefined && params.data.CCAlarms != '') {\r\n var lstAlarms = params.data.CCAlarms.split(',');\r\n /* var alarmsList = lstAlarms;*/\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (params.node.data.DeviceType != null && params.node.data.DeviceType != undefined && params.node.data.DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n if (alarmDescription.length == 0) {//added below condition for RCNG-501\r\n alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === item);\r\n }\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n });\r\n var almHtmldata = element.innerHTML;\r\n if (almHtmldata != null && almHtmldata != \"\") {\r\n return
    \r\n } else {\r\n return \"-NA-\";\r\n }\r\n //return element.innerText;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }\r\n\r\n static PreTripFormatter(params) {\r\n if (params.value != null && params.value != undefined) {\r\n if (params.value.toString().trim() != \"-NA-\" && params.value.toString().trim() != \"\") {\r\n //var element = document.createElement(\"span\");\r\n //element.className = \"reefer-alert-PTI\";\r\n //var imageElement = document.createElement(\"img\");\r\n\r\n if (params.value == 'Passed') {\r\n return ;\r\n }\r\n else if (params.value == 'Failed') {\r\n return ;\r\n }\r\n else if (params.value == 'Aborted') {\r\n return ;\r\n }\r\n else if (params.value == 'Running') {\r\n return ;\r\n }\r\n else if (params.value == 'Skipped') {\r\n return ;\r\n }\r\n else if (params.value == 'Unknown') {\r\n return ;\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n\r\n static GPSCoordsFormatter(params) {\r\n if (params.value != null && params.value != '-1000') {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.data.DeviceType != null && params.data.DeviceType != undefined && (params.data.DeviceType.toString().toUpperCase().trim() == \"GT1200\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1020\" || params.data.DeviceType.toString().toUpperCase().trim() == \"GT1030\")) {\r\n if (params.value != null && params.value != '-1000')\r\n return params.value;\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSLatitude != 0 && params.data.GPSLongitude != 0 && (params.data.GPSLockState == null || params.data.GPSLockState == '' || params.data.GPSLockState.toUpperCase() != \"LOCKED\")) {\r\n if (params.value != null && params.value != '-1000') {\r\n //params.value = {params.value};\r\n //params.value =

    {params.value}

    ;\r\n var pCss = {\r\n 'color': '#736F6E'\r\n };\r\n return

    {params.value}

    ;\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else if (params.data.GPSCoords != null && params.data.GPSCoords != undefined && params.data.GPSCoords.toString().trim() == \"\") {\r\n return '-NA-';\r\n }\r\n else\r\n return params.value;\r\n }\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static TripWiseFormatter(params) {\r\n if (params != null && params != undefined && params.data != null && params.data != undefined && params.data.ReeferOemTypeCd != null && params.data.ReeferOemTypeCd != undefined && params.data.ReeferOemTypeCd.toString().toUpperCase().trim() != 'D') {\r\n switch (params.value) {\r\n case 0:\r\n return ;\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n case 4:\r\n return ;\r\n case 5:\r\n return ;\r\n case null:\r\n return ;\r\n }\r\n }\r\n else {\r\n if (params != null && params != undefined && params.data != null && params.data != undefined) {\r\n var DimiState = '-NA-';\r\n var TripWiseStatusDescription = '-NA-';\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n TripWiseStatusDescription = 'Off';\r\n return ;\r\n }\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"ON\") {\r\n if (params.data.DimiResultActuator == \"Passed\" && params.data.DimiResultAlarm == \"Passed\" &&\r\n params.data.DimiResultOOR == \"Passed\" && params.data.DimiResultTerm == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((params.data.DimiResultTerm == \"Failed\") &&\r\n (params.data.DimiResultActuator == \"Passed\" || params.data.DimiResultActuator == \"Unknown\") &&\r\n (params.data.DimiResultAlarm == \"Passed\" || params.data.DimiResultAlarm == \"Unknown\") &&\r\n (params.data.DimiResultOOR == \"Passed\" || params.data.DimiResultOOR == \"Unknown\")) {\r\n TripWiseStatusDescription = \"Expired\";\r\n }\r\n else if ((params.data.DimiResultActuator == \"Unknown\" || params.data.DimiResultAlarm == \"Unknown\"\r\n || params.data.DimiResultOOR == \"Unknown\" || params.data.DimiResultTerm == \"Unknown\") &&\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\" || params.data.DimiResultOOR == \"Failed\") {\r\n TripWiseStatusDescription = \"Check\";\r\n }\r\n if (TripWiseStatusDescription == \"Check\") {\r\n var ErrorCount = 0;\r\n var text = 'Check – ';\r\n if (params.data.DimiResultActuator == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Actuator,';\r\n }\r\n if (params.data.DimiResultAlarm == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Alarms,';\r\n }\r\n if (params.data.DimiResultOOR == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Out of Range,';\r\n }\r\n if (text.endsWith(\",\")) {\r\n text = text.substring(0, text.length - 1);\r\n }\r\n if (ErrorCount > 1) {\r\n return ;\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\") {\r\n return ;// New icon\r\n }\r\n else if (params.data.DimiResultAlarm == \"Failed\") {\r\n return ;// New icon\r\n }\r\n else if (params.data.DimiResultOOR == \"Failed\") {\r\n return ;// New icon\r\n }\r\n }\r\n else if (TripWiseStatusDescription == 'Expired') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Passed') {\r\n return ;\r\n }\r\n else if (TripWiseStatusDescription == 'Unknown') {\r\n return ;\r\n }\r\n }\r\n else \r\n return ;\r\n }\r\n }\r\n return ;\r\n }\r\n\r\n //Grouping formatters starts from here..\r\n static RunStateFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return
    Faulty
    ;\r\n\r\n else if (param == 2)\r\n return
    Running
    ;\r\n\r\n else if (param == 3)\r\n return
    Standby
    ;\r\n\r\n else if (param == 4)\r\n return
    Offline
    ;\r\n else\r\n return '*No Run';\r\n }\r\n }\r\n\r\n static AssetStateFormatterGrouping(param) {\r\n if (param != null && param != undefined && param != '') {\r\n if (param == \"A\") {\r\n return
    Active
    ;\r\n }\r\n else if (param == \"D\") {\r\n return
    Disconnected
    ;\r\n }\r\n else if (param == \"R\") {\r\n return
    Retired
    ;\r\n }\r\n }\r\n return \"*No INV\";\r\n }\r\n\r\n static StatusIndicatorALMFormatterGrouping(param) {\r\n if (param != null && param != undefined && param != '') {\r\n if (param == 1) {\r\n return
    Severe
    ;\r\n }\r\n else if (param == 2) {\r\n return
    Minor
    ;\r\n }\r\n //else if (param == 3) {\r\n // return \"Informational\";\r\n //}\r\n }\r\n return \"*No ALM\";\r\n }\r\n\r\n static PowerStateFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == 1) {\r\n return
    Powered
    ;\r\n }\r\n else if (param == 2) {\r\n return
    On Battery
    ;\r\n }\r\n else if (param == 3) {\r\n return
    Charging
    ;\r\n }\r\n else if (param == 4) {\r\n return
    Critical
    ;\r\n }\r\n else if (param == 5) {\r\n return
    Low
    ;\r\n }\r\n else if (param == 6) {\r\n return
    Normal
    ;\r\n }\r\n else\r\n return \"*No PWR\";\r\n }\r\n }\r\n\r\n static CargoCareFormatterGrouping(param) {\r\n\r\n if (param != null && param != undefined) {\r\n if (param == 1) {\r\n return
    Severe
    ;\r\n }\r\n else if (param == 2) {\r\n return
    Minor
    ;\r\n }\r\n else if (param == 3) {\r\n return
    Informational
    ;\r\n }\r\n else if (param == 4) {\r\n return
    Assigned
    ; //RCNG-241 Renamed Normal to Assigned\r\n }\r\n else if (param == 5) {\r\n return \"*No CC\";\r\n }\r\n }\r\n return \"*No CC\";\r\n }\r\n\r\n static TripStatusFormatterGrouping(param) {\r\n var deviationFlg = '';\r\n if (param != null && param != undefined) {\r\n var valueString = param.toString();\r\n var arrList = valueString.split(':');\r\n if (arrList.length == 2) {\r\n var cLogStatusvalue = arrList[0];\r\n deviationFlg = arrList[1];\r\n switch (cLogStatusvalue.toUpperCase().trim()) {\r\n case 'A':\r\n return
    In Progress
    ;\r\n case 'C':\r\n if (deviationFlg == \"True\")\r\n return
    Completed Deviation
    ;\r\n else\r\n return
    Completed
    ;\r\n\r\n case 'D':\r\n return
    Problemetic
    ;\r\n case 'P':\r\n return
    Pending
    ;\r\n case 'R':\r\n return
    Deleted
    ;\r\n case 'X':\r\n if (deviationFlg == \"True\")\r\n return
    Cancel Deviation
    ;\r\n else\r\n return
    Cancel
    ;\r\n default:\r\n return \"*No Trip\";\r\n\r\n }\r\n }\r\n return \"*No Trip\";\r\n }\r\n return \"*No Trip\";\r\n }\r\n\r\n static RSSIFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == 1)\r\n return
    5 Bars
    ;\r\n else if (param == 2)\r\n return
    4 Bars
    ;\r\n else if (param == 3)\r\n return
    3 Bars
    ;\r\n else if (param == 4)\r\n return
    2 Bars
    ;\r\n else if (param == 5)\r\n return
    1 Bar
    ;\r\n else\r\n return
    Unknown
    ;\r\n }\r\n }\r\n\r\n static CommentExistsGrouping(params) {\r\n if (params != null && params != '-NA-') {\r\n if (params.toString() == \"0\")\r\n return
    yes
    ;\r\n else\r\n return \"*No Comments\";\r\n }\r\n else\r\n return '*No Comments';\r\n }\r\n\r\n static PTResultGrouping(param) {\r\n if (param != null && param != undefined && param != \"null\") {\r\n\r\n if (param == 'Passed') {\r\n return
    Passed
    ;\r\n }\r\n else if (param == 'Failed') {\r\n return
    Failed
    ;\r\n }\r\n else if (param == 'Aborted') {\r\n return
    Aborted
    ;\r\n }\r\n else if (param == 'Running') {\r\n return
    Running
    ;\r\n }\r\n else if (param == 'Skipped') {\r\n return
    Skipped
    ;\r\n }\r\n else if (param == 'Unknown') {\r\n return
    Unknown
    ;\r\n }\r\n\r\n }\r\n return \"No PTResult\";\r\n }\r\n\r\n static TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR) {\r\n if (fieldValue != null && fieldValue != undefined && fieldValue != \"null\") {\r\n switch (fieldValue) {\r\n case 'Off':\r\n return
    Off
    ;\r\n case 'Expired':\r\n return
    Expired
    ;\r\n case 'Check':\r\n //if (params.node.childrenAfterFilter[0].data.ReeferOEMTypeCd!=null &¶ms.node.childrenAfterFilter[0].data.ReeferOEMTypeCd.toUpperCase().trim() != \"D\")\r\n // return
    Check
    ;\r\n if (ReeferOEMTypeCd!=null && ReeferOEMTypeCd.toUpperCase().trim() != \"D\")\r\n return
    Check
    ;\r\n else {\r\n var ErrorCount = 0;\r\n var text = 'Check – ';\r\n if (DimiResultActuator == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Actuator,';\r\n }\r\n if (DimiResultAlarm == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Alarms,';\r\n }\r\n if (DimiResultOOR == \"Failed\") {\r\n ErrorCount = ErrorCount+1;\r\n text = text + 'Out of Range,';\r\n }\r\n if (text.endsWith(\",\")) {\r\n text = text.substring(0, text.length - 1);\r\n }\r\n if (ErrorCount > 1) {\r\n return
    Check
    ;\r\n }\r\n else if (ErrorCount >= 1 && fieldValue == 'Check') {\r\n return
    Check
    ;\r\n }\r\n else if (DimiResultActuator == \"Failed\") {\r\n return
    Check
    ;// New icon\r\n }\r\n else if (DimiResultAlarm == \"Failed\") {\r\n return
    Check
    ;// New icon\r\n }\r\n else if (DimiResultOOR == \"Failed\") {\r\n return
    Check
    ;// New icon\r\n }\r\n }\r\n\r\n case 'Passed':\r\n return
    Passed
    ;\r\n case 'Running':\r\n return
    Running
    ;\r\n case 'Unknown':\r\n return
    Unknown
    ;\r\n }\r\n }\r\n }\r\n\r\n static TripWiseGrouping(fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm, DimiMode) {\r\n if (fieldValue != null && fieldValue != undefined && fieldValue != \"null\" && ReeferOemTypeCd != null && ReeferOemTypeCd.toUpperCase().trim() != \"D\") {\r\n {\r\n switch (fieldValue.toString()) {//Updated for RCNG 5364\r\n case 'Off': case '0':\r\n return
    Off
    ;\r\n case 'Expired': case '1':\r\n return
    Expired
    ;\r\n case 'Check': case '2':\r\n return
    Check
    ;\r\n case 'Passed': case '3':\r\n return
    Passed
    ;\r\n case 'Running': case '4':\r\n return
    Running
    ;\r\n case 'Unknown': case '5':\r\n return
    Unknown
    ;\r\n\r\n }\r\n }\r\n }\r\n else {\r\n var TripWiseStatusDescription = '-NA-';\r\n if (DimiMode != null && DimiMode.toUpperCase().trim() == \"OFF\") {\r\n TripWiseStatusDescription = 'Off';\r\n return
    Off
    ;\r\n }\r\n else if (DimiMode != null && DimiMode.toUpperCase().trim() == \"ON\") {\r\n if (DimiResultActuator == \"Passed\" && DimiResultAlarm == \"Passed\" &&\r\n DimiResultOOR == \"Passed\" && DimiResultTerm == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((DimiResultTerm == \"Failed\") &&\r\n (DimiResultActuator == \"Passed\" || DimiResultActuator == \"Unknown\") &&\r\n (DimiResultAlarm == \"Passed\" || DimiResultAlarm == \"Unknown\") &&\r\n (DimiResultOOR == \"Passed\" || DimiResultOOR == \"Unknown\")) {\r\n TripWiseStatusDescription = \"Expired\";\r\n }\r\n else if ((DimiResultActuator == \"Unknown\" || DimiResultAlarm == \"Unknown\"\r\n || DimiResultOOR == \"Unknown\" || DimiResultTerm == \"Unknown\") &&\r\n (DimiResultActuator != \"Failed\" && DimiResultAlarm != \"Failed\" &&\r\n DimiResultOOR != \"Failed\" && DimiResultTerm != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (DimiResultActuator == \"Failed\" || DimiResultAlarm == \"Failed\" || DimiResultOOR == \"Failed\") {\r\n TripWiseStatusDescription = \"Check\";\r\n }\r\n if (TripWiseStatusDescription == \"Check\") {\r\n var ErrorCount = 0;\r\n var text = 'Check – ';\r\n if (DimiResultActuator == \"Failed\") {\r\n ErrorCount = ErrorCount + 1;\r\n text = text + 'Actuator,';\r\n }\r\n if (DimiResultAlarm == \"Failed\") {\r\n ErrorCount = ErrorCount + 1;\r\n text = text + 'Alarms,';\r\n }\r\n if (DimiResultOOR == \"Failed\") {\r\n ErrorCount = ErrorCount + 1;\r\n text = text + 'Out of Range,';\r\n }\r\n if (text.endsWith(\",\")) {\r\n text = text.substring(0, text.length - 1);\r\n }\r\n if (ErrorCount > 1) {\r\n return
    Check
    ;\r\n }\r\n else if (DimiResultActuator == \"Failed\") {\r\n return
    Check
    ;// New icon\r\n }\r\n else if (DimiResultAlarm == \"Failed\") {\r\n return
    Check
    ;// New icon\r\n }\r\n else if (DimiResultOOR == \"Failed\") {\r\n return
    Check
    ;// New icon\r\n }\r\n }\r\n else if (TripWiseStatusDescription == 'Expired') {\r\n return
    Expired
    ;\r\n }\r\n else if (TripWiseStatusDescription == 'Passed') {\r\n return
    Passed
    ;\r\n }\r\n else if (TripWiseStatusDescription == 'Unknown') {\r\n return
    Unknown
    ;\r\n }\r\n }\r\n\r\n else if (fieldValue != null && fieldValue != undefined && fieldValue != \"null\") {\r\n switch (fieldValue.toString()) { //Updated for RCNG 5364\r\n case 'Off': case '0':\r\n return
    Off
    ;\r\n case 'Expired': case '1':\r\n return
    Expired
    ;\r\n case 'Check': case '2':\r\n return
    Check
    ;\r\n case 'Passed': case '3':\r\n return
    Passed
    ;\r\n case 'Running': case '4':\r\n return
    Running
    ;\r\n case 'Unknown': case '5':\r\n return
    Unknown
    ;\r\n\r\n }\r\n }\r\n \r\n return
    ;\r\n }\r\n }\r\n static statusIndicatorforALM(params) {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n switch (params.value.trim()) {\r\n case '1':\r\n return ;\r\n case '2':\r\n return ;\r\n }\r\n }\r\n return ;\r\n }\r\n static CommandValidator(params) {\r\n if (params.value != null && params.value != undefined) {\r\n switch (params.value.toString().trim()) {\r\n case 'E': case 'U':\r\n return ;\r\n case 'W':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n }\r\n return ;\r\n }\r\n static removeIndicator(params: any) {\r\n return {\r\n params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n }}>;\r\n }\r\n static commandLogStatusFormatter(params) {\r\n if (params != null && params != undefined) {\r\n if (params.data.Status != null && params.data.Status != undefined && params.data.Status != '') {\r\n var imageElement = document.createElement(\"img\");\r\n\r\n switch (params.data.Status.toString().toUpperCase().trim()) {\r\n\r\n case \"UNKNOWN\":\r\n return ;\r\n case \"ERROR\":\r\n return ;\r\n case \"PENDING\":\r\n return ;\r\n case \"ISSUED\":\r\n return ;\r\n case \"EXPIRED\":\r\n return ;\r\n case \"CANCELLED\":\r\n return ;\r\n case \"SUCCESS\":\r\n return ;\r\n case \"COMMANDACCEPTEDBYRCD\":\r\n return ;\r\n case \"REJECTED\":\r\n return ;\r\n case \"DISCARDED\":\r\n return ;\r\n case \"RETRY\":\r\n return ;\r\n case \"COMMANDACCEPTEDBYBUSYRCD\":\r\n return ;\r\n case \"AWAITINGPREREQUISITES\":\r\n return ;\r\n case \"CANCELLATIONREQUEST\":\r\n return ;\r\n case \"AWAITINGSYNC\":\r\n return ;\r\n case \"SENTTOVC\":\r\n return ;\r\n case \"SYNCERROR\":\r\n return ;\r\n case \"SYNCCANCELLED\":\r\n return ;\r\n case \"VALIDATIONPENDING\":\r\n return ;\r\n case \"UNDELIVERABLE\":\r\n return ;\r\n default:\r\n break;\r\n }\r\n }\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n\r\n static CommandTypeFormatter(params) {\r\n if (params.value != null && params.value != undefined && params.value != '') {\r\n if (params.value) {\r\n return ;\r\n }\r\n else\r\n return ;\r\n }\r\n return ;\r\n }\r\n\r\n static AlarmDescriptionGroupingFormatter(param, DeviceType, alarmsList) {\r\n var element = document.createElement(\"span\");\r\n if (param != null && param != undefined) {\r\n if (param != null && param != undefined && param != '') {\r\n var lstAlarms = param.split(',');\r\n $.each(lstAlarms, function (index, item) {\r\n if (item != \"\" && item != null) {\r\n if (parseInt(index.toString()) > 0) {\r\n var spanElement = document.createElement(\"span\");\r\n spanElement.innerText = \", \";\r\n element.appendChild(spanElement);\r\n }\r\n\r\n if (alarmsList != null && alarmsList != undefined && alarmsList.length > 0) {\r\n if (DeviceType != null && DeviceType != undefined && DeviceType.toString().trim() == \"ST9100\") {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item && e.AlarmSeriesTypeCD.toString().toUpperCase().trim() === \"K\");\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n else {\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmAlias === item);\r\n var anchorElement = document.createElement(\"a\");\r\n anchorElement.title = alarmDescription.length > 0 ? alarmDescription[0].Description.toString() : \"\";\r\n anchorElement.text = item;\r\n element.appendChild(anchorElement);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return element.innerText;\r\n }\r\n\r\n else return \"-NA-\";\r\n }\r\n }\r\n\r\n /* Start RCNG 243*/\r\n static TemperatureUnitFormatter(params) {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != null && params.value != undefined) { \r\n var tempUnitDescription;\r\n if (params.value == \"F\")\r\n tempUnitDescription = \"Fahrenheit\";\r\n else if (params.value == \"C\")\r\n tempUnitDescription = \"Celsius\";\r\n else\r\n tempUnitDescription = \"NOnRunning\";\r\n return {tempUnitDescription};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static CargoCareProfileFormatter(params) {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.value != null && params.value != undefined && params.value != '' && params.value != null && params.value != undefined) {\r\n var cargoCareProfile;\r\n /* if (params.value == \"DEFAULT\") //Commented below code for RCNG-792\r\n cargoCareProfile = \"DEFAULT\";\r\n else\r\n cargoCareProfile = '-NA-';*/\r\n cargoCareProfile = params.value; // Added this code for RCNG-792\r\n return {cargoCareProfile};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n\r\n static isHighValueCargoFormatter(params) {\r\n if (params.data != null && params.data != undefined && params.data != '') {\r\n if (params.value != null && params.value != undefined && params.value != null && params.value != undefined) {\r\n var highValueCargo;\r\n if (params.value.toString().toUpperCase().trim() == \"0\" || params.value.toString().toUpperCase().trim() == \"FALSE\") {\r\n highValueCargo = \"No\";\r\n }\r\n else if (params.value.toString().toUpperCase().trim() == \"1\" || params.value.toString().toUpperCase().trim() == \"TRUE\") {\r\n highValueCargo = \"Yes\";\r\n }\r\n else\r\n highValueCargo = '-NA-';\r\n return {highValueCargo};\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n else\r\n return '-NA-';\r\n }\r\n /* End RCNG 243*/\r\n static BatteryPctFormatter(params) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.DeviceType != null && params.data.DeviceType != \"\" && params.data.DeviceType != undefined) {\r\n if (params.data.DeviceType.trim() == \"CT3600\" && params.data.ReeferBatteryPct != null && params.data.ReeferBatteryPct != undefined && params.data.ReeferBatteryPct >= 0) {\r\n var battPct = (Math.round(params.data.ReeferBatteryPct / 10.0)) * 10;\r\n\r\n switch (battPct) {\r\n case 0:\r\n return ;\r\n case 10:\r\n return ;\r\n case 20:\r\n return ;\r\n case 30:\r\n return ;\r\n case 40:\r\n return ;\r\n case 50:\r\n return ;\r\n case 60:\r\n return ;\r\n case 70:\r\n return ;\r\n case 80:\r\n return ;\r\n case 90:\r\n return ;\r\n case 100:\r\n return ;\r\n }\r\n }\r\n }\r\n }\r\n return '-NA-';\r\n }\r\n static ReeferDoorBattPctFormatterGrouping(param) {\r\n if (param != null && param != undefined) {\r\n if (param == \"-1\") return '*No batt';\r\n else {\r\n switch (param.toString()) {\r\n case \"0\":\r\n return
    {param.toString()}
    ;\r\n case \"10\":\r\n return
    {param.toString()}
    ;\r\n case \"20\":\r\n return
    {param.toString()}
    ;\r\n case \"30\":\r\n return
    {param.toString()}
    ;\r\n case \"40\":\r\n return
    {param.toString()}
    ;\r\n case \"50\":\r\n return
    {param.toString()}
    ;\r\n case \"60\":\r\n return
    {param.toString()}
    ;\r\n case \"70\":\r\n return
    {param.toString()}
    ;\r\n case \"80\":\r\n return
    {param.toString()}
    ;\r\n case \"90\":\r\n return
    {param.toString()}
    ;\r\n case \"100\":\r\n return
    {param.toString()}
    ;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","/// \r\nimport * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport 'ag-grid-enterprise';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport DateFormat from 'dateformat';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { GridReeferHistoryToolBar } from '../sharedcomponents/GridReeferHistoryToolBar';\r\nimport CCAlmTooltip from '../sharedcomponents/GridToolTips/CCAlmTooltip';\r\nimport { ReeferTemperatureGraph } from './ReeferTemperatureGraph';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\n//import \"../../../node_modules/bootstrap/dist/css/bootstrap.css\";\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { ReeferStatusGrid } from './ReeferStatusGrid';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { ReeferMap } from '../childcomponents/ReeferMap';\r\nimport lodashfilter from 'lodash/filter';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface ReeferHistoryGridState {\r\n loading: boolean;\r\n rowData: ReeferUnitHistoryUI[];\r\n Filters: ReeferHistoryFilter;\r\n columnDefs: any[];\r\n overlayLoadingTemplate: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n reeferFormatter: server.ReeferFormatter;\r\n buttonState: boolean;\r\n PreferenceDTTM: any;\r\n //buttonSearchHtml: any;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n selectedDataItems: any[];\r\n frameworkComponents: any;\r\n}\r\nvar self;\r\nvar functionId;\r\nvar columnDefs: any[];\r\nvar columnDefs2: any[];\r\nvar isMapEnable: boolean;\r\nvar reeferAssetSensors: any[];\r\n\r\nexport class ReeferHistoryGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filterSet = this.initHistoryFilters();//new ReeferHistoryFilter();\r\n functionId = 42; // functionId for ReeferHistory Grid\r\n \r\n var overlayTemplate = 'Loading...';\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n this.state = {\r\n loading: true,\r\n rowData: [],\r\n columnDefs: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n Filters: filterSet,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n reeferFormatter: this.props.propsReeferFormatterData,\r\n buttonState: false,\r\n PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n selectedDataItems: [],\r\n frameworkComponents: { cCAlmTooltip: CCAlmTooltip},\r\n };\r\n\r\n //var columnDefs = this.createColumnDefs();\r\n self = this;\r\n //var filterParams = JSON.stringify(this.state.Filters);\r\n //if (this.state.reeferFormatter === null) {\r\n \r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // reeferFormatter: data\r\n // //}, () => {\r\n // // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // // fetch(request)\r\n // // .then(RCUtils.handleError)\r\n // // .then(response => response.json() as Promise)\r\n // // .then(data => {\r\n // // this.setState({\r\n // // rowData: data,\r\n // // loading: false\r\n // // });\r\n // // });\r\n // });\r\n // });\r\n //}\r\n //else {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // rowData: data,\r\n // loading: false\r\n // });\r\n // });\r\n //}\r\n }\r\n\r\n initHistoryFilters() {\r\n var reeferHistoryFilter = new ReeferHistoryFilter();\r\n reeferHistoryFilter.Units = '';\r\n reeferHistoryFilter.FromDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n reeferHistoryFilter.ToDate = DateFormat(new Date(), 'mm/dd/yyyy HH:MM');\r\n\r\n return reeferHistoryFilter;\r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns() {\r\n columnDefs = this.createColumnDefs();\r\n var newColumns = columnDefs;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n\r\n if (this.props.customerDeviceTypeSensor != null && this.props.customerDeviceTypeSensor != undefined) \r\n reeferAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'R');\r\n\r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n //var fieldName = val.FieldValue;\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: columnDefs });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n //var columnDefs = this.createColumnDefs();\r\n if (this.state.reeferFormatter === null) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n //}, () => {\r\n // var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n // fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // this.setState({\r\n // rowData: data,\r\n // loading: false\r\n // });\r\n // });\r\n });\r\n });\r\n }\r\n columnDefs2 = this.createColumnDefs();\r\n //this.setState({ columnDefs: columnDefs });\r\n setTimeout(() => {\r\n this.renderCustomerDeviceTypeSensorColumns();\r\n }, 1000);\r\n \r\n \r\n \r\n \r\n\r\n this.renderDateFields();\r\n self.enableDisableSearchButton(false);\r\n }\r\n\r\n onGridReady(params: any) {\r\n // params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 5);\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferHistoryGrid\");\r\n }, 3000); \r\n //GridPreferenceControl.HistoryGridPreferenceColumns(functionId, params.api, \"ReeferHistoryGrid\");\r\n }\r\n \r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 5);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"ReeferHistoryGrid\");\r\n }, 3000); \r\n }\r\n\r\n //WI 26721\r\n static GetReeferHistoryGridPrefColumns(gridPreferencesData: any) {\r\n //var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 5);\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"ReeferHistoryGrid\");\r\n }\r\n\r\n static refreshHistoryGrid(isFromCCAssignOrUnassign: boolean) { //RCNG-1172\r\n self.refreshGrid(isFromCCAssignOrUnassign);\r\n }\r\n\r\n refreshGrid = (isFromCCAssignOrUnassign:boolean) => {\r\n $('#globalLoader').show();\r\n var filterParams = JSON.stringify(this.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n isMapEnable = self.props.mapEnabled;\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindTracePushpins(data, 'trace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n this.updateGraphData(data); \r\n this.setState({\r\n rowData: data\r\n }, () => { if(!isFromCCAssignOrUnassign) $('#globalLoader').hide(); });\r\n });\r\n };\r\n\r\n updateGraphData(data) {\r\n ReeferTemperatureGraph.BindTemperatureGraphData(self.state.Filters, data);\r\n }\r\n\r\n static ApplyReeferHistorySearch(params: any, isFromMap: boolean, isHistoryEnabled: boolean) {\r\n $('#globalLoader').show();\r\n if (self != undefined && isHistoryEnabled) {\r\n isMapEnable = self.props.mapEnabled;\r\n if(self.state.gridApiParams!=null && self.state.gridApiParams!=undefined && self.state.gridApiParams.length > 0) //RCNG-207\r\n {\r\n self.state.gridApiParams.showLoadingOverlay();\r\n }\r\n self.setState({ loading: true });\r\n self.enableDisableSearchButton(true); \r\n if (params.EventDTTM != null && params.EventDTTM != \"\") {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currenttoDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var toDTTM = Formatters.DateTimeFormatter(params.EventDTTM);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n else {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var toDTTM = Formatters.DateTimeFormatter(currentUtcDttm);\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n self.state.Filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n self.state.Filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n }\r\n\r\n self.state.Filters.Units = params.UnitMasterID;\r\n\r\n var filterParams = JSON.stringify(self.state.Filters); \r\n if (self.state.reeferFormatter === null) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.setState({\r\n reeferFormatter: data\r\n }, () => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.state.gridApiParams.hideOverlay();\r\n self.setState({\r\n rowData: data,\r\n loading: false\r\n });\r\n\r\n self.updateGraphData(data);\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferStatusGrid.validateReeferStatusHistoryMismatch(params.EventDTTM, data[0].EventDTTM, params.ModifiedDTTM, data[0].ModifiedDTTM);//RCNG-1045\r\n ReeferCallout.BindTracePushpins(data, 'trace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.props.reeferIdForHeader(params.ReeferID);\r\n if (isFromMap)\r\n ReeferStatusGrid.SelectCurrentNode(params.ReeferID);\r\n });\r\n });\r\n });\r\n }\r\n else {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.state.gridApiParams.hideOverlay();\r\n self.setState({\r\n rowData: data,\r\n loading: false\r\n });\r\n\r\n self.updateGraphData(data);\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferStatusGrid.validateReeferStatusHistoryMismatch(params.EventDTTM, data[0].EventDTTM, params.ModifiedDTTM, data[0].ModifiedDTTM); //RCNG-1045\r\n ReeferCallout.BindTracePushpins(data, 'trace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]); \r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n\r\n self.props.reeferIdForHeader(params.ReeferID);\r\n if (isFromMap)\r\n ReeferStatusGrid.SelectCurrentNode(params.ReeferID);\r\n });\r\n }\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n }\r\n }\r\n\r\n static ClearHistoryGridData() {\r\n if (self != undefined) {\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n self.enableDisableSearchButton(false);\r\n ReeferTemperatureGraph.ClearGraphData();\r\n }\r\n }\r\n\r\n static refreshDataGrid() {\r\n self.setState({\r\n rowData: self.state.rowData\r\n });\r\n };\r\n\r\n enableDisableSearchButton(isEnable: any) {\r\n if (isEnable) {\r\n this.setState({ buttonState: true });\r\n }\r\n else {\r\n this.setState({ buttonState: false });\r\n }\r\n } \r\n toolTipValueGetter = (params) => ({ value: params.value });\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n } \r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n\r\n copyRowsToClipBoard() { \r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() { \r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n\r\n getReeferHistoryContextMenuItems = params => {\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n // coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var parentEventID = selectedrowNode.data.ParentEventID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.ParentEventID === parentEventID)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.ParentEventID == selectedrowNode.data.ParentEventID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators History',\r\n children: [\r\n {\r\n headerName: \"CC\", field: \"CCSeverityLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return ReeferFormatters.CargoCareFormatterForFilter(params); } }, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter, tooltipComponent: 'cCAlmTooltip',\r\n tooltipValueGetter: this.toolTipValueGetter, cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList }\r\n },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return ReeferFormatters.statusIndicatorWithDescriptionForALMForFilter(params); } }, valueGetter: (params) => { return ReeferFormatters.statusALMSorting(params); }, cellRenderer: (params) => { return ReeferCellRenderer.StatusIndicatorWithDescriptionForAlarms(params, self.state.reeferFormatter.AlarmMasterList) } },\r\n { headerName: \"RUN\", field: \"RunState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return ReeferFormatters.runStateFormatterForFilter(params); } }, valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 65, filterParams: { valueGetter: params => { return Formatters.pwrStateFormatterForFilter(params); } }, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: ReeferCellRenderer.PwrStateFormatter },\r\n { headerName: \"BATT\", field: \"ReeferBatteryPct\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.reeferBatteryPctFormatterFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return Formatters.reeferBatteryPctSorting(params); }, cellRenderer: ReeferCellRenderer.BatteryPctFormatter },\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter },\r\n { headerName: \"VVC Dep\", field: \"DepartingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DepartingVVCstringTypeValueFormatter(params); }, width: 100 },\r\n { headerName: \"VVC Arr\", field: \"ArrivingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.ArrivingVVCstringTypeValueFormatter(params); }, width: 100 },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltipField: \"TripNameAndStatus\", valueGetter: (params) => { return ReeferFormatters.TripSorting(params); }, cellRenderer: ReeferCellRenderer.TripstatusIndicator, width: 70 },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: ReeferCellRenderer.AssetStateFormatter }\r\n ]\r\n },\r\n {\r\n headerName: 'Identification History',\r\n children: [\r\n {\r\n headerName: \"OEM\", field: \"ReeferOEMTypeCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.oemTypeFormatterForFilter(params); } }, valueGetter: params => { return ReeferFormatters.OEMTypeValueFormatterFieldName(params); }, width: 70\r\n },\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ReeferID\"); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140\r\n },\r\n {\r\n headerName: \"Model\", field: \"OEMModel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"OEMModel\"); },\r\n cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130\r\n },\r\n ]\r\n },\r\n {\r\n headerName: \"Booking History\",\r\n children: [\r\n { headerName: \"Booking #\", field: \"BookingNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BookingNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"BK temp \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"TemperatureUnit\"); }, cellRenderer: ReeferFormatters.TemperatureFormatterForBooking, field: \"TemperatureUnit\", width: 130 },\r\n { headerName: \"CC profile\", field: \"CCProfileCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CCProfileCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"CC alerts\", field: \"CCAlarms\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.CCAlarmAliasDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.CCAlertAlarmAliasDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList) }, tooltipComponent: 'cCAlmTooltip', tooltipValueGetter: this.toolTipValueGetter, cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList }, width: 150 },\r\n { headerName: \"BK VV\", field: \"BKVV\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.BKVVstringTypeValueFormatter(params); }, width: 100 },\r\n { headerName: \"BK POR\", field: \"BKPOR\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOR\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"BK POL\", field: \"BKPOL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"BK POD\", field: \"BKPOD\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOD\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"BK DEL\", field: \"BKDEL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKDEL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"BK Customer\", field: \"BKCustomer\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKCustomer\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"Trip Start\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripStartForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripStart\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripStart\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Trip End \", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripEndForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripEnd\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripEnd\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ]\r\n },\r\n {\r\n headerName: 'Event and Location History',\r\n children: [\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 150, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventDescription\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170 },\r\n { headerName: \"Event notes\", field: \"EventNotes\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventNotes\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n {\r\n headerName: \"Door\", field: \"DoorOpen\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, getQuickFilterText: ReeferFormatters.doorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.DoorFormatterSorting(params); }, cellRenderer: ReeferFormatters.doorFormatter, width: 140\r\n },\r\n { headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DoorEventDtm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DoorEventDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170 },\r\n { headerName: \"Device fence\", field: \"GeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"GeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Server fence\", field: \"ServerGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n { headerName: \"Device fence ID\", field: \"Geofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Geofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"Server fence ID\", field: \"ServerGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: ReeferCellRenderer.GPSCoordsFormatter, width: 150 },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.reeferSecondsToTimeConverterFilter(params); }, width: 150 },\r\n { headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Zip\", field: \"Zip\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Zip\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 100 },\r\n { headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, field: \"ModifiedDTTM\", filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterModifiedDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"ModifiedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Datalog Events History',\r\n children: [\r\n { headerName: \"DL event\", field: \"DLEventMasterID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 150, valueGetter: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter },\r\n { headerName: \"DL event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DLEventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDLEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DLEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170 },\r\n { headerName: \"Data 1\", field: \"DLParam1\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam1\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 2\", field: \"DLParam2\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam2\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 3\", field: \"DLParam3\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam3\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 4\", field: \"DLParam4\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam4\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110 },\r\n { headerName: \"Data 5\", field: \"DLParam5\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam5\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110 }\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Status History',\r\n children: [\r\n { headerName: \"Alarm\", field: \"AlarmsList\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.AlarmDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.AlarmsDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList) }, width: 150 },\r\n { headerName: \"Opr mode\", field: \"RunningMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.OperatingModeFormatter(params); }, width: 150 },\r\n { headerName: \"Reefer data\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"UnitEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"T set \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SetPoint\", width: 90 },\r\n { headerName: \"T sup 1 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp1\", width: 90 },\r\n { headerName: \"T sup 2 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp2\", width: 90 },\r\n { headerName: \"T rtn 1 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp1\", width: 90 },\r\n { headerName: \"T rtn 2 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp2\", width: 90 },\r\n { headerName: \"T amb \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"AmbientTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"AmbientTemp\", width: 90 },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HumiditySetpoint\"); }, cellRenderer: ReeferFormatters.HumiditySetpointFormatter, width: 90 },\r\n { headerName: \"RH read\", field: \"Humidity\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.HumiditySettingFormatter(params); }, width: 90 },\r\n { headerName: \"CO2 set\", field: \"CO2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"CO2 read\", field: \"CO2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"O2 set\", field: \"O2Setpoint\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"O2 read\", field: \"O2Reading\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"T evap in \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorInletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorInletSensor\", width: 110 },\r\n { headerName: \"T evap out \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorOutletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorOutletSensor\", width: 110 },\r\n { headerName: \"P suc\", field: \"CompositeSuctionPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompositeSuctionPressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"T suc \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorSuctionTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorSuctionTemp\", width: 90 },\r\n { headerName: \"P dis\", field: \"DischargePressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"DischargePressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"T dis \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp\", width: 90 },\r\n { headerName: \"T dis 2 \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp2\", width: 90 },\r\n { headerName: \"T econ in \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerInTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerInTemp\", width: 90, columnGroupShow: 'open' },\r\n { headerName: \"T econ out \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerOutTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerOutTemp\", width: 90, columnGroupShow: 'open' },\r\n { headerName: \"P cond\", field: \"CondenserPressure\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataPCondFormatter(params); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"T cond wall \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CondenserTemperature\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CondenserTemperature\", width: 110 },\r\n { headerName: \"M cond\", field: \"CondenserFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CondenserFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Evap fan set\", field: \"EvaporatorFanSpeedControl\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EvaporatorFanSpeedControl\"); }, columnGroupShow: 'open', cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"LS evap\", field: \"LowSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LowSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"HS evap\", field: \"HighSpeedEvaporatorFanOutPut\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HighSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Air pump hr\", field: \"AirPumpRunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.AirPumpRunHoursSorting(params); }, cellRenderer: ReeferFormatters.AirPumpRunHoursFormatter, width: 120, columnGroupShow: 'open' },\r\n { headerName: \"Heat on\", field: \"HeaterOnTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HeaterOnTime\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Open exp\", field: \"EvaporatorExpansionValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenExpFormatter(params); }, width: 90 },\r\n { headerName: \"Open suc\", field: \"SuctionModulationValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenSucFormatter(params); }, width: 90 },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HotGasValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Open econ\", field: \"EconomizerValveOpening\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"EconomizerValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Comp freq\", field: \"CompressorFrequency\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Comp curr\", field: \"CompressorCurrent\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorCurrent\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"Comp hr\", field: \"CompressorRunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CompressorRunHoursSorting(params); }, cellRenderer: ReeferFormatters.CompressorRunHoursFormatter, width: 120 },\r\n { headerName: \"CT state\", field: \"ColdTreatmentState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ColdTreatmentState\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"CT dur (d)\", field: \"CTDuration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTDurationSorting(params); }, cellRenderer: ReeferFormatters.CTDurationFormatter, width: 90 }, // RCNG-1819\r\n { headerName: \"CT max \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTTempLimit\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTTempLimit\", width: 100 },//RCNG-1819\r\n { headerName: \"CT final \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTPostSetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTPostSetPoint\", width: 100 },//RCNG-1819\r\n { headerName: \"CT rem (hr)\", field: \"CTRemainingTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTRemainingTimeSorting(params); }, cellRenderer: ReeferFormatters.CTRemainingTimeFormatter, width: 120 }, // RCNG-1819\r\n { headerName: \"CT Time\", cellClass: 'myExcelStyle', enableRowGroup: true, sortable: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCTTimeForFilter(params); } }, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CTTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CTTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 120},\r\n { headerName: \"USDA 1 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA1Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA1Temp\", width: 90 },\r\n { headerName: \"USDA 2 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA2Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA2Temp\", width: 90 },\r\n { headerName: \"USDA 3 \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA3Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA3Temp\", width: 90 },\r\n { headerName: \"USDA4 cargo \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"Cargo4Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"Cargo4Temp\", width: 130 },\r\n { headerName: \"Vent pos\", field: \"VentPositionSensorCMH\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VentPositionSensorCMH\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"CA mode\", field: \"ControlledAtmosphereMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ControlledAtmosphereMode(params); }, width: 150 },\r\n { headerName: \"Bulb mode\", field: \"BulbMode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BulbMode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"CA hr\", field: \"CARunHours\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CARunHoursSorting(params); }, cellRenderer: ReeferFormatters.CARunHoursFormatter, width: 120, columnGroupShow: 'open' },\r\n { headerName: \"CA SW ver\", field: \"CASoftwareRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CASWVerSorting(params); }, cellRenderer: ReeferFormatters.CASWVerFormatter, width: 120, columnGroupShow: 'open' },\r\n { headerName: \"3 ph curr\", field: \"ThreePhaseCurrent\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.ThreePhaseCurrentSortingFieldName(params, \"ThreePhaseCurrent\"); }, cellRenderer: ReeferFormatters.Current3PhaseFormatter, width: 135 },\r\n { headerName: \"Tot curr\", field: \"TotalCurrentDraw\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"TotalCurrentDraw\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 100 },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage1\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage2\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", enableRowGroup: true, cellClass: 'TwoDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage3\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatterTwoDecimal, width: 90 },\r\n {\r\n headerName: \"EverFRESH\", field: \"EverFRESH\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, getQuickFilterText: ReeferFormatters.everFreshQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.everFreshFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.everFreshFormatterSorting(params); }, cellRenderer: ReeferFormatters.everFreshFormatter, width: 120\r\n },\r\n { headerName: \"VFD\", field: \"VFD\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VFD\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90 },\r\n { headerName: \"OEM PTI state\", field: \"TripWiseStatusDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TripWiseStatusSorting(params, self.state.reeferFormatter.TripWiseStatusList); }, cellRenderer: (params) => { return ReeferCellRenderer.TripWiseStatusFormatter(params, self.state.reeferFormatter.TripWiseStatusList); }, width: 90 },\r\n { headerName: \"OEM PTI exp (d)\", field: \"TripWiseExpiration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.TripWiseExpirationSorting(params); }, cellRenderer: ReeferFormatters.TripWiseExpirationFormatter, width: 90 }, // RCNG-169\r\n { headerName: \"OEM PTI type\", field: \"DimiStartAfter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DimiStartAfter\"); }, cellRenderer: ReeferCellRenderer.OEMPTITypeFormatter },\r\n { headerName: \"OEM PTI time left (hr)\", field: \"DimiRemainTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiRemainTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130 },\r\n { headerName: \"PTI state\", field: \"PTIState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PTIState\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"PTI result\", field: \"PTResult\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltip: Formatters.toolTipFormatter, valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); }, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 130 },\r\n { headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PTIType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120 },\r\n { headerName: \"PTI time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, field: \"PTRDateTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"PTRDateTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Freq\", field: \"LineFrequency\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.LineFrequencySorting(params); }, width: 130 },\r\n { headerName: \"Cont s/n\", field: \"ControllerSerialNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerSerialNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Cont time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DataLoggerDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 120 },\r\n { headerName: \"Cont SW version\", field: \"SoftwareRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SoftwareRevision\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120 },\r\n { headerName: \"Cont set\", field: \"ControllerTypeSetting\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerTypeSetting\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 90 },\r\n\r\n //{ headerName: \"RFR Comms\", field: \"RCDRfrComErr\", cellRenderer: Formatters.reeferCommsFormatter, width: 130 },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FreshAirType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120 },\r\n { headerName: \"Defrost int\", field: \"DefrostInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DefrostInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, columnGroupShow: 'open' },\r\n { headerName: \"Tot pwr kWh\", field: \"PowerMeter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.PowerMeterSorting(params); }, cellRenderer: ReeferFormatters.PowerMeterFormatter, width: 130 },\r\n ]\r\n },\r\n {\r\n headerName: 'Device Status History',\r\n children: [\r\n\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"ReeferACPowerLevel\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 120 },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.rcdFirmwareFormatter(params); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDBootloaderVersion\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDMeshFirmwareVersion\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"Device temp \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"DeviceTemp\", width: 130 },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BatteryVoltage\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.BattVoltageSortingFieldName(params, \"BatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.BatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130\r\n },\r\n {\r\n headerName: \"Door bat (V)\", field: \"DoorSensorBatteryVoltage\", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.DoorBattVoltageSortingFieldName(params, \"DoorSensorBatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.DoorBatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130\r\n },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"Geofence revision\", field: \"RevisionNum\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RevisionNum\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140 },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150 },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.MNCSorting(params); }, cellRenderer: ReeferCellRenderer.MNCTypeFormatter, width: 70 },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 70 },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130 },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 80 },\r\n { headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, valueGetter: (params) => { return Formatters.RSSISorting(params); }, cellRenderer: ReeferCellRenderer.RSSITypeFormatter, width: 80 },\r\n\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: Formatters.stringTypeFormatter, width: 150 },\r\n\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceFormatter, width: 120 }, \r\n\r\n ]\r\n //},\r\n //{\r\n // headerName: 'Device Sensor',\r\n // children: [\r\n // { headerName: \"Temp Sup. 1 \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorSupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorSupplyTemp1\", width: 120 },\r\n // { headerName: \"Temp Rtn. 1 \", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorReturnTemp1\", width: 120 }\r\n // ]\r\n },\r\n ];\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onGridSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedReeferData = [];\r\n isMapEnable = self.props.mapEnabled; \r\n var selectedRows = params.api.getSelectedRows(); \r\n\r\n if (selectedRows != null && selectedRows != undefined) {\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var isGraphEnable = self.props.graphEnabled; // WI 26553\r\n if (isGraphEnable)\r\n ReeferTemperatureGraph.HighLightGraphData(selectedRows);\r\n if (isMapEnable) {\r\n ReeferMap.UpdateIsLocationEstimated(false);\r\n self.BindMapPushPin(selectedRows);\r\n }\r\n\r\n self.setState({\r\n selectedDataItems: selectedRows\r\n });\r\n } \r\n\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n popUpHtml: '',\r\n modelTitle: ''\r\n });\r\n \r\n }\r\n\r\n BindMapPushPin(selectedRows: any) { \r\n var selectedRowsWithCoords = lodashfilter(selectedRows, function (item) {\r\n return item.GPSCoords != null && item.GPSCoords != undefined && item.GPSCoords.toString() != \"\";\r\n });\r\n //26535 - All occurences of DisplaySelectedPushpin below replaced with DisplaySelectedPushpinByPassingFormatter\r\n if (selectedRowsWithCoords != null && selectedRowsWithCoords.length > 0)\r\n ReeferCallout.DisplaySelectedPushpinByPassingFormatter(selectedRowsWithCoords[0], self.state.reeferFormatter);\r\n else {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData.length > 0) {\r\n var selectedRowIndex = self.state.rowData.findIndex(row => row.ParentEventID === selectedRows[0].ParentEventID);\r\n if (selectedRowIndex != -1) {\r\n if (selectedRowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplaySelectedPushpinByPassingFormatter(selectedRows[0], self.state.reeferFormatter);\r\n }\r\n else {\r\n for (var rowIndex = selectedRowIndex + 1; rowIndex < self.state.rowData.length; rowIndex++) {\r\n var rowCurrentData = self.state.rowData[rowIndex];\r\n if (rowCurrentData.GPSCoords != null && rowCurrentData.GPSCoords != undefined && rowCurrentData.GPSCoords.toString() != \"\") {\r\n ReeferMap.UpdateIsLocationEstimated(true);\r\n selectedRows[0].GPSLatitude = rowCurrentData.GPSLatitude;\r\n selectedRows[0].GPSLongitude = rowCurrentData.GPSLongitude;\r\n ReeferCallout.DisplaySelectedPushpinByPassingFormatter(selectedRows[0], self.state.reeferFormatter);\r\n break;\r\n }\r\n else if (rowIndex == self.state.rowData.length - 1) {\r\n ReeferCallout.DisplaySelectedPushpinByPassingFormatter(selectedRows[0], self.state.reeferFormatter);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onPaginationPageLoaded(params: any) {\r\n var currentpage = params.api.paginationGetCurrentPage();\r\n var pagesize = params.api.paginationGetPageSize();\r\n var rowindex = pagesize * currentpage - 1;\r\n\r\n var rowNode = params.api.getRowNode(rowindex + 1);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null)\r\n rowNode.setSelected(true);\r\n }\r\n\r\n navigateToNextCell(params: any) {\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachNode((node) => {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always on of the 4 keys above\";\r\n }\r\n }\r\n\r\n ValidateHistoryDates(filters: any) {\r\n var currentUtcDttm = moment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var currentDttm = Formatters.DateTimeFormatter(currentUtcDttm);\r\n this.setState({ PreferenceDTTM: currentDttm });\r\n // var currentDttm = this.state.PreferenceDTTM;\r\n var fromDttm = filters.FromDate;\r\n var toDttm = filters.ToDate;\r\n if (fromDttm == \"Invalid date\" || fromDttm == null || fromDttm == \"\")\r\n return \"Invalid From Date.\";\r\n\r\n if (toDttm == \"Invalid date\" || toDttm == null || toDttm == \"\")\r\n return \"Invalid To Date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"From date should not be greater than current date.\";\r\n\r\n if (moment(new Date(toDttm)) > moment(new Date(currentDttm)).endOf('day'))\r\n return \"To date should not be greater than current date.\";\r\n\r\n if (moment(new Date(fromDttm)) > moment(new Date(toDttm)))\r\n return \"From Date should not be greater than To Date.\";\r\n\r\n return \"\";\r\n }\r\n\r\n getReeferHistoryDetails() {\r\n isMapEnable = this.props.mapEnabled;\r\n var filters = this.state.Filters;\r\n var message = this.ValidateHistoryDates(filters);\r\n if (message != \"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n return;\r\n }\r\n else {\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n self.state.gridApiParams.showLoadingOverlay();\r\n var fromDate = moment(new Date(filters.FromDate)).toString();\r\n var toDate = moment(new Date(filters.ToDate)).toString();\r\n filters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n filters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n var filterParams = JSON.stringify(filters);\r\n if (this.state.reeferFormatter === null) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n reeferFormatter: data\r\n }, () => {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n });\r\n\r\n self.updateGraphData(data);\r\n\r\n if (data.length > 0 && isMapEnable) { \r\n ReeferCallout.BindTracePushpins(data, 'trace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n \r\n self.state.gridApiParams.hideOverlay();\r\n });\r\n });\r\n });\r\n } else {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferhistory/ReeferHistoryDataSP', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n rowData: data\r\n });\r\n\r\n self.updateGraphData(data);\r\n\r\n if (data.length > 0 && isMapEnable) {\r\n ReeferCallout.BindTracePushpins(data, 'trace');\r\n var dataArray = [];\r\n if (self.state.selectedDataItems != null && self.state.selectedDataItems != undefined && self.state.selectedDataItems.length > 0)\r\n dataArray.push(self.state.selectedDataItems[0]);\r\n else\r\n dataArray.push(data[0]);\r\n self.BindMapPushPin(dataArray);\r\n }\r\n else\r\n $('#globalLoader').hide();\r\n \r\n self.state.gridApiParams.hideOverlay();\r\n });\r\n }\r\n }\r\n\r\n FromDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.FromDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters, buttonState: true });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n ToDateChange(date) {\r\n var filters = self.state.Filters;\r\n filters.ToDate = DateFormat(new Date(date), 'mm/dd/yyyy HH:MM');\r\n self.setState({ Filters: filters, buttonState: true });\r\n //$('#btnReeferHistorySearch').removeAttr('disabled');\r\n }\r\n\r\n renderDateFields() {\r\n var currentDateFilters = this.state.Filters;\r\n if (currentDateFilters.ToDate != null && currentDateFilters.ToDate != undefined) {\r\n var currenttoDTTM = this.state.PreferenceDTTM;\r\n var toDTTM = DateFormat(new Date(currentDateFilters.ToDate), 'mm/dd/yyyy');\r\n var fromDTTM = DateFormat(new Date(currentDateFilters.FromDate), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(currenttoDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n else {\r\n var toDTTM = this.state.PreferenceDTTM;\r\n var modifiedDttm = new Date(toDTTM);\r\n modifiedDttm.setDate(modifiedDttm.getDate() - 1);\r\n var fromDTTM = DateFormat(new Date(modifiedDttm.toString()), 'mm/dd/yyyy');\r\n var fromDate = moment(new Date(fromDTTM)).startOf('day').toString();\r\n var toDate = moment(new Date(toDTTM)).endOf('day').toString();\r\n currentDateFilters.FromDate = DateFormat(new Date(fromDate), 'mm/dd/yyyy HH:MM');\r\n currentDateFilters.ToDate = DateFormat(new Date(toDate), 'mm/dd/yyyy HH:MM');\r\n this.setState({ Filters: currentDateFilters });\r\n }\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, widgetId: any, gridApiParams: any, isIncludeRowGroup: boolean, sensorData:any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, widgetId, gridApiParams, isIncludeRowGroup, reeferAssetSensors);\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n openTemperatureGraph() {\r\n if (this.state.rowData.length > 0)\r\n this.props.openReeferTemperatureGraph(this.state.rowData, this.state.reeferFormatter, this.state.Filters);\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No data to draw graph\");\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, widgetId, gridApiParams, formName);\r\n }\r\n\r\n renderExportToExcelDialog(functionId: any, widgetId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData:any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, widgetId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, reeferAssetSensors);\r\n }\r\n\r\n //renderSearchButton(isClickEnable: boolean) {\r\n // if (isClickEnable)\r\n // return ;\r\n // else\r\n // return ;\r\n //}\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n var gridPreferencesData: any;\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState(preferenceData.colState);\r\n }\r\n\r\n }\r\n // RCNG 5198 - OMP - UI:The selected grid columns are not displayed for Export excel and send Email\r\n if (self.props != null && self.props.dashboardWidgetsSearch != null && self.props.dashboardWidgetsSearch != undefined) {\r\n gridPreferencesData = self.props.dashboardWidgetsSearch.filter(x => x.WidgetName =='Reefer History');\r\n }\r\n setTimeout(() => {\r\n GridColumnPreferences.HistoryGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferMapGrid\");\r\n\r\n }, 2000);\r\n });\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n \r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n // self.clearGridRowSelection(params); \r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var colDef = params.node.columnApi.columnController.filter(x => x.colId == fieldName);\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"BatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"DoorSensorBatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"TripWiseExpiration\" && fieldName.toString().trim() != \"HumiditySetpoint\" && fieldName.toString().trim() !=\"LineFrequency\") // RCNG-169\r\n return \"OOR\";\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n //if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"HumiditySetpoint\" )\r\n // return \"OOR\";\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"UnitEventDTTM\" || fieldName.toString() == \"PTRDateTime\" || fieldName.toString() == \"DataLoggerDtm\" || fieldName.toString() == \"ModifiedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"RunState\":\r\n return ReeferCellRenderer.RunStateFormatterGrouping(fieldValue);\r\n case \"AssetState\":\r\n return ReeferCellRenderer.AssetStateFormatterGrouping(fieldValue);//added Asset State\r\n case \"MASeverityLevel\":\r\n return ReeferCellRenderer.StatusIndicatorALMFormatterGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return ReeferCellRenderer.PowerStateFormatterGrouping(fieldValue);\r\n case \"CCSeverityLevel\":\r\n return ReeferCellRenderer.CargoCareFormatterGrouping(fieldValue);\r\n case \"VesselCd\":\r\n return fieldValue == \"-NA-\" ? \"No VSL\" : fieldValue;\r\n case \"TripStatusCdAndDFlag\":\r\n return ReeferCellRenderer.TripStatusFormatterGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return ReeferCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExists\":\r\n return ReeferCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"PTResult\":\r\n return ReeferCellRenderer.PTResultGrouping(fieldValue);\r\n /* RCNG 108 start*/\r\n case \"AlarmsList\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return ReeferCellRenderer.AlarmDescriptionGroupingFormatter(fieldValue, DeviceType, self.state.reeferFormatter.AlarmMasterList);\r\n }\r\n /* RCNG 108 end*/\r\n //case \"Humidity\":\r\n // return Formatters.HumidityGrouping(params);\r\n //case \"CondenserPressure\":\r\n // return Formatters.sensorDataPCondGrouping(params);\r\n //case \"EvaporatorExpansionValveOpening\":\r\n // return Formatters.sensorDataOpenExpGrouping(params);\r\n //case \"SuctionModulationValveOpening\":\r\n // return Formatters.sensorDataOpenSucGrouping(params);\r\n //case \"ControlledAtmosphereMode\":\r\n // return Formatters.ControlledAtmosphereModeGrouping(params);\r\n case \"TripWiseExpiration\": // RCNG-169\r\n return Formatters.TripWiseExpirationGrouping(fieldValue);\r\n\r\n case \"DimiRemainTerm\":\r\n return Formatters.DimiRemainTermGrouping(fieldValue);\r\n case \"CTDuration\": // RCNG-1819\r\n return Formatters.CTDurationGrouping(params);\r\n case \"CTRemainingTime\": // RCNG-1819\r\n return Formatters.CTRemainingTimeGrouping(params);\r\n //case \"RunningMode\":\r\n // return Formatters.RunningModeGrouping(fieldValue);\r\n case \"Cargo4Temp\":\r\n case \"USDA3Temp\":\r\n case \"USDA2Temp\":\r\n case \"USDA1Temp\":\r\n case \"SetPoint\":\r\n case \"SupplyTemp1\":\r\n case \"SupplyTemp2\":\r\n case \"ReturnTemp1\":\r\n case \"AmbientTemp\":\r\n case \"ReturnTemp2\":\r\n case \"EvaporatorTemp\":\r\n case \"CompressorSuctionTemp\":\r\n case \"CompressorDischargeTemp\":\r\n case \"EvaporatorInletSensor\": \r\n case \"EvaporatorOutletSensor\":\r\n case \"CompressorDischargeTemp2\":\r\n case \"EconomizerInTemp\": \r\n case \"EconomizerOutTemp\":\r\n case \"CondenserTemperature\":\r\n case \"DeviceTemp\":\r\n case \"SensorReturnTemp1\":\r\n case \"SensorSupplyTemp1\":\r\n case \"CTTempLimit\"://RCNG-1819\r\n case \"CTPostSetPoint\"://RCNG-1819\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.TemperatureFormatterGrouping(fieldValue, fieldName, params, DeviceType);\r\n }\r\n \r\n case \"TemperatureUnit\":\r\n return Formatters.BookingTemperatureFormatterGrouping(fieldValue, fieldName, params);\r\n case \"EventDTTM\":\r\n case \"UnitEventDTTM\":\r\n case \"PTRDateTime\":\r\n case \"DataLoggerDtm\":\r\n case \"ModifiedDTTM\":\r\n case \"DLEventDTTM\":\r\n case \"DoorEventDtm\":\r\n case \"TripStart\":\r\n case \"TripEnd\":\r\n case \"CTTime\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"HumiditySetpoint\":\r\n {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n return Formatters.HumiditySetpointGrouping(fieldValue, HumiditySetpointStatus);\r\n }\r\n case \"TripWiseStatusDescription\":\r\n {\r\n var ReeferOEMTypeCd; var DimiResultActuator; var DimiResultAlarm; var DimiResultOOR;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR);\r\n }\r\n case \"DoorOpen\":\r\n return ReeferFormatters.DoorFormatterGrouping(fieldValue);//RCNG-1106\r\n case \"EverFRESH\":\r\n return Formatters.EverFreshFormatterGrouping(fieldValue);\r\n case 'DimiStartAfter':\r\n return Formatters.OEMPTITypeFormatter(fieldValue);\r\n case 'ReeferBatteryPct':\r\n return ReeferCellRenderer.ReeferDoorBattPctFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"ReeferHistoryGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n onColumnResized = (params: any) => {\r\n //console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n\r\n\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'OneDecimal',\r\n numberFormat: {\r\n format: '0.0',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'TwoDecimal',\r\n numberFormat: {\r\n format: '0.00',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n From\r\n \r\n To\r\n \r\n\r\n {\r\n this.state.buttonState == true ?\r\n \r\n :\r\n \r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\nclass ReeferHistoryFilter {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\n\r\ninterface ReeferUnitHistoryUI {\r\n HighSpeedEvaporatorFanOutPut: string;\r\n IsAcceptableBatteryVoltage?: boolean;\r\n BatteryVoltage?: number;\r\n RCDPowerSourceCd: string;\r\n ReeferACPowerLevel?: number;\r\n ReeferOEMTypeCd: string;\r\n IsReeferPhysicallyConnected?: boolean;\r\n IsReeferCommunicationEstablished?: boolean;\r\n ReeferSwitchOn?: boolean;\r\n DeviceTemp?: number;\r\n UnitEventID?: number;\r\n EventMasterID?: number;\r\n EventDTTM?: Date;\r\n ModifiedDTTM?: Date;\r\n U_UnitAlarmSummaryHistoryID?: number;\r\n UnitControlEventID?: number;\r\n C_EventDTTM?: Date;\r\n C_EventMasterID?: number;\r\n UnitVesselOperationsID?: number;\r\n UnitCargoCareID?: number;\r\n C_UnitAlarmSummaryHistoryID?: number;\r\n Status: string;\r\n IsOnVessel: boolean;\r\n IsCargoCare: boolean;\r\n IsAcceptableACVoltage?: boolean;\r\n R_RCDStateReportedHistoryID?: number;\r\n RunState?: number;\r\n ControlledAtmosphereMode: string;\r\n R_EventDTTM?: Date;\r\n TimeToDefrost?: number;\r\n LineFrequency?: number;\r\n CurrentPhaseA?: number;\r\n CurrentPhaseB?: number;\r\n CurrentPhaseC?: number;\r\n ThreePhaseCurrent: string;\r\n ReturnTempLongAvg?: number;\r\n AmbientTempLongAvg?: number;\r\n CompositeSuctionPressureLongAvg?: number;\r\n DischargePressureLongAvg?: number;\r\n SupplyTemperatureLongAvg?: number;\r\n ReturnTemperatureLongAvg?: number;\r\n CompressorSuctionTempLongAvg?: number;\r\n CompressorCondensorTempLongAvg?: number;\r\n RCDEventID?: number;\r\n R_EventMasterID?: number;\r\n RCDMasterID?: number;\r\n RCDMasterHistoryID?: number;\r\n RCDGSMPositionHistoryID?: number;\r\n RCDLocationHistoryID?: number;\r\n RCDGPSPositionHistoryID?: number;\r\n RCDStateReportedHistoryID?: number;\r\n RCDAlarmSummaryHistoryID?: number;\r\n CCIsOffpower?: boolean;\r\n CCIsSetpoint?: boolean;\r\n CCMissingScheduleCd?: number;\r\n CCIsTempOutOfRange?: boolean;\r\n SIM_IMSI: string;\r\n ICCID: string;\r\n CompressorEvaporatorTempLongAvg?: number;\r\n CompressorDischargeTempLongAvg?: number;\r\n CountryCd: string;\r\n CountryName: string;\r\n UnitEventDTTM?: Date;\r\n UnitMasterID?: number;\r\n RCDReportingInterval?: number;\r\n Street: string;\r\n City: string;\r\n State: string;\r\n Zip: string;\r\n RCDRfrComErr?: boolean;\r\n TripId?: number;\r\n TripNm: string;\r\n TripStatusCd: string;\r\n TripStatusDescription: string;\r\n TripNameAndStatus: string;\r\n TripHistoryId?: number;\r\n BookedTemperature?: number;\r\n BookingNumber: string;\r\n TemperatureUnit: string;\r\n MSISDN: string;\r\n DataLoggerDtm?: Date;\r\n RSSI?: number;\r\n HotGasValveOpening?: number;\r\n C_ModifiedDTTM?: Date;\r\n GeofenceName: string;\r\n RCDID: string;\r\n Country: string;\r\n RCDFirmwareVersion: string;\r\n RCDBootloaderVersion: string;\r\n RCDMeshFirmwareVersion: string;\r\n RevisionNum?: number;\r\n LineVoltage1?: number;\r\n LineVoltage2?: number;\r\n LineVoltage3?: number;\r\n GPSLatitude?: number;\r\n GPSLongitude?: number;\r\n GPSLastLock?: number;\r\n GPSCoords: string;\r\n GPSLockState: string;\r\n IsInsideGeofence?: boolean;\r\n Geofence: string;\r\n CustomerAccessGroupIDList: string;\r\n TowerBaseStationID?: number;\r\n TowerLocalizationAreaCode?: number;\r\n MNC?: number;\r\n SuctionModulationValveOpening?: number;\r\n EconomizerValveOpening?: number;\r\n CondenserFanOutPut: string;\r\n DeviationFlg?: boolean;\r\n LowSpeedEvaporatorFanOutPut: string;\r\n CompositeSuctionPressureQualifier?: any;\r\n PretripTestStateID?: any;\r\n DefrostInterval: string;\r\n VentPositionCMHQualifier?: any;\r\n TotalCurrentDrawQualifier?: any;\r\n PretripTimeDisplay: string;\r\n PretripTestNumber?: number;\r\n PretripSubTestNumber?: number;\r\n SetPoint?: number;\r\n O2Setpoint?: number;\r\n CO2Setpoint?: number;\r\n HumiditySetpoint?: number;\r\n CompressorHighSpeed?: number;\r\n ElectricHeatOutPut?: number;\r\n MicroVersion: string;\r\n SoftwareRevision: string;\r\n AmbientTempQualifier?: any;\r\n USSH_Cargo4TempQualifier?: any;\r\n CO2ReadingQualifier?: any;\r\n CO2SetpointQualifier?: any;\r\n ColdTreatmentActive?: boolean;\r\n CompressorDischargeTempQualifier?: any;\r\n CompressorSuctionTempQualifier?: any;\r\n DischargePressureQualifier?: any;\r\n CondenserFanOutputQualifier?: any;\r\n HumiditySetpointStatus: string;\r\n O2ReadingSupport: string;\r\n ParentEventID?: number;\r\n UnitPrefix: string;\r\n UnitNumber: string;\r\n ReeferID: string;\r\n AlarmsList: string;\r\n CCAlarms: string;\r\n CCSeverityLevel: string;\r\n MicroAlarms: string;\r\n MASeverityLevel: string;\r\n UnitUSDAHistoryID?: number;\r\n USDA1Temp?: number;\r\n USDA1TempQualifier?: any;\r\n USDA2Temp?: number;\r\n USDA2TempQualifier?: any;\r\n USDA3Temp?: number;\r\n USDA3TempQualifier?: any;\r\n Cargo4Temp?: number;\r\n Cargo4TempQualifier?: any;\r\n UnitSettingsHistoryID?: number;\r\n DischargePressure?: number;\r\n CompositeSuctionPressure?: number;\r\n VentPositionSensorCMH?: number;\r\n O2SetpointSupport: string;\r\n CO2ReadingSupport: string;\r\n CondenserPressureQualifier?: any;\r\n DataLoggerDtmQualifier?: any;\r\n CurrentPhaseCQualifier?: any;\r\n ControllerSerialNumber: string;\r\n CompressorFrequency?: number;\r\n CondenserTemperature?: number;\r\n CondenserPressure?: number;\r\n HeaterOnTime?: number;\r\n EvaporatorExpansionValveOpening?: number;\r\n RunningMode: string;\r\n URH_UnitReadingsHistoryID?: number;\r\n Humidity?: number;\r\n AmbientTemp?: number;\r\n CompressorSuctionTemp?: number;\r\n CompressorDischargeTemp?: number;\r\n ReturnTemp1?: number;\r\n SupplyTemp1?: number;\r\n SupplyTemp2?: number;\r\n ReturnTemp2?: number;\r\n EvaporatorTemp?: number;\r\n NumberOfAlarmsInQue?: number;\r\n O2Reading?: number;\r\n CO2Reading?: number;\r\n OEMAlarmBlock: string;\r\n ISOFaultBlock: string;\r\n TotalCurrentDraw?: number;\r\n SupplyTempQualifier?: any;\r\n SupplyTemp3Qualifier?: any;\r\n SupplyTemp2Qualifier?: any;\r\n SupplyTemp1Qualifier?: any;\r\n CondenserTempQualifier?: any;\r\n ControllerSerialNumberQualifier?: any;\r\n CurrentPhaseAQualifier?: any;\r\n CurrentPhaseBQualifier?: any;\r\n DefrostIntervalQualifier?: any;\r\n EconomizerValveOpeningQualifier?: any;\r\n EvaporatorExpansionValveOpeningQualifier?: any;\r\n EvaporatorTempQualifier?: any;\r\n UnitHardwareVersion: string;\r\n HeaterOnTimeQualifier?: any;\r\n HighSpeedEvaporatorFanOutputQualifier?: any;\r\n TripStatusCdAndDFlag: string;\r\n HotGasValveOpeningQualifier?: any;\r\n LowSpeedEvaporatorFanOutputQualifier?: any;\r\n MicroVersionQualifier?: any;\r\n O2ReadingQualifier?: any;\r\n O2SetpointQualifier?: any;\r\n PowerSupplyDCVoltageQualifier?: any;\r\n ReturnTemp1Qualifier?: any;\r\n ReturnTemp2Qualifier?: any;\r\n ReturnTemp3Qualifier?: any;\r\n ReturnTempQualifier?: any;\r\n SetPointQualifier?: any;\r\n SuctionModulationValveOpeningQualifier?: any;\r\n LineFrequencyQualifier?: any;\r\n DeviceConfig?: boolean;\r\n Sensor1Value: number;\r\n Sensor2Value: number;\r\n Sensor3Value: number;\r\n Sensor4Value: number;\r\n Sensor5Value: number;\r\n Sensor6Value: number;\r\n Sensor7Value: number;\r\n Sensor8Value: number;\r\n DeviceType: any;\r\n ArrivingVVC: string,\r\n DepartingVVC: string,\r\n CargoCareCustomerProfileID?: number,\r\n CCProfileCode: string,\r\n ColdTreatmentState: string,\r\n EvaporatorInletSensor: any;\r\n EvaporatorOutletSensor: any;\r\n\tCompressorDischargeTemp2: any;\r\n AirPumpRunHours: any;\r\n\tCARunHours: any;\r\n\tCASoftwareRevision: any;\r\n\tEconomizerInTemp: any;\r\n\tEconomizerOutTemp: any;\r\n\tCompressorRunHours: any;\r\n\tPowerMeter: any;\t\r\n\tPTIType: any;\r\n ControllerTypeCd: any;\r\n CompressorCurrent: any;\r\n BulbMode: any;\r\n EvaporatorFanSpeedControl: any;\r\n CTTime: any;\r\n}","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAfCAYAAADwbH0HAAAACXBIWXMAAC4jAAAuIwF4pT92AAAInklEQVRIiZWXaYxdZRnHf+9yzj13mblzZ6bTWdoCLaQppUILyBJBwcRQ+FQkQUzkAwkhIJEQNgWRhhiDH0yELxDjJ9mUyBYTqjVBVERqFAXD0rJ1LDNdZr9zt3PO+76PH86lgFGCT/IkJ2d5/8/+f44KZ+8EATox6pz34cw5SCownkNqYGUcxjXYDtRjmKxCHjguIUC5BPXKefhwJyJXguoUh/ZFgExDAFRx3/JZRQSMglIE2heHKcAFMPoigjxPCBDkTuC7x79TAs4UwHxksP6/gJWGSqnQagmSGKrJBpLoeZyHICByF86fjlKQRIVqXbitOa6f3WOjoZvBseXC8CCgFAyUn0H1DRMKAGv2sri6gfmVFAIMj8FQA/LsUzwOCoIGpSKMHM8JVkPmYbENrS6stCHLL0dkO5njuMeF12MEeYHcF9+IFGn5mGhEFWCiwGmwsp2h9HFMltC00ItAB/C6DBlMzELDQ1yFyN5LmkPm+AR4msNg+Vw2Tz3G5vVIvVY8/wRwaiGz0InAyomMrL6C7XyNZlhlpg6oL2D1L5kINapDvP7Q9XCkA6X315P6rfSy4tDcQ5YX4ALkDrr5VbSz3WQejK58HNiqi98qrnJdYqL5J1YMVHuHWBiDlZGdNHrPsapSJuaveO3pG3j2vttZeHMjF+6+/nTGXgOdQKhBcw3kCfhQ1IPWgAJR96jMvSDGbleKvyH8AcAysVKE2fonCWqSpRikUyc1P6bcvYm2QLP56tJTO9j3yOWsO2X6c++8vOvScPfIlbWTDpCUM9ae8VfWfH4flAPMbSjaLpKPwF14kF7+LGX9c0QmAZTcvAlQl1Byeyg5KDmIc6h6qCkwZRhdOvb7+++/+sXfXnvd1h3/3KWpki6uw3divIAut2hsfoWzrr2f0QtehsMbQUVFQRoDToGoh6WiLldaHgWuU3L9FtDhDRK/hVLeB/YQp1B1UNOwpsPC0dPY+9CjLM5sYd26eRLrMB4UgnOahcNrWJrVfPGOezntmkehOd4HN0Xoc92SUrAq8QkiVbN728QOUHehKVonU5D3Kz0T6HloVaic9B6bz/kVzc5WZj7YRpbXKFdSFBrXrrJx528445YHObx/G1XXoTJ2uMh5UCAaxMRosUQO5cO7ZvfWqRtQciGq32t1BxMCExGMlIsplTs4VsaUj3DymY8wOvY2ztRptk/EiQYDi29vYsP5f+a02+5DuWGiFQVdU0w7p8EbVEkgCiinmmb3lnU3gtqCUEykbatwioMohoEYhsswVIO6hZqFoZyhXa8yOT7Lvt99g0CCrfRwxLz28CWMj88wfMleaI7AQlTMaVGQGah4iAWVG28ljTYrJaANeAX/qAMtmMiKkHc1rJ+HmtA9uoNm2qD1wgm8+MTtdFQJO9Cj42NsPUVGEl75xVVMnb8HBpehPAxzA1ATRBkI3YLZXDRlSe0JWFeUfcnBXAVejGBtD04Gth9k+b2tPL3nVqaPXUSm10DPkMQwMga9LMY5j80hmmgxe2gTS3/fQuPcfZCUoDeAuJgwACbqIq0ECbpmXascRdVun7YsxA5yC69XYcMh/rX/VH74/Z9wOD2D8VNWKA12iOqW3CqWXURZDLGA9Q4dZax0BliYGaXhVsCNITn4lRpqZB6iDjJfRYlWOlsenEekAEsNpLbIizWguux5bhevHxpjcuPLhNJhenaRjm2yqns0bYem7dJVOakEeiGQmS5WNWEFaGvcYpXgQDcWoaWhZaClezZdqu2vduMpgunTWr+VgsDBMuONQ7ihRdpZC5dYcAFrHREOL5YgBkFTCYFsNaI8dJCJxn6YbSBHK7iFQeKz3kXZNrI4iDQtyuhjurM0+kZYrBXUldmi+nJbtMGbU3y5/kemTj3A9NEqIV0hy1p0sibdrEkva9HLW3TzJj23zMz8ABvXv0Sp/B4cGsUfamCmZjCNo7AcI8sWWbYQ2G++Fb4UaZNflTRWII84TpyiIC8T58c4af0Rnp69CN9SDNgWAfDiIM8xWYZOe8zMr2E4muaaC79HqaNgYRQ11MaOLUC3BCj80Tp0K6iW/NTcmpx3oNsu3VSrthNdyj7qOwGMQLPOJG+zeewD/rJ8KtPNUUImuDzQzRXL7YS55TrrwzvcdPrdjJXfgcUNUOuhKin0LKCQdoybHUZbDbm62txaOR+f2ajbMxcPDrUKUH+c0gqGaQ9ygjrAzqFXScgwISVxbep+iU1ykMuqe7lxwwOMlKahOwmVrNhtehF4A8aTHxpBlgfRyGN4/TP1Qf07KMH2uulKdexoZe2J8+Clvzt5sFJ4rgXiJSi1QQbJpIxWHmtXIV6GMFjwchygpPuqYCjHtQbozUwR1xVKyQROHbHK9UDhkkh9fXW+8Yxoz/i61WJfTjV4XwCbAGEYsiEwGbFJC2N8FbLBfmkI9EyxQpYVDOf42TLt6QmiUgQ23C6aIwDmluhskIBC9kdKj622S2d3UqhUAybq72Fe9TfL/iLoLfi4r7ZIjS+IAGeKd60jX6jR3L8ek5WJrP41qblB2hppa6wko/0iViDyzVq6sra9WP/qdGoYHu1SH3QY64sIOF8sfjoUUVAU14rCexOKsZsZmm816BwdI04SzJDsk66/FCOF8YC5efAyMBGYEqBReeeJROs1wcWfX25qWj2F8wqtNZHVBanTL74PVRVR9j3L6twAS9Nr6cyOE+VljLdPqUS+YgZdYVz/fUvor51Kg3hQgSD6xpIq7YuVeaC7WhqaW+2xnOTEiSOKPHEcsCagleC9wjlNnllcN8F3K0RElK3x5OYOcf5HBeAn5X/8SQii1MOK0nMVbb9dJr7apW4s63m6FMZp9eF41RAsFkukDGWt20r04+L4gULe/2+gnwL8ITgLiL5NSXRPJPYKi1yglGwVmBSh0Y9TE61nEf0Wol8Sp55EyZwynk/8Mf6H/BsSmBxPJC6v2AAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAANRGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNy0xMS0xNVQxNzoxMDowNiswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0wMy0yMVQxMjowNDoyNSswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDMtMjFUMTI6MDQ6MjUrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZGY3Mzk4MGItMTQ5NS0wNjQyLWI1YzQtNWJiZDc4YzgwY2IxIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZDM1OTM5ZjItYTJhYy1iNDQwLThjZmUtMjRhYjgzOTQ0ODNmIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YjUxZWViNjAtNzQ3My1jNjQxLTgzODMtMzE4MmYwNGE1NWRjIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiNTFlZWI2MC03NDczLWM2NDEtODM4My0zMTgyZjA0YTU1ZGMiIHN0RXZ0OndoZW49IjIwMTctMTEtMTVUMTc6MTA6MDYrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmViOTA1YWJlLTdjNzQtMjk0Yy1hNjAzLTYwYWU5MmY2Y2IzYiIgc3RFdnQ6d2hlbj0iMjAxNy0xMS0xNVQxNzoxMDowNiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZGY3Mzk4MGItMTQ5NS0wNjQyLWI1YzQtNWJiZDc4YzgwY2IxIiBzdEV2dDp3aGVuPSIyMDE4LTAzLTIxVDEyOjA0OjI1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTk3NmYzY2UtMzcwMS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ0OTU3NjJhLTM2ZjgtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0ZTEzOWZlNC0yYmVjLTExZTctYmQ2Zi1hZjllYTk1ZjlkNWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NTFkOWI0ZTQtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjVmOTNiYTc1LTM5MmUtMTFlNy1hODFlLWJmZjYzYzUzMDNiMjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3M2YwMDEzMC0zOTVhLTExZTctYWMzNi1mYjM1MWVjZDY0OWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkNDA0MmEtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhiZGI1MWEyLTc2N2QtMTFlNy1iZmQ2LThmNWRlOTRkMWY0MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphY2Y2Yjk2Yi01ZmU1LTExZTctOTc2Yi1mMzY1N2ExMTczNjk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YjVlZGRjMDktMzZmNy0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplNWNjNTliMi0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWQ5Yzc0YzYtMzZmYi0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyMjg2NzJhYi01NTJlLTg4NDctYTY0Ni04ZjA1OTA1NTBhNzE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjJkYTk1YjVlLTZjMjQtNDQ0MS1iYzQxLTM3ZTI4OWNiYzkxNDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NDUyZDA5OTQtY2Y2MC0yMTQwLTg4MGYtZGEwMmRkMjA4OGJhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo1OEJBN0EyRjJFOTkxMUU3QUQzMThFODMwN0Q1RUQxMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NzFkNGE3MTgtZDRkMS1iNDRmLWIxZGMtNmYzN2E1MWZiY2ZhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4MTNmYjI3My1mNmU5LTk3NDctOTQyOC04ODRmMGVhZDBhYWU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkI5NTBBRDAyMTA5RjExRTdCRUZDQTk3N0MxQkU4RDFBPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpEMUM0NjAwMzBFNEYxMUU3QkVGQ0E5NzdDMUJFOEQxQTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTUxZjdhYWMtMDI4ZS05NDRkLThjNmUtNGE4Yjg4YmYzY2VkPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpkYWY4ZDZiNi1lZTBmLWYzNDAtYTRlZS00MjUxMWUxN2I0OTE8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5TvwTxAAACO0lEQVQ4jZXUwatbVRDH8c/cm5gEKaUqUqRguxFjH4gIKnQhtJb+Ayp1o+JCQUWkdKEWFEFQkVIFLfQpdFOe7uxaENyIViniQhcuXIviQhMFc5MzLvLySNK8VAfu4s75zXfmzJ078ffR+0CGlVYijkbme0It88WM+GyVLgq9e35Qrcbs2JHI/AgbUp+4gAfXBawD3pl8iENzvoORNrHxf4G3JZ+gL1MOB3I4IBPuiPQxDvxX4C3Jp7hbJq2Wun9Y3T9MqzWDbkS6jFuvB9yDS5h+qVJEp6tz6ozOqTOi06OUmfZebGHvbsAuNpMTCylK4fZD06dMFo4iHTPt8407wN7nV2awd5KTixHBeMRgwGAgmxHV4nxFegRn0Zuv8IXk+eV+iJDjZlpZmdA0uHZgIz2D00K7ghL5yjWqmY0Lkwnj8Xz/Vli8bBR3tbZfxmuU1DVyrURlYkvZvnK8hmZ14jD57huTq9+uw40j4lUjP25X6ANiD/nmMkxVaTbPU1fTSmNVD8vrxLlomoWxeYt4e0FZiuj2dN+9oPf+RbHvpmk/F2B5Fm/INN5/s9ZfDz0wf/4SsY98esdTVfLXX2T7BqJahl0kT8+Sj/oHxfDY/cs3aJNbeBjTiro9UVdyOKTd3v798nJknsQ/88GtZRoa4ilyL46ra4Z/Kkl0uzPYF5H55DKM3bfNgHgMX4JOdwoD+XVkPoo/VgWu24e/E4/j6pzv+8h8Ar/tFnS9jf0z8WzwVXIlMp/DT+sC/gWRYci2JYgd9gAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAANRGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNy0xMS0xNVQxNzoxMDo1MCswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0wMy0yMVQxMjowOTozNCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDMtMjFUMTI6MDk6MzQrMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZTZlMTgxMGYtNzQ4YS1jZjQyLTlmYjgtNjZlZTAyMjhiMzQ2IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NTJjNmEwNGYtNDkzZi02ZjQyLWExZGQtNTg5NzJmNWYyN2YxIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZTIyNjcwMWEtOTE4YS03ZTQ1LWEwMmQtODM3YTM0NjI3ODg2IiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMjI2NzAxYS05MThhLTdlNDUtYTAyZC04MzdhMzQ2Mjc4ODYiIHN0RXZ0OndoZW49IjIwMTctMTEtMTVUMTc6MTA6NTArMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyMmMzNmQ0LTgwZDUtZWU0Yi05OWM0LTc5YWY0NDliNzU0NiIgc3RFdnQ6d2hlbj0iMjAxNy0xMS0xNVQxNzoxMDo1MCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTZlMTgxMGYtNzQ4YS1jZjQyLTlmYjgtNjZlZTAyMjhiMzQ2IiBzdEV2dDp3aGVuPSIyMDE4LTAzLTIxVDEyOjA5OjM0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTk3NmYzY2UtMzcwMS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ0OTU3NjJhLTM2ZjgtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0ZTEzOWZlNC0yYmVjLTExZTctYmQ2Zi1hZjllYTk1ZjlkNWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NTFkOWI0ZTQtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjVmOTNiYTc1LTM5MmUtMTFlNy1hODFlLWJmZjYzYzUzMDNiMjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3M2YwMDEzMC0zOTVhLTExZTctYWMzNi1mYjM1MWVjZDY0OWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkNDA0MmEtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhiZGI1MWEyLTc2N2QtMTFlNy1iZmQ2LThmNWRlOTRkMWY0MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphY2Y2Yjk2Yi01ZmU1LTExZTctOTc2Yi1mMzY1N2ExMTczNjk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YjVlZGRjMDktMzZmNy0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplNWNjNTliMi0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWQ5Yzc0YzYtMzZmYi0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyMjg2NzJhYi01NTJlLTg4NDctYTY0Ni04ZjA1OTA1NTBhNzE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjJkYTk1YjVlLTZjMjQtNDQ0MS1iYzQxLTM3ZTI4OWNiYzkxNDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NDUyZDA5OTQtY2Y2MC0yMTQwLTg4MGYtZGEwMmRkMjA4OGJhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo1OEJBN0EyRjJFOTkxMUU3QUQzMThFODMwN0Q1RUQxMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NzFkNGE3MTgtZDRkMS1iNDRmLWIxZGMtNmYzN2E1MWZiY2ZhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4MTNmYjI3My1mNmU5LTk3NDctOTQyOC04ODRmMGVhZDBhYWU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkI5NTBBRDAyMTA5RjExRTdCRUZDQTk3N0MxQkU4RDFBPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpEMUM0NjAwMzBFNEYxMUU3QkVGQ0E5NzdDMUJFOEQxQTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTUxZjdhYWMtMDI4ZS05NDRkLThjNmUtNGE4Yjg4YmYzY2VkPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpkYWY4ZDZiNi1lZTBmLWYzNDAtYTRlZS00MjUxMWUxN2I0OTE8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4I56T7AAABvklEQVQ4jZ3Uv08UURDA8c/jjpPQaUdvTYkd/A0WBqOIJobGIGLiH6ExEX9GQ2VsFBLUYK0B/wbj36CNkcKg6+2Oxe6xx92toJNsMm9m55uZN28mxU4HSMmQzP4ctsHuxLAtx5lMe3REJR8nSLEk0hNSi2Kl1Jtl7K9AlkVaxzgxRnqM1f8FXsOjIWuyhpV/BV5Hc2nJA9w8LnAVDxthNfQebg0D5371n29g7UhYDb07CO3PcBn3jw07DF0dBC7qb0AKOl3GgkA7L79Aq/Kl6IeuSZZqYErPD5ydri/fJy0+nfXh8xQnM7e3p915N82pzPtPUy4/m/V1b7IE19R10ulehtlgJRFJBBJFJEWUk1REUhRJDAaIMioi2J04K3mFzkHJ4zndFnmiU5X7u0U7aOWlHgfj2pVbMJNt9DJ8I5xD2fJIZG2KRKpA3Vap55WvhmXCPDbKO6wHfVu4iB9D1TTLvnAJr3uGwYe9JVw9JnS/+nez3zhq22wIIXmBEw2wrIK9HHQ0zfKmcN6I7qMrXBgF+xsQ3h5qVJ3ZPLaago7ah9vCguQb9oQr+howSlLsNFzTXMP6H5TeKykwk/kDHTCXvm2DgtwAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAANRGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNy0xMS0xNVQxNzoxMToxMyswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0wMy0yMVQxMjowOTowMSswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDMtMjFUMTI6MDk6MDErMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OGI5NTgzN2ItNWE2OS1kMTQzLWEwY2QtYzU4NDgzNGRjNjdjIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OWYyMmVlZWQtOTYzZi03ZTRiLTk3MmYtMmNhYjEzN2FhMWJkIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YTkxOTIzMWItZmQ4NS05YzQ3LWIyNzEtMTQ5NzkzYTMyOTc3IiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphOTE5MjMxYi1mZDg1LTljNDctYjI3MS0xNDk3OTNhMzI5NzciIHN0RXZ0OndoZW49IjIwMTctMTEtMTVUMTc6MTE6MTMrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmMzZGM2OGY0LTI1MzMtMmM0Ni05MjM0LTZmZjk4OTlkNDNiNCIgc3RFdnQ6d2hlbj0iMjAxNy0xMS0xNVQxNzoxMToxMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OGI5NTgzN2ItNWE2OS1kMTQzLWEwY2QtYzU4NDgzNGRjNjdjIiBzdEV2dDp3aGVuPSIyMDE4LTAzLTIxVDEyOjA5OjAxKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTk3NmYzY2UtMzcwMS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ0OTU3NjJhLTM2ZjgtMTFlNy05YTVkLWNmNWE4MzJjMjk3MDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0ZTEzOWZlNC0yYmVjLTExZTctYmQ2Zi1hZjllYTk1ZjlkNWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NTFkOWI0ZTQtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjVmOTNiYTc1LTM5MmUtMTFlNy1hODFlLWJmZjYzYzUzMDNiMjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3M2YwMDEzMC0zOTVhLTExZTctYWMzNi1mYjM1MWVjZDY0OWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OGJkNDA0MmEtMzcwNS0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhiZGI1MWEyLTc2N2QtMTFlNy1iZmQ2LThmNWRlOTRkMWY0MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphY2Y2Yjk2Yi01ZmU1LTExZTctOTc2Yi1mMzY1N2ExMTczNjk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YjVlZGRjMDktMzZmNy0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ2YTMzNDc2LTJiZjUtMTFlNy1iZDZmLWFmOWVhOTVmOWQ1ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDplNWNjNTliMi0zNmY4LTExZTctOWE1ZC1jZjVhODMyYzI5NzA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWQ5Yzc0YzYtMzZmYi0xMWU3LTlhNWQtY2Y1YTgzMmMyOTcwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyMjg2NzJhYi01NTJlLTg4NDctYTY0Ni04ZjA1OTA1NTBhNzE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjJkYTk1YjVlLTZjMjQtNDQ0MS1iYzQxLTM3ZTI4OWNiYzkxNDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NDUyZDA5OTQtY2Y2MC0yMTQwLTg4MGYtZGEwMmRkMjA4OGJhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo1OEJBN0EyRjJFOTkxMUU3QUQzMThFODMwN0Q1RUQxMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NzFkNGE3MTgtZDRkMS1iNDRmLWIxZGMtNmYzN2E1MWZiY2ZhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4MTNmYjI3My1mNmU5LTk3NDctOTQyOC04ODRmMGVhZDBhYWU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkI5NTBBRDAyMTA5RjExRTdCRUZDQTk3N0MxQkU4RDFBPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpEMUM0NjAwMzBFNEYxMUU3QkVGQ0E5NzdDMUJFOEQxQTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTUxZjdhYWMtMDI4ZS05NDRkLThjNmUtNGE4Yjg4YmYzY2VkPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpkYWY4ZDZiNi1lZTBmLWYzNDAtYTRlZS00MjUxMWUxN2I0OTE8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5ECtRnAAACQklEQVQ4jZ2US2sTURSAv3Nn8rIUExf+gtJFoQoF/4BbS2sX4gNfIN1IrSm4rX9AMYp2UxCkLqSlrWldiDuXbkSQYO2iulRQtCHUZiade1xkkkym01A9MHDveXz3PO5cGS2PAyB0ZH28zGFktDzRXltjObExhJvkOLZ2trNRmVSYAxxUplV0rtchppdRVaYU5oEUYBB9AhT/F3gTeBxXCpSA6X8F3lKVdmmeFTzb6bLAI2AmKTCph0VVKbU2ChRSFoCdQNrDE3ig4AD3e2V4OwprZTczWGNmsNaVZQi9B9zpAr5qXRGVKVV5GE83UBjO+wznfQLdX04ILcYzvKoJA7Da/OqBUA+kvU+AloBJJ3BCoMqzqIM2ncg4ihup0pWmTkKfbqrO7+b+DLghwBfIRDNrqHD6eJ2RYx59bjP87tA273+nefP9CEYUJ3JYxsuwcOW5GgCjchHwW0ZHwLOwWXM5VWiQzQZkswEjhQafamk8SxcM2BOVC/Xc7pYJe/DSqJwDvJbH0ZRSqaaYreSxe4a9hmG2kudz1aU/1VWwL3AeWHQCB+fDyY8tw6YgGyqcAdIK5Bz4suOy7Rve/czy9keWfFqj/dsVuAYsG+vwdWBr38VeMSquFX0K9CnQn7K8/paDcB2D3QCWooCkP2XRqKgVXQAyAqRNExNpmx/CXsSDE58vYElUfBVdBNImPgC4BKwkBR742giU44OiM4BEWE9gKOtG5bLAL6CK6HVgtVfAQSW3ZW1idRlYjurGIk9/XP4Cgr3TAgzOotoAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF62lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wNS0yMVQxMjozODo1MSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wNS0yMVQxMjozODo1MSswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDUtMjFUMTI6Mzg6NTErMDU6MzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDg1Y2NhY2QtNDQxOS04YzQ1LTkxZjUtMDZiNmYzMTY2NWY3IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZjQ0ZTI1MTItNWQwYi0wNjQ3LWI1MmEtYTA1YTZlY2M1OWUwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZTk2ZDlhYzgtNmRkMy05MjRmLTg0NWYtZTYzZjNjMmUyMDI4IiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplOTZkOWFjOC02ZGQzLTkyNGYtODQ1Zi1lNjNmM2MyZTIwMjgiIHN0RXZ0OndoZW49IjIwMTktMDUtMjFUMTI6Mzg6NTErMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4NWNjYWNkLTQ0MTktOGM0NS05MWY1LTA2YjZmMzE2NjVmNyIgc3RFdnQ6d2hlbj0iMjAxOS0wNS0yMVQxMjozODo1MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz55qnwLAAABGUlEQVQ4jbWVMUpEMRCGv9ndQmy8wBZq40U8glcIWLgBkW1WwW32VbuIY6GQwmtYeBBttPAENiLoOha+B/HJmgTeTpNA5v/yZzIhYmZ0Hb3OicCgmQTRfeAWqJz565QwiA6BO2AH+AAOnPn7ttM9YAhcBdHjDEO7wDawCWzVetrQZT32gUUQnSSgX5Em1q+sqQCzIDrNcPwnUhd1HkRnXUMBJkF03jUU4CSIXgbRQTq1rE89P52xkUrM2jmKQ+ATGP2XtJYXVQq9AcZdQhUYOfPvqcTcms6d+aTDJnKcViXAHOjUmT8tAcLq4xtw5sxXpcA2tF+PS2DszF8ktL1IE+t/Hf8ReAGOMoAAT8Az8Aa8Ag/Ngqzjj/oGQd9GUJ7Pcf8AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGymlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTExLTA3VDE2OjU5OjAyKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTAzLTE5VDE0OjIxOjUzKzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wMy0xOVQxNDoyMTo1MyswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5M2NkZmQ4OS0xMDA1LWE2NDQtYmI4MS1lODQxZjQ4MTNmYTIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmY2Y4ZDI5ZS02NDBiLWQyNGYtODM2YS0zODFhZmMwZmFkMTQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiYzFkZjIyNS1hMmQxLTMyNGYtYWU0Ny04ZDk5NGViMTRhZGIiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmJjMWRmMjI1LWEyZDEtMzI0Zi1hZTQ3LThkOTk0ZWIxNGFkYiIgc3RFdnQ6d2hlbj0iMjAxOS0xMS0wN1QxNjo1OTowMiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiMTJiYTlkMC1mMjNmLWVkNDEtYWY3NC0yNDdiNTg4OTI3NTYiIHN0RXZ0OndoZW49IjIwMTktMTEtMDdUMTY6NTk6MDIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTNjZGZkODktMTAwNS1hNjQ0LWJiODEtZTg0MWY0ODEzZmEyIiBzdEV2dDp3aGVuPSIyMDIwLTAzLTE5VDE0OjIxOjUzKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ARkWsgAAAbhJREFUOI2tlL9LHFEQxz/vEUWvEUlnkSBXHcROIhgF7YPBU1xIl/wNueL9AbJgK2kOhKQRhERBYhE0WKggcoJcoQipUqRNYZGcynspdvYyt7e3icRpdt7Mdz5899eYEAL3GQ/+JvDOLAIbcoxsHD4U6W0OoOSdGVOlJ6Kzkqe6Me9MqRDonRkFGkDTOzNT4HoGaAINmekGemceArtARUpvegFVrwLsymyXwzpQlvwKWC0ArooGmal3AL0zT4FqahZ4YePwuRdNevOiBah6Zya0w9dK/97GYb/AXQr9ArxTpVcaOKsadf491lQ+q4H6TZ3dAXiq8lEN7JPrLdDKDF31yAGuZaYd6Z/yHRiRcxn4qjRvgUvJ9zLAcobRPhwAkeQRsJxO2Dj8Aj6RH5HKj+HPLX9UjZp35lEPQDtEU1OlTQ3cAs4lHwJ2iqDemcfAjmgBLlKgSdeXd2YcOAL6RfQDWAHWbRy+KdBLcTYsuhtgysbhpAMoA3Mkq2ogY+onEIDsdmkBSzYO22mhY9tIY5Jkk+gYzIE1gWca1uVQObXAc2ABmCb5pCD5NA5Jnte2jYPPzuYC/yd+A4Efhl9SmDnNAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAMCAYAAAAK/x/DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHaGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTAzLTE5VDE0OjM1OjM3KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTAzLTIwVDE1OjA4OjI3KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wMy0yMFQxNTowODoyNyswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTM3MDUwYS1kYjQ3LTQ1NGYtODY1ZS1jZGM1ZTRmYmNkZjIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiMTUwYjhhOC0yZDIxLTI2NDgtOGVmZS05YmU1ZTJlMDA5YmUiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjMDhhZmRhNy03YzNkLTlhNDQtYWFmZS00ZjgyZjY0NGYwOWYiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmMwOGFmZGE3LTdjM2QtOWE0NC1hYWZlLTRmODJmNjQ0ZjA5ZiIgc3RFdnQ6d2hlbj0iMjAyMC0wMy0xOVQxNDozNTozNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozYmU3ODA4Zi04ZjNkLWYxNDItOThmZC1iYTdjMjI1ZDkzY2EiIHN0RXZ0OndoZW49IjIwMjAtMDMtMTlUMTQ6MzU6MzcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTUzNzA1MGEtZGI0Ny00NTRmLTg2NWUtY2RjNWU0ZmJjZGYyIiBzdEV2dDp3aGVuPSIyMDIwLTAzLTIwVDE1OjA4OjI3KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2YTI2ZTNkMi1lZWI0LTc3NGEtODRmYi03MzAwMWI5ODBjZjE8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6wfLujAAAAhElEQVQ4je2UMQqAMBAEJ2Ih2NhLej+ij9Zf+AMRH2AhWBkLPQQ9sPK0cOCaENghZM+FEPgS0dsCZ+KmrhOgBTwwAstDWYHjATKgK6uquAgBM5ADyT5WeO1QjCdDEUHNFCFnKCKomZ/71CL0RvfVTBFKDUUENTNma9aAfe177ZL7N/UNKwAkGET3/gZKAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFw2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTEyLTIyVDE0OjIxOjIxKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTEyLTIyVDE0OjQ1OjM1KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0xMi0yMlQxNDo0NTozNSswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdmZmE5NTgtNzI4ZC01ZDRiLTg2NTktMjY2NzZmM2EzNDJmIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjAyNDNiZDczLWNlNzctNjI0NC05NzQxLWJhOWViMDNmZmNlMCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjAyNDNiZDczLWNlNzctNjI0NC05NzQxLWJhOWViMDNmZmNlMCIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDI0M2JkNzMtY2U3Ny02MjQ0LTk3NDEtYmE5ZWIwM2ZmY2UwIiBzdEV2dDp3aGVuPSIyMDIwLTEyLTIyVDE0OjIxOjIxKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjA3ZmZhOTU4LTcyOGQtNWQ0Yi04NjU5LTI2Njc2ZjNhMzQyZiIgc3RFdnQ6d2hlbj0iMjAyMC0xMi0yMlQxNDo0NTozNSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg1Vb1oAAAAZSURBVCiRY0yMT2AgGjARr3RU9ahqmqgGADFOAT5Rqfi7AAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/DataNotAvailable.f437c910.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF9GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTAyLTI0VDExOjQ3KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wMi0yNFQxMTo0ODozNyswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0wMi0yNFQxMTo0ODozNyswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4NjE2NWRlZS05MzAxLTZiNDgtYjE4NC0zZGQwMTFiYjc5NjciIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNjZjZTVhYi0zNDc4LWM4NDEtYmNhNS1lMWVlZjRiM2U0NzYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NzBlODA3ZC0zNWVjLTY4NGYtYTlmNC0xNmE4ODA1Y2Q0N2QiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ3MGU4MDdkLTM1ZWMtNjg0Zi1hOWY0LTE2YTg4MDVjZDQ3ZCIgc3RFdnQ6d2hlbj0iMjAyMC0wMi0yNFQxMTo0NyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4NjE2NWRlZS05MzAxLTZiNDgtYjE4NC0zZGQwMTFiYjc5NjciIHN0RXZ0OndoZW49IjIwMjAtMDItMjRUMTE6NDg6MzcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5gZkAIAAAA1UlEQVQokZ3SMU4CQRSH8d8SLQw38AJa2pIQaSw5wUY7T0EsPYYdhhNQEZs1JttS4gW4gCEWENaCN5ttdrPyr2befN/MZOZlVVU5JxfNyWQxusYjpriN8gZLvBd5uU1slk6cLEZ3eMU9rhqbHvCLT7wUebmuxTjpDQ+4bLndHh94LvJyO4jiE8YdklgbByuJUww7pJRhsLV40xh3ZRBsL7h1B/jGsQd/DLYWl9j1EHfB1uIcX05P3pZ9MPNajI6YYYUfp09POURthVnqnqzZq2e13H/zB96kReFmHNBwAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF9GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTAyLTI0VDExOjQ3KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wMi0yNFQxMTo0OToyNiswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0wMi0yNFQxMTo0OToyNiswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpjNDg3MGU3Mi1mYzI0LWQ0NDAtYjVjYi0xZTc5MWQyZTdkYzUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiMDM3YTdlMi1mMjA2LTczNDktOTQ5Ny00ZDlhNTk3YTEzZTciIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplNmE1NmY1NC1hZjIxLTQyNDgtOTVmMi00YmY5MmY2Y2Y4ZTEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmU2YTU2ZjU0LWFmMjEtNDI0OC05NWYyLTRiZjkyZjZjZjhlMSIgc3RFdnQ6d2hlbj0iMjAyMC0wMi0yNFQxMTo0NyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjNDg3MGU3Mi1mYzI0LWQ0NDAtYjVjYi0xZTc5MWQyZTdkYzUiIHN0RXZ0OndoZW49IjIwMjAtMDItMjRUMTE6NDk6MjYrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7N7gjBAAAA00lEQVQokZ3SMU7CYBjG8R+NDIYwuHIBHD2AYTJMHEESJcZDEEfjMcCkHIETEA7gqBfoDYgDhjr0bWkMNg3P1H7v///ma/p08jx3Ti5g9vBYvg9wjwmu4+wTa6yQweJ9WYiRG7xihMtyKa5iNsILPtSGA7zhDt0Tt+pjjARPyJIYTnF7QqqnG8xUbBDf1GuQyvSCrcRh7bkpSbCt4H83wBcOLfhDsJW4xq6FuAu2ElNssW+Q9sGkHP9jhnlc5W8BfvCNjaIAWV2kaMSzFpWDzrkl/wWTAyxR5MsHzAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF9GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTAyLTI0VDExOjQ3KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wMi0yNFQxMTo1MDoxMiswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0wMi0yNFQxMTo1MDoxMiswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0OWFiOWQ3Zi0xNGQzLTcyNDMtYWQ1Ny1iYWVkNjY5ZGNiNjQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjODViOTZhZi0yODc3LWQ0NDQtYTkxNi1jYTA4ZmNkNjFiYjAiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpkMjIwNWVjMy1kZjA4LTU5NDUtYjNkZS1iYmUzNzkyMWFiMTQiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmQyMjA1ZWMzLWRmMDgtNTk0NS1iM2RlLWJiZTM3OTIxYWIxNCIgc3RFdnQ6d2hlbj0iMjAyMC0wMi0yNFQxMTo0NyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OWFiOWQ3Zi0xNGQzLTcyNDMtYWQ1Ny1iYWVkNjY5ZGNiNjQiIHN0RXZ0OndoZW49IjIwMjAtMDItMjRUMTE6NTA6MTIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz403LnOAAAAz0lEQVQokZ3SsW3CUBSF4c9WKCKUgpYFkpIBIipElRGgQ9khUUpEBiEjMEGUASjJAt7ASkFkU/jasSKwLE5lv/v/V8/yScqydE1uoHhJ6vcxFnjCQ5wdsMMHMkjfy0qMTLDGFLf1UoxiNsUb9lrDMTaYYXDmVneYI8UKWRrDJR7PSO0MglmKDeKbhh1SnWGwjXjfeu5KGmwv+OIG+EbRgy+CbcQd8h5iHmwjbvGFY4d0DGbL33/M8BpX+V+AX/zgU1WArC1SNeJZj8pBcm3JT6LzLFGxzsguAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF9GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTAyLTI0VDExOjQ3KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wMi0yNFQxMTo1MTo0OSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0wMi0yNFQxMTo1MTo0OSswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZTJiYmM1Ny03ZjUxLTQ3NDYtYjA5NC0wYjQxZjI0OTUyODAiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmNTQxNjkyNC05MTc0LTc1NGItOWFhZC1lYzE2YTUzZmYyMmIiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMGQ2NzllMS02MWIzLTBiNGYtOTFkYS04NTJmNWQ5YzlmYTkiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwZDY3OWUxLTYxYjMtMGI0Zi05MWRhLTg1MmY1ZDljOWZhOSIgc3RFdnQ6d2hlbj0iMjAyMC0wMi0yNFQxMTo0NyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplZTJiYmM1Ny03ZjUxLTQ3NDYtYjA5NC0wYjQxZjI0OTUyODAiIHN0RXZ0OndoZW49IjIwMjAtMDItMjRUMTE6NTE6NDkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5ySAQjAAAA0ElEQVQokZ3SsW3CUBSF4Q8LCoRSpGWBUDJARJW4ygjQoQwRUUZZhIxABV3EAJTJAt4AUYAwha8dKyKWxansd///6lk+nTzP3ZIubNbr8n2IKV4wirNvrPCJDJ7TtBAjY7xjgn65FPcxm2CBndpwiA88oXflVndIkWCOLInhDI9XpHp6wczEBvFNgwapzCDYSnyoPTclCbYV/O8G+MG5BX8OthJX2LcQ98FW4hJbHBukYzBLfv9jhre4yt8CnHDAl6IAWV2kaMSrFpWDzq0lvwDFQyxRwayxVgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFKmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEwLTIzVDEzOjMwOjE2KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMC0zMVQxMjoyNTo1MiswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMC0zMVQxMjoyNTo1MiswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplNTJjNWVmYS01ZThhLTljNGEtODQyOS00MTViZjMwZjRkNzUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3NzBmZmEyMC0wMzVjLTg1NGMtOTVhNy0yZGFjNDk0ZjY1ZDQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplNTJjNWVmYS01ZThhLTljNGEtODQyOS00MTViZjMwZjRkNzUiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmU1MmM1ZWZhLTVlOGEtOWM0YS04NDI5LTQxNWJmMzBmNGQ3NSIgc3RFdnQ6d2hlbj0iMjAxOS0xMC0yM1QxMzozMDoxNiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkdR5AgAAADQSURBVCiRndKxTQMxFIfx30VQoGzAAlAyQERFmRGgY4oIyTqJMejCCKkiKsQAlLBAFkARRaKYIs/WNXc68q/s5++zLfs1OWen5Kw7aZv2EveY4zrKX1jhNeW0KWxTTmyb9gbPuMVFZ9M9fvGOp5TTZxXjpBfc4bzndju84THltJlE8QGzAUmszYJVxDmmA1LJNNgqXnXGQ5kEOwru3QG+cRjBH4Kt4grbEeI22Cou8eH45H3ZBbOsYnTEAmv8OH56yT5qayxK9zTdXj2p5f6bP+zSRhezH/YKAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF62lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0wNi0yNlQxNToyNjo1NyswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDYtMjZUMTU6Mjg6NTQrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMDYtMjZUMTU6Mjg6NTQrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTdiYWM5OWQtNTg1NC0xZDRlLWI5ZjAtMDc2OWEyNWUwN2E5IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OTIwODMzMTgtNmE2OC1mZTQwLWExNzUtNGFmMzAwMDY2NThjIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MzYzZTdkZmYtNmZkNC1kYzQ5LWJmNmYtM2MyM2MwZmNkNTFkIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNjNlN2RmZi02ZmQ0LWRjNDktYmY2Zi0zYzIzYzBmY2Q1MWQiIHN0RXZ0OndoZW49IjIwMTgtMDYtMjZUMTU6MjY6NTcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk3YmFjOTlkLTU4NTQtMWQ0ZS1iOWYwLTA3NjlhMjVlMDdhOSIgc3RFdnQ6d2hlbj0iMjAxOC0wNi0yNlQxNToyODo1NCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7z4b7DAAAA0UlEQVQokZ3SsU0DMRSH8Z9PUKBskAWgZICIijIjkI4lElEi3RJ0YYRUERViAEpYIAugiCLRmSLPp2vudORf2c/fZ1v2Szln5+SiO2mWaYoHzHET5S9s8FrVeVfYVE5slukWz7jDVWfTI37xjqeqzp+tGCe94B6XPbc74A2PVZ13VRQXmA1IYm0WrCLOMRmQSibBtuJ1ZzyUKthRcO8O8I1mBN8E24ob7EeI+2BbcY0PpyfvyyGYdStGR6ywxY/Tp5cco7bFqnRP6vbqWS333/wBrZpFLRxaT2sAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGymlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEwLTIzVDEzOjMwOjE2KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wNC0wMlQxMzowMzo1MyswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0wNC0wMlQxMzowMzo1MyswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiMzg2OTk5NC00ZjFlLWNjNDgtYWM4NS03NDU2MTUxMDU5YTUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3NzBmZmEyMC0wMzVjLTg1NGMtOTVhNy0yZGFjNDk0ZjY1ZDQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplNTJjNWVmYS01ZThhLTljNGEtODQyOS00MTViZjMwZjRkNzUiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmU1MmM1ZWZhLTVlOGEtOWM0YS04NDI5LTQxNWJmMzBmNGQ3NSIgc3RFdnQ6d2hlbj0iMjAxOS0xMC0yM1QxMzozMDoxNiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo3ZmVhZDcwMC1jNTkxLWI2NGEtOGJjZS1lODQ2OGFkMzI3NjMiIHN0RXZ0OndoZW49IjIwMjAtMDMtMjZUMTM6MTk6MDIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YjM4Njk5OTQtNGYxZS1jYzQ4LWFjODUtNzQ1NjE1MTA1OWE1IiBzdEV2dDp3aGVuPSIyMDIwLTA0LTAyVDEzOjAzOjUzKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+fFSdewAAANJJREFUKJGd0jFOwzAUh/FfqjCg3iAXgJEDVEyMPQJs7NkrRi7Qna0coVPFhDgAI1wgF0AVQ62Goc9RlkSh/8l+/j7bsl/Rtq1zUvYnzbqscI8lrqP8hS1eqzo1mS3yic26vMEzbnHZ2zThF+94qur02Ylx0gvucDFwuwPe8FjVqZlF8QGLEUmsLYKVxSXmI1LOPNhOvOqNxzILdhI8uAN84ziBPwbbiVvsJ4j7YDtxgw+nJx/KIZhNJ0ZHrLDDj9On56So7bDK3VP0e/Wslvtv/gCsPkUnaoMpwwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAM+mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wOC0xNlQxNToyNTozOCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDgtMTlUMTA6NDM6MTcrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDgtMTlUMTA6NDM6MTcrMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6YmFhN2QxNDgtODk0MS1iNzRiLTljYmMtYmRmNGI1ZWUyMDdjIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MGI4NGMwZGQtY2Q5NC1jYTRjLThlNWEtMWQwNDBkMDQyMDU2IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3IiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlhSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6WVJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgZXhpZjpDb2xvclNwYWNlPSIxIiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjQiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSIyNCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3IiBzdEV2dDp3aGVuPSIyMDE5LTA4LTE2VDE1OjI1OjM4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYjcwZjA1YS1lNTQ4LTkwNDAtYThkYS1jNDkwZTcwMmJmMmUiIHN0RXZ0OndoZW49IjIwMTktMDgtMTZUMTU6Mjc6MjkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmUxMTc4YTk3LWUwNGMtYzA0Mi1hYWU5LWQxZWJiMTIwYmMxZCIgc3RFdnQ6d2hlbj0iMjAxOS0wOC0xNlQxODo0MDo0MCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTgxNDhhYTUtYWExMi0yYzQ4LWI5ZTYtMDA3Mzc3Zjc2ZmQxIiBzdEV2dDp3aGVuPSIyMDE5LTA4LTE2VDE4OjQwOjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpmMGU4NjUwMi02MTcwLWMxNDgtODQ3OC1lN2Q5Y2UyNmM2MTQiIHN0RXZ0OndoZW49IjIwMTktMDgtMTlUMTA6NDM6MTcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmJhYTdkMTQ4LTg5NDEtYjc0Yi05Y2JjLWJkZjRiNWVlMjA3YyIgc3RFdnQ6d2hlbj0iMjAxOS0wOC0xOVQxMDo0MzoxNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZjBlODY1MDItNjE3MC1jMTQ4LTg0NzgtZTdkOWNlMjZjNjE0IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NGE0YzFlMDMtZDRlZi1kMDQ5LTkxZWMtMjc1NmU5YTNmYzk1IiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jVzx3QAAAwRJREFUSIm11U+IVXUUB/DPc9483kTglEwhtYqQFloQ2F+0GCkO5KKsRbQIsgyzRVGRrcoiBCEhoULSkKBF4KaCmhOk0mihWRQtCoZUKigKF1nNvBpnvC3ufXV9zhtL6MCFe87vnO/3/M7vd86vURSF/1OaZ3PIzCHchbVYigKf4zW8ExF/zBffmG8HmTmMl3FPH5ft2BgRv/bDWDAPeBtbe8Cnqq8r67EpMwf/MwFuwR01/SCewJP4tGa/G9f3A5nvDG7GBdX/V7gzIn6AzHwPH+AyLMZKjP/rHWTmAEZqpte74JV8izdr+sX9suxXogKzNf3KOXyW1v5P9SOYs0QRcSozj9VMazLzcbyKAWxA1NbrvmcnqORj/Kis8VCj0djcbrc3NRqNVqfTGSiKYqDyO4qP+oHMd4vGW63W0a5SFEWr0+mcPzU11aqBa7fb3ysbb045o9EmJiYW40GsmpycXHH8+HGzs7NzBjebTSMjI4aGhsbxLrYtWbLkzzkJDh8+vBr3YU1t/ciJEycmZ2ZmlqHRg180m82DCxcuHMHl3fywBy8uX7584m+CvXv3vo9bK6eTeEt5oHump6evw25c0kNwBKtbrdYEbsMjWFVb3zU6Orq2MTY2thWPVQE7sCsifq4jZeZ2rPPPmZ3CCxGxscdvGR5Vjpc2NjfGxsYO4RpcGxGf9GQpMxvKm3QIl1bmb3A1fo+IM6ZlZq7Eh9i/AAcq+7M9ToOZeSGGqy7eWWVeYFtE/IbhzFyUmRdl5nm1hJ6rYPYvwDPKRonMvKFLEBEnMYPZKmiLcpL+FBEvZWZT2e2DGEanCr0XNynn19ONoihk5hbllNwXEaO9W67tan1Vljd67M2ImMnMRfhaOcfWRcTOLsEgvsQVGI2Iff1I5pPM3IEH8HZE3E51K6py7K78nj9H8Btxf6U+1bWf1smZ+QWuUl6zQ8oa93sOpyNisoobxGdYhu0R8VA/gg3KN/hc5UBErKgbTht2EfEKHlY+JsfwHX7p89Xf5hnsU9b/NPkLq5woqk2Z+gMAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAM+mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wOC0xNlQxNToyNTozOCswNTozMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDgtMTlUMTA6MTg6NDErMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDgtMTlUMTA6MTg6NDErMDU6MzAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MWRhMjJlZTctNjllZi0xYTQ1LWIwMTItNDljZGFiMjlmMDY1IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YTg4MzNiYzQtOGQ1YS00ZjRmLWI3M2QtODYyY2ZjYjU5NzA5IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3IiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlhSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6WVJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgZXhpZjpDb2xvclNwYWNlPSIxIiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjQiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSIyNCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3IiBzdEV2dDp3aGVuPSIyMDE5LTA4LTE2VDE1OjI1OjM4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYjcwZjA1YS1lNTQ4LTkwNDAtYThkYS1jNDkwZTcwMmJmMmUiIHN0RXZ0OndoZW49IjIwMTktMDgtMTZUMTU6Mjc6MjkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmUxMTc4YTk3LWUwNGMtYzA0Mi1hYWU5LWQxZWJiMTIwYmMxZCIgc3RFdnQ6d2hlbj0iMjAxOS0wOC0xNlQxODo0MDo0MCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTgxNDhhYTUtYWExMi0yYzQ4LWI5ZTYtMDA3Mzc3Zjc2ZmQxIiBzdEV2dDp3aGVuPSIyMDE5LTA4LTE2VDE4OjQwOjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiMGY3ZDNhNS1hMzJkLTJlNGItODE4OC00ZjkxMmE5YzcwMDgiIHN0RXZ0OndoZW49IjIwMTktMDgtMTlUMTA6MTg6NDErMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjFkYTIyZWU3LTY5ZWYtMWE0NS1iMDEyLTQ5Y2RhYjI5ZjA2NSIgc3RFdnQ6d2hlbj0iMjAxOS0wOC0xOVQxMDoxODo0MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YjBmN2QzYTUtYTMyZC0yZTRiLTgxODgtNGY5MTJhOWM3MDA4IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NGE0YzFlMDMtZDRlZi1kMDQ5LTkxZWMtMjc1NmU5YTNmYzk1IiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MTliMGYyMGItYmJhZi0yMDQzLWIzNjAtNTQ5YzJjODRhMGM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NFnSwwAAAwtJREFUSIm11UGIlVUUB/Dfm+cM6kS8SadBahWBLbSgRU6FFu9QCLkom0W0CHIy1E1Rma3KIgSZhIQKSQcJWgS6qKAg6CCphRNF0aJE0oikYXIhVE6ZM74W3zf2+Zw3ltCBD+4993/+/3vPved8tVar5f+0eZcDRMQCDGEdlqGFrzCK9zPzz7nia3OdICIaeB0Pd4DswpbM/LUTR9cc5POxo418svxmbAO2RkT3fxbAPXigMj+CZ/Asvqj4H8LtnUjmuoO70VeOv8WDmfkzRMSH+Bg3YAlW4eC/PkFE1NFfcb01Q17aj3inMh/otMtOKWphujK/eRbMssr4fCeBWVOUmecj4oeKa21EPI03UccmrK6sV7GXFyjtM4wrcrygXq9vW7x48daurq6eU6dO1aempuol7gQ+7UQy1ys62Gg0TsxMpqeneyYmJq4aHx/vqZDr7+//SVF4s9olhTY6OroEjyNOnjy5cmxszNmzZ2cN7u3tNTg4aGBg4CA+wM7h4eGLwBcENm/evAaPYm1l/fjRo0fPTE5OLketjb/V29t7ZOnSpf24sfQdQ+LVkZGRYxcEhoaGPsK9Jegc3lVcaJ4+fXoQ+3Bdm8BxrOnr6zuG+/AEorK+d//+/etqzWZzB54qA3Zjb2b+UmWKiF1Y7587O49XMnNLG245nlS0l/nYVms2m2O4DSsy8/O2XYqImuIljeH60v09bsXvmXlJt4yIVfgEh7pwuPS/2Abqjohr0CireE+58xZ2ZuZvaETEooi4NiIWVjb0UklzqAsvKApldUTcMSOQmecwhekyaLuik05k5msRMU9R7d1o4I8y9BHcpehfz9darZaI2K7okgcys9l+5MqpNpRpebvNPy8zpyJiEb5T9LH1mblnRqAb3+AmNDPzQCeRuSwiduMxvJeZ91O+ijId+0rcy1dIfieGy+lzM/6LKjkivsYtimc2pshxp9/hX5l5pozrxpdYjl2ZubGTwCbFP/hK7XBmrqw6LuqmmflGRMBKrFC05qs7kPVgYTmewiFsbAf9DQEDFDEaZVzSAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABQCAYAAABFyhZTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAPP2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMDItMDFUMTA6MTA6NDgrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMTEtMDFUMTI6MjE6MjUrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTExLTAxVDEyOjIxOjI1KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxNThkYTQzMC1lYWU5LWY0NDQtYjk1Mi0yOTc5ODM1NmQzZmUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyMzhjNDZlNC1iYTMzLWIyNDgtODZhYy1jZDE1ZWUyOTdkMWYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOGRkNzc2NC01ZTUxLTBiNDQtOGZkZi1hNGUyZDM0Yjk0YWUiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MzhkZDc3NjQtNWU1MS0wYjQ0LThmZGYtYTRlMmQzNGI5NGFlIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEwOjQ4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ZGFlNWQwZi0zMGEzLTA0NDEtOTBmMC01YzRmOWE3YmY4ZTUiIHN0RXZ0OndoZW49IjIwMTgtMDItMDFUMTA6MTI6MjIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM0MzdmMDY2LWQ2MjAtZDg0NS04YmNhLTI1YjcxNDI0ZDk1OCIgc3RFdnQ6d2hlbj0iMjAxOC0wMi0wMVQxMDoxMzoyMCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmViNWYyY2UtZTIyYS1lZjQzLTg5MGUtNmM3NWRmOWZlYjJkIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEzOjIwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1Yzg1NmM5OC02OTgyLWVmNGYtYjI3OC05MTk0MjE4MTBmMjEiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MDY6MzArMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Mjc2ZDdjNDYtYzJkNy1hZjRmLTk5YWItNjljZTU1OThmODVkIiBzdEV2dDp3aGVuPSIyMDE5LTExLTAxVDEyOjA2OjMwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmFjNmFlYzRlLTFmYjYtNzc0ZC1hOGI2LTAwMWIyNmMwNzU3YiIgc3RFdnQ6d2hlbj0iMjAxOS0xMS0wMVQxMjoyMToyNSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImRlcml2ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImNvbnZlcnRlZCBmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxNThkYTQzMC1lYWU5LWY0NDQtYjk1Mi0yOTc5ODM1NmQzZmUiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MjE6MjUrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWM2YWVjNGUtMWZiNi03NzRkLWE4YjYtMDAxYjI2YzA3NTdiIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3NmQ3YzQ2LWMyZDctYWY0Zi05OWFiLTY5Y2U1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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABQCAYAAABFyhZTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAO82lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMDItMDFUMTA6MTA6NDgrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMTEtMDFUMTI6MDk6MzMrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTExLTAxVDEyOjA5OjMzKzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NjBmNDYzZC04YjQxLTI5NDEtODQzMC01OGFhY2VjNzI1N2EiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxOGJkYmZmMi0wMGY4LTYxNGItOTk0Mi1lNDBhOTNmOTg1MzAiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOGRkNzc2NC01ZTUxLTBiNDQtOGZkZi1hNGUyZDM0Yjk0YWUiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MzhkZDc3NjQtNWU1MS0wYjQ0LThmZGYtYTRlMmQzNGI5NGFlIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEwOjQ4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ZGFlNWQwZi0zMGEzLTA0NDEtOTBmMC01YzRmOWE3YmY4ZTUiIHN0RXZ0OndoZW49IjIwMTgtMDItMDFUMTA6MTI6MjIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM0MzdmMDY2LWQ2MjAtZDg0NS04YmNhLTI1YjcxNDI0ZDk1OCIgc3RFdnQ6d2hlbj0iMjAxOC0wMi0wMVQxMDoxMzoyMCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmViNWYyY2UtZTIyYS1lZjQzLTg5MGUtNmM3NWRmOWZlYjJkIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEzOjIwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1Yzg1NmM5OC02OTgyLWVmNGYtYjI3OC05MTk0MjE4MTBmMjEiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MDY6MzArMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Mjc2ZDdjNDYtYzJkNy1hZjRmLTk5YWItNjljZTU1OThmODVkIiBzdEV2dDp3aGVuPSIyMDE5LTExLTAxVDEyOjA2OjMwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmQ4NDU5MWI4LWMzNzUtNjI0YS05MTcxLTA4ZWVkYTU0ODg2YSIgc3RFdnQ6d2hlbj0iMjAxOS0xMS0wMVQxMjowOTozMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImRlcml2ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImNvbnZlcnRlZCBmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NjBmNDYzZC04YjQxLTI5NDEtODQzMC01OGFhY2VjNzI1N2EiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MDk6MzMrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZDg0NTkxYjgtYzM3NS02MjRhLTkxNzEtMDhlZWRhNTQ4ODZhIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3NmQ3YzQ2LWMyZDctYWY0Zi05OWFiLTY5Y2U1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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABQCAYAAABFyhZTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAPP2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMDItMDFUMTA6MTA6NDgrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMTEtMDFUMTI6MjA6MTcrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTExLTAxVDEyOjIwOjE3KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1MzY4NzczMy05MDM2LWNlNGUtYWFhMC01MzM4M2E4ZTI4ZTAiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1ZWE2Zjk4MC0xOGJhLWRkNDctOWQyNS1lY2I5YWRlM2M5MGYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOGRkNzc2NC01ZTUxLTBiNDQtOGZkZi1hNGUyZDM0Yjk0YWUiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MzhkZDc3NjQtNWU1MS0wYjQ0LThmZGYtYTRlMmQzNGI5NGFlIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEwOjQ4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ZGFlNWQwZi0zMGEzLTA0NDEtOTBmMC01YzRmOWE3YmY4ZTUiIHN0RXZ0OndoZW49IjIwMTgtMDItMDFUMTA6MTI6MjIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM0MzdmMDY2LWQ2MjAtZDg0NS04YmNhLTI1YjcxNDI0ZDk1OCIgc3RFdnQ6d2hlbj0iMjAxOC0wMi0wMVQxMDoxMzoyMCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmViNWYyY2UtZTIyYS1lZjQzLTg5MGUtNmM3NWRmOWZlYjJkIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEzOjIwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1Yzg1NmM5OC02OTgyLWVmNGYtYjI3OC05MTk0MjE4MTBmMjEiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MDY6MzArMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Mjc2ZDdjNDYtYzJkNy1hZjRmLTk5YWItNjljZTU1OThmODVkIiBzdEV2dDp3aGVuPSIyMDE5LTExLTAxVDEyOjA2OjMwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmE3NzQ5YWQ3LTgxY2EtZDY0Zi04MGI3LTZkM2M0MDY3OGYyMSIgc3RFdnQ6d2hlbj0iMjAxOS0xMS0wMVQxMjoyMDoxNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImRlcml2ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImNvbnZlcnRlZCBmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MzY4NzczMy05MDM2LWNlNGUtYWFhMC01MzM4M2E4ZTI4ZTAiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MjA6MTcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YTc3NDlhZDctODFjYS1kNjRmLTgwYjctNmQzYzQwNjc4ZjIxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3NmQ3YzQ2LWMyZDctYWY0Zi05OWFiLTY5Y2U1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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABQCAYAAABFyhZTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAO82lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMDItMDFUMTA6MTA6NDgrMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMTEtMDFUMTI6MTM6MzkrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTExLTAxVDEyOjEzOjM5KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphNWQxNzY0Ni1iMDAyLTFmNGMtYThiNi0xMTZiMzg0NmY4NGEiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjZTZhNmRkZS0zMTNmLTdmNGItYWVmZS1kMWI4ZDQyMTBkYTkiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOGRkNzc2NC01ZTUxLTBiNDQtOGZkZi1hNGUyZDM0Yjk0YWUiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MzhkZDc3NjQtNWU1MS0wYjQ0LThmZGYtYTRlMmQzNGI5NGFlIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEwOjQ4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ZGFlNWQwZi0zMGEzLTA0NDEtOTBmMC01YzRmOWE3YmY4ZTUiIHN0RXZ0OndoZW49IjIwMTgtMDItMDFUMTA6MTI6MjIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM0MzdmMDY2LWQ2MjAtZDg0NS04YmNhLTI1YjcxNDI0ZDk1OCIgc3RFdnQ6d2hlbj0iMjAxOC0wMi0wMVQxMDoxMzoyMCswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmViNWYyY2UtZTIyYS1lZjQzLTg5MGUtNmM3NWRmOWZlYjJkIiBzdEV2dDp3aGVuPSIyMDE4LTAyLTAxVDEwOjEzOjIwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1Yzg1NmM5OC02OTgyLWVmNGYtYjI3OC05MTk0MjE4MTBmMjEiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MDY6MzArMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Mjc2ZDdjNDYtYzJkNy1hZjRmLTk5YWItNjljZTU1OThmODVkIiBzdEV2dDp3aGVuPSIyMDE5LTExLTAxVDEyOjA2OjMwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNlZDE4NmU4LWFlMDgtZDY0Zi04YzQ3LTcyOTZiZGIzNGY5ZiIgc3RFdnQ6d2hlbj0iMjAxOS0xMS0wMVQxMjoxMzozOSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImRlcml2ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImNvbnZlcnRlZCBmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWQxNzY0Ni1iMDAyLTFmNGMtYThiNi0xMTZiMzg0NmY4NGEiIHN0RXZ0OndoZW49IjIwMTktMTEtMDFUMTI6MTM6MzkrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M2VkMTg2ZTgtYWUwOC1kNjRmLThjNDctNzI5NmJkYjM0ZjlmIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3NmQ3YzQ2LWMyZDctYWY0Zi05OWFiLTY5Y2U1NTk4Zjg1ZCIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjM4ZGQ3NzY0LTVlNTEtMGI0NC04ZmRmLWE0ZTJkMzRiOTRhZSIvPiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT54bXAuZGlkOmJjOTM1OTg1LTM0ZDUtYzM0Yi1iMTdhLTIwYTVjM2U1OTU5ODwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptoh6SIAAAXlSURBVHic7ZtriFVVFMd/I5o4vsZXmZWlHwRHekAvpTL7JIqKFJRBWkg6klmoNNUHITCM/JDRO8HogYWpYWEhWdED02CgKTOTMS2zTE0dKxtHnfn3Ye3Be++cM+d1z517Z+4fNveevdfae6+991lr7b3XqZBEd0KPzu5AoVEWuKujkAIPAy4HKgrYZjsUQuDhwBbgMPALsAeYWIB2PVGRspauAL4CbgIagb+BkcA/QDVwMM3GvZD2DFdjwv4OjAZGAeuB/sDdKbftibQFHut+G4ATQCtQl1NWUPTMc32VwPVAH2AAsNzlTwSWAQeAxS5vFvAtNhgtwA/AoTz3pz0k5StNkHRY8XFG0tI89sczBSmtamzp+ZkSARtd+c/YO5po/IErgV3Yu3+xB81ZTCfUA+eit+A/Go9KagmYlUZHOyLBzObiflfn2wF0hyQtUMQZ9lNatwBPEazU+gG9gWPAqcij7Y0D7ndYAN1w4GXgwUi1+4zE2ggzMsPxLI7A44ctknpIqpJ0KiTPn44n0TtcB1wbcsx2AuOB/4BJwFRMS0dBK6ax12Lv6IvAAxH4LwKOhKL0GYn6iDPzmew9TqpFe0t6OmLbitJ2vuzwbcBeYDOmYZsj8vfAXM7pwIg89ckTfku6Hrg6zYbzjEuAP8IQlvfDXR3dTuAoSmsJ0JRWRyLgEWyrGQtRBH4d2+J1NuaQQOBut6SjCFwMs5sYcWf4OaA247nW5RU94npaBzEhG91zLbAyh+Zj7ATjwpht4OpfCBxPUEc2fHxOL186l6ZG0jmXajzK84WZOfV+7UET2pdOW2m15qGOcLugkIi7pGtdatvCrQAGkr2sJwB/AUNj986W9E8J+NshrsCXYsKtds9VLi8TO9zv3phtpIK4Aj+U85yrsIoWZccjJMp2mBJZ1nEFXgmcBF5yzwuBV3NojmFXpEHHrR2hEZgM7EtQRxbyfbeUicEuJcFQ4BqKQOAwdhjgKMlneHcC/nZI0w53amiDH8p2uKujbIdDIowdvgIzXQND1tmEmbFUkaYd3o9dufQOWaeAmcAHIen/xWy9sAu4UEjTDkN4YcG0epgIgqXAr/hfrYwFegHfexWmaYd3Eu2Ipwn4JATd9oDyudi1qyfStMNXxaw7CZ7E4lLq/Qii3B4WpSORgbHAj9iV62Y/oq4k8G9AXwL8967ieKzAXqlnggi7guMxGXjc/X8niDhNx2MWdsQapKWbgQ+BMzH6UQW84f5vxYLjOobPgXWhD+IXefBPl/SRpHEdHKy/n1HHfcVwEB8W/TzyHgOmAJ9iwam5SnMJMMP9PwG8F6ahNB2P1YQ74mkG3vLIn4o5EFOAz4F7gXXY0q8kO976XSz4PBBpOh41Metuw0lgGuavzwXeBC4DnsWC4BZg4ZGTgG2OZwzmW7ehBRiC+dr1QKJ3uJBpmc6HIr4iqZ/LHywLQg0KU5zfVlepCIykOZJOu75sldQ/o+yJDoRdl1lPKQk8RtLZjP40SBrpynpJmi3pSE6fGyRdUKoC7/Do03FJN0uqkNRT0rScvk/IrSeK0noeOB1L/fjjVmxf25CRt532JuYF4EYP/kHAl8AdwCZs03AUWIMpufZbSZ/RrPMYzUJhfU5f7gzJ93AGTx/5rBS/Gd5N+HjpfKM653k/ZosPkW1GK7Av3dZgDsgqYBwwn44C6HxG4jplK4hCosWnT35peQZvq6QNHdH7uZZ1wF1YyEKhEcXdrQBmZzy3Ardjn/95hloEfcZTiYX3DyKdA4Dx7vcI2RdmG0LyT+f8Ked27PR0ExZsvg8T/rssjojLp9jSOreUmySNcnnDJW1z+Y2SpmbydHaHk6QhkpqdYPfklFXJ3mVJOqnz30KVtMA1TqDXfMoHSFrlaE7I+dOd3ekkaY9Mo/fsgKZSUq3su8Z5UvC3h8WKG4BvsK3hFwG0fbH46p2Q/hfiaWEjFnA6LypjsRzxRMFozIwtisNcijNcjfkEu+Iwl6LAiVCKSzoRygJ3dXQ7gf8HvdZ76ORRY+UAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAATCAYAAADxlA/3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGymlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEwLTI0VDE3OjQ0OjEzKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTEwLTI1VDExOjM3OjIwKzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMC0yNVQxMTozNzoyMCswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2NmZiNjI1My02YzEzLWJlNGMtYTlmOC05Nzg0NDZjZTI0MWMiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjNDlmNWUwOC0wOTVmLTg2NGItYTViNi00MWEyYmJiM2EyZTQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NTA3YTdiNi1iZmIxLWVkNDktOTNiYS0xOGUwNzljZTI1MTEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ1MDdhN2I2LWJmYjEtZWQ0OS05M2JhLTE4ZTA3OWNlMjUxMSIgc3RFdnQ6d2hlbj0iMjAxOS0xMC0yNFQxNzo0NDoxMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0MDEyZmEwMC01NWRlLTQ2NDEtYmQ5Mi01OWMyYzJkMGNjYmUiIHN0RXZ0OndoZW49IjIwMTktMTAtMjRUMTc6NDQ6MTMrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NjZmYjYyNTMtNmMxMy1iZTRjLWE5ZjgtOTc4NDQ2Y2UyNDFjIiBzdEV2dDp3aGVuPSIyMDE5LTEwLTI1VDExOjM3OjIwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+6cu+xAAAAhdJREFUSInF1ktvDmEUwPHfVGn1gkgJjWsiLrEQC4kVYeEDWNna2AgLCZGwEbbiU1jZSJpIbCXWxaKJKFWaWFS02tBS7VicU+8Yek/Tk7yZZ955Zs7/3J+iLEtrKc2V9TpsyN/GfNaFc9iPoxjGQ1zKd3rRh/d4g0lM4CcWZVkV4AqO4SD24hk+4VplTy86cCSBzyTwN4ziA17gbQIN5v/jGMOv+QDuob1y357WVGUKRSq/gFvYgie4ide4KDzQiq/Ca+/Qn1ADCdZXBxiuAUzVaWvyJRV9xFOcx11cxSscxia0Ca+exDR+CA+drQMUCyisS5vwRIvwQnNeZ0RIBkUejGFz7hvDjgRTB1iqlHOsm1JZW+VZa8JOCI91LBagaQVwVagiv7U+4Vr+B1DkS8MiVqWI8XDSb10mzLxSBWgSsbsvEuU4hnAdJ3A5QVYNYFrE5k7C9GAPbmvU7/RqAsxKa15LYXEhYrcqMl8SzubEcqTwd1mXojxnPfnHoJWUYTHHekbk0EQqHteogGZsF/3iH4ClWjtRUTYqrBvJZy2i4XSK7tqtUUWl6IT/AHTVFCwU9w6RI904hQO4gdOizXYK60fEkHqeivvnArgjpuEh7MZ3jW5W3V+mtY+wTSTtcTGKd+GxGEr9Ygh91piGk3UrqgAPhOuq54GdojfsE+eBofzYQO7rwcu08LWYfrPngUWVbLHWJ6LfF0mIJtX9X+MAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAATCAYAAADxlA/3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAF+mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEwLTI0VDE3OjQ0OjEzKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTEwLTI0VDE3OjQ0OjEzKzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMC0yNFQxNzo0NDoxMyswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MDEyZmEwMC01NWRlLTQ2NDEtYmQ5Mi01OWMyYzJkMGNjYmUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjMWQwODMwNS1kOTI0LTg5NDQtOTU1OC05YmVkMTZjMDdjZDAiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NTA3YTdiNi1iZmIxLWVkNDktOTNiYS0xOGUwNzljZTI1MTEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ1MDdhN2I2LWJmYjEtZWQ0OS05M2JhLTE4ZTA3OWNlMjUxMSIgc3RFdnQ6d2hlbj0iMjAxOS0xMC0yNFQxNzo0NDoxMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0MDEyZmEwMC01NWRlLTQ2NDEtYmQ5Mi01OWMyYzJkMGNjYmUiIHN0RXZ0OndoZW49IjIwMTktMTAtMjRUMTc6NDQ6MTMrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7uzerWAAACbElEQVRIicXVS29NURQH8N+5vXWrqBIVxGsgEQkJqQgGGDEQE5+Bb2LARCKmRoYmJmZixMhIPCIiHpEgIUGqWnrbew3W2np6uW5HrGTnnLPO2mv/1389dtXtdv1PafzX09HM50kcxm5sxxq0MCJAdtFBhWHMpX4G39NHK+3m8C3tO/k9m/bT+IiXuAJVpuA5VmAVVuMR7mIsnbZSP53PMazEDmzAw3TaSB9ba6CHEvh86sfwCVvqDHzGbZzA0XQ6lQfOpdMKLzLqvXnAZLI3hcsYxRFcqLFcJZD3mEjdXG8KviQ1U2jnQaczokJ3GwczkkI33MMunBPp2er32qqwkHubtb2/AMyKvJfvVh42SGbwQKTi/ADbzp+UjdrP8XwfFvXQHuDsFb7igFpEywRQlZcS8bxgoBg1+iFOmcYlEfkenBJF+TdZ+BPQAuArnoqKJVhY+IuzEZwVFf2ux/Y7bomCPFXzWdpyiZQUzIrKX7VMACsszo5ZwWCRb7iGGzV9KcLCQAn818tjUcVr02FBvBw5VgNOBLVaMFACrHKVDvjUC2Ae60X7PcMHbBPtNZyOmoLOZuqaFqdkO3Wd1B8S6elk5BV+4EkG+LYXQAc7c/3A63TazQ0LaVPoLiO2K9pwo+iiwtpk/ruTh3fFnNmM/WJWLAEwXaOwJe6DEmldSiGVMdvOwwrYQnWjdnCRIZEWeNML4D6u47horX4t1bB0yrUEI6Nqvd1HCmNV7sPiZVRkIkGcwb50PC6Kc6SP4zJeB0mxe4qLIuDfANRlPAGsSwAbRe62iFxuytXKNaT/RCxX901cFReTQQD+ifwEQ5yp43hORToAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/Chassis.039679ee.svg\";","module.exports = __webpack_public_path__ + \"static/media/NotPoweredInGeofence.dc6b8ad1.svg\";","module.exports = __webpack_public_path__ + \"static/media/NotPoweredNotInGeofence.550f31ff.svg\";","module.exports = __webpack_public_path__ + \"static/media/PoweredInGeofence.809c1798.svg\";","module.exports = __webpack_public_path__ + \"static/media/PoweredNotInGeofence.86ecf58a.svg\";","module.exports = __webpack_public_path__ + \"static/media/TotalDryInsideGeofence.e91034e4.svg\";","module.exports = __webpack_public_path__ + \"static/media/TotalDryOutSideGeofence.a81cca58.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAACXBIWXMAAAsSAAALEgHS3X78AAAAVElEQVQ4jWP8//8/A7UBC8i8z4HKBE3mXX+XsWE3I0F1Da7/GZmo7kwGBoZRQ0cNpTKgXY5iXPqBoMn/owUYGXYRzlEMbqM5atTQoWEo9XMUAwMDAGSOGCOVddy/AAAAAElFTkSuQmCC\"","/// \r\nimport * as React from 'react';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport $ from 'jquery';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport queryString from 'query-string';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar skip = false;\r\nvar self;\r\ninterface SearchState {\r\n RcdCountry: server.RCDCountryModel[],\r\n Filters: server.RcdStatusSearchFilters,\r\n AssetTypes:server.AssetTypes[],\r\n RcdGeofences: string[],\r\n suggestionsFenceId: any[],\r\n targetId: string\r\n}\r\n\r\nexport class RcdAdvanceSearch extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var filter: server.RcdStatusSearchFilters = {\r\n SelectedRcd: null, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: '', SelectedICCID: null, SelectedMSISDN:null, AllRcds: null,SelectedAssetType:null\r\n };\r\n\r\n if (this.props.stateData != null && this.props.stateData != undefined && this.props.stateData != null) {\r\n //filter = this.props.stateData;\r\n filter.SelectedRcd = this.props.stateData.SelectedRcd == null ? '' : this.props.stateData.SelectedRcd;\r\n filter.SelectedCountry = this.props.stateData.SelectedCountry == null ? '' : this.props.stateData.SelectedCountry;\r\n filter.SelectedInterval = this.props.stateData.SelectedInterval == null ? '' : this.props.stateData.SelectedInterval;\r\n filter.SelectedGeofenceInside = this.props.stateData.SelectedGeofenceInside == null ? '' : this.props.stateData.SelectedGeofenceInside;\r\n filter.SelectedGeofence = this.props.stateData.SelectedGeofence == null ? '' : this.props.stateData.SelectedGeofence;\r\n filter.SelectedICCID = this.props.stateData.SelectedICCID == null ? '' : this.props.stateData.SelectedICCID;\r\n filter.SelectedMSISDN = this.props.stateData.SelectedMSISDN == null ? '' : this.props.stateData.SelectedMSISDN;\r\n filter.AllRcds = this.props.stateData.AllRcds == null ? '' : this.props.stateData.AllRcds;\r\n filter.SelectedAssetType = this.props.stateData.SelectedAssetType == null ? '' : this.props.stateData.SelectedAssetType;\r\n }\r\n\r\n this.state = {\r\n RcdCountry: [], Filters: filter, AssetTypes: [], RcdGeofences: [], suggestionsFenceId: [],\r\n targetId: '',\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetGeofences')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var fenceData = data.map(fence => fence.Tag);\r\n this.setState({ RcdGeofences: fenceData });\r\n }\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/RefCountry')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RcdCountry: data });\r\n });\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/GetAssetTypes')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ AssetTypes: data });\r\n });\r\n\r\n self = this;\r\n }\r\n\r\n RCDIDschange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n //$('#txtRcdId').val(this.GetMultiLineCsv($('#txtRcdIds').val()));\r\n filters.SelectedRcd = this.GetMultiLineCsv($('#txtRcdIds').val());//$('#txtRcdId').val().toString();\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n\r\n RCDchange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedRcd = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n if (!skip)//-->checking closing window \r\n {\r\n $('#txtRcdIds').val(this.GetMultiLineCsv($('#txtRcdId').val()));\r\n //this.setState({\r\n // ModalTxt: this.GetMultiLineCsv($('#txtRcdId').text.toString())\r\n //});\r\n }\r\n }\r\n\r\n GetMultiLineCsv(value) {\r\n //while (value.Contains(Environment.NewLine) || value.Contains('\\r') || value.Contains('\\n'))--->environment new line pending\r\n while (value.includes('\\r') || value.includes('\\n') || value.includes(';') || value.includes(' ')) {\r\n //value = value.Replace(Environment.NewLine, \",\");\r\n value = value.replace('\\r'.toString(), \",\");\r\n value = value.replace('\\n'.toString(), \",\");\r\n value = value.replace(';'.toString(), \",\");\r\n value = value.replace(' '.toString(), \",\");\r\n }\r\n\r\n while (value.includes(\",,\")) {\r\n value = value.replace(\",,\", \",\");\r\n }\r\n //s = s.Replace(\",\", \",\" + Environment.NewLine);\r\n return value;\r\n }\r\n\r\n InsideGeofencechange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var value: string = event.currentTarget.value;\r\n if (value == \"---Select---\")\r\n filters.SelectedGeofenceInside = null;\r\n else\r\n filters.SelectedGeofenceInside = value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n //Geofencechange(event: React.FormEvent) {\r\n // var filters = this.state.Filters;\r\n // var value: string = event.currentTarget.value;\r\n // filters.SelectedGeofence = value;\r\n // this.setState({\r\n // Filters: filters\r\n // });\r\n //}\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n suggestionsFenceId: this.getFenceNameSuggestions(value)\r\n });\r\n };\r\n\r\n getFenceNameSuggestions(value) {\r\n var geofences = this.state.RcdGeofences;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : geofences.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n suggestionsFenceId: []\r\n });\r\n };\r\n\r\n onChangeFenceId = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SelectedGeofence = newValue;\r\n \r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n };\r\n\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n Countrychange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var value: string = event.currentTarget.value;\r\n if (value == \"---Select---\")\r\n filters.SelectedCountry = null;\r\n else\r\n filters.SelectedCountry = value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n AssetTypechange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var value: string = event.currentTarget.value;\r\n if (value == \"---Select---\")\r\n filters.SelectedAssetType = null;\r\n else\r\n filters.SelectedAssetType = value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n ReportingIntervalchange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var value: string = event.currentTarget.value;\r\n if (value == \"---Select---\")\r\n filters.SelectedInterval = null;\r\n else\r\n filters.SelectedInterval = value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ICCIDChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedICCID = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n MSISDNChange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n filters.SelectedMSISDN = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ClearFilter() {\r\n var filters = this.state.Filters;\r\n filters.SelectedRcd = \"\";\r\n filters.SelectedGeofenceInside = \"\";\r\n filters.SelectedGeofence = \"\";\r\n filters.SelectedCountry = \"\";\r\n filters.SelectedInterval = \"\";\r\n filters.SelectedICCID = \"\";\r\n filters.SelectedMSISDN = \"\";\r\n filters.SelectedAssetType = \"\";\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n isNullOrEmpty(value) {\r\n return value == null || value === \"\";\r\n }\r\n\r\n ApplyFilter() {\r\n //this.props.bindingRcdStatusGrid(this.state.Filters);\r\n this.state.Filters.AllRcds = \"\";\r\n if (!this.isNullOrEmpty(this.state.Filters.SelectedCountry) || !this.isNullOrEmpty(this.state.Filters.SelectedGeofence) || !this.isNullOrEmpty(this.state.Filters.SelectedGeofenceInside)\r\n || !this.isNullOrEmpty(this.state.Filters.SelectedInterval) || !this.isNullOrEmpty(this.state.Filters.SelectedRcd) || !this.isNullOrEmpty(this.state.Filters.SelectedICCID) || !this.isNullOrEmpty(this.state.Filters.SelectedMSISDN) || !this.isNullOrEmpty(this.state.Filters.SelectedAssetType)) {\r\n /*26262\r\n if (this.state.Filters.SelectedRcd.length <= 4000) {\r\n this.props.bindingRcdStatusGrid(this.state.Filters);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Maximum device search limit is 250.\");\r\n }\r\n */\r\n this.props.bindingRcdStatusGrid(this.state.Filters);\r\n }\r\n else {\r\n this.state.Filters.AllRcds = \"All Rcds\";\r\n this.props.bindingRcdStatusGrid(this.state.Filters); \r\n } \r\n }\r\n\r\n componentDidMount() {\r\n var params = queryString.parse(window.location.search);\r\n if (!isNullOrUndefined(params.deviceId)) { \r\n var filters = self.state.Filters;\r\n filters.SelectedRcd = params.deviceId;\r\n filters.AllRcds = \"\";\r\n self.props.bindingRcdStatusGrid(self.state.Filters); \r\n }\r\n\r\n $(document).ready(function () {\r\n $('.advance-search').bind('keypress', function (e) {\r\n if (e.keyCode === 13) {\r\n $('#button_search').trigger('click');\r\n }\r\n });\r\n });\r\n }\r\n\r\n BtnShowMultiLine() {\r\n $('#txtRcdId').attr('readonly');\r\n $('#txtRcdIds').val($('#txtRcdId').val());\r\n //this.setState({ \r\n // ModalTxt: this.GetMultiLineCsv($('#txtRcdId').text.toString())\r\n // });\r\n }\r\n\r\n public render() {\r\n const { suggestionsFenceId } = this.state;\r\n\r\n const FenceIdListinputProps = {\r\n id: 'geofenceID',\r\n placeholder: 'Geofence ID',\r\n value: this.state.Filters.SelectedGeofence,\r\n onChange: this.onChangeFenceId.bind(this)\r\n };\r\n \r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n this.ICCIDChange(e)} placeholder='ICCID' value={this.state.Filters.SelectedICCID}/>\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n this.MSISDNChange(e)} placeholder='MSISDN' value={this.state.Filters.SelectedMSISDN} />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}","// @ts-nocheck\r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport { PopupWindow } from './../../sharedcomponents/PopupWindow';\r\nimport { GridToolBar } from './../../sharedcomponents/GridToolBar';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nimport $ from 'jquery';\r\nimport deletepng from '../../../images/delete.png';\r\nvar Config: any = require('../../../Config.json');\r\n\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\n\r\nexport interface PingGridState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_RcdCurrentConditionUI[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n GridToolBarHtml: any;\r\n}\r\nvar colDefs;\r\nvar self;\r\nexport class DevicePingControlForM2C extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml: '' };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderGridToolBar();\r\n \r\n \r\n \r\n \r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData }, () => this.renderGridToolBar());\r\n this.renderPingGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n submitPingCommand() {\r\n var command = \"PollUnit\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTemperatureCommands(command, null);\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue) {\r\n if (self.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0)) { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.RowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommandsfromDeviceStatus', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n }\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.props.refreshRCDStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n this.renderPingGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n renderPingGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"PollUnit\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"PollUnit\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n removeIndicator(params: any) {\r\n var element = document.createElement(\"span\");\r\n element.className = \"reefer-delete\";\r\n\r\n var imageElement = document.createElement(\"img\");\r\n imageElement.src = deletepng;\r\n imageElement.title = \"Remove\";\r\n\r\n imageElement.onclick = function DeleteCommands() {\r\n params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n }\r\n\r\n element.appendChild(imageElement);\r\n\r\n return element;\r\n }\r\n\r\n refreshPingGrid() {\r\n var selectedRcds = \"\";\r\n if (this.state.RowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.RowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var reeferSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null, SelectedAssetType: null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Asset ID\", field: \"AssetNumber\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Last Event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","\r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport { PopupWindow } from './../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from './../../sharedcomponents/GridToolBarPopups';\r\nimport $ from 'jquery';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\n\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\n\r\nexport interface PingGridState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_RcdCurrentConditionUI[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n GridToolBarHtml: any;\r\n}\r\nvar colDefs;\r\nvar self;\r\nexport class DevicePingControl extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml:'' };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderGridToolBar();\r\n \r\n \r\n \r\n \r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData }, () => this.renderGridToolBar());\r\n this.renderPingGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n submitPingCommand() {\r\n var command = \"PollUnit\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTemperatureCommands(command, null);\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue) {\r\n if (self.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0))\r\n { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.RowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData; \r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommandsfromDeviceStatus', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n }\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.props.refreshRCDStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) { \r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n this.renderPingGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n renderPingGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"PollUnit\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"PollUnit\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n refreshPingGrid() { \r\n var selectedRcds = \"\";\r\n if (this.state.RowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.RowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var reeferSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null,SelectedAssetType:null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => { \r\n this.setState({ RowData: data }, () => this.renderGridToolBar()); \r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Last event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","import * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport { PopupWindow } from './../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from './../../sharedcomponents/GridToolBarPopups';\r\nimport $ from 'jquery';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\n\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface ChgReportingIntervalState {\r\n SelectedReefers: any[];\r\n SelectedInterval: string;\r\n RowData: server.USP_RcdCurrentConditionUI[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n}\r\nvar colDefs;\r\nvar self;\r\nexport class DeviceChangeReportingInterval extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], SelectedInterval: \"\", RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n \r\n \r\n \r\n \r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderChangeReportingIntervalGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderChangeReportingIntervalGrid(reeferData);\r\n } \r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderChangeReportingIntervalGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData, SelectedInterval: \"\" });\r\n this.state.Filters.CommandName = \"ChangeRCDReportingInterval\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n var forwardCommandParams = JSON.stringify(this.state.Filters);\r\n $('#globalLoader').hide();\r\n }\r\n\r\n submitReportingInterval() {\r\n if (self.state.RowData.length > 0) {\r\n var IsCT4Msg;\r\n var IsMsgFromVessel;\r\n if (self.state.RowData.filter(row => row.DeviceType != null && row.DeviceType != undefined && row.DeviceType.toString().trim() == 'CT4000').length > 0)\r\n IsCT4Msg = true;\r\n else\r\n IsCT4Msg = false;\r\n if (self.state.RowData.filter(row => row.VesselCd != null && row.VesselCd != undefined && row.VesselCd != \"\").length > 0)\r\n IsMsgFromVessel = true;\r\n else\r\n IsMsgFromVessel = false;\r\n if (this.state.VCCheckBoxInfo != null && (this.state.VCCheckBoxInfo.enableVCCheckBox == true || IsMsgFromVessel == true) && IsCT4Msg == true) { PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for vessel.\"); return }\r\n\r\n if (this.state.SelectedInterval != \"\" && this.state.SelectedInterval != \"Reporting Interval\") {\r\n var command = \"ChangeRCDReportingInterval\";\r\n var paramValue = this.state.SelectedInterval;\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTemperatureCommands(command, paramValue);\r\n } else { PopupWindow.showErrorMessage(\"Change Reporting Interval\", \"Please select valid Reporting Interval.\"); }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue) {\r\n if (self.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0)) { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.RowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommandsfromDeviceStatus', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n }\r\n\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.props.refreshRCDStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n ReportingIntervalchange(event: React.FormEvent) {\r\n var selectedInterval = this.state.SelectedInterval;\r\n var Value: string = event.currentTarget.value;\r\n selectedInterval = Value;\r\n this.setState({ SelectedInterval: selectedInterval });\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n //this.gridApi.forEachNode(node => node.rowIndex ? 0 : node.setSelected(true));\r\n //this.gridApi.sizeColumnsToFit();\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"ChangeRCDReportingInterval\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //} \r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Last event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130 },\r\n ];\r\n }\r\n\r\n refreshCRIGrid() {\r\n var selectedRcds = \"\";\r\n if (this.state.RowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.RowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var reeferSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null,SelectedAssetType:null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n };\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport { PopupWindow } from './../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from './../../sharedcomponents/GridToolBarPopups';\r\nimport $ from 'jquery';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface PanIDGridState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_RcdCurrentConditionUI[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n}\r\nvar colDefs;\r\nvar self;\r\nexport class DeviceAssignPANID extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n \r\n \r\n \r\n \r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData });\r\n this.renderAssignPanidGrid(this.props.reeferData);\r\n } \r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n }\r\n\r\n submitPanIDCommand() {\r\n var command = \"AssignPANID\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTemperatureCommands(command, null);\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue) {\r\n if (self.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0))\r\n { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.RowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData; \r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommands', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n }\r\n\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.props.refreshRCDStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.renderAssignPanidGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n renderAssignPanidGrid(reeferData: any) {\r\n this.setState({ RowData: reeferData });\r\n this.state.Filters.CommandName = \"AssignPANID\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n $('#globalLoader').hide();\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"AssignPANID\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n\r\n return filters;\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n refreshPANGrid() {\r\n var selectedRcds = \"\";\r\n if (this.state.RowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.RowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var reeferSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null,SelectedAssetType:null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data });\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Last event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n } \r\n\r\n public render() {\r\n return
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","import * as React from 'react';\r\n\r\nimport $ from 'jquery';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\n\r\nvar Config: any = require('../../Config.json');\r\nvar selReefers;\r\nvar lastCheckedNodes = [];\r\nvar lastCheckedParentNode = \"\";\r\nvar userId = 1;\r\nvar selectedReefers = \"\";\r\nvar selectedUnits = \"\";\r\n\r\ninterface UnAssignFromCustomerState {\r\n isLoading: boolean;\r\n collapsed: boolean;\r\n checked: any;\r\n expanded: any;\r\n AssignedGroups: AssignedReefers[];\r\n AssignedGroupsList: AssignedReefers[];\r\n}\r\n\r\nexport class DeviceUnassignFromCustomer extends React.Component {\r\n myRequest: any;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isLoading: true, collapsed: false, AssignedGroups: [], checked: [], expanded: [], AssignedGroupsList: []\r\n };\r\n\r\n this.onCheck = this.onCheck.bind(this);\r\n this.onExpand = this.onExpand.bind(this);\r\n lastCheckedNodes = [];\r\n }\r\n\r\n componentDidMount() {\r\n selReefers = this.props.reeferData;\r\n if (selReefers.length > 0 || selReefers != undefined || selReefers != null)\r\n this.bindCustomerData(selReefers);\r\n }\r\n //componentWillReceiveProps(nextprops: any) {\r\n // this.setState({ isLoading: true, collapsed: false, AssignedGroups: [], checked: [], expanded: [], AssignedGroupsList: [] });\r\n // if (nextprops.reeferData.length > 0 || nextprops.reeferData != undefined || nextprops.reeferData != null)\r\n // this.bindCustomerData(nextprops.reeferData);\r\n //}\r\n bindCustomerData(selReefers: any) {\r\n selectedReefers = \"\";\r\n selectedUnits = \"\";\r\n if (selReefers.length > 1) {\r\n $.each(selReefers, function (index, value) {\r\n selectedReefers = selectedReefers == \"\" ? value.ReeferID : selectedReefers + \",\" + value.ReeferID;\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedReefers = selReefers[0].ReeferID;\r\n selectedUnits = selReefers[0].UnitMasterID.toString();\r\n }\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetAssignUnitsGroupsForUnassign?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var defaultChecked = [];\r\n $.each(data, function (index, value) {\r\n value.isSelected = true;\r\n $.each(value.children, function (ind, val) {\r\n defaultChecked.push(val.value);\r\n });\r\n });\r\n this.setState({ isLoading: false, AssignedGroups: JSON.parse(JSON.stringify(data)), AssignedGroupsList: data, checked: defaultChecked });\r\n }\r\n else {\r\n lastCheckedNodes = [];\r\n selectedReefers = \"\";\r\n this.setState({ AssignedGroups: JSON.parse(JSON.stringify(data)), isLoading: false, checked: [] });\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) currently not assigned to any customer group(s)\");\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n });\r\n }\r\n\r\n onCheck(checked) {\r\n var assignedGroupsList = this.state.AssignedGroupsList;\r\n this.setState({ AssignedGroups: JSON.parse(JSON.stringify(assignedGroupsList)), checked: checked });\r\n }\r\n\r\n onExpand(expanded) {\r\n this.setState({ expanded: expanded });\r\n }\r\n\r\n UnAssignFromCustomer() {\r\n if (this.state.checked.length > 0) {\r\n $('#globalLoader').show();\r\n var checkedGroupIds = [];\r\n var selUnits = [];\r\n var checkedList = this.state.checked;\r\n $.each(selectedUnits.split(','), function (index, value) {\r\n selUnits.push(parseInt(value));\r\n });\r\n\r\n $.each(checkedList, function (index, value) {\r\n checkedGroupIds.push(parseInt(value.split(':')[1]));\r\n });\r\n\r\n var filterset: ParamsData = {\r\n SelectedUnits: selUnits,\r\n Groups: checkedGroupIds\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/UnAssignUnitsFromGroups', { method: 'POST', body: JSON.stringify(filterset), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"Unassigned\") {\r\n lastCheckedNodes = [];\r\n this.setState({ checked: lastCheckedNodes });\r\n this.props.refreshRCDStatusGrid();\r\n PopupWindow.showErrorMessage(\"Confirmation\", \"Selected Reefer(s) have been successfully unassigned to the customer group(s).\");\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Confirmation\", \"Selected Reefer(s) could not be unassigned to the customer group(s).\");\r\n }\r\n });\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please select at least one customer group.\");\r\n }\r\n }\r\n\r\n CloseModal() {\r\n lastCheckedNodes = [];\r\n this.setState({ checked: lastCheckedNodes });\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n public render() {\r\n const { checked, expanded } = this.state;\r\n\r\n return (this.state.isLoading ?
    Loading...
    :\r\n
    \r\n
    \r\n
    \r\n
    Selected Reefer(s):
    \r\n
    {selectedReefers}
    \r\n
    \r\n
    \r\n
    \r\n
    Select the customer access group(s):
    \r\n
    \r\n {this.state.AssignedGroups.length > 0 ? : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nclass ParamsData {\r\n SelectedUnits: any;\r\n Groups: any;\r\n}\r\nclass AssignedReefers {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n children: ReefersCustomerGroups[]\r\n}\r\nclass ReefersCustomerGroups {\r\n value: string;\r\n label: string;\r\n isSelected: boolean;\r\n disabled: boolean;\r\n}\r\nclass AssignedUnitsList {\r\n UnitCustomerAccessGroupID: number;\r\n UnitMasterID: number;\r\n ReeferID: string;\r\n CustomerID: number;\r\n CustomerAccessGroupID: number;\r\n Name: string;\r\n}\r\n","\r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport { PopupWindow } from './../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from './../../sharedcomponents/GridToolBarPopups';\r\nimport $ from 'jquery';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\n\r\nexport interface DeviceResetGridState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_RcdCurrentConditionUI[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n GridToolBarHtml: any;\r\n}\r\nvar colDefs;\r\nvar self;\r\nexport class DeviceResetDeviceStatus extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml: '' };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderGridToolBar();\r\n \r\n \r\n \r\n \r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData }, () => this.renderGridToolBar());\r\n this.renderDeviceResetGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n submitDeviceResetCommand() {\r\n var command = \"DeviceReset\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTemperatureCommands(command, null);\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue) {\r\n if (self.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0)) { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.RowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommandsfromDeviceStatus', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n }\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.props.refreshRCDStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n this.renderDeviceResetGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n renderDeviceResetGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"DeviceReset\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"DeviceReset\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n refreshDeviceResetGrid() {\r\n var selectedRcds = \"\";\r\n if (this.state.RowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.RowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var reeferSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null,SelectedAssetType: null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Last event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nexport class DeviceHardResetDeviceStatus extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml: '' };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderGridToolBar();\r\n \r\n \r\n \r\n \r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData }, () => this.renderGridToolBar());\r\n this.renderDeviceResetGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n submitDeviceHardResetCommand() {\r\n var command = \"DeviceHardReset\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitTemperatureCommands(command, null);\r\n }\r\n\r\n submitTemperatureCommands(commandName, paramValue) {\r\n if (self.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0)) { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.RowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommandsfromDeviceStatus', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n }\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.props.refreshRCDStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n this.renderDeviceResetGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n renderDeviceResetGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"DeviceHardReset\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"DeviceHardReset\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n refreshDeviceResetGrid() {\r\n var selectedRcds = \"\";\r\n if (this.state.RowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.RowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var reeferSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null,SelectedAssetType: null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Last Event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event Time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","import * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { RCUtils } from './../../../RCUtils';\r\nimport Formatters from '../../../actions/Formatters';\r\nimport { PopupWindow } from './../../sharedcomponents/PopupWindow';\r\nimport { GridToolBarPopups } from './../../sharedcomponents/GridToolBarPopups';\r\nimport $ from 'jquery';\r\nimport { ReeferCellRenderer } from '../../../actions/ReeferCellRenderer';\r\nvar Config: any = require('../../../Config.json');\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\n\r\nexport interface GetAssetIdGridState {\r\n SelectedReefers: any[];\r\n RowData: server.USP_RcdCurrentConditionUI[];\r\n Filters: server.ForwardCommandParameters;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n GridToolBarHtml: any;\r\n}\r\nvar colDefs;\r\nvar self;\r\nexport class GetAssetId extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n $('#globalLoader').show();\r\n var filterSet = this.setDefaultFilters();\r\n this.state = { SelectedReefers: [], RowData: [], Filters: filterSet, VCCheckBoxInfo: emptyVCCheckBoxData, GridToolBarHtml: '' };\r\n colDefs = this.createColumnDefs();\r\n self = this;\r\n }\r\n\r\n componentDidMount() {\r\n this.renderGridToolBar();\r\n \r\n \r\n \r\n \r\n if (this.props.reeferData != null && this.props.reeferData.length > 0) {\r\n this.setState({ RowData: this.props.reeferData }, () => this.renderGridToolBar());\r\n this.renderDeviceResetGrid(this.props.reeferData);\r\n }\r\n if (this.props.VCCheckBoxInfo != undefined && this.props.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: this.props.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n submitCommand() {\r\n var command = \"GetAssetId\";\r\n var refreshGrid = this.props.refreshGrid;\r\n this.submitGetAssetIdCommands(command, null);\r\n }\r\n\r\n submitGetAssetIdCommands(commandName, paramValue) {\r\n if (self.state.RowData.length > 0) {\r\n var selectedData = this.state.VCCheckBoxInfo.selectedVCData;\r\n if (this.state.VCCheckBoxInfo.enableVCCheckBox == true && (selectedData == null || selectedData.VesselId == 0)) { PopupWindow.showErrorMessage(\"Alert\", \"Please select vessel name\"); }\r\n else {\r\n $('#globalLoader').show();\r\n self.state.Filters.CommandName = commandName;\r\n self.state.Filters.SelectedReefers = self.state.RowData;\r\n self.state.Filters.TempValue = paramValue;\r\n self.state.Filters.IsCmdSendViaVC = this.state.VCCheckBoxInfo.enableVCCheckBox;\r\n self.state.Filters.VesselInfo = this.state.VCCheckBoxInfo.selectedVCData;\r\n var forwardCommandParams = JSON.stringify(self.state.Filters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/PostForwardCommandsfromDeviceStatus', { method: 'POST', body: forwardCommandParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n $(\".mm-popup__box__body\").css(\"white-space\", \"pre-line\");\r\n return;\r\n }\r\n }\r\n $(\"#contextMenuModel .btn-close\").click();\r\n this.props.refreshRCDStatusGrid();\r\n });\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"No assets selected\");\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n var reeferData = nextprops.reeferData;\r\n if (reeferData != undefined && reeferData != null && reeferData.length > 0) {\r\n $('#globalLoader').show();\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n this.renderDeviceResetGrid(reeferData);\r\n }\r\n if (nextprops.VCCheckBoxInfo != undefined && nextprops.VCCheckBoxInfo != null) {\r\n this.setState({ VCCheckBoxInfo: nextprops.VCCheckBoxInfo });\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n }\r\n\r\n renderDeviceResetGrid(reeferData: any) {\r\n this.state.Filters.CommandName = \"DeviceReset\";\r\n this.state.Filters.SelectedReefers = reeferData;\r\n this.setState({ RowData: reeferData }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n }\r\n\r\n setDefaultFilters() {\r\n var filters: server.ForwardCommandParameters = {\r\n SelectedReefers: [], CommandName: \"DeviceReset\", TempValue: \"\", OtherValue: null, IsCmdSendViaVC: null, VesselInfo: null\r\n };\r\n return filters;\r\n }\r\n\r\n //removeIndicator(params: any) {\r\n // var element = document.createElement(\"span\");\r\n // element.className = \"reefer-delete\";\r\n\r\n // var imageElement = document.createElement(\"img\");\r\n // imageElement.src = deletepng;\r\n // imageElement.title = \"Remove\";\r\n\r\n // imageElement.onclick = function DeleteCommands() {\r\n // params.api.gridOptionsWrapper.gridOptions.rowData.splice(params.rowIndex, 1);\r\n // params.api.setRowData(params.api.gridOptionsWrapper.gridOptions.rowData);\r\n // }\r\n\r\n // element.appendChild(imageElement);\r\n\r\n // return element;\r\n //}\r\n\r\n refreshDeviceResetGrid() {\r\n var selectedRcds = \"\";\r\n if (this.state.RowData.length > 0) {\r\n $('#globalLoader').show();\r\n $.each(this.state.RowData, function (selectedIndex, selectedValue) {\r\n if (selectedValue.RCDID != null) {\r\n selectedRcds = selectedRcds == \"\" ? selectedValue.RCDID : selectedRcds + \",\" + selectedValue.RCDID;\r\n }\r\n });\r\n var reeferSearchFilters: server.RcdStatusSearchFilters = { SelectedRcd: selectedRcds, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null, SelectedAssetType: null };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/RcdStatusSearchDataSP', { method: 'POST', body: JSON.stringify(reeferSearchFilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RowData: data }, () => this.renderGridToolBar());\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n };\r\n\r\n createColumnDefs() {\r\n return [\r\n { headerName: \"Remove\", field: \"ReeferID\", width: 85, cellRenderer: ReeferCellRenderer.removeIndicator },\r\n { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: ReeferCellRenderer.RunStateFormatter },\r\n { headerName: \"OEM\", field: \"ReeferOEMTypeCd\", cellRenderer: Formatters.oemTypeFormatter, width: 70 },\r\n { headerName: \"Device ID\", field: \"RCDID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 140 },\r\n { headerName: \"Last event\", field: \"LastEvent\", cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 150 },\r\n { headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", cellRenderer: Formatters.dateTypeFormatter, width: 150 },\r\n ];\r\n }\r\n\r\n renderGridToolBar() {\r\n this.setState({ GridToolBarHtml: this.renderGridToolBarHtml() });\r\n }\r\n\r\n renderGridToolBarHtml() {\r\n return ;\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(VCInfo);\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n {this.state.GridToolBarHtml}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","/// \r\n\r\nimport * as React from 'react';\r\nimport ReactMoment from 'moment';\r\nimport DateFormat from 'dateformat';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport $ from 'jquery';\r\n\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\n//import { DateTime } from 'react-datetime-bootstrap';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport Formatters from '../../actions/Formatters';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface EditAssetPropertiesState {\r\n IsChecked: boolean\r\n , suggestionsAssetNumber: any[]\r\n , targetId: string\r\n , isLoading: boolean\r\n , PreferenceDTTM: any\r\n , DryAssetDetails: server.DryAssetDetails\r\n , prevDryAssetDetails: server.DryAssetDetails\r\n ,IsActive: boolean\r\n}\r\nvar fromDateOnChangeFired = false;\r\nvar toDateOnChangeFired = false;\r\nvar assetDetailsChanged = false;\r\nvar fromDate = DateFormat(new Date(Date.now()), 'mm/dd/yyyy HH:MM:ss');\r\nvar fromDTTM = new Date(Date.now());\r\nfromDTTM.setDate(fromDTTM.getDate() + 30);\r\nvar toDate = DateFormat(new Date(fromDTTM), 'mm/dd/yyyy HH:MM:ss');\r\n\r\nvar newAssetDetails: server.DryAssetDetails = {\r\n AssetMasterID: 0, AssetNumber: '',DeviceNumber: '', FromDate: fromDate, ToDate: toDate, isAssetDetailsChanged: false,RCDMasterID:0\r\n};\r\nclass AssetNumberSearchList {\r\n AssetNumberList: any[] = [];\r\n AssetNumberDistinctList: any[] = [];\r\n}\r\nvar Assetlst = new AssetNumberSearchList();\r\nexport class EditAsset extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var currentUtcDttm = ReactMoment(new Date(new Date().toUTCString()).toISOString(), 'YYYY-MM-DDTHH:mm:ss');\r\n var assetDetails: server.DryAssetDetails = {\r\n AssetNumber: this.props.refData[0].AssetNumber != null ? this.props.refData[0].AssetNumber :\"\", AssetMasterID: this.props.refData[0].AssetMasterID,\r\n DeviceNumber: this.props.refData[0].RCDID,\r\n RCDMasterID: this.props.refData[0].RCDMasterID,\r\n };\r\n this.state = {\r\n IsChecked: false, targetId: '', suggestionsAssetNumber: [],\r\n isLoading: true, PreferenceDTTM: Formatters.DateTimeFormatter(currentUtcDttm),\r\n DryAssetDetails: newAssetDetails, prevDryAssetDetails: assetDetails,\r\n IsActive: this.props.refData[0].IsActive\r\n };\r\n\r\n Assetlst.AssetNumberList = [];\r\n \r\n var url = Config.ApiBaseUrl + '/api/RcdStatus/GetDryAssets?customerId=' + this.props.refData[0].CustomerID;\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n RCUtils.fetchFaultRetry(request)\r\n .then(RCUtils.handleResponse)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n Assetlst.AssetNumberList = [];\r\n $.each(data, function (i, n) {\r\n Assetlst.AssetNumberList.push(data[i].AssetNumber);\r\n });\r\n }\r\n $('#globalLoader').hide();\r\n });\r\n }\r\n componentDidMount() {\r\n //$('#globalLoader').show();\r\n\r\n var assetDetails: server.DryAssetDetails = {\r\n AssetNumber: this.props.refData[0].AssetNumber != null ? this.props.refData[0].AssetNumber : \"\", AssetMasterID: this.props.refData[0].AssetMasterID,\r\n DeviceNumber: this.props.refData[0].RCDID,\r\n RCDMasterID: this.props.refData[0].RCDMasterID\r\n };\r\n this.setState({ DryAssetDetails: assetDetails });\r\n }\r\n dateTypeFormatter(eventDate: Date) {\r\n //written considering parameter 'eventDate' sent is IST\r\n var timeZoneOffset = JSON.parse(sessionStorage.getItem('UserInfo')).TimeZoneOffSet;\r\n var eventdttm = new Date();\r\n if (eventDate != null)\r\n eventdttm = new Date(eventDate.toString());\r\n var utc = eventdttm.getTime() + (eventdttm.getTimezoneOffset() * 60000);\r\n var prefDateTime = new Date(new Date(utc).getTime() + (60000 * (parseInt(timeZoneOffset))));\r\n return prefDateTime;\r\n }\r\n AssetNumberOnchange = (event, { newValue }) => {\r\n event.preventDefault();\r\n var assetDetails: server.DryAssetDetails = JSON.parse(JSON.stringify(this.state.DryAssetDetails));\r\n assetDetails.AssetNumber = newValue;\r\n var fromDate = ReactMoment(this.dateTypeFormatter(new Date())).format('LLL');\r\n var toDate = ReactMoment(this.dateTypeFormatter(new Date())).add(30, 'days').format('LLL');\r\n var frmDate = new Date(fromDate);\r\n var tDate = new Date(toDate);\r\n assetDetails.FromDate = DateFormat(frmDate, 'mm/dd/yyyy HH:MM:ss');\r\n assetDetails.ToDate = DateFormat(tDate, 'mm/dd/yyyy HH:MM:ss');\r\n this.setState({ DryAssetDetails: assetDetails, targetId: event.target.id });\r\n }\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n suggestionsAssetNumber: this.getSuggestions(value)\r\n });\r\n };\r\n\r\n getSuggestions(value) {\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return (inputLength === 0 || Assetlst.AssetNumberList == null) ? [] : Assetlst.AssetNumberList.filter(AssetNumber =>\r\n AssetNumber.toLowerCase().slice(0, inputLength) === inputValue);\r\n };\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n suggestionsAssetNumber: []\r\n });\r\n };\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n finalSubmit() {\r\n $('#globalLoader').show();\r\n var assetDetails: server.DryAssetDetails = JSON.parse(JSON.stringify(this.state.DryAssetDetails));\r\n var url = Config.ApiBaseUrl + '/api/RcdStatus/EditAssetId';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(assetDetails), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n $('#globalLoader').hide();\r\n if (data != null && data != undefined) {\r\n if (data.Result != null && data.Result != undefined && data.Result.length > 0) {\r\n if (data.Result == \"Success\") {\r\n $('#EditAsset .btn-close').click();\r\n this.props.refreshRCDStatusGrid();\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Error\", data.Result);\r\n }\r\n }\r\n });\r\n }\r\n handleSubmit() {\r\n var flag = this.validateInput();\r\n if (flag) {\r\n if (this.state.DryAssetDetails.AssetNumber != \"\" && this.state.IsActive == true && this.state.prevDryAssetDetails.AssetNumber!=\"\") {//&& (this.state.DryAssetDetails.AssetNumber != this.state.prevDryAssetDetails.AssetNumber)\r\n $('#confirmEditModal').show();\r\n }\r\n else if (this.state.DryAssetDetails.AssetNumber == \"\" && this.state.IsActive != true)\r\n {\r\n RCNGWindow.ConfirmWindow.showConfirmBoxOK('Information', 'Device ' + this.state.DryAssetDetails.DeviceNumber + ' does not have active association with ' + this.state.prevDryAssetDetails.AssetNumber + '.', this.OkConfirmation.bind(this));\r\n }\r\n else\r\n this.finalSubmit();\r\n }\r\n }\r\n OkConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#EditAsset .btn-close').click();\r\n }\r\n performEditAssetYesAction() {\r\n this.closeModel();\r\n this.finalSubmit();\r\n }\r\n closeModel() {\r\n $('#confirmEditModal').hide();\r\n }\r\n performEditAssetNoAction() {\r\n this.closeModel();\r\n }\r\n componentWillReceiveProps(nextProps: any) {\r\n var assetDetails: server.DryAssetDetails = {\r\n AssetNumber: nextProps.refData[0].AssetNumber != null ? nextProps.refData[0].AssetNumber : \"\", AssetMasterID: nextProps.refData[0].AssetMasterID,\r\n DeviceNumber: nextProps.refData[0].RCDID,\r\n RCDMasterID: nextProps.refData[0].RCDMasterID\r\n };\r\n this.setState({ DryAssetDetails: assetDetails, prevDryAssetDetails: assetDetails, IsActive: nextProps.refData[0].IsActive });\r\n }\r\n validateDryAssetDetails() {\r\n var currentDetails = this.state.DryAssetDetails;\r\n var previousDetails = this.state.prevDryAssetDetails;\r\n if (currentDetails.AssetNumber != previousDetails.AssetNumber)\r\n return true;\r\n\r\n return false;\r\n }\r\n validateInput() {\r\n if (this.state.DryAssetDetails.AssetNumber.trim().endsWith(\"-\") || this.state.DryAssetDetails.AssetNumber.trim().endsWith(\"_\")) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset # cannot begin/end with hyphen or underscore.\");\r\n return false;\r\n }\r\n \r\n var alphaNumeric = /^([a-zA-Z0-9_-]+)$/;\r\n var inputVal = this.state.DryAssetDetails.AssetNumber;\r\n if (!inputVal.match(alphaNumeric) && inputVal!=\"\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Dry Asset # should not contain blank space.\");\r\n return false;\r\n }\r\n else { \r\n //var dryPattern = /^(?![0-9]{4})[A-Za-z0-9]{4}\\d{7}$/; //RCNG-2364 \r\n //if (!inputVal.match(dryPattern)) {\r\n // PopupWindow.showErrorMessage(\"Alert\", \"Please enter valid Dry Asset #.\");\r\n // return false;\r\n //} \r\n if (inputVal.length > 11) {//RCNG-2545\r\n PopupWindow.showErrorMessage(\"Alert\", \"Dry Asset # should not be greater than 11 characters.\");\r\n return false;\r\n } \r\n }\r\n var assetDetailsFlag = this.validateDryAssetDetails();\r\n\r\n if (!assetDetailsFlag) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Please modify asset details.\");\r\n return false;\r\n }\r\n //RCNG-1398\r\n \r\n return true;\r\n }\r\n public render() {\r\n const suggestionsAssetNumber = this.state.suggestionsAssetNumber;\r\n const AssetNumberinputProps = {\r\n id: 'AssetNumber',\r\n placeholder: 'Select',\r\n value: this.state.DryAssetDetails.AssetNumber,\r\n onChange: this.AssetNumberOnchange.bind(this)\r\n };\r\n return
    \r\n
    \r\n
    \r\n Device # :\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n Asset # :\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Confirmation
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n This Asset ({this.state.prevDryAssetDetails.AssetNumber}) is already paired with device ({this.state.DryAssetDetails.DeviceNumber}). Do you want to modify the pairing ?\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}\r\nclass ValidationSeverityResult {\r\n Serverity: string;\r\n Result: string;\r\n}","/// \r\n/// \r\n\r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as RcdStatusState from '../../store/RcdStatus';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { CellRenderer } from '../../actions/CellRenderer';\r\nimport ReeferFormatter from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';\r\nimport GensetFormatter from '../../actions/GensetFormatter';\r\nimport { GensetCellRender } from '../../actions/GensetCellRender';\r\nimport $ from 'jquery';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridToolBarControl } from '../sharedcomponents/GridToolBarControl';\r\n// pull in the ag-grid styles we're interested in\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport './../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport { RcdAdvanceSearch } from '../childcomponents/RcdAdvanceSearch';\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport { SendEmailControl } from './../sharedcomponents/SendEmailControl';\r\nimport { DevicePingControlForM2C } from './../sharedcomponents/ForwardCommands/DevicePingControlForM2C';\r\nimport { DevicePingControl } from './../sharedcomponents/ForwardCommands/DevicePingControl';\r\nimport { DeviceChangeReportingInterval } from './../sharedcomponents/ForwardCommands/DeviceChangeReportingInterval';\r\nimport { DeviceAssignPANID } from './../sharedcomponents/ForwardCommands/DeviceAssignPANID';\r\nimport { AutoConfiguration } from './../sharedcomponents/ForwardCommands/AutoConfiguration';\r\nimport { DeviceUnassignFromCustomer } from '../childcomponents/DeviceUnassignFromCustomer';\r\nimport { DeviceResetDeviceStatus } from './../sharedcomponents/ForwardCommands/DeviceResetDeviceStatus';\r\nimport { DeviceHardResetDeviceStatus } from './../sharedcomponents/ForwardCommands/DeviceResetDeviceStatus';\r\nimport { GetAssetId } from './../sharedcomponents/ForwardCommands/GetAssetId';\r\nimport { EditAsset } from './../childcomponents/EditAsset';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport ExportAction from '../../actions/ExportAction'\r\nimport UserRights from '../../actions/UserRights';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nvar Excel = Exceljs.default;\r\nvar Config: any = require('../../Config.json');\r\n\r\n\r\nclass customerSearchlst {\r\n customerID: any[] = [];\r\n customerName: any[] = [];\r\n}\r\n\r\n//var rcdColumns;\r\nvar rcdStatus;\r\nvar statusFilters;\r\nvar selectedRowDataIds;\r\nvar selectedRowsRcdData;\r\nvar selectedRowData;\r\nvar SelectedRcds = \"\";\r\nvar lastCheckedNodes = [];\r\nvar customerTypeCd;\r\nvar custId;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar EnableLynxCommands: boolean;\r\nvar EnableCT35ML5Commands: boolean; //RCNG-3425\r\nvar customerlst = new customerSearchlst();\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\ninterface RcdStatusSearchState {\r\n showAssignToCustomerComponent: boolean;\r\n showEmailComponent: boolean;\r\n isAssigned: boolean;\r\n assignedRcdCount: number;\r\n rcdcustomerUI: RCDCustomerIdUI[];\r\n checked: any;\r\n TreeNodes: treeNodes[];\r\n AssignedStatus: string;\r\n SelectedCustomer: SelectedCustomer;\r\n isLoading: boolean;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n checkedNode: boolean;\r\n pageSize: any;\r\n gridApiParams: any;\r\n exportFields: ExportFields;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n customerIdvalue: any,\r\n customerSuggestions: any[],\r\n targetId: string,\r\n selectedTreeNodes: treeNodes[];\r\n showEditAssetWindow: boolean,\r\n rcdColumns: any[]; \r\n}\r\n\r\ninterface treeNodes {\r\n label: string;\r\n value: string;\r\n disabled: string;\r\n icon: string;\r\n}\r\n\r\nclass RCDCustomerIdUI {\r\n RCDMasterID: number;\r\n RCDID: string;\r\n CustomerID: number;\r\n}\r\n\r\nclass SelectedCustomer {\r\n SelectedRcdIDs: string;\r\n CustomerID: number;\r\n}\r\n\r\n// At runtime, Redux will merge together...\r\ntype RcsStatusProps =\r\n UserDetailState.UserState\r\n & RcdStatusState.RcdSearchState // ... state we've requested from the Redux store\r\n & typeof RcdStatusState.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\nvar self;\r\n\r\nclass RcdStatus extends React.Component {\r\n myCustomerRequest: any;\r\n constructor(props: any) {\r\n super(props);\r\n this.props.requestRefApplicationParams();\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;//this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;//this.props.loggedInUserData.User.Customer.CustomerId;\r\n var Columns = this.createColumnDefs();\r\n var filterSet = new SelectedCustomer();\r\n var exportData = new ExportFields();\r\n this.state = {\r\n isLoading: true,\r\n showAssignToCustomerComponent: false,\r\n showEmailComponent: false,\r\n isAssigned: false,\r\n assignedRcdCount: 0,\r\n rcdcustomerUI: [],\r\n checked: [],\r\n TreeNodes: [],\r\n AssignedStatus: '',\r\n SelectedCustomer: filterSet,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n checkedNode: false,\r\n pageSize: 25,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n customerSuggestions: [], customerIdvalue: '', targetId: '', selectedTreeNodes: [], showEditAssetWindow: false,\r\n rcdColumns: Columns,\r\n }\r\n\r\n this.onCheck = this.onCheck.bind(this);\r\n lastCheckedNodes = [];\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/RcdStatus/GetCustomersTree')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n //customersSO: data,\r\n TreeNodes: data, selectedTreeNodes: data\r\n });\r\n //Start RCNG 124\r\n if (data.length > 0) {\r\n $.each(data, function (i, n) {\r\n\r\n if (customerlst.customerID.indexOf(data[i].value) == -1)\r\n customerlst.customerID.push(data[i].value);\r\n\r\n if (customerlst.customerName.indexOf(data[i].label) == -1)\r\n customerlst.customerName.push(data[i].label);\r\n });\r\n }\r\n //End RCNG 124\r\n });\r\n\r\n if (this.props.location.state != undefined && this.props.location.state != null) {\r\n statusFilters = this.props.location.state;\r\n }\r\n else if (this.props.rcdSearchFilters != undefined && this.props.rcdSearchFilters != null) {\r\n statusFilters = this.props.rcdSearchFilters;\r\n }\r\n else\r\n this.ClearFilters();\r\n $('#globalLoader').show();\r\n this.props.requestEventMaster();\r\n this.props.requestRcdAdvanceSearch(statusFilters);\r\n self = this;\r\n }\r\n\r\n ClearFilters() {\r\n var filters: server.RcdStatusSearchFilters = {\r\n SelectedRcd: null, SelectedCountry: null, SelectedInterval: null, SelectedGeofenceInside: null, SelectedGeofence: null, SelectedICCID: null, SelectedMSISDN: null, AllRcds: null, SelectedAssetType: null\r\n };\r\n\r\n statusFilters = filters;\r\n }\r\n\r\n updateRcdStatusDimensions() {\r\n $(\"#RcdStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 339);\r\n $(\"#RcdStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 339);\r\n $(\"#RcdStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 339);\r\n }\r\n\r\n //componentWillUnmount() {\r\n // window.removeEventListener(\"resize\", this.updateRcdStatusDimensions.bind(this));\r\n //}\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsOnly('6');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n //this.updateRcdStatusDimensions();\r\n window.addEventListener(\"resize\", this.updateRcdStatusDimensions.bind(this));\r\n Excel.preventDefault();\r\n\r\n setTimeout(() => { this.updateRcdStatusDimensions() }, 200);\r\n // To make the Modal popups draggable.\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n Excel.draggableModalPopup(document.getElementById(\"myAssignedModal\"));\r\n Excel.draggableModalPopup(document.getElementById(\"myCustModal\"));\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n //this.columnApi = params.autoSizeColumns(); \r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n self.setState({ gridApiParams: params.api });\r\n //RCNG-3425\r\n var refAppParams = self.props.refApplicationParams;\r\n if (refAppParams != null && refAppParams != undefined) {\r\n if (refAppParams.EnableLynxCommands != null && refAppParams.EnableLynxCommands != undefined)\r\n EnableLynxCommands = refAppParams.EnableLynxCommands == 'true' ? true : false;\r\n if (refAppParams.EnableCT35ML5Commands != null && refAppParams.EnableCT35ML5Commands != undefined)\r\n EnableCT35ML5Commands = refAppParams.EnableCT35ML5Commands == 'true' ? true : false;\r\n }\r\n\r\n var rowGroupItems = [];\r\n rowGroupItems = self.props.SelectedRowGroups;\r\n\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0\r\n && self.state.gridApiParams.gridOptionsWrapper != null && self.state.gridApiParams.gridOptionsWrapper != undefined) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n }\r\n\r\n onSelectionChanged(params: any) {\r\n $('#globalLoader').hide();\r\n //var rights = self.props.loggedInUserData.User.Customer.Rights;\r\n selectedRowsRcdData = [];\r\n selectedRowDataIds = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedRowsRcdData.push(selectedRow);\r\n selectedRowDataIds.push(selectedRow.RCDMasterID);\r\n });\r\n\r\n //var selectedItems = self.state.selectedItems;\r\n self.setState({ selectedItems: selectedRowsRcdData });\r\n //if (self.props.loggedInUserData != null) {\r\n //var checkIsFO = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;//self.props.loggedInUserData.IsFO;\r\n // if (checkIsFO == \"FO\") {\r\n // $(\"#liAssignToCustomer\").addClass('disabled');\r\n // $(\"#liUnassignFromCustomer\").addClass('disabled');\r\n // }\r\n ////}\r\n\r\n //if (selectedRowsRcdData.length > 1) {\r\n // $('#liDetailsRequiresRight').removeClass('enabled');\r\n // $('#liDetailsRequiresRight').addClass('disabled');\r\n //}\r\n //else {\r\n // $('#liDetailsRequiresRight').removeClass('disabled');\r\n // $('#liDetailsRequiresRight').addClass('enabled');\r\n //}\r\n\r\n //// showing Selected commands for device Type CT5000\r\n //var isDeviceTypeFound = 0;\r\n //var isCT4Found = 0;\r\n //$.each(selectedRowsRcdData, function (i, val) {\r\n // if (val.DeviceType != null && val.DeviceType != undefined) {\r\n // if (val.DeviceType.toString().trim() == 'CT5000') {\r\n // isDeviceTypeFound = isDeviceTypeFound + 1;\r\n // }\r\n // if (val.DeviceType.toString().trim() == 'CT4000') {\r\n // isCT4Found = isCT4Found + 1;\r\n // }\r\n // }\r\n //});\r\n\r\n //var isM2C = 0; var IsDryDevice = 0;\r\n //$.each(selectedRowsRcdData, function (i, val) {\r\n // if (val.DeviceType != null && val.DeviceType != undefined) {\r\n // if (val.DeviceType.toString().trim() == 'WG1' || val.DeviceType.toString().trim() == 'WG2' || val.DeviceType.toString().trim() == 'X47' || val.DeviceType.toString().trim() == 'X48') {\r\n // isM2C = isM2C + 1;\r\n // }\r\n // if (val.DeviceType.toString().trim() == 'X47' || val.DeviceType.toString().trim() == 'X48') {\r\n // IsDryDevice = IsDryDevice + 1;\r\n // }\r\n // }\r\n //});\r\n //if (IsDryDevice > 0) {\r\n // if ($(\"#liCargoCareTasksRequiresRight\").hasClass(\"show\")) $('#liCargoCareTasksRequiresRight').addClass('d-none');\r\n //}\r\n //else {\r\n // if ($(\"#liCargoCareTasksRequiresRight\").hasClass(\"show\")) $('#liCargoCareTasksRequiresRight').removeClass('d-none');\r\n // if (isCT4Found > 0) {\r\n // if ($(\"#liPingRequiresRight\").hasClass(\"show\")) $('#liPingRequiresRight').removeClass('d-none');\r\n // if ($(\"#liDeviceResetRequiresRight\").hasClass(\"show\")) $('#liDeviceResetRequiresRight').removeClass('d-none');\r\n // if ($(\"#liGetAssetIdRequiresRight\").hasClass(\"show\")) $('#liGetAssetIdRequiresRight').removeClass('d-none');\r\n\r\n // if ($(\"#liDeviceHardResetRequiresRight\").hasClass(\"show\")) $('#liDeviceHardResetRequiresRight').addClass('d-none');\r\n // if ($(\"#liReportingIntervalRequiresRight\").hasClass(\"show\")) $('#liReportingIntervalRequiresRight').addClass('d-none');\r\n // $('#liassignpanidRequiueresRight').addClass('d-none');\r\n // $('#liAutoConfigurationRequiresRight').addClass('d-none');\r\n // }\r\n // // showing Selected commands for device Type CT5000\r\n // else if (isDeviceTypeFound > 0 || isM2C > 0) {\r\n // if ($(\"#liPingRequiresRight\").hasClass(\"show\")) $('#liPingRequiresRight').removeClass('d-none');\r\n // if ($(\"#liReportingIntervalRequiresRight\").hasClass(\"show\")) $('#liReportingIntervalRequiresRight').addClass('d-none');\r\n // if (isDeviceTypeFound > 0)\r\n // if ($(\"#liGetAssetIdRequiresRight\").hasClass(\"show\")) $('#liGetAssetIdRequiresRight').removeClass('d-none');\r\n // if ($(\"#liDeviceResetRequiresRight\").hasClass(\"show\")) $('#liDeviceResetRequiresRight').addClass('d-none');\r\n // if ($(\"#liDeviceHardResetRequiresRight\").hasClass(\"show\")) $('#liDeviceHardResetRequiresRight').addClass('d-none');\r\n\r\n // $('#liassignpanidRequiueresRight').addClass('d-none');\r\n // $('#liAutoConfigurationRequiresRight').addClass('d-none');\r\n // }\r\n // else {\r\n // if ($(\"#liPingRequiresRight\").hasClass(\"show\")) $('#liPingRequiresRight').removeClass('d-none');\r\n // if ($(\"#liReportingIntervalRequiresRight\").hasClass(\"show\")) $('#liReportingIntervalRequiresRight').removeClass('d-none');\r\n // if ($(\"#liDeviceResetRequiresRight\").hasClass(\"show\")) $('#liDeviceResetRequiresRight').removeClass('d-none');\r\n // if ($(\"#liDeviceHardResetRequiresRight\").hasClass(\"show\")) $('#liDeviceHardResetRequiresRight').removeClass('d-none');\r\n // if ($(\"#liGetAssetIdRequiresRight\").hasClass(\"show\")) $('#liGetAssetIdRequiresRight').addClass('d-none');\r\n\r\n // $('#liassignpanidRequiueresRight').removeClass('d-none');\r\n // $('#liAutoConfigurationRequiresRight').removeClass('d-none');\r\n // }\r\n //if (isM2C > 0) {\r\n // if ($(\"#liPingRequiresRight\").hasClass(\"show\")) $('#liPingRequiresRight').addClass('d-none');\r\n // $('#liCargoCareTasksRequiresRight').addClass('d-none');\r\n\r\n //}\r\n //else {\r\n // if ($(\"#liPingRequiresRight\").hasClass(\"show\")) $('#liPingRequiresRight').removeClass('d-none');\r\n // $('#liCargoCareTasksRequiresRight').removeClass('d-none');\r\n //}\r\n //}\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.props.rcdStatus != 'object' ? JSON.parse(this.props.rcdStatus) : this.props.rcdStatus;\r\n }\r\n $(\"#globalLoader\").show();\r\n try {\r\n //Excel.InitializeExportParent(arrData, rcdColumns, 'DeviceStatusGrid');\r\n //PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n var formName = 'DeviceStatusGrid';\r\n ExportAction.ExportSelectedRows(this.state.gridApiParams, formName);\r\n\r\n //var uri = Excel.InitializeExportParentToXLSX(arrData, rcdColumns, formName);\r\n //this.state.exportFields.ExportData = JSON.stringify(uri);\r\n //var sheetData = { HeaderData: [], ColumnData: [] };\r\n //sheetData = Excel.ConvertCSVToJSon(uri);\r\n //GridToolBarControl.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n getdeviceContextMenuItems = params => {\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n if (EnableCT35ML5Commands == undefined) {\r\n var refAppParams = self.props.refApplicationParams;\r\n if (refAppParams != null && refAppParams != undefined) {\r\n if (refAppParams.EnableLynxCommands != null && refAppParams.EnableLynxCommands != undefined)\r\n EnableLynxCommands = refAppParams.EnableLynxCommands == 'true' ? true : false;\r\n if (refAppParams.EnableCT35ML5Commands != null && refAppParams.EnableCT35ML5Commands != undefined)\r\n EnableCT35ML5Commands = refAppParams.EnableCT35ML5Commands == 'true' ? true : false;\r\n }\r\n }\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var rcdId = selectedrowNode.data.RCDMasterID;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.RCDMasterID === rcdId)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.RCDMasterID == selectedrowNode.data.RCDMasterID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n\r\n }\r\n var result = [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n this.rcdContextMenuClick(\"Copy\");\r\n }\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.rcdContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('154,156,159,180'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.rcdContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('48'),\r\n },\r\n {\r\n name: 'Commands',\r\n //cssClasses: UserRights.checkMenuItemVisibilityMultiple('26, 81, 110, 145, 150, 166, 167'),\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('26, 81, 110, 145, 150, 166, 167', params, 'Commands'),\r\n //disabled: UserRights.checkMenuItemDisabledForCommands(params, 'Commands'),//RCNG-1936\r\n disabled: UserRights.checkMenuItemDisabledForRcdCommands(params, 'Commands', EnableLynxCommands, EnableCT35ML5Commands),//RCNG-3215\r\n subMenu: [\r\n {\r\n name: 'Ping / Report',\r\n action: () => {\r\n this.popUpPing();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('26,166,167'),\r\n },\r\n {\r\n name: 'Set Reporting Interval',\r\n action: () => {\r\n this.popUpChangeReporting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('81', params, 'Reporting Interval'),\r\n },\r\n {\r\n name: 'Device Reset',\r\n action: () => {\r\n this.popUpDeviceReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('145', params, 'Device Reset'),\r\n },\r\n {\r\n name: 'Device Reset To Defaults',\r\n action: () => {\r\n this.popUpDeviceHardReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('150', params, 'Device Reset To Defaults'),\r\n },\r\n {\r\n name: 'Get Asset ID',\r\n action: () => {\r\n this.popUpGetAssetId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('199', params, 'Get Asset ID'),\r\n },\r\n {\r\n name: 'Assign PAN Id',\r\n action: () => {\r\n this.popUpAssignPanId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus(null, params, 'Assign PAN Id'),\r\n },\r\n {\r\n name: 'Device Configuration',\r\n action: () => {\r\n this.popAutoConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('110', params, 'Device Configuration'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Assign to Customer',\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('91', params, 'Assign'),\r\n subMenu: [\r\n {\r\n name: 'Assign',\r\n action: () => {\r\n this.GetAssignRCDsList();\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Edit Asset ID',\r\n action: () => {\r\n this.EditAssetIDContextMenuClick();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('258'),\r\n disabled: UserRights.checkMenuItemDisabledForDryEditAsset(params),\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.ExportToExcel();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n //RCNG-3232\r\n var multiselectresult = [\r\n {\r\n name: 'Assign to Customer',\r\n cssClasses: UserRights.checkMenuItemVisibilityForDeviceStatus('91', params, 'Assign'),\r\n subMenu: [\r\n {\r\n name: 'Assign',\r\n action: () => {\r\n this.GetAssignRCDsList();\r\n },\r\n },\r\n ],\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.ExportToExcel();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return self.state.selectedItems.length > 1 ? multiselectresult : result;\r\n }\r\n };\r\n getContextMenuItems(params: any) {\r\n $('#globalLoader').hide();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var rcdId = resortitem.data.RCDMasterID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.RCDMasterID === rcdId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.RCDMasterID == selectedrowNode.data.RCDMasterID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n $(\".context-menu\").show(); $(\"#contextmenu\").show();\r\n Excel.preventDefault();\r\n\r\n $(\".ag-cell\").unbind(\"contextmenu\");\r\n $(\".ag-cell\").bind('contextmenu', function (e) {\r\n $(\"#contextmenu\").show();\r\n var flag = false;\r\n var selected = params.api.getFocusedCell();\r\n var selectedrowNode = null;// params.api.getRowNode(selected.rowIndex);\r\n var tempArray = [];// if sort is clicked save in temp array\r\n params.api.forEachNodeAfterFilterAndSort(function (rowNode, index) {\r\n tempArray.push(rowNode);\r\n });\r\n var resortitem = tempArray[selected.rowIndex];\r\n var sortflage = false;\r\n var rcdId = resortitem.data.RCDMasterID;\r\n params.api.forEachNodeAfterFilterAndSort(function (NewrowNode, index) {\r\n if ((NewrowNode.data.RCDMasterID === rcdId)) {\r\n selectedrowNode = NewrowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, function (index, item) {\r\n if (item.RCDMasterID == selectedrowNode.data.RCDMasterID) {\r\n flag = true;\r\n return false;\r\n }\r\n });\r\n if (!flag)\r\n params.api.deselectAll();\r\n params.api.gridOptionsWrapper.gridOptions.api.selectNode(selectedrowNode, true);\r\n var height = $(window).height() - 200;\r\n var halfheight = ($(window).height()) / 2;\r\n var top = e.pageY + 5;\r\n if (height < top) {\r\n top = (top - halfheight) + 245;\r\n }\r\n var left = e.pageX;\r\n $(\".context-menu\").css({\r\n top: top + \"px\",\r\n left: left + \"px\"\r\n });\r\n $(\".context-menu\").show();\r\n e.preventDefault();\r\n return false;\r\n });\r\n\r\n $(document).contextmenu(function () {\r\n return false;\r\n });\r\n\r\n $(document).bind('contextmenu click', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n\r\n $('.context-menu').bind('contextmenu', function () {\r\n return false;\r\n });\r\n $('.context-menu').on('click', 'li', function () {\r\n $(\".context-menu\").hide();\r\n });\r\n }\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n // { headerName: \"ALM\", field: \"R_HighestSeverityLevel\", width: 65, cellRenderer: Formatters.runStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n // { headerName: \"RUN\", field: \"RunState\", width: 65, cellRenderer: Formatters.runStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"PWR\", field: \"DevicePowerSourceCd\", width: 65, valueGetter: (params) => { return Formatters.PwrSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.pwrStateFormatterForFilter(params); } },\r\n enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: ReeferCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"SW\", field: \"IgnitionOn\", width: 65, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return GensetFormatter.gensetSwitchFormatterImgForFilter(params); } },\r\n valueGetter: (params) => { return GensetFormatter.gensetSwitchSorting(params); },\r\n cellRenderer: GensetCellRender.gensetSwitchFormatterImg, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"ENG\", field: \"GensetRunning\", width: 65, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return GensetFormatter.gensetRunningFormatterForFilter(params); } },\r\n valueGetter: (params) => { return GensetFormatter.EngineSorting(params); },\r\n cellRenderer: GensetCellRender.gensetRunningFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"OEM\", field: \"ReeferOEMTypeCd\", width: 70, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return ReeferFormatter.oemTypeFormatterForFilter(params); } },\r\n valueGetter: params => { return ReeferFormatter.OEMTypeValueFormatterFieldName(params); }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDID); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Last asset ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.AssetNumber); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Asset type\", field: \"AssetType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.AssetType); },\r\n filterParams: { valueGetter: params => { return Formatters.AssetTypeFormatterForFilter(params); } },\r\n cellRenderer: Formatters.AssetTypeFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Last event\", field: \"LastEvent\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: CellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n // { headerName: \"Alert\", field: \"Alerts\", cellRenderer: CellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Event time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_EventDTTM\", width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterR_EventDTTMForFilter(params); } },\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"R_EventDTTM\"); },\r\n cellRenderer: Formatters.dateTypeFormatter,\r\n enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door\", field: \"DoorOpen\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return ReeferFormatter.DevicedoorFormatterFilter(params); } },\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return ReeferFormatter.DeviceDoorFormatterSorting(params); },\r\n cellRenderer: ReeferFormatter.DevicedoorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DoorEventDtm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DoorEventDtm\"); },\r\n cellRenderer: Formatters.dateTypeFormatter, width: 170, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Receipt time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"R_ModifiedDTTM\", width: 150,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterR_ModifiedDTTMForFilter(params); } },\r\n valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"R_ModifiedDTTM\"); },\r\n enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n cellRenderer: Formatters.dateTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.City); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.State); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Country); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Zip\", field: \"Zip\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Zip); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence\", field: \"GeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.GeofenceName); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"ServerGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ServerGeofenceName); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: CellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Device Fence ID\", field: \"Geofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Geofence); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence ID\", field: \"ServerGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ServerGeofence); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: CellRenderer.StringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } },\r\n cellRenderer: ReeferCellRenderer.GPSCoordsFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); },\r\n width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.CountryName); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MNC); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerLocalizationAreaCode); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerBaseStationID); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"In geofence\", field: \"IsInsideGeofence\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.YesNoValueSorting(params.data.IsInsideGeofence); },\r\n width: 90, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ReeferFormatter.sensorDataSortingFieldName(params, \"ReeferACPowerLevel\"); },\r\n cellRenderer: ReeferFormatter.sensorDataValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: Formatters.rcdPowerSourceFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.rcdFirmwareFormatter(params); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDBootloaderVersion\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDMeshFirmwareVersion\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device temp \", headerValueGetter: Formatters.TempHeaderFormatter, enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return ReeferFormatter.TemperatureSortingFieldName(params, \"DeviceTemp\"); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceTempFormatterForFilter(params); } },\r\n cellRenderer: ReeferFormatter.TemperatureValueFormatter, field: \"DeviceTemp\", width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BatteryVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.BattVoltageSortingFieldName(params, \"BatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.BatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door bat\", field: \"DoorSensorBatteryVoltage\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.doorBattPctSorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.doorBattPctFormatterFilter(params); } },\r\n cellRenderer: CellRenderer.battPctFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Geofence revision\", field: \"RevisionNum\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RevisionNum\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Cell Signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.RSSISorting(params); }, filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } },\r\n cellRenderer: ReeferCellRenderer.RSSITypeFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Assigned to\", field: \"CustomerName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); },\r\n filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } },\r\n cellRenderer: ReeferCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device config\", field: \"DeviceConfig\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n filterParams: { valueGetter: params => { return Formatters.GuestReeferModeFormatterForFilter(params); } },\r\n cellRenderer: Formatters.GuestReeferModeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceType); },\r\n cellRenderer: CellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ];\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"BatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if ((fieldValue.toString().trim() == \"-999\" || fieldValue.toString().trim() == \"-1\") && fieldName.toString().trim() == \"DoorSensorBatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"IgnitionOn\":\r\n return GensetCellRender.GensetSwitchFormatterGrouping(fieldValue);\r\n case \"GensetRunning\":\r\n return GensetCellRender.EngineSortingFormatterGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return ReeferCellRenderer.PowerStateFormatterGrouping(fieldValue);\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"AssetType\":\r\n return Formatters.AssetTypeGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"RSSI\":\r\n return ReeferCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"DeviceTemp\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.TemperatureFormatterGrouping(fieldValue, fieldName, params, DeviceType);\r\n }\r\n case \"R_EventDTTM\":\r\n case \"R_ModifiedDTTM\":\r\n case \"DoorEventDtm\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"DoorOpen\":\r\n return Formatters.DeviceDoorFormatterGrouping(fieldValue);\r\n case \"DoorSensorBatteryVoltage\":\r\n {\r\n var AssetType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n AssetType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].AssetType;\r\n }\r\n if(AssetType != null && AssetType != undefined && AssetType != \"\")\r\n if(AssetType.toString().toUpperCase().trim() == \"D\")\r\n return CellRenderer.DoorBattPctFormatterGrouping(fieldValue);\r\n }\r\n default:\r\n return fieldValue;\r\n }\r\n }\r\n\r\n bindingRcdStatusGrid(searchState: server.RcdStatusSearchFilters) {\r\n $('#globalLoader').show();\r\n this.setState({\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n this.props.requestRcdAdvanceSearch(searchState);\r\n }\r\n\r\n static refreshDeviceStatusGrid() {\r\n self.refreshRCDStatusGrid();\r\n }\r\n\r\n refreshRCDStatusGrid() {\r\n $('#globalLoader').show();\r\n this.setState({\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n //this.ResetContextMenuItems();\r\n this.props.requestRcdAdvanceSearch(this.props.rcdSearchFilters);\r\n }\r\n\r\n AssignCustomer() {\r\n this.setState({ showAssignToCustomerComponent: true });\r\n $(\"#myAssignedModal .close\").click();\r\n }\r\n\r\n CancelAssignToCustomer() {\r\n this.setState({ showAssignToCustomerComponent: false });\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n AssignToCustomerConfirm() {\r\n $('#globalLoader').show();\r\n var r = this.state.checked;\r\n var cssClass = \"\";\r\n if (r.length > 0) {\r\n this.state.SelectedCustomer.CustomerID = r[0];\r\n this.state.SelectedCustomer.SelectedRcdIDs = selectedRowDataIds.toString();\r\n var filterParams = JSON.stringify(this.state.SelectedCustomer);\r\n var url = Config.ApiBaseUrl + '/api/RcdStatus/AssignRCDsToCustomerSO';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({\r\n AssignedStatus: data\r\n });\r\n if (this.state.AssignedStatus == 'Assigned') {\r\n this.refreshRCDStatusGrid();\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n PopupWindow.showErrorMessage(\"Alert!\", \"Selected Device(s) have been successfully assigned to the customer.\");\r\n }\r\n else {\r\n $('#globalLoader').hide();//RCNG-1655\r\n cssClass = $(\"#assigned\").attr('class');\r\n $(\"#assigned\").removeClass(cssClass);\r\n $(\"#assigned\").addClass('alert alert-danger');\r\n $(\"#assigned\").text('Selected Device(s) could not be assigned to the customer.');\r\n }\r\n });\r\n\r\n }\r\n else {\r\n $('#globalLoader').hide();\r\n cssClass = $(\"#assigned\").attr('class');\r\n $(\"#assigned\").removeClass(cssClass);\r\n $(\"#assigned\").addClass('alert alert-warning');\r\n $(\"#assigned\").text('Please select at least one customer for selected Device(s).');\r\n\r\n }\r\n }\r\n\r\n CancelCustomer() {\r\n var r = this.state.checked;\r\n this.setState({ checked: [] });\r\n lastCheckedNodes = [];\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n //Start of RCNG 124\r\n onCustomerChange = (event, { newValue }) => {\r\n this.setState({\r\n customerIdvalue: newValue,\r\n targetId: event.target.id\r\n });\r\n var inputValue = newValue.trim().toLowerCase();\r\n var newNodesData = [];\r\n var nodesData = this.state.TreeNodes;\r\n for (let c = 0; c < nodesData.length; c++) {\r\n if (nodesData[c].label.trim().toLowerCase().includes(inputValue)) {\r\n newNodesData.push(nodesData[c])\r\n }\r\n }\r\n this.setState({ selectedTreeNodes: newNodesData });\r\n };\r\n\r\n getSuggestionValue(suggestion) {\r\n // selectionChanged = true;\r\n return suggestion;\r\n }\r\n\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n customerSuggestions: this.getCustomerSuggestions(value)\r\n });\r\n };\r\n\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n customerSuggestions: []\r\n });\r\n };\r\n\r\n getCustomerSuggestions(value) {\r\n // var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : customerlst.customerName.filter(label =>\r\n // label.toLowerCase().slice(0, inputLength) === inputValue);\r\n label.toLowerCase().includes(inputValue));\r\n //return '';\r\n };\r\n\r\n //End of RCNG 124\r\n\r\n onCheck(checked) {\r\n if (lastCheckedNodes.length == 0) {\r\n lastCheckedNodes = checked;\r\n this.setState({ checked: checked });\r\n }\r\n else {\r\n var chk = checked.indexOf(lastCheckedNodes[0]);\r\n if (chk >= 0)\r\n checked.splice(chk, 1);\r\n lastCheckedNodes = checked;\r\n this.setState({ checked: checked });\r\n }\r\n\r\n }\r\n\r\n GetAssignRCDsList() {\r\n var cssClass = \"\";\r\n SelectedRcds = \"\";\r\n cssClass = $(\"#assigned\").attr('class');\r\n $(\"#assigned\").removeClass(cssClass);\r\n $(\"#assigned\").text('');\r\n var url = Config.ApiBaseUrl + '/api/RcdStatus/GetAssignRCDsList?rcdMasterIDs=';\r\n var request = RCUtils.FetchRequest(url + selectedRowDataIds, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 1) {\r\n data.forEach(function (value) {\r\n SelectedRcds = SelectedRcds == \"\" ? value.RCDID : SelectedRcds + \",\" + value.RCDID;\r\n });\r\n }\r\n else {\r\n SelectedRcds = data[0].RCDID;\r\n }\r\n this.setState({ isLoading: false, customerIdvalue: '', checked: [], selectedTreeNodes: this.state.TreeNodes });\r\n });\r\n $(\"#btnTriggerAssign\").click();\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n }\r\n\r\n rcdhistoryAction(data: any) {\r\n var rcddetails = data;\r\n this.props.history.push('/rcdhistory', rcddetails);\r\n }\r\n\r\n reeferrcddetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n\r\n if (data[0].AssetNumber != null && data[0].AssetNumber != undefined && data[0].AssetNumber != '') {\r\n //if (data[0].DeviceType.trim() == 'WG1' || data[0].DeviceType.trim() == 'WG2') {\r\n if (data[0].AssetType.trim() == 'G') {\r\n var gensetdetails = {\r\n gensetData: data[0], source: dataSource, isOpenVia: isOpenVia, isDevice: true\r\n };\r\n this.props.history.push('/gensetdetails', gensetdetails);\r\n }\r\n // else if (data[0].DeviceType.trim() == 'X47' || data[0].DeviceType.trim() == 'X48' || data[0].DeviceType.trim() == 'GT1200') {\r\n else if (data[0].AssetType.trim() == 'D') {\r\n var drydetails = {\r\n dryData: data[0], source: dataSource, isOpenVia: isOpenVia, isDevice: true\r\n };\r\n this.props.history.push('/drydetails', drydetails);\r\n }\r\n //else if (data[0].DeviceType.trim() == 'GT1020') {\r\n else if (data[0].AssetType.trim() == 'C') {\r\n var chassisdetails = {\r\n chassisData: data[0], source: dataSource, isOpenVia: isOpenVia, isDevice: true\r\n };\r\n this.props.history.push('/chassisdetails', chassisdetails);\r\n }\r\n //else {\r\n else if (data[0].AssetType.trim() == 'R') {\r\n var reeferdetails = {\r\n reeferData: data[0], source: dataSource, isOpenVia: isOpenVia, isDevice: true\r\n };\r\n this.props.history.push('/reeferdetails', reeferdetails);\r\n }\r\n }\r\n }\r\n EditAssetIDContextMenuClick(this: any) {\r\n $(\"#btnTriggerEditAsset\").click();\r\n this.setState({ showEditAssetWindow: true });\r\n }\r\n rcdContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Copy\": this.rcddetailsCopyAction();\r\n break;\r\n case \"History\": this.rcdhistoryAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.reeferrcddetailsAction(this.state.selectedItems, 'Device', 'RcdStatus');\r\n break;\r\n }\r\n }\r\n\r\n rcddetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n coppiedData = event.value;\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', true);\r\n }\r\n\r\n popUpChangeReporting() {\r\n self.setState({ modelTitle: 'Change Reporting Interval' });\r\n self.RenderContextMenuPopUp('ChangeReportingInterval', true);\r\n }\r\n\r\n popUpAssignPanId() {\r\n self.setState({ modelTitle: 'Assign PAN ID' });\r\n self.RenderContextMenuPopUp('AssignPanId', true);\r\n }\r\n popAutoConfiguration() {\r\n if (self.state.selectedItems.length > 0) {\r\n var reeferData = self.state.selectedItems;\r\n var customerIdsCount = 0;\r\n\r\n $.each(reeferData, function (key, value) {\r\n var customerId = reeferData[0].CustomerID;\r\n if (value.CustomerID != customerId) {\r\n customerIdsCount++;\r\n }\r\n });\r\n if (customerIdsCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same customer.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Device Configuration' });\r\n self.RenderContextMenuPopUp('AutoConfig', false);\r\n }\r\n }\r\n }\r\n popUpUnAssignDeviceFromCustomer() {\r\n self.setState({ modelTitle: 'Unassign Units From Customer' });\r\n self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n }\r\n\r\n popUpDeviceReset() {\r\n self.setState({ modelTitle: 'Device Reset' });\r\n self.RenderContextMenuPopUp('DeviceReset', true);\r\n }\r\n\r\n popUpDeviceHardReset() {\r\n self.setState({ modelTitle: 'Device Reset To Defaults' });\r\n self.RenderContextMenuPopUp('DeviceHardReset', true);\r\n }\r\n\r\n popUpGetAssetId() {\r\n self.setState({ modelTitle: 'Get Asset ID' });\r\n self.RenderContextMenuPopUp('GetAssetId', true);\r\n }\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n switch (popUpName) {\r\n case 'SendEmail':\r\n return ;\r\n case 'Ping':\r\n if (self.state.selectedItems[0].DeviceType.toString().trim() == 'WG1' || self.state.selectedItems[0].DeviceType.toString().trim() == 'WG2' || self.state.selectedItems[0].DeviceType.toString().trim() == 'X47' || self.state.selectedItems[0].DeviceType.toString().trim() == 'X48')\r\n return ;\r\n else\r\n return ;\r\n case 'ChangeReportingInterval':\r\n return ;\r\n case 'AssignPanId':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n case 'AutoConfig':\r\n return ;\r\n case 'DeviceReset':\r\n return ;\r\n case 'DeviceHardReset':\r\n return ;\r\n case 'GetAssetId':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var rcdData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.USP_RcdCurrentConditionUI[];\r\n filterSet = rcdData;\r\n var filterParams = JSON.stringify(filterSet);\r\n var checkBoxInfo = this.state.VCCheckBoxInfo;\r\n if (isCommands) {\r\n if (rcdData != undefined && rcdData != null) {\r\n if (popUpName == \"GetDLTraditional\" || popUpName == \"SchedulePreTrip\") {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData, checkBoxInfo) });\r\n $('#btnTrigger').click();\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/CheckIsMsgFromVesselRCD', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n var vesselid = data;\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetVesselInformation?customerID=' + custId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n checkBoxInfo.dropDownVCData = result;\r\n if (result.length > 0) {\r\n if (vesselid == \"-1\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n else if (vesselid == \"0\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = false;\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = true;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = false;\r\n checkBoxInfo.selectedVCData = checkBoxInfo.dropDownVCData.find(d => d.VesselId == parseInt(vesselid));\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n }\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n $('#globalLoader').hide();\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n });\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n }\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n self.setState({ VCCheckBoxInfo: VCInfo });\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n this.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n requestToHoldRowGroups(params) {\r\n\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n\r\n var rowGroupItems: any;\r\n rowGroupItems = currentGropup;\r\n\r\n if (this.props.rcdStatus != undefined && this.props.rcdStatus != null && this.props.rcdStatus.length > 0) {\r\n this.props.requestToHoldSelectedRowGroups(rowGroupItems);\r\n }\r\n\r\n if (this.props.rcdStatus != undefined && this.props.rcdStatus != null && this.props.rcdStatus.length === 0\r\n && self.state.gridApiParams.gridOptionsWrapper != null && self.state.gridApiParams.gridOptionsWrapper != undefined) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns([]);\r\n } \r\n\r\n }\r\n onFirstDataRendered(params) { \r\n this.setPrefenceSettingsColumnsWithPreference(params);\r\n\r\n }\r\n setPrefenceSettingsColumnsWithPreference(params) { \r\n var rowGroupItems = [];\r\n rowGroupItems = this.props.SelectedRowGroups;\r\n\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0\r\n && self.state.gridApiParams.gridOptionsWrapper != null && self.state.gridApiParams.gridOptionsWrapper != undefined) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n\r\n }\r\n \r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n // start of RCNG 124\r\n\r\n const { customerSuggestions } = this.state;\r\n const CustomerIdinputProps = {\r\n id: 'CustomerID',\r\n placeholder: 'Search customer',\r\n value: this.state.customerIdvalue,\r\n onChange: this.onCustomerChange.bind(this)\r\n };\r\n //end of RCNG 124\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n {\r\n id: 'OneDecimal',\r\n numberFormat: {\r\n format: '0.0',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n ];\r\n\r\n return
    \r\n
    \r\n Device Status\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n 0 ? true : false}\r\n gridApiParams={this.state.gridApiParams} parentchild={\"P\"} formName={\"DeviceStatusGrid\"} />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.modelTitle}
    \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Assign Customer
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showAssignToCustomerComponent == true ?\r\n : null}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.state.isLoading ?
    Loading...
    :\r\n
    Selected Device(s) already assigned to a customer.
    Do you want to reassign to a new customer?\r\n Device(s):{SelectedRcds}\r\n
    }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n {this.state.showEditAssetWindow == true ? : null}\r\n
    \r\n \r\n \r\n \r\n \r\n ;\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ ...state.userDetails, ...state.rcdStatus }), // Selects which state properties are merged into the component's props\r\n RcdStatusState.actionCreators // Selects which action creators are merged into the component's props\r\n)(RcdStatus as any);\r\n","/* eslint-disable */\r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as UserDetailState from '../../store/UserDetails';\r\nimport * as HomeState from '../../store/Home';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Formatters from '../../actions/Formatters';\r\nimport { GensetCellRender } from '../../actions/GensetCellRender';\r\nimport GensetFormatters from '../../actions/GensetFormatter';\r\n//import Excel from '../../actions/ExportToExcel.js';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport 'ag-grid-enterprise';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\n\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport { GensetStatusSearch } from '../childcomponents/GensetStatusSearch';\r\nimport * as GensetStatusState from '../../store/GensetStatus';\r\nimport { GridToolBarExcel } from './../sharedcomponents/GridToolBarExcel';\r\nimport UserRights from '../../actions/UserRights';\r\nimport uniq from 'lodash/uniq';\r\nimport { GensetToggleButtonsFilter } from '../childcomponents/GensetToggleButtonsFilter';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport { GensetPingControl } from './../sharedcomponents/ForwardCommands/GensetCommands/GensetPingControl';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\n\r\nimport forEach from 'lodash/forEach';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\nvar gensetColumns;\r\nvar gensetColumns2;\r\n//var gensetStatus;\r\nvar statusFilters;\r\nvar self;\r\n//var customerTypeCd;\r\nvar functionId;\r\nvar noCarryFwdScreens = [\"reeferstatus\", \"drystatus\", \"chassisstatus\"];\r\nvar gensetAssetSensors;\r\nvar IsTriggered: boolean;\r\n\r\n// At runtime, Redux will merge together...\r\ntype GensetStatusProps =\r\n UserDetailState.UserState\r\n & HomeState.HomeState\r\n & GensetStatusState.GensetSearchState // ... state we've requested from the Redux store \r\n & typeof GensetStatusState.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{}>; // ... plus incoming routing parameters\r\n\r\nexport interface GensetStatusSearchState {\r\n selectedItems: any[];\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n columnDefs: any[];\r\n gensetStatusData: any[];\r\n pageSize: any;\r\n gridApiParams: any;\r\n exportFields: ExportFields;\r\n ToggleSearchParams: any; \r\n reeferFormatter: server.ReeferFormatter;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n DashboardPreferenceId: any;\r\n DashboardWidgetsSearch: any[];\r\n IsReadOnly: any;\r\n RevisionNum: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customAttributesInfo;\r\nvar customerAccessData: any[];\r\nvar commandIssued: boolean = false;\r\nclass GensetStatus extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n customerAccessData = [];\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n //customerTypeCd = this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n var exportData = new ExportFields();\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetCustomerDeviceTypeSensor');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n // this.setState({ CustomerDeviceTypeSensor: data });\r\n this.renderCustomerDeviceTypeSensorColumns(data);\r\n });\r\n\r\n functionId = 46; // functionId for GensetStatus GridPreference\r\n this.state = {\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n columnDefs: [],\r\n gensetStatusData: [],\r\n pageSize: 25,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n ToggleSearchParams: null,\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n autoGroupColumnDef: { minWidth: 200 },\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n reeferFormatter: this.props.reeferFormatter,\r\n DashboardWidgetsSearch: [],\r\n IsReadOnly: false,\r\n DashboardPreferenceId: 0,\r\n RevisionNum: 0\r\n };\r\n\r\n $('#globalLoader').show;\r\n this.GetDefaultGridPreferenceColumns();\r\n //gensetColumns = this.createColumnDefs();\r\n\r\n gensetColumns2 = this.createColumnDefs();\r\n if (this.props.location.state != undefined && this.props.location.state != null) {\r\n statusFilters = this.props.location.state;\r\n }\r\n else if (this.props.searchFilters != undefined && this.props.searchFilters != null) {\r\n if (this.props.searchFilters.SelectedAssetTypes != null && (this.props.searchFilters.SelectedAssetTypes == \"\"\r\n || this.props.searchFilters.SelectedAssetTypes.toString().split(',').indexOf(\"Genset\") != -1)) {\r\n statusFilters = this.props.searchFilters;\r\n \r\n //WI-24029-start\r\n if (window.location.search != undefined && window.location.search != null && window.location.href != undefined && window.location.href != null) {\r\n if (window.location.href.includes('gensetstatus') && (!noCarryFwdScreens.includes(window.location.search.slice(window.location.search.indexOf(\"=\") + 1))))\r\n statusFilters = this.props.searchFilters;\r\n else\r\n this.clearFilters();\r\n }\r\n else\r\n this.clearFilters();\r\n //WI-24029-end\r\n \r\n }\r\n else\r\n this.clearFilters();\r\n }\r\n else\r\n this.clearFilters();\r\n self = this;\r\n this.PopulateReeferenceData();\r\n }\r\n\r\n GetDefaultGridPreferenceColumns() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n {\r\n var dashboardPreferenceId: any = sessionStorage.getItem('DashboardPreferenceId');\r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n if(defaultPreferenceName.length>0) \r\n this.setState({ DashboardPreferenceId: defaultPreferenceName[0].DashboardPreferenceId, IsReadOnly: defaultPreferenceName[0].IsReadOnly, RevisionNum: defaultPreferenceName[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n else {\r\n var dashboardLayouts: any = data.DashboardLayouts;\r\n this.setState({ DashboardPreferenceId: dashboardLayouts[0].DashboardPreferenceId, IsReadOnly: dashboardLayouts[0].IsReadOnly, RevisionNum: dashboardLayouts[0].RevisionNum, DashboardWidgetsSearch: data.DashboardWidgetsSearch });\r\n }\r\n } \r\n }); \r\n }\r\n\r\n renderCustomerDeviceTypeSensorColumns(customerDeviceTypeSensor: any) {\r\n gensetColumns = this.createColumnDefs();\r\n var newColumns = gensetColumns;\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n\r\n if (customerDeviceTypeSensor != null && customerDeviceTypeSensor != undefined) \r\n gensetAssetSensors = customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'G');\r\n\r\n if (gensetAssetSensors != null && gensetAssetSensors != undefined && gensetAssetSensors.length > 0) {\r\n $.each(gensetAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: true, sortable: true, filter: true, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', refData: val.SensorSetDsc + \",\" + val.SensorResetDsc, headerClass: val.OORText, enableRowGroup: true, sortable: true, filter: true, resizable: true, valueGetter: Formatters.stringTypeSortingForDigitalSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!gensetColumns2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n gensetColumns2.push(newColumnDefination);// = newColumns;\r\n }\r\n else {\r\n this.setState({ columnDefs: gensetColumns });\r\n }\r\n }\r\n\r\n clearFilters() {\r\n customAttributesInfo = {};\r\n var filters: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null,\r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null //WI-26881\r\n };\r\n\r\n statusFilters = filters;\r\n }\r\n\r\n PopulateReeferenceData() {\r\n if (self.state.reeferFormatter == null || self.state.reeferFormatter == undefined) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetReeferFormattersList', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n self.setState({\r\n reeferFormatter: data\r\n }, () => { self.props.requestGensetAdvanceSearch(statusFilters, gensetColumns); });\r\n });\r\n }\r\n else {\r\n self.props.requestGensetAdvanceSearch(statusFilters, gensetColumns);\r\n }\r\n\r\n }\r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n gensetContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.gensetmapAction(this.state.selectedItems);\r\n break;\r\n case \"History\": this.gensethistoryAction(this.state.selectedItems);\r\n break;\r\n case \"CommandStatus\": this.gensetcommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.gensetdetailsAction(this.state.selectedItems, 'Genset','CurrentDetails');\r\n break;\r\n case \"Copy\": this.gensetdetailsCopyAction();\r\n break;\r\n case \"CopyWithHeader\": this.gensetdetailsCopyWithHeaderAction();\r\n break;\r\n }\r\n }\r\n\r\n gensetdetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n gensetdetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n }\r\n\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n \r\n\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n\r\n if (event.data != null && event.data != undefined) {\r\n //self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === \"0\")\r\n this.gensetdetailsAction(this.state.selectedItems, 'Genset', 'Comments');\r\n }\r\n }\r\n\r\n gensetdetailsAction(data: any, dataSource: any,isOpenVia:any) {\r\n var gensetdetails = {\r\n gensetData: data[0], source: dataSource,isOpenVia:isOpenVia\r\n };\r\n this.props.history.push('/gensetdetails?From=' + window.location.pathname.replace('/', ''), gensetdetails);\r\n }\r\n\r\n gensethistoryAction(data: any) {\r\n var gensetdetails = {\r\n gensetData: data\r\n };\r\n this.props.history.push('/gensethistory', gensetdetails);\r\n }\r\n\r\n gensetmapAction(data: any) {\r\n var gensetdetails = {\r\n gensetData: data\r\n };\r\n this.props.history.push('/gensetmap', gensetdetails);\r\n }\r\n\r\n gensetcommandstatusAction(data: any) {\r\n var gensetdetails = data;\r\n this.props.history.push('/gensetcommandstatus', gensetdetails);\r\n }\r\n\r\n updateGensetStatusDimensions() { \r\n $(\"#GensetStatusGrid .ag-root-wrapper-body\").css('min-height', $(window).height() - 338);\r\n $(\"#GensetStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 338);\r\n $(\"#GensetStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 338);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateGensetStatusDimensions.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n var authRight = RCUtils.CheckAssesRightsForGensets('151');\r\n if (!authRight) { this.props.history.push('/AccessDenied'); } else {\r\n this.setState({ columnDefs: gensetColumns });\r\n GensetToggleButtonsFilter.ClearToggleFilters();\r\n //this.updateGensetStatusDimensions();\r\n window.addEventListener(\"resize\", this.updateGensetStatusDimensions.bind(this));\r\n\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n Excel.preventDefault();\r\n \r\n \r\n \r\n \r\n setTimeout(() => { this.updateGensetStatusDimensions() }, 200);\r\n // To make the Modal popups draggable.\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n }\r\n }\r\n \r\n exportToExcel() {\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.props.gensetStatus != 'object' ? JSON.parse(this.props.gensetStatus) : this.props.gensetStatus;\r\n }\r\n $(\"#globalLoader\").show();\r\n var r = this.state.columnDefs;\r\n try { \r\n var formName = 'GensetStatus';\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridToolBarExcel.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n\r\n onGridReady(params: any) {\r\n self.setState({ gridApiParams: params.api });\r\n // params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var gridPreferencesData: any = self.state.DashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 12);\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n\r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"GensetStatus\");\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"GensetStatus\");\r\n }, 3000); \r\n }\r\n\r\n onSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n //var rights = self.props.loggedInUserData.User.Customer.Rights;\r\n var selectedGensetData = [];\r\n var selectedRows = params.api.getSelectedRows();//this.gridApi.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedGensetData.push(selectedRow);\r\n });\r\n\r\n var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedGensetData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n if (selectedGensetData.length > 1) {\r\n $('#liDetailsRequiresRight').removeClass('enabled');\r\n $('#liDetailsRequiresRight').addClass('disabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n }\r\n else {\r\n $('#liDetailsRequiresRight').removeClass('disabled');\r\n $('#liDetailsRequiresRight').addClass('enabled');\r\n }\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n //if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n var forwardCommandParam = JSON.stringify(selectedGensetData);\r\n var url = Config.ApiBaseUrl + '/api/ReeferStatus/GetAssetAssigned3rdParty';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: forwardCommandParam, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data == \"assigned\") {\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('disabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('enabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('disabled');\r\n\r\n }\r\n else if (data == \"unassigned\") {\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('disabled');\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('disabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('disabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('enabled');\r\n }\r\n else {\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').removeClass('enabled');\r\n if ($(\"#liThirdPartyAccessRequiresRight\").hasClass(\"show\")) $('#liThirdPartyAccessRequiresRight').addClass('disabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liUnassignFromCustomerRequiresRight\").hasClass(\"show\")) $('#liUnassignFromCustomerRequiresRight').addClass('disabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').removeClass('enabled');\r\n if ($(\"#liAssignToCustomerRequiresRight\").hasClass(\"show\")) $('#liAssignToCustomerRequiresRight').addClass('disabled');\r\n }\r\n });\r\n }\r\n\r\n onSortChanged(params: any) {\r\n params.api.gridOptionsWrapper.gridOptions.api.refreshInMemoryRowModel('filter');\r\n params.api.gridOptionsWrapper.gridOptions.api.redrawRows();\r\n }\r\n\r\n \r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n //1477-start\r\n popUpRetire() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a retired asset does not appear in search results, nor does it contribute to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesRetire.bind(this),\r\n self.onCancelGensetStatusGrid.bind(this));\r\n }\r\n popUpReactivate() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a reactivated asset appears in search results and contributes to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesReactivate.bind(this),\r\n self.onCancelGensetStatusGrid.bind(this));\r\n }\r\n\r\n onYesRetire() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits()\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/RetireAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Retired.\");\r\n self.refreshStatusGrid();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n }\r\n }\r\n onYesReactivate() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits();\r\n $('#globalLoader').show();\r\n RCNGWindow.ConfirmWindow.close();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/asset/ReactivateAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Reactivated.\");\r\n self.refreshStatusGrid();\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n\r\n }\r\n }\r\n onCancelGensetStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"AssetMasterID\": value.AssetMasterID,\r\n \"AssetNumber\": value.AssetNumber,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n //\"DCCurrentConditionID\": value.DCCurrentConditionID,\r\n //\"DCConditionID\": value.DCConditionID,\r\n \"RCDID\": value.RCDID\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n //1477-end\r\n getGensetContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"ReeferID\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var assetNumber = selectedrowNode.data.AssetNumber;\r\n params.api.forEachLeafNode((newRowNode, index) => {\r\n if ((newRowNode.data.AssetNumber === assetNumber)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.AssetNumber == selectedrowNode.data.AssetNumber) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.gensetContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('152'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.gensetContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('156'),\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.gensetContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('153'),\r\n },\r\n {\r\n name: 'Command History',\r\n action: () => {\r\n this.gensetContextMenuClick(\"CommandStatus\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityGT1030(params, 'CommandStatus', '157'), //UserRights.checkMenuItemVisibility('157'),\r\n },\r\n {\r\n name: 'Commands',\r\n cssClasses: UserRights.checkMenuItemVisibilityGT1030(params, 'Commands', '166'), //UserRights.checkMenuItemVisibility('166'),\r\n subMenu: [\r\n {\r\n name: 'Reporting',\r\n cssClasses: UserRights.checkMenuItemVisibility('166'),\r\n subMenu: [\r\n {\r\n name: 'Ping / Report',\r\n action: () => {\r\n this.popUpPing();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('166'),\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Third Party Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('168,169'),\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'ThirdPartyAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignToCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('168'),\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'Assign'),\r\n },\r\n {\r\n name: 'Unassign From Customer',\r\n action: () => {\r\n this.popUpUnAssignFromCustomer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('169'),\r\n disabled: UserRights.checkMenuItemDisabledForGenset(params, 'UnAssign'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Inventory',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('255,256'),//RCNG-1176\r\n disabled: UserRights.checkMenuItemDisabled(params, 'RetireOrReactivate'),\r\n subMenu: [\r\n {\r\n name: 'Retire',\r\n action: () => {\r\n this.popUpRetire();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('255', params, \"Retire\"),\r\n },\r\n {\r\n name: 'Reactivate',\r\n action: () => {\r\n this.popUpReactivate();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('256', params, \"Reactivate\"),\r\n },\r\n ],\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: true,\r\n sortable: true,\r\n resizable: true,\r\n }]\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n //{ headerName: \"CC\", field: \"CCSeverityLevelGenset\", width: 65, cellRenderer: Formatters.stringTypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"SW\", field: \"IgnitionOn\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.gensetSwitchFormatterImgForFilter(params); } },\r\n resizable: true, width: 65, valueGetter: (params) => { return GensetFormatters.gensetSwitchSorting(params); },\r\n cellRenderer: GensetCellRender.gensetSwitchFormatterImg, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"ENG\", field: \"GensetRunning\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.gensetRunningFormatterForFilter(params); } }, resizable: true, valueGetter: (params) => { return GensetFormatters.EngineSorting(params); }, width: 65, cellRenderer: GensetCellRender.gensetRunningFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80,\r\n valueGetter: (params) => { return Formatters.vesselCdSorting(params); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: true, cellClass: 'myExcelStyle', filter: true, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: GensetCellRender.AssetStateFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n //,{ headerName: \"ALRT\", field: \"AlertSeverityID\", width: 65, cellRenderer: (params) => { return Formatters.statusIndicatorWithDescriptionForALR(params, self.state.reeferFormatter.AlertMasterList); }, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Assignments',\r\n children: [\r\n {\r\n headerName: \"Assigned to\", field: \"CustomerName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); },\r\n filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } }, resizable: true, cellRenderer: GensetCellRender.stringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Identification',\r\n children: [\r\n {\r\n headerName: \"OEM\", field: \"OEMTypeCD\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return GensetFormatters.oemTypeFormatterGensetForFilter(params); } }, resizable: true, width: 100,\r\n valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.OEMTypeValueFormatter(params.data.OEMTypeCD); }, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Genset ID\", field: \"AssetNumber\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 150,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.AssetNumber); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Model\", field: \"ModelType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ModelType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"Cust. Model\", field: \"ModelNumber\", width: 120, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Form\", field: \"FormType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FormType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Tank sz (gal)\", field: \"GensetTankSize\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 120,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.GensetTankSize); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Mfd. year\", field: \"ManufacturedDate\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.YearFromdateTypeFormatterForFilter(params); } }, resizable: true, width: 80, valueGetter: (params) => { return Formatters.ManufactureYearSorting(params); }, cellRenderer: Formatters.YearFromdateTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"Profile\", field: \"Profile\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Engine\", field: \"EngineType\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Generator\", field: \"GeneratorType\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"ID Plate\", field: \"IdPlate\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Assigned\", field: \"Assigned\", width: 80, cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Report Date/Time and Location',\r\n children: [\r\n { headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, cellRenderer: GensetCellRender.stringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Event time\", field: \"EventDTTM\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n\r\n {\r\n headerName: \"Device fence\", field: \"FenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device fence ID\", field: \"FenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FenceNameID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Server fence\", field: \"BackendGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: Formatters.stringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Server fence ID\", field: \"BackendGeofenceNameID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.BackendGeofenceNameID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofenceNameID\", cellRenderer: Formatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Geofence revision\", field: \"GeofenceDefinitionRevision\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.GeofenceDefinitionRevision); }, cellRenderer: GensetCellRender.floatTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: GensetCellRender.GPSCoordsFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n {\r\n headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); } },\r\n valueGetter: params => { return Formatters.secondsToTimeConverterFilter(params); }, resizable: true, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc HDOP\", field: \"GPSHDOP\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSHDOPTypeSorting(params.data.GPSHDOP, params.data.GPSLockState); }, cellRenderer: GensetCellRender.GPSfloatTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Loc sat ct\", field: \"GPSSatelliteCount\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.GPSSatCountTypeSorting(params.data.GPSSatelliteCount, params.data.GPSLockState); }, cellRenderer: GensetCellRender.GPSfloatTypeValueFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Speed\", field: \"Speed\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.floatTypeSorting(params.data.Speed); },\r\n cellRenderer: GensetFormatters.gensetSpeedValueFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this),\r\n headerValueGetter: Formatters.SpeedHeaderFormatter, cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {//RCNG 1257\r\n headerName: \"Address\", field: \"Address\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Address\"); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open', cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"City\", field: \"City\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.City); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"State\", field: \"State\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.State); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Country\", field: \"Country\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.Country); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Zip\", field: \"ZipCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ZipCode); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: 'Genset Status and Sensor Reporting',\r\n children: [\r\n //{ headerName: \"Alerts\", field: \"Alerts\", cellRenderer: (params) => { return Formatters.AlertDescriptionFormatter(params, self.state.reeferFormatter.AlertMasterList); }, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)},\r\n {\r\n headerName: \"Battery (V)\", field: \"ExtBattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.ExtBattVoltage); }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n filterParams: { valueGetter: params => { return Formatters.BattVoltageFormatterForFilter(params); } }, resizable: true, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Fuel sensor\", field: \"HasFuelSensor\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, getQuickFilterText: GensetFormatters.FuelSensorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return GensetFormatters.fuelSensorTrace(params); } }, resizable: true, valueGetter: (params) => { return GensetFormatters.FuelSensorSorting(params); }, cellRenderer: GensetFormatters.fuelSensorTrace, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Fuel level (gal)\", field: \"FuelLevel\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, getQuickFilterText: GensetFormatters.FuelLevelGalQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return GensetFormatters.fillLevelGalTrace(params); } }, resizable: true, valueGetter: (params) => { return GensetFormatters.FuelLevelGalSorting(params); }, cellRenderer: GensetFormatters.fillLevelGalTrace, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Fuel level\", field: \"FractionDisplay\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, getQuickFilterText: GensetCellRender.FuelLevelQuickFilterFormatter,\r\n valueGetter: (params) => { return GensetFormatters.FuelLevelSorting(params); }, cellRenderer: GensetCellRender.fillLevelTrace, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, width: 140,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Reefer state\", field: \"ReeferStateDsc\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ReeferStateDsc); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Uses LOP\", field: \"HasOilPressureSwitch\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n resizable: true, valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.YesNoValueSorting(params.data.HasOilPressureSwitch); },\r\n filterParams: { valueGetter: params => { return GensetFormatters.YesNoConverterForFilter(params); } }, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: \"Device Status\",\r\n children: [\r\n {\r\n headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device data\", field: \"DeviceDataTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDeviceDataTimeForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, cellRenderer: Formatters.dateTypeFormatter, width: 150, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device FW\", field: \"FirmwareVersion\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.FirmwareVersion); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BattVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.BattVoltageSorting(params.data.BattVoltage); },\r\n filterParams: { valueGetter: params => { return Formatters.DeviceBattVoltageFormatterForFilter(params); } }, cellRenderer: Formatters.BattVoltageValueFormatter,\r\n width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.RCDReportingInterval); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n\r\n {\r\n headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MSISDN); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.SIM_IMSI); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.ICCID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.EUI); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: GensetCellRender.RSSITypeFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MCC (country)\", field: \"CountryName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.CountryName); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true,\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.MNC); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerLocalizationAreaCode); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 70, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: true, filter: true, resizable: true, columnGroupShow: 'open', cellClass: 'bigInt',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.TowerBaseStationID); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n //{ headerName: \"Speed (mph)\", field: \"Speed\", columnGroupShow: 'open', cellRenderer: Formatters.floatTypeFormatter, width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)},\r\n {\r\n headerName: \"Device config\", field: \"DeviceConfig\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.GuestReeferModeFormatterForFilter(params); } }, resizable: true, columnGroupShow: 'open', cellRenderer: Formatters.GuestReeferModeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n {\r\n headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n valueGetter: (params) => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSorting(params.data.DeviceType); }, cellRenderer: GensetCellRender.stringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n }\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n {\r\n headerName: \"Receipt time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true,\r\n filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCreatedDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CreatedDTTM\", cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this)\r\n },\r\n { headerName: \"Comments\", field: \"CommentExistsGenset\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, cellRenderer: GensetCellRender.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n if (!nextprops.isLoading) {\r\n this.setState({ gensetStatusData: [] });\r\n $('#globalLoader').hide();\r\n this.setState({\r\n gensetStatusData: nextprops.gensetStatus\r\n });\r\n\r\n if (self.state.ToggleSearchParams != null && self.state.ToggleSearchParams != undefined) {\r\n self.filterGensetStatusGrid(self.state.ToggleSearchParams);\r\n }\r\n \r\n //if (nextprops.performCargoAction) {\r\n // $('#globalLoader').show();\r\n // this.props.requestGensetAdvanceSearch(this.props.searchFilters, gensetColumns);\r\n //}\r\n } else {\r\n $('#globalLoader').show();\r\n }\r\n }\r\n\r\n bindingGensetStatusGrid(searchState: server.ReeferSearchFilters) {\r\n $('#globalLoader').show();\r\n GensetToggleButtonsFilter.ClearToggleFilters();\r\n self.setState({ ToggleSearchParams: null, rowData: [] });\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n this.props.requestGensetAdvanceSearch(searchState, gensetColumns);\r\n }\r\n\r\n refreshStatusGrid() {\r\n $('#globalLoader').show();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: ''\r\n });\r\n this.props.requestGensetAdvanceSearch(this.props.searchFilters, gensetColumns);\r\n }\r\n\r\n refreshStatusGridFromTripStatus() {\r\n $('#globalLoader').show();\r\n this.props.requestGensetAdvanceSearch(this.props.searchFilters, gensetColumns);\r\n }\r\n\r\n static refreshGensetStatusGrid() {\r\n self.refreshStatusGrid();\r\n }\r\n\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n switch (popUpName) {\r\n case 'SendEmail':\r\n return 0 ? true : false} sensorData={gensetAssetSensors}/>\r\n case 'Export':\r\n return ;\r\n case 'Ping':\r\n return ; \r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var gensetData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.GensetStatusUI[];\r\n filterSet = gensetData;\r\n var filterParams = JSON.stringify(filterSet); \r\n if (!isCommands) {\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) });\r\n $('#btnTrigger').click();\r\n } \r\n }\r\n\r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n\r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', false);\r\n }\r\n\r\n popUpAssignToCustomer() {\r\n //self.setState({ modelTitle: 'Assign Assets to Customer'});\r\n //self.RenderContextMenuPopUp('AssignCustomer', false);\r\n\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Assign Asset(s) to Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignCustomer', false);\r\n });\r\n }\r\n\r\n popUpUnAssignFromCustomer() {\r\n //self.setState({ modelTitle: 'Unassign Units From Customer' });\r\n //self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Asset(s) From Customer' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.AssetMasterID : selectedUnits + \",\" + value.AssetMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].AssetMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.AssetMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetAssetCustomerGroups';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignCustomer', false);\r\n });\r\n }\r\n\r\n onRowDataChanged(params: any): void {\r\n var gensetIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n gensetIdSelected = self.state.PrevSelectedItems[0].AssetNumber;\r\n }\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n if (self.state.gensetStatusData != null && self.state.gensetStatusData.length > 0) {\r\n TotalCount = self.state.gensetStatusData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && gensetIdSelected !== \"\") {\r\n let count = 0;\r\n if (gensetIdSelected) {\r\n params.api.forEachLeafNode((node) => {\r\n count = count + 1;\r\n if (node.data.AssetNumber === gensetIdSelected) {\r\n node.setSelected(true);\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n //var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n /* var rowGroupDataToSave = { SelectedRowGroups: rowGroupItems };*/\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n \r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: true };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n //self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var columnDisplayName = params.node.columnApi.columnController.rowGroupColumns[0].colDef.headerName;\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var colDef = params.node.rowGroupColumn.colDef;//WI 26719\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"DeviceDataTime\" || fieldName.toString() == \"CreatedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n if (fieldValue == \"-NA-\" || (fieldValue == \"-999\" && self.validateFieldName(fieldName.toString().trim())))\r\n return \"*No \" + columnDisplayName;\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"IgnitionOn\":\r\n return GensetCellRender.GensetSwitchFormatterGrouping(fieldValue);\r\n case \"GensetRunning\":\r\n return GensetCellRender.EngineSortingFormatterGrouping(fieldValue);\r\n case \"OEMTypeCD\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n //case \"VesselCd\":\r\n // return fieldValue == \"-NA-\" ? \"*No VSL\" : fieldValue;\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"RSSI\":\r\n return GensetCellRender.RSSIFormatterGrouping(fieldValue);\r\n //case \"HasOilPressureSwitch\":\r\n // return Formatters.YesNoFormatterGrouping(fieldValue);\r\n case \"FuelLevel\":\r\n return Formatters.FuelLevelGalGrouping(fieldValue);\r\n case \"FractionDisplay\":\r\n return GensetCellRender.FillLevelTraceGrouping(fieldValue);\r\n case \"HasFuelSensor\":\r\n return Formatters.FuelSensorGrouping(fieldValue);\r\n case \"ManufacturedDate\":\r\n return fieldValue == 0 ? '*No Mfd. year' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExistsGenset\":\r\n return fieldValue == 0 ? \"Comments\" : \"*No comments\";\r\n case \"EventDTTM\":\r\n case \"DeviceDataTime\":\r\n case \"CreatedDTTM\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n //case \"GPSLastLock\":\r\n // return fieldValue == \"-NA-\" ? \"*No Last GPS (h:m:s)\" : fieldValue;\r\n //case \"ExtBattVoltage\":\r\n // return fieldValue == \"-NA-\" ? \"*No Battery (V)\" : fieldValue;\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n return Formatters.SensorGrouping(fieldName.toString().trim(), fieldValue, gensetAssetSensors, colDef);\r\n case \"AssetState\":\r\n return GensetCellRender.AssetStateFormatterGrouping(fieldValue);\r\n default:\r\n return fieldValue\r\n }\r\n } \r\n\r\n validateFieldName(fieldName: any) {\r\n var IsValid = true;\r\n switch (fieldName) {\r\n case \"Sensor1Value_GT1200\": case \"Sensor2Value_GT1200\": case 'Sensor3Value_GT1200': case 'Sensor4Value_GT1200': case \"Sensor5Value_GT1200\": case \"Sensor6Value_GT1200\": case 'Sensor7Value_GT1200': case 'Sensor8Value_GT1200':\r\n case \"Sensor1Value_GT1020\": case \"Sensor2Value_GT1020\": case 'Sensor3Value_GT1020': case 'Sensor4Value_GT1020': case \"Sensor5Value_GT1020\": case \"Sensor6Value_GT1020\": case 'Sensor7Value_GT1020': case 'Sensor8Value_GT1020':\r\n case \"Sensor1Value_ST9100\": case \"Sensor2Value_ST9100\": case 'Sensor3Value_ST9100': case 'Sensor4Value_ST9100': case \"Sensor5Value_ST9100\": case \"Sensor6Value_ST9100\": case 'Sensor7Value_ST9100': case 'Sensor8Value_ST9100':\r\n case \"Sensor1Value_GT1030\": case \"Sensor2Value_GT1030\": case 'Sensor3Value_GT1030': case 'Sensor4Value_GT1030': case \"Sensor5Value_GT1030\": case \"Sensor6Value_GT1030\": case 'Sensor7Value_GT1030': case 'Sensor8Value_GT1030':\r\n { IsValid = false; }\r\n break;\r\n }\r\n return IsValid;\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = preferenceData.SelectedRowGroups\r\n if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setRowGroupColumns(rowGroupItems);\r\n }\r\n if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.setColumnState(preferenceData.colState);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n //self.state.gridApiParams.gridOptionsWrapper.columnController.applyColumnState(preferenceData.colState);\r\n }\r\n }\r\n }); \r\n }\r\n filterGensetStatusGrid(searchParam: any) {\r\n this.setState({ ToggleSearchParams: searchParam });\r\n var gensetData = [];\r\n var gensetSearchData = this.props.gensetStatus;\r\n if (!searchParam.AllGenset && !searchParam.ReportingSWOn && !searchParam.LastReportedSWOn && !searchParam.ReportingSWOff && !searchParam.LastReportedSWOff) {\r\n gensetData.push(...gensetSearchData);\r\n }\r\n if (searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData);\r\n }\r\n if (searchParam.ReportingSWOn && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => x.IgnitionOn == true && x.IsReportingDelay == false));\r\n }\r\n if (searchParam.LastReportedSWOn && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => x.IgnitionOn == true && x.IsReportingDelay == true));\r\n }\r\n if (searchParam.ReportingSWOff && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => (x.IgnitionOn == false || x.IgnitionOn == null) && x.IsReportingDelay == false));\r\n }\r\n if (searchParam.LastReportedSWOff && !searchParam.AllGenset) {\r\n gensetData.push(...gensetSearchData.filter(x => (x.IgnitionOn == false || x.IgnitionOn == null) && x.IsReportingDelay == true));\r\n }\r\n let gensetFilterData = uniq(gensetData);\r\n this.setState({\r\n gensetStatusData: gensetFilterData\r\n });\r\n\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.DeviceDataTime)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function(item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function() {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"GensetStatus\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n\r\n\r\n onColumnResized = (params: any) => {\r\n console.log(\"column resized..\");\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n\r\n validateRevisionNum(dashboardPreferenceId: any) {\r\n var confirmationMessage = \"Your changes cannot be saved because this Dashboard has been modified by another user. Either the latest version of this Dashboard can be reloaded now (and changes can be reapplied) or your changes and any subsequent changes you make can be applied temporarily (without saving) until the Dashboard is reloaded. Reload now?\"\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmationMessage, self.refreshRevisionNumConfirm.bind(this, dashboardPreferenceId), self.closeRevisionConfirmation.bind(this));\r\n }\r\n \r\n refreshRevisionNumConfirm(dashboardPreferenceId: any) {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n $('#globalLoader').hide(); \r\n });\r\n }\r\n\r\n refreshRevisionNum(dashboardPreferenceId: any) {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/User/GetUserDashboardLayouts');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n var data: any = result;\r\n if(data.DashboardLayouts != null && data.DashboardLayouts.length > 0)\r\n { \r\n var defaultPreferenceName: any = data.DashboardLayouts.filter(x=>x.DashboardPreferenceId == dashboardPreferenceId);\r\n this.setState({ RevisionNum: defaultPreferenceName[0].RevisionNum });\r\n } \r\n });\r\n }\r\n closeRevisionConfirmation() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n\r\n public render() { \r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
    \r\n
    \r\n Genset Status\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.state.modelTitle}
    \r\n \r\n
    \r\n
    \r\n {this.state.popUpHtml}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ ...state.userDetails, ...state.gensetStatus, ...state.home }), // Selects which state properties are merged into the component's props\r\n GensetStatusState.actionCreators,\r\n)(GensetStatus as any)\r\n","/// \r\n/// \r\nimport * as React from 'react';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport * as Autosuggest from 'react-autosuggest';\r\nimport Select from 'react-select';\r\nvar Config: any = require('../../Config.json');\r\n\r\ninterface SearchState {\r\n Oemtypes: server.vRefOEMTypeUIModel[],\r\n RefCountry: server.RefCountryModel[],\r\n RefGeofences: string[],\r\n suggestionsFenceId: any[],\r\n targetId: string,\r\n Filters: server.ReeferSearchFilters,\r\n AssetStates: any[],\r\n stayOpen: boolean,\r\n disabled: boolean,\r\n removeSelected: boolean,\r\n rtl: boolean,\r\n}\r\nconst assetStates = [\r\n { label: \"Active\", value: 'A' },\r\n { label: \"Disconnected\", value: 'D' },\r\n { label: \"Retired\", value: 'R' },\r\n];\r\nexport class GensetStatusSearch extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n var customAttributesInfo = {};\r\n var filter: server.ReeferSearchFilters = {\r\n SelectedOem: '', SelectedCountry: '', SelectedGeofence: '', SelectedGeofenceInside: '', SelectedInterval: '', SelectedReefer: '', SelectedAssetStates: JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState,\r\n SelectedVesselCode: '', StatusFilters: [], AllReefers: '', CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: ''//WI-26881\r\n };\r\n \r\n if (this.props.stateData != null && this.props.stateData != undefined && this.props.stateData != null) {\r\n filter.SelectedOem = this.props.stateData.SelectedOem == null ? '' : this.props.stateData.SelectedOem;\r\n filter.SelectedCountry = this.props.stateData.SelectedCountry == null ? '' : this.props.stateData.SelectedCountry;\r\n filter.SelectedAssetStates = this.props.stateData.SelectedAssetStates == null ? JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState : this.props.stateData.SelectedAssetStates;\r\n filter.SelectedGeofence = this.props.stateData.SelectedGeofence == null ? '' : this.props.stateData.SelectedGeofence;\r\n filter.SelectedGeofenceInside = this.props.stateData.SelectedGeofenceInside == null ? '' : this.props.stateData.SelectedGeofenceInside;\r\n filter.SelectedInterval = this.props.stateData.SelectedInterval == null ? '' : this.props.stateData.SelectedInterval;\r\n filter.SelectedReefer = this.props.stateData.SelectedReefer == null ? '' : this.props.stateData.SelectedReefer;\r\n filter.SelectedVesselCode = this.props.stateData.SelectedVesselCode == null ? '' : this.props.stateData.SelectedVesselCode;\r\n filter.SelectedVoyage = this.props.stateData.SelectedVoyage == null ? '' : this.props.stateData.SelectedVoyage;//WI-26881\r\n filter.SelectedVesselCD = this.props.stateData.SelectedVesselCD == null ? '' : this.props.stateData.SelectedVesselCD;//WI-26881\r\n filter.SelectedCall = this.props.stateData.SelectedCall == null ? '' : this.props.stateData.SelectedCall;//WI-26881\r\n filter.SelectedBookingNumber = this.props.stateData.SelectedBookingNumber == null ? '' : this.props.stateData.SelectedBookingNumber;\r\n filter.StatusFilters = this.props.stateData.StatusFilters;\r\n filter.AllReefers = this.props.stateData.AllReefers == null ? '' : this.props.stateData.AllReefers;\r\n filter.CustomAttributeFilters = customAttributesInfo;\r\n }\r\n\r\n this.state = {\r\n Oemtypes: [], RefGeofences: [], suggestionsFenceId: [],\r\n targetId: '', RefCountry: [], Filters: filter, stayOpen: false, disabled: false, removeSelected: false, rtl: false, AssetStates: assetStates\r\n };\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/GetGeofences')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var fenceData = data.map(fence => fence.Tag);\r\n this.setState({ RefGeofences: fenceData });\r\n }\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/OemTypes')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ Oemtypes: data });\r\n });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/common/RefCountry')\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ RefCountry: data });\r\n });\r\n }\r\n\r\n InsideGeofencechange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedGeofenceInside = null;\r\n else\r\n filters.SelectedGeofenceInside = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n //Vesselcodechange(event: React.FormEvent) {\r\n // var filters = this.state.Filters;\r\n // var Value: string = event.currentTarget.value;\r\n // filters.SelectedVesselCode = Value;\r\n // this.setState({\r\n // Filters: filters\r\n // });\r\n //}\r\n\r\n //Geofencechange(event: React.FormEvent) {\r\n // var filters = this.state.Filters;\r\n // var Value: string = event.currentTarget.value;\r\n // filters.SelectedGeofence = Value;\r\n // this.setState({\r\n // Filters: filters\r\n // });\r\n //}\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({\r\n suggestionsFenceId: this.getFenceNameSuggestions(value)\r\n });\r\n };\r\n\r\n getFenceNameSuggestions(value) {\r\n var geofences = this.state.RefGeofences;\r\n var targetValue = this.state.targetId;\r\n var inputValue = value.trim().toLowerCase();\r\n var inputLength = inputValue.length;\r\n return inputLength === 0 ? [] : geofences.filter(tag =>\r\n tag.toLowerCase().slice(0, inputLength) === inputValue\r\n );\r\n };\r\n\r\n onSuggestionsClearRequested = () => {\r\n this.setState({\r\n suggestionsFenceId: []\r\n });\r\n };\r\n\r\n onChangeFenceId = (event, { newValue }) => {\r\n var filters = this.state.Filters;\r\n filters.SelectedGeofence = newValue;\r\n\r\n this.setState({\r\n Filters: filters,\r\n targetId: event.target.id\r\n });\r\n };\r\n\r\n renderSuggestion(suggestion) {\r\n return {suggestion};\r\n }\r\n\r\n getSuggestionValue(suggestion) {\r\n return suggestion;\r\n }\r\n\r\n AssetStateChange(value) {\r\n var filters = this.state.Filters;\r\n filters.SelectedAssetStates = value;\r\n if (value == \"\")\r\n $('#InventoryState .Select-control').addClass(\"MandatoryBorder\");\r\n else\r\n $('#InventoryState .Select-control').removeClass(\"MandatoryBorder\");\r\n this.setState({ Filters: filters });\r\n }\r\n\r\n Assetschange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n var commaValue = this.GetMultiLineCsv(Value);\r\n filters.SelectedReefer = commaValue;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n //Reeferchange(event: React.FormEvent) {\r\n // var filters = this.state.Filters;\r\n // var Value: string = event.currentTarget.value;\r\n // filters.SelectedReefer = Value;\r\n // this.setState({\r\n // Filters: filters\r\n // });\r\n //}\r\n\r\n GetMultiLineCsv(value) {\r\n while (value.includes('\\r') || value.includes('\\n') || value.includes(';') || value.includes(' ')) {\r\n value = value.replace('\\r'.toString(), \",\");\r\n value = value.replace('\\n'.toString(), \",\");\r\n value = value.replace(';'.toString(), \",\");\r\n value = value.replace(' '.toString(), \",\");\r\n }\r\n\r\n while (value.includes(\",,\")) {\r\n value = value.replace(\",,\", \",\");\r\n }\r\n return value;\r\n }\r\n\r\n Oemchange(event: React.FormEvent) {\r\n\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedOem = null;\r\n else\r\n filters.SelectedOem = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n Countrychange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedCountry = null;\r\n else\r\n filters.SelectedCountry = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ReportingIntervalchange(event: React.FormEvent) {\r\n var filters = this.state.Filters;\r\n var Value: string = event.currentTarget.value;\r\n if (Value == \"---Select---\")\r\n filters.SelectedInterval = null;\r\n else\r\n filters.SelectedInterval = Value;\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n ClearFilter() {\r\n var filters = this.state.Filters;\r\n filters.SelectedCountry = \"\";\r\n filters.SelectedGeofence = \"\";\r\n filters.SelectedGeofenceInside = \"\";\r\n filters.SelectedInterval = \"\";\r\n filters.SelectedOem = \"\";\r\n filters.SelectedReefer = \"\";\r\n filters.SelectedAssetStates = JSON.parse(sessionStorage.getItem('customerDetails')).InventoryState;\r\n filters.SelectedVesselCode = \"\";\r\n filters.StatusFilters = [];\r\n\r\n this.setState({\r\n Filters: filters\r\n });\r\n }\r\n\r\n isNullOrEmpty(value) {\r\n return value == null || value === \"\";\r\n }\r\n\r\n ApplyFilter() {\r\n var filter = this.state.Filters;\r\n var that = this;\r\n this.state.Filters.AllReefers = \"\";\r\n this.state.Filters.StatusFilters = [];\r\n if (!this.isNullOrEmpty(this.state.Filters.SelectedCountry) || !this.isNullOrEmpty(this.state.Filters.SelectedGeofence) || !this.isNullOrEmpty(this.state.Filters.SelectedGeofenceInside)\r\n || !this.isNullOrEmpty(this.state.Filters.SelectedInterval) || !this.isNullOrEmpty(this.state.Filters.SelectedOem) || !this.isNullOrEmpty(this.state.Filters.SelectedReefer) || !this.isNullOrEmpty(this.state.Filters.SelectedVesselCode)) {\r\n if (this.state.Filters.SelectedAssetStates == \"\" || this.state.Filters.SelectedAssetStates == null) {//RCNG-1454\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n else {\r\n this.props.bindingGensetStatusGrid(this.state.Filters);\r\n }\r\n }\r\n else {\r\n this.state.Filters.AllReefers = \"All Gensets\";\r\n if (this.state.Filters.SelectedAssetStates == \"\" || this.state.Filters.SelectedAssetStates == null) {//RCNG-61\r\n PopupWindow.showErrorMessage('Error', \"Please select Inventory State.\");//RCNG-61 \r\n return;\r\n }\r\n else {\r\n this.props.bindingGensetStatusGrid(this.state.Filters);\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n $(document).ready(function () {\r\n $('.advance-search').bind('keypress', function (e) {\r\n if (e.keyCode === 13) {\r\n $('#button_search').trigger('click');\r\n }\r\n });\r\n });\r\n }\r\n\r\n public render() {\r\n const { suggestionsFenceId } = this.state;\r\n\r\n const FenceIdListinputProps = {\r\n id: 'geofenceID',\r\n placeholder: 'Geofence ID',\r\n value: this.state.Filters.SelectedGeofence,\r\n onChange: this.onChangeFenceId.bind(this)\r\n };\r\n var assetStates = this.state.AssetStates;\r\n if (assetStates != undefined && assetStates != null && assetStates.length > 0) {\r\n var assetStatesOptions = assetStates.map(function (states) {\r\n return (\r\n { value: states.value, label: states.label }\r\n );\r\n });\r\n }\r\n return
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n false}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n","// @ts-nocheck\r\n/// \r\nimport * as React from 'react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport $ from 'jquery';\r\nimport UserRights from '../../actions/UserRights';\r\n\r\nimport fenceGrey from '../../images/fenceGrey.png';\r\nimport fenceDark from '../../images/fenceDark.png';\r\nimport fenceWhite from '../../images/fenceWhite.png';\r\n\r\nvar Config: any = require('../../Config.json');\r\nexport interface ReeferMapState {\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n PTReport: string;\r\n ReportReeferId: string;\r\n buttonState: boolean;\r\n fenceImage: boolean;\r\n IsLocationEstimated: boolean;\r\n geoZonesEnabled: boolean;\r\n geoZonesImage: boolean;\r\n}\r\n\r\nvar self;\r\nvar IsTriggered = false;\r\nvar fencesLoaded;\r\n\r\nexport class ReeferMap extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n modelTitleReport: '', popUpHtmlReport: '', PTReport: '', ReportReeferId: '',\r\n buttonState: true, fenceImage: true, IsLocationEstimated: false, geoZonesEnabled: true, geoZonesImage: true\r\n };\r\n self = this;\r\n IsTriggered = false;\r\n fencesLoaded = false;\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n const allAssetStatusData: any = this.props.allAssetStatusData;\r\n if (nextprops.allAssetStatusData != undefined && nextprops.allAssetStatusData != null) {\r\n if ((nextprops.allAssetStatusData.Dry != undefined && nextprops.allAssetStatusData.Dry.length > 0) || (nextprops.allAssetStatusData.Genset != undefined && nextprops.allAssetStatusData.Genset.length > 0) ||\r\n (nextprops.allAssetStatusData.Chassis != undefined && nextprops.allAssetStatusData.Chassis.length > 0) || (nextprops.allAssetStatusData.Reefers != undefined && nextprops.allAssetStatusData.Reefers.length > 0)) {\r\n if (nextprops.allAssetStatusData !== allAssetStatusData)\r\n ReeferCallout.BindClusterMapAllAssetsPushpins(nextprops.allAssetStatusData, 'All Assets', this.props.propsReeferFormatterData, this.props.isFenceAssets);\r\n }\r\n else {\r\n if (nextprops.allAssetStatusData.length > 0 && !nextprops.eventsRefresh) {\r\n if (nextprops.allAssetStatusData !== allAssetStatusData)\r\n ReeferCallout.BindClusterMapPushpins(nextprops.allAssetStatusData, nextprops.gridType, this.props.propsReeferFormatterData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n \r\n public render() {\r\n //if (!this.state.buttonState && !$(\"#DrawPolygonMode\").hasClass(\"active\") && !$(\"#EditPolygonMode\").hasClass(\"active\") && !$(\"#DeletePolygonMode\").hasClass(\"active\"))\r\n // this.loadCustomerGeofences(false);\r\n return
    \r\n
    \r\n
    \r\n {/**/}\r\n \r\n \r\n {/**/}\r\n \r\n \r\n {/**/}\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • Left click on map to add points (up to 12) for a new geofence polygon
    • \r\n
    • To stop drawing, double-click when creating the last point
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • Click on a geofence to edit
    • \r\n
    • When done editing, click on the “edit” button
    • \r\n
    • Right click on any geofence point to remove (undo)
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • Click on one or more geofences to delete
    • \r\n
    • When done deleting, click on the “delete” button
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.state.IsLocationEstimated == true ?
    Location estimated
    : ''}\r\n
    \r\n {\r\n this.state.buttonState == true ? Fence\r\n : Fence\r\n }\r\n
    \r\n
    \r\n {\r\n this.state.geoZonesEnabled == true ? \r\n : \r\n }\r\n
    \r\n {this.state.buttonState == false ?\r\n
    \r\n
    ------------------ Server Geofence
    \r\n
    Device Geofence
    \r\n
    :
    \r\n }\r\n
    ;\r\n }\r\n\r\n static UpdateFenceImage(src:any) {\r\n if (src == \"A\")\r\n self.setState({ fenceImage: false, geoZonesImage: false });\r\n else\r\n self.setState({ fenceImage: true, geoZonesImage: true });\r\n }\r\n\r\n static UpdateIsLocationEstimated(IsLocEstEnabled: any) {\r\n if (self != null && self != undefined) {\r\n if (IsLocEstEnabled == true)\r\n self.setState({ IsLocationEstimated: true });\r\n else\r\n self.setState({ IsLocationEstimated: false });\r\n\r\n if(self.state.buttonState == false) { \r\n if ($(\"#divLocationEstm\").hasClass(\"ReeferMapLegend\")) $('#divLocationEstm').removeClass('ReeferMapLegend');\r\n $('#divLocationEstm').addClass('ReeferMapEstimated');\r\n }\r\n else {\r\n if ($(\"#divLocationEstm\").hasClass(\"ReeferMapEstimated\")) $('#divLocationEstm').removeClass('ReeferMapEstimated');\r\n $('#divLocationEstm').addClass('ReeferMapLegend');\r\n }\r\n }\r\n }\r\n\r\n public componentDidMount() {\r\n ReeferCallout.InitializeMap(\"reeferMap\"); \r\n $('#geoZones').hide(); \r\n $(\"#DrawingModes\").hide();\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n //$(\"#reeferMap .drawingBar ul.actions\").find(\"li:eq(3)\").prop('title', 'Add a geofence');\r\n //$(\"#reeferMap .drawingBar ul.actions\").find(\"li:eq(4)\").prop('title', 'Edit an existing geofence');\r\n //$(\"#reeferMap .drawingBar ul.actions\").find(\"li:eq(5)\").prop('title', 'Delete an existing geofence');\r\n\r\n setTimeout(() => {\r\n self.bindMapPushpins()\r\n }, 1000);\r\n }\r\n\r\n bindMapPushpins() {\r\n var allAssetStatusData: any = this.props.allAssetStatusData;\r\n if (allAssetStatusData != undefined && allAssetStatusData != null) {\r\n if ((allAssetStatusData.Dry != undefined && allAssetStatusData.Dry.length > 0) || (allAssetStatusData.Genset != undefined && allAssetStatusData.Genset.length > 0) ||\r\n (allAssetStatusData.Chassis != undefined && allAssetStatusData.Chassis.length > 0) || (allAssetStatusData.Reefers != undefined && allAssetStatusData.Reefers.length > 0)) {\r\n ReeferCallout.BindClusterMapAllAssetsPushpins(allAssetStatusData, 'All Assets', this.props.propsReeferFormatterData, this.props.isFenceAssets);\r\n }\r\n else {\r\n if (allAssetStatusData.length > 0) {\r\n ReeferCallout.BindClusterMapPushpins(allAssetStatusData, this.props.gridType, this.props.propsReeferFormatterData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n static bindGeofencePopupDashboard(currentMode: string, coordinates: any, currentFence: any, GeofencesData: any[]) {\r\n $(\"#globalLoader\").show();\r\n IsTriggered = false;\r\n var latlonArray = [];\r\n if (coordinates.length > 0) {\r\n $.each(coordinates, function (index, value) {\r\n if ((index === (coordinates.length - 1)) || !(latlonArray.indexOf(value.latitude.toFixed(10) + ',' + value.longitude.toFixed(10)) > -1))\r\n latlonArray.push(value.latitude.toFixed(10) + ',' + value.longitude.toFixed(10));\r\n });\r\n }\r\n var inputParams: server.GeofenceParams = { FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '', GeofenceCustomerID: '' };\r\n inputParams.Coordinates = latlonArray;\r\n inputParams.FenceTypeCd = self.state.fenceTypeCd;\r\n if (currentFence != null && currentMode == 'edit')\r\n inputParams.GeofenceCustomerID = currentFence.GeofenceCustomerID;\r\n var geofenceParams = JSON.stringify(inputParams);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeofenceIntersect', { method: 'POST', body: geofenceParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.length > 0) {\r\n var intersectFences = '';\r\n data.forEach(function (fence) {\r\n var GeofenceCatogery = \"\";\r\n if (fence.GeofenceCategoryCd == 'D') GeofenceCatogery = \"Device Geofence\";\r\n if (fence.GeofenceCategoryCd == 'B') GeofenceCatogery = \"Server Geofence\";\r\n if (fence.GeofenceCategoryCd == 'R') GeofenceCatogery = \"Region Geofence\"; \r\n intersectFences = intersectFences + \"
    Fence ID:
    \" + fence.Tag + \"
    ,
    Fence Name:
    \" + fence.Name + \"
    ,
    Geofence Category:
    \" + GeofenceCatogery + \"
    \";\r\n //intersectFences = intersectFences + \"
    Fence ID: \" + fence.Tag + \",
    Fence Name: \" + fence.Name + \"
    \";\r\n });\r\n var confirmMessage = \"
    The specified geofence overlaps with the following existing geofence(s):
    \" + intersectFences + \"
    Continue?
    \";\r\n RCNGWindow.ConfirmWindow.showConfirmBox(confirmMessage, self.onOKSubmit.bind(this, currentMode, latlonArray, currentFence, GeofencesData, true), self.closeConfirmation.bind(this, currentMode, currentFence, GeofencesData));\r\n $(\"#confirmPopUpModel .btn-close\").click(function () {\r\n if (!IsTriggered) {\r\n ReeferCallout.CancelDrawing();\r\n if (currentMode == 'edit' && currentFence != null)\r\n ReeferCallout.BindGeofencePolygons(GeofencesData);\r\n }\r\n });\r\n }\r\n else\r\n self.onOKSubmit(currentMode, latlonArray, currentFence, GeofencesData, false);\r\n\r\n $(\"#globalLoader\").hide();\r\n });\r\n }\r\n\r\n closeConfirmation(currentMode: string, currentFence: any, GeofencesData: any[]) {\r\n RCNGWindow.ConfirmWindow.close();\r\n ReeferCallout.CancelDrawing();\r\n if (currentMode == 'edit' && currentFence != null)\r\n ReeferCallout.BindGeofencePolygons(GeofencesData);\r\n }\r\n\r\n\r\n\r\n onOKSubmit(currentMode: string, coordinates: any, currentFence: any, GeofencesData: any[], IsConfirmationOpened: boolean) {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n if (IsConfirmationOpened)\r\n RCNGWindow.ConfirmWindow.close();\r\n if (currentMode == 'edit' && currentFence != null)\r\n self.renderAddGeofencePopup('Edit Geofence', coordinates, currentFence, GeofencesData);\r\n else\r\n self.renderAddGeofencePopup('Add Geofence', coordinates, currentFence, GeofencesData);\r\n }\r\n }\r\n\r\n renderAddGeofencePopup(formName: string, coordinates: any, currentFence: any, GeofencesData: any[]) {\r\n self.props.renderAddGeofenceControl(formName, coordinates, currentFence, GeofencesData);\r\n }\r\n \r\n loadCustomerGeofences(IsDeleted: boolean) {\r\n if (!fencesLoaded) {\r\n $(\"#globalLoader\").show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeofenceCoordinates', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(geofenceList => {\r\n geofenceList.forEach(function (fence) {\r\n var coordinatesList = [];\r\n if (fence.Coordinates.length > 0) {\r\n fence.Coordinates.forEach(function (point) {\r\n var coordinates = new Microsoft.Maps.Location(point.Latitude, point.Longitude);\r\n coordinatesList.push(coordinates);\r\n });\r\n }\r\n fence.FormatedCoordinates = coordinatesList;\r\n });\r\n ReeferCallout.BindGeofencePolygons(geofenceList);\r\n if (IsDeleted)\r\n ReeferCallout.EraseMode();\r\n $(\"#globalLoader\").hide();\r\n });\r\n }\r\n }\r\n\r\n static ValidatePolygonGeofenceDashboard(coords: any, currentMode: any, currentFence: any, GeofencesData: any) {\r\n var coordinates: any = [];\r\n for (var i = 0; i < coords.length; i++) {\r\n var lat_long = coords[i].latitude + \" \" + coords[i].longitude;\r\n coordinates.push(lat_long);\r\n }\r\n var polygon: any = coordinates.join(\",\"); \r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/ValidateGeofencePolygon', { method: 'POST', body: JSON.stringify((polygon)), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if(data) {\r\n var isPolygon = ReeferCallout.pointInPolygon(coords);\r\n if (isPolygon) \r\n this.bindGeofencePopupDashboard(currentMode, coords, currentFence, GeofencesData);\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"A self-intersecting polygon cannot be used to define a geofence. Please change the polygon accordingly.\");\r\n }\r\n else\r\n {\r\n PopupWindow.showErrorMessage(\"Alert\",\"A polygon is invalid or cannot contain duplicate coordinates. Please change the polygon accordingly.\");\r\n return;\r\n } \r\n }); \r\n }\r\n\r\n static refreshDashBoardMap() {\r\n $(\"#globalLoader\").show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/GetGeofenceCoordinates', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(geofenceList => {\r\n geofenceList.forEach(function (fence) {\r\n var coordinatesList = [];\r\n if (fence.Coordinates.length > 0) {\r\n fence.Coordinates.forEach(function (point) {\r\n var coordinates = new Microsoft.Maps.Location(point.Latitude, point.Longitude);\r\n coordinatesList.push(coordinates);\r\n });\r\n }\r\n fence.FormatedCoordinates = coordinatesList;\r\n });\r\n ReeferCallout.BindGeofencePolygons(geofenceList);\r\n $(\"#globalLoader\").hide();\r\n }); \r\n }\r\n\r\n static DeleteCustomerGeofence(currentFence: any, fenceLayer: any, selectedfence: any) {\r\n $(\"#globalLoader\").show();\r\n var inputParams: server.GeofenceParams = { FenceTypeCd: '', FenceId: '', FenceName: '', Address: '', Coordinates: [], ActionTypeCd: '', GeofenceCustomerID: '' };\r\n inputParams.ActionTypeCd = \"D\";\r\n inputParams.GeofenceCustomerID = currentFence.GeofenceCustomerID;\r\n inputParams.FenceTypeCd = currentFence.GeofenceCategoryCd;\r\n\r\n var geofenceParams = JSON.stringify(inputParams);\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/GeofenceManagement/SaveGeoFence', { method: 'POST', body: geofenceParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(message => {\r\n if (message == \"Geofence deleted successfully.\") {\r\n fencesLoaded = false;\r\n fenceLayer.remove(selectedfence);\r\n self.loadCustomerGeofences(true);\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", message);\r\n }\r\n });\r\n }\r\n\r\n drawingModePolygon(element: any) {\r\n ReeferCallout.SetDrawingMode('polygon', element);\r\n }\r\n drawingModeEdit(element: any) {\r\n ReeferCallout.SetDrawingMode('edit', element);\r\n }\r\n drawingModeDelete(element: any) {\r\n ReeferCallout.SetDrawingMode('erase', element);\r\n }\r\n\r\n showDrawingManagerTools() {\r\n this.loadCustomerGeofences(false);\r\n ReeferCallout.InitializeDrawingManager();\r\n this.setState({ buttonState: false });\r\n if (UserRights.checkVisibility('161') == 'show') $(\"#DrawingModes\").show();\r\n fencesLoaded = true;\r\n self.setState({ IsLocationEstimated: false });\r\n }\r\n\r\n showGeoZonesLayer() {\r\n this.setState({ geoZonesEnabled: false });\r\n ReeferCallout.BindGeoZonesLayer();\r\n }\r\n\r\n closeDrawingManagerTools() {\r\n ReeferCallout.DisposeDrawingManager();\r\n this.setState({ buttonState: true });\r\n $(\"#DrawingModes\").hide();\r\n $(\"#AddGeofenceMode\").hide();\r\n $(\"#EditGeofenceMode\").hide();\r\n $(\"#DeleteGeofenceMode\").hide();\r\n fencesLoaded = false;\r\n self.setState({ IsLocationEstimated: false });\r\n }\r\n \r\n hideGeoZonesLayer() {\r\n this.setState({ geoZonesEnabled: true });\r\n ReeferCallout.DisposeGeozonesLayer();\r\n }\r\n \r\n static RestoreGeoZonesLayer() {\r\n self.setState({ geoZonesEnabled: true });\r\n }\r\n downloadPTReport() {\r\n if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge\r\n var blob = new Blob([self.state.PTIReport], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n window.navigator.msSaveBlob(blob, 'PT_' + self.state.ReportReeferId + '.htm');\r\n } else {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(self.state.PTReport));\r\n element.setAttribute('download', 'PT_' + self.state.ReportReeferId + '.htm');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n }\r\n\r\n printPTReport() {\r\n var divToPrint = document.getElementById(\"printData\");\r\n var newWin = window.open(\"\");\r\n newWin.document.write(divToPrint.innerHTML);\r\n newWin.document.close();\r\n newWin.print();\r\n newWin.close();\r\n }\r\n\r\n static popUpGetPTIReport(selectedPin) {\r\n if (selectedPin.ReeferID != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + selectedPin.ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n self.setState({ PTReport: result }, () => { self.props.getCommandPopupPTReport(self.state.PTReport); });\r\n self.setState({ ReportReeferId: selectedPin.ReeferID }, () => { self.props.getCommandPopupReportReeferId(self.state.ReportReeferId); });\r\n $('#globalLoader').hide();\r\n if (self.state.PTReport == null || self.state.PTReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n self.setState({ modelTitle: 'Pre-Trip Report', popUpHtmlReport:
    }, () => { self.props.getCommandPopupTitleReport(self.state.modelTitle); self.props.getCommandPopupContentReport(self.state.popUpHtmlReport); });\r\n $('#btnTriggerReport').click();\r\n }\r\n });\r\n }\r\n\r\n }\r\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAtCAYAAADP5GkqAAAACXBIWXMAAAsTAAALEwEAmpwYAAANnWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTExLTI0VDE2OjUwOjU5KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0xMS0yNlQxMTozMTo1OCswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0xMS0yNlQxMTozMTo1OCswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4YWQwYzMyOS0zZmU2LTZmNGMtYTAwZi00MzNlOGRiZThlNWUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDowYzExOTJjNy00Njc3LTFmNDUtOTM4Zi02NDA1ZmZlMWY5Y2YiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyZDRjNDU4Yy04MjJhLTY5NDEtYWEzOS1kN2I1NWIxZGZhNTciIHRpZmY6T3JpZW50YXRpb249IjEiIHRpZmY6WFJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpZUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiBleGlmOkNvbG9yU3BhY2U9IjEiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIyMCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0Ij4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjMxYjI1M2M3LWFjNjYtZTY0Ni05ZDc1LWFjZmU0MWI4OGU4NTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0ODJlZWM0Ny00MGUzLTBkNDEtYTY5MC1hMjE4N2Y2NzAyZDg8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YjY5MDIyYWEtNzIwNC0wZjRiLWI3YzItNmExNWEwMGMwYzk0PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmRmNDU1NTU1LWY0N2ItZTU0YS04YjY5LTlhNjBhNDQ2ZGNmNDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NDVlY2E2M2YtMmU2Yy0zYTQ3LTgwNGMtNTFmNmJjNGRlNmQyPC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MmQ0YzQ1OGMtODIyYS02OTQxLWFhMzktZDdiNTViMWRmYTU3IiBzdEV2dDp3aGVuPSIyMDIwLTExLTI0VDE2OjUwOjU5KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDBjM2M2MDItMzc0Ni00OTQwLTkzMTctZDMxYTc1ZGViNTMwIiBzdEV2dDp3aGVuPSIyMDIwLTExLTI0VDE2OjU1OjE3KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ5YmVhZTFjLWEyZGYtNDA0ZS1iZGRjLTZkY2FiMDBlNDFjZCIgc3RFdnQ6d2hlbj0iMjAyMC0xMS0yNVQxMTo1MDoxNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImRlcml2ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImNvbnZlcnRlZCBmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozMjA1YzNkNi0xYWYwLTFiNGItYTJjOS1kMzBkOGRiMWI0NDAiIHN0RXZ0OndoZW49IjIwMjAtMTEtMjVUMTE6NTA6MTcrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OGFkMGMzMjktM2ZlNi02ZjRjLWEwMGYtNDMzZThkYmU4ZTVlIiBzdEV2dDp3aGVuPSIyMDIwLTExLTI2VDExOjMxOjU4KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ5YmVhZTFjLWEyZGYtNDA0ZS1iZGRjLTZkY2FiMDBlNDFjZCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ4MmVlYzQ3LTQwZTMtMGQ0MS1hNjkwLWEyMTg3ZjY3MDJkOCIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJkNGM0NThjLTgyMmEtNjk0MS1hYTM5LWQ3YjU1YjFkZmE1NyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvjBeVoAAArGSURBVFiFvZhrbBzXdcd/M7PL2eXuktwlKYoPiZQoWqIsK4kjJ64Vxw84Uqs8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\"","\r\n/// \r\n/// \r\nimport * as React from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\n//import Bing from '../../actions/ReeferMap.js';\r\n//import * as ReeferMapjs from '../../actions/ReeferMap.js';\r\n//var Bing = ReeferMapjs.default;\r\nimport ReeferCallout from '../../actions/ReeferCallout';\r\nimport 'ag-grid-enterprise';\r\nimport { RCUtils } from './../../RCUtils';\r\nimport { ReeferHistoryGrid } from './ReeferHistoryGrid';\r\nimport { GridColumnPreferences } from './../sharedcomponents/GridColumnPreferences';\r\nimport Formatters from '../../actions/Formatters';\r\nimport ReeferFormatters from '../../actions/ReeferFormatter';\r\nimport { ReeferCellRenderer } from '../../actions/ReeferCellRenderer';//RCNG 146\r\nimport ExportToExcel, * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport $ from 'jquery';\r\nimport uniq from 'lodash/uniq';\r\nimport forEach from 'lodash/forEach';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\n// pull in the ag-grid styles we're interested in\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-grid.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-fresh.css';\r\nimport '../../../node_modules/ag-grid-community/dist/styles/ag-theme-dark.css';\r\nimport '../../../node_modules/react-toggle-switch/dist/css/switch.min.css';\r\nimport { EmailControlExcel } from './../sharedcomponents/EmailControlExcel';\r\nimport { PingControl } from './../sharedcomponents/ForwardCommands/PingControl';\r\nimport { TempSetPoint } from './../sharedcomponents/ForwardCommands/TempSetPoint';\r\nimport { HumiditySetPoint } from './../sharedcomponents/ForwardCommands/HumiditySetPoint';\r\nimport { O2SetPoint } from './../sharedcomponents/ForwardCommands/O2SetPoint';\r\nimport { ReeferToggleButtonsFilter } from '../childcomponents/ReeferToggleButtonsFilter';\r\nimport { CO2SetPoint } from './../sharedcomponents/ForwardCommands/CO2SetPoint';\r\nimport { ChangeReeferId } from './../sharedcomponents/ForwardCommands/ChangeReeferId';\r\nimport { ChangeReportingInterval } from './../sharedcomponents/ForwardCommands/ChangeReportingInterval';\r\nimport { ChangeDataLogInterval } from './../sharedcomponents/ForwardCommands/ChangeDataLogInterval';\r\nimport { AssignPANID } from './../sharedcomponents/ForwardCommands/AssignPANID';\r\nimport { RebootReeferController } from './../sharedcomponents/ForwardCommands/RebootReeferController';\r\nimport { VerifyModelValidity } from './../sharedcomponents/ForwardCommands/VerifyModelValidity';\r\nimport { SyncReeferClock } from './../sharedcomponents/ForwardCommands/SyncReeferClock';\r\nimport { StartDeforst } from './../sharedcomponents/ForwardCommands/StartDeforst';\r\nimport { ChangeDeforstInterval } from './../sharedcomponents/ForwardCommands/ChangeDeforstInterval';\r\nimport { TraditionalDataDownload } from './../sharedcomponents/ForwardCommands/TraditionalDataDownload';\r\nimport { StopPTI } from './../sharedcomponents/ForwardCommands/StopPTI';\r\nimport { ScheduledPreTrip } from './../sharedcomponents/ForwardCommands/ScheduledPreTrip';\r\nimport { PreTrip } from './../sharedcomponents/ForwardCommands/PreTrip';\r\nimport { LastPretripResult } from './../sharedcomponents/ForwardCommands/LastPretripResult';\r\nimport { QueryReeferInventory } from './../sharedcomponents/ForwardCommands/QueryReeferInventory';\r\nimport { UpdateModelConfiguration } from './../sharedcomponents/ForwardCommands/UpdateModelConfiguration';\r\nimport { ChangeReeferClockSyncSetting } from './../sharedcomponents/ForwardCommands/ChangeReeferClockSyncSettings';\r\nimport { ChangeZigbeeSettings } from './../sharedcomponents/ForwardCommands/ChangeZigbeeSettings';\r\nimport { AutoConfiguration } from './../sharedcomponents/ForwardCommands/AutoConfiguration';\r\nimport { AssetConfiguration } from './../sharedcomponents/ForwardCommands/AssetConfiguration';\r\nimport { GuestReeferConfiguration } from './../sharedcomponents/ForwardCommands/GuestReeferConfiguration';\r\nimport { AssignBookingSystem, UnAssignBookingSystem, EditBookingSystem } from '../sharedcomponents/BookingSystem';\r\nimport { MultipleSetpoints } from './../sharedcomponents/ForwardCommands/MultipleSetpoints';\r\nimport { AutomaticColdTreatment } from './../sharedcomponents/ForwardCommands/AutomaticColdTreatment';\r\nimport { GetFreshAirType } from './../sharedcomponents/ForwardCommands/GetFreshAirType';\r\nimport { SetFreshAirType } from './../sharedcomponents/ForwardCommands/SetFreshAirType';\r\nimport { PopupConfirm } from './../sharedcomponents/PopupConfirm';\r\nimport { UnassignReefersFromCustomer } from '../childcomponents/UnassignReefersFromCustomer';\r\nimport { AssignToCustomer } from '../childcomponents/AssignToCustomer';\r\nimport { PopupWindow } from '../sharedcomponents/PopupWindow';\r\nimport { GridReeferStatusToolBar } from '../sharedcomponents/GridReeferStatusToolBar';\r\nimport { CreateTrip } from '../childcomponents/CreateTrip';\r\nimport { TripStatus } from '../childcomponents/TripStatus';\r\nimport { TripDeviation } from '../childcomponents/TripDeviation';\r\nimport UserRights from '../../actions/UserRights';\r\nimport CommonActions from '../../actions/CommonActions';\r\n//import { GridPreferenceControl } from './../sharedcomponents/GridPreferenceControl';\r\nimport { ControlledAtmosphere } from './../sharedcomponents/ForwardCommands/ControlledAtmosphere';\r\nimport { DeviceReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { DeviceHardReset } from './../sharedcomponents/ForwardCommands/DeviceReset';\r\nimport { ReeferGetAssetId } from './../sharedcomponents/ForwardCommands/ReeferGetAssetId';\r\nimport { EnableDoorSensor } from './../sharedcomponents/ForwardCommands/EnableDoorSensor';\r\nimport CCAlmTooltip from '../sharedcomponents/GridToolTips/CCAlmTooltip';\r\nimport { ExportToExcelConfirmationWindow } from '../sharedcomponents/ExportToExcelConfirmationWindow';\r\nimport { EmailControlExcelPreference } from '../sharedcomponents/EmailControlExcelPreference';\r\nimport { TripWiseReport } from './../sharedcomponents/ForwardCommands/TripWiseReport';\r\nimport * as RCNGWindow from '../sharedcomponents/ConfirmationWindow';\r\nimport lodashfilter from 'lodash/filter';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { NewBookingUnAssign } from '../sharedcomponents/NewBookingUnAssign';\r\nimport { ViewBookingDetails } from '../childcomponents/ViewBookingDetails';\r\nimport { EditVoyageVVC } from '../childcomponents/EditVoyageVVC';\r\nimport { DimiSetting } from './../sharedcomponents/ForwardCommands/DIMISettings';\r\nimport { IntelligentPTIFunction } from './../sharedcomponents/ForwardCommands/IntelligentPTIFunction';\r\nimport { FanSpeed } from './../sharedcomponents/ForwardCommands/FanSpeed';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nvar functionId;\r\nvar previousReeferid;\r\ninterface ReeferGridState {\r\n loading: boolean;\r\n Filters: server.ReeferSearchFilters;\r\n rowData: any[];\r\n columnDefs: any[];\r\n selectedItems: any[];\r\n overlayLoadingTemplate: any;\r\n modelTitle: string;\r\n popUpHtml: any;\r\n isChangeDeforstInterval: boolean;\r\n pretripCmd: string;\r\n reeferFormatter: any;\r\n pageSize: any;\r\n gridApiParams: any;\r\n tempFilters: server.ReeferSearchFilters;\r\n exportFields: ExportFields;\r\n ToggleSearchParams: any;\r\n VCCheckBoxInfo: VCCheckBoxData;\r\n PTReport: string;\r\n ReportReeferId: string;\r\n modelTitleReport: string;\r\n popUpHtmlReport: any;\r\n isStarCoolOem: boolean;\r\n CustomAttributes: server.CustomAttributes[];\r\n CustomerSpecificCommandData: any;\r\n fullPreTripCommandText: string;\r\n shortPreTripCommandText: string;\r\n funcPreTripCommandText: string;\r\n defaultColDef: any[];\r\n rowGroupPanelShow: string;\r\n groupDefaultExpanded: number;\r\n autoGroupColumnDef: any;\r\n IsCommandIssued: boolean;\r\n PrevSelectedItems: any[];\r\n TWReport: string;\r\n rowModelname: string;\r\n serverSideStoreType: any;\r\n showServerSideGrid: boolean;\r\n IsEnableServerSide: boolean;\r\n PrevEndRow: any;\r\n PrevStartRow: any;\r\n CargoCareProfiles: any[];\r\n frameworkComponents: any;\r\n}\r\n\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar currentMousePos = { x: -1, y: -1 };\r\nvar self;\r\nvar selectedRowData;\r\nvar coppiedData;\r\nvar coppiedDataWithHeader;\r\nvar customerTypeCd;\r\nvar custId;\r\nvar userEmail;\r\nvar dCXDownloads;\r\nvar customerAccessData: any[];\r\nvar viewBookingData: any[];\r\nvar columnDefs2: any[];\r\nvar columnDefs: any[];\r\nvar commandIssued: boolean = false;\r\nlet groupingDisabled = false;\r\nvar reeferAssetSensors: any[];\r\nvar serverSideEnabled: any;\r\nvar selectedRowIndex: number;\r\nvar IsTriggered: boolean;\r\nvar EnableLynxCommands: boolean;\r\nvar EnableCT35ML5Commands: boolean; //RCNG-3425\r\nvar ShowTDDForCT36ML5: boolean;\r\nvar ShowTDDForCT35ML5: boolean;\r\nvar tripWISESupport: any;\r\nexport class ReeferStatusSSRMGrid extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n customerAccessData = [];\r\n viewBookingData = [];\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n customerTypeCd = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd;//this.props.loggedInUserData.User.Customer.CustomerTypeCd;\r\n custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;//this.props.loggedInUserData.User.Customer.CustomerId;\r\n userEmail = JSON.parse(sessionStorage.getItem('UserInfo')).UserEmail;\r\n //serverSideEnabled =JSON.parse(sessionStorage.getItem('UserInfo')).ServerSideEnabled;\r\n serverSideEnabled = JSON.parse(sessionStorage.getItem('SSRM')) == true ? true : false;\r\n dCXDownloads = JSON.parse(sessionStorage.getItem('customerDetails')).DCXDownloads;\r\n functionId = 41; // functionId for ReeferStatus Grid\r\n var commandSpecificData: server.CommandSpecificData = { commandId: '', Oem: [] };\r\n\r\n var overlayTemplate = 'Loading...';\r\n var exportData = new ExportFields();\r\n this.state = {\r\n loading: true,\r\n Filters: this.props.statusFilter,\r\n //rowData: serverSideEnabled ? [] : this.props.propsReeferData,\r\n rowData: [],//this.props.propsReeferData,\r\n columnDefs: [],\r\n selectedItems: [],\r\n overlayLoadingTemplate: overlayTemplate,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n reeferFormatter: this.props.propsReeferFormatterData,\r\n tempFilters: null,\r\n pageSize: 250,\r\n gridApiParams: [],\r\n exportFields: exportData,\r\n ToggleSearchParams: null,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n PTReport: '',\r\n ReportReeferId: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: '',\r\n isStarCoolOem: false,\r\n CustomAttributes: [],\r\n CustomerSpecificCommandData: commandSpecificData,\r\n fullPreTripCommandText: 'Full',\r\n shortPreTripCommandText: 'Short',\r\n funcPreTripCommandText: 'Function Test',\r\n defaultColDef: [],\r\n rowGroupPanelShow: 'always',\r\n groupDefaultExpanded: -1,\r\n IsCommandIssued: false,\r\n PrevSelectedItems: [],\r\n autoGroupColumnDef: { minWidth: 200 },\r\n TWReport: '',\r\n rowModelname: 'serverSide',\r\n serverSideStoreType: 'partial',\r\n showServerSideGrid: JSON.parse(sessionStorage.getItem('SSRM')) == true ? true : false,\r\n IsEnableServerSide: JSON.parse(sessionStorage.getItem('SSRM')) == true ? true : false,\r\n PrevEndRow: -1,\r\n PrevStartRow: -1,\r\n CargoCareProfiles: [],\r\n frameworkComponents: { cCAlmTooltip: CCAlmTooltip},\r\n };\r\n //RCNG-3056\r\n var refAppParams = this.props.refApplicationParams;\r\n if (refAppParams != null && refAppParams != undefined) {\r\n if (refAppParams.EnableLynxCommands != null && refAppParams.EnableLynxCommands != undefined)\r\n EnableLynxCommands = refAppParams.EnableLynxCommands == 'true' ? true : false;\r\n if (refAppParams.EnableCT35ML5Commands != null && refAppParams.EnableCT35ML5Commands != undefined)\r\n EnableCT35ML5Commands = refAppParams.EnableCT35ML5Commands == 'true' ? true : false;\r\n if (refAppParams.ShowTDDForCT36ML5 != null && refAppParams.ShowTDDForCT36ML5 != undefined)\r\n ShowTDDForCT36ML5 = refAppParams.ShowTDDForCT36ML5 == 'true' ? true : false;\r\n if (refAppParams.ShowTDDForCT35ML5 != null && refAppParams.ShowTDDForCT35ML5 != undefined)\r\n ShowTDDForCT35ML5 = refAppParams.ShowTDDForCT35ML5 == 'true' ? true : false;\r\n }\r\n tripWISESupport = this.props.tripWISESupportdeviceTypes;\r\n //RCNG-713\r\n this.GetCCprofileCode();\r\n self = this;\r\n }\r\n\r\n GetCCprofileCode() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetCargoCareCustomerProfiles');\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n this.setState({ CargoCareProfiles: data });\r\n });\r\n }\r\n\r\n toolTipValueGetter = (params) => ({ value: params.value });\r\n renderCustomAttributesColumns() {\r\n columnDefs = this.createColumnDefs();\r\n\r\n if (this.props.customerDeviceTypeSensor != null && this.props.customerDeviceTypeSensor != undefined)\r\n reeferAssetSensors = this.props.customerDeviceTypeSensor.filter(x => x.AssetTypeCd == 'R');\r\n\r\n var newColumns = columnDefs;\r\n\r\n if (JSON.parse(sessionStorage.getItem('UserInfo')).IsCustomAttributesEnable) {\r\n //columnDefs2 = columnDefs;\r\n var generatedColumns = [];\r\n //WI 26721 First Device sensors and next Custom attributes\r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: false, sortable: false, resizable: true, cellClass: 'OneDecimal', headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: false, sortable: false, resizable: true, cellClass: 'OneDecimal', valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination);\r\n //this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n\r\n if (this.props.CustomAttributes != null && this.props.CustomAttributes != undefined && this.props.CustomAttributes.length > 0) {\r\n var generatedColumns = [];\r\n $.each(this.props.CustomAttributes, function (i, val) {\r\n var customAttributeObject = { headerName: '', field: '', enableRowGroup: false, sortable: false, filter: false, resizable: true, valueGetter: Formatters.stringTypeSortingForCustomefields, cellRenderer: ReeferCellRenderer.StringTypeFormatter, width: 130, onCellClicked: self.onCellClickedCopy.bind(this) };\r\n var attributeName = val.AttributeName;\r\n var columnHeaderName = attributeName.replace(' ', '');\r\n customAttributeObject.headerName = attributeName;\r\n customAttributeObject.field = columnHeaderName;\r\n generatedColumns.push(customAttributeObject);\r\n });\r\n\r\n var newColumnDefination = {\r\n headerName: \"Asset Attributes\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Asset Attributes\"))\r\n newColumns.push(newColumnDefination);\r\n //this.setState({ CustomAttributes: this.props.CustomAttributes });\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Asset Attributes\"))\r\n columnDefs2.push(newColumnDefination);// = newColumns;\r\n }\r\n \r\n this.setState({ columnDefs: newColumns });\r\n }\r\n else {\r\n //columnDefs2 = columnDefs; \r\n var generatedColumns = [];\r\n\r\n if (reeferAssetSensors != null && reeferAssetSensors != undefined && reeferAssetSensors.length > 0) {\r\n $.each(reeferAssetSensors, function (i, val) {\r\n var customerDeviceTypeSensorObject: any;\r\n if (val.SensorTypeCd.trim() == \"T\")\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, filter: false, resizable: true, headerValueGetter: Formatters.TempSensorHeaderFormatter, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.TemperatureSensorValueFormatter, width: 130 };\r\n else\r\n customerDeviceTypeSensorObject = { headerName: '', field: '', headerClass: val.OORText, enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, filter: false, resizable: true, valueGetter: Formatters.stringTypeSortingForSensorfields, cellRenderer: Formatters.DigitalSensorFormatter, width: 130 };\r\n\r\n var columnHeaderName = val.ColumnNm;\r\n var columnFieldName = val.FieldName + \"_\" + val.DeviceTypeCd.trim();\r\n customerDeviceTypeSensorObject.headerName = columnHeaderName;\r\n customerDeviceTypeSensorObject.field = columnFieldName;\r\n generatedColumns.push(customerDeviceTypeSensorObject);\r\n });\r\n\r\n var newSensorColumnDefination = {\r\n headerName: \"Device Sensor(s)\",\r\n children: generatedColumns\r\n };\r\n if (!newColumns.some(x => x.headerName === \"Device Sensor(s)\"))\r\n newColumns.push(newSensorColumnDefination);\r\n this.setState({ columnDefs: newColumns });\r\n\r\n if (!columnDefs2.some(x => x.headerName === \"Device Sensor(s)\"))\r\n columnDefs2.push(newSensorColumnDefination);// = newColumns;\r\n }\r\n\r\n this.setState({ columnDefs: newColumns });\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextprops: any) {\r\n const propsReeferData: any = this.props.propsReeferData;\r\n if (propsReeferData !== nextprops.propsReeferData)\r\n this.setState({ rowData: [] });\r\n\r\n \r\n\r\n if (nextprops.propsReeferData != null && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length > 0 && nextprops.statusFilter.StatusFilters != undefined\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.DryInGeofence && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.DryOutGeofence\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOffNotReporting && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOffReporting\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOnNotReporting && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.PowerOnReporting\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisPwrOutGeofence\r\n && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisNotPwrInGeofence && nextprops.statusFilter.StatusFilters[0] != GensetAndDryAndChassisStatusEnum.ChassisNotPwrOutGeofence) {\r\n\r\n if (!serverSideEnabled)\r\n this.setState({ rowData: nextprops.propsReeferData });\r\n \r\n if (self.state.ToggleSearchParams != null && self.state.ToggleSearchParams != undefined) {\r\n self.filterReeferStatusGrid(self.state.ToggleSearchParams);\r\n }\r\n }\r\n\r\n if (nextprops.propsReeferData != null && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length > 0) {\r\n self.props.getReeferStatusGridRows(nextprops.propsReeferData.length);\r\n } else if (nextprops.propsReeferData != null && nextprops.propsReeferData != undefined && nextprops.propsReeferData.length === 0) {\r\n self.props.getReeferStatusGridRows(0);\r\n }\r\n\r\n if (nextprops.propsReeferFormatterData != null && nextprops.propsReeferFormatterData != null) {\r\n if (nextprops.propsReeferFormatterData.AlarmMasterList != null && nextprops.propsReeferFormatterData.AlarmMasterList != undefined && nextprops.propsReeferFormatterData.AlarmMasterList.length > 0) {\r\n if (nextprops.propsReeferData.length > 0) {\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.hideOverlay !== \"undefined\") {\r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n }\r\n }\r\n else {\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n if (typeof self.state.gridApiParams.showNoRowsOverlay !== \"undefined\") {\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (nextprops.performCargoAction) {\r\n self.props.getSelectedRow(self.state.selectedItems);\r\n $('#globalLoader').show();\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n\r\n this.setState({ rowData: [] });\r\n columnDefs2 = this.createColumnDefs();\r\n setTimeout(() => {\r\n this.renderCustomAttributesColumns();\r\n }, 1000);\r\n //columnDefs = this.createColumnDefs();\r\n\r\n //this.setState({ columnDefs: columnDefs });\r\n\r\n //var functionID = 1;\r\n //var url = Config.ApiBaseUrl + '/api/User/GetDefaultSearchParams?FunctionId=' + functionID;\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => { \r\n // if (data != null && data != undefined) {\r\n // if (!data.DefaultSearch)\r\n // this.props.requestReeferAdvanceSearch(this.state.Filters);\r\n // }\r\n // else {\r\n // this.props.requestReeferAdvanceSearch(this.state.Filters);\r\n // }\r\n // });\r\n //this.props.requestReeferAdvanceSearch(this.state.Filters);\r\n self.setState({ tempFilters: this.state.Filters });\r\n $('.ag-column-hover').contextmenu(function (e) {\r\n var relX = e.pageX - $('.ag-column-hover').offset().left;\r\n var relY = (e.pageY - $('.ag-column-hover').offset().top);\r\n $(\"#context-menu\").toggle(100).css({\r\n top: relY,\r\n left: relX\r\n });\r\n $(\"#contextmenu\").hide();\r\n e.preventDefault();\r\n });\r\n \r\n \r\n \r\n \r\n $(document).mousemove(function (event) {\r\n currentMousePos.x = event.pageX;\r\n currentMousePos.y = event.pageY;\r\n event.preventDefault();\r\n });\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModel\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReport\"));\r\n Excel.draggableModalPopup(document.getElementById(\"contextMenuModelReportTW\"));\r\n }\r\n\r\n setCommandText(Oem: any) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandLabel';\r\n var input = JSON.stringify(Oem);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n this.setState({\r\n fullPreTripCommandText: data[0] != 'disabled' ? data[0] : 'Full',\r\n shortPreTripCommandText: data[1] != 'disabled' ? data[1] : 'Short',\r\n funcPreTripCommandText: data[2] != 'disabled' ? data[2] : 'Function Test'\r\n });\r\n //if (data[0] == 'disabled') {\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('disabled');\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').removeClass('disabled');\r\n // if ($(\"#liFullPreTripRequiresRight\").hasClass(\"show\")) $('#liFullPreTripRequiresRight').addClass('enabled');\r\n //}\r\n //if (data[1] == 'disabled') {\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('disabled');\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').addClass('enabled');\r\n // if ($(\"#liStartPreTripShortRequiresRight\").hasClass(\"show\")) $('#liStartPreTripShortRequiresRight').removeClass('disabled');\r\n //}\r\n\r\n //if (data[2] == 'disabled') {\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('disabled');\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('enabled');\r\n //}\r\n //else {\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').addClass('enabled');\r\n // if ($(\"#liStartPreTripFtRequiresRight\").hasClass(\"show\")) $('#liStartPreTripFtRequiresRight').removeClass('disabled');\r\n //}\r\n });\r\n }\r\n\r\n\r\n\r\n getCommandWindowText(Oem: any[], command: string) {\r\n var url = '/api/reeferstatus/GetCustomerSpecificCommandData';\r\n this.state.CustomerSpecificCommandData.Oem = Oem;\r\n this.state.CustomerSpecificCommandData.commandId = command;\r\n var input = JSON.stringify(this.state.CustomerSpecificCommandData);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + url, { method: 'POST', body: input, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == \"Selected Reefers must have a valid OEM type.\" || data == \"Selected Reefers must have a Same OEM type.\") {\r\n PopupWindow.showErrorMessage(\"Alert\", data);\r\n }\r\n else\r\n this.setState({ pretripCmd: command, modelTitle: data }, () => self.RenderContextMenuPopUp('PreTrip', true));\r\n });\r\n }\r\n\r\n onRefreshData = () => {\r\n $('#globalLoader').show();\r\n this.setState({\r\n rowData: this.state.rowData\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n $('#globalLoader').hide();\r\n };\r\n\r\n static reloadgrid() {\r\n\r\n self.setState({\r\n showServerSideGrid: JSON.parse(sessionStorage.getItem('SSRM')) == true ? true : false\r\n });\r\n self.forceUpdate();\r\n }\r\n static GetReeferStatusGridSSRMDataCount() {\r\n if (self.state.rowData != null && self.state.rowData != undefined && self.state.rowData != [] && self.state.rowData.length > 0) {\r\n return self.state.rowData.length;\r\n }\r\n }\r\n createServerSideDatasource(server) {\r\n return {\r\n getRows: function (params) {\r\n\r\n setTimeout(function () {\r\n\r\n params.success({\r\n rowData: [],\r\n rowCount: 0,\r\n });\r\n }, 100);\r\n },\r\n };\r\n }\r\n static ClearReeferStatusGridData() {\r\n if (self != undefined) {\r\n //ReeferCallout.ResetMapPushpins();\r\n selectedRowIndex = -1;\r\n var datasource = self.createServerSideDatasource();\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n self.setState({\r\n rowData: [],\r\n loading: false\r\n });\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != [] && self.state.gridApiParams.length > 0) {\r\n if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\")\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n }\r\n\r\n \r\n reeferContextMenuClick(this: any, item: any) {\r\n switch (item) {\r\n case \"Map\": this.reefermapAction(this.state.selectedItems, 'Home');\r\n break;\r\n case \"History\": this.reeferhistoryAction(this.state.selectedItems, 'Home');\r\n break;\r\n case \"CommandStatus\": this.reefercommandstatusAction(this.state.selectedItems);\r\n break;\r\n case \"Details\": this.reeferdetailsAction(this.state.selectedItems, 'Reefer', 'CurrentDetails');\r\n break;\r\n case \"Copy\": this.reeferdetailsCopyAction();\r\n break;\r\n case \"CopyWithHeader\": this.reeferdetailsCopyWithHeaderAction();\r\n break;\r\n case \"EditBooking\": this.reeferBookingAction(this.state.selectedItems, 'SSRMReeferStatusGrid');\r\n break;\r\n case \"CreateBooking\": this.reeferCreateBookingAction(this.state.selectedItems, 'SSRMReeferStatusGrid');\r\n break;\r\n case \"ViewBooking\": this.reeferViewBookingAction(this.state.selectedItems, 'ReeferStatusGrid');\r\n break;\r\n }\r\n }\r\n\r\n reeferdetailsCopyAction() {\r\n var result = this.copyToClipboard(coppiedData);\r\n }\r\n\r\n reeferdetailsCopyWithHeaderAction() {\r\n var result = this.copyToClipboard(coppiedDataWithHeader);\r\n }\r\n reeferBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.reeferbookingAction(reeferdetails);\r\n }\r\n reeferCreateBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.reefercreatebookingAction(reeferdetails);\r\n }\r\n reeferViewBookingAction(data: any, isOpenVia: any) {\r\n var reeferdetails = {\r\n reeferData: data, formname: isOpenVia\r\n };\r\n this.props.reeferViewbookingAction(reeferdetails);\r\n }\r\n copyToClipboard(text) {\r\n if ((window as any).clipboardData && (window as any).clipboardData.setData) {\r\n return (window as any).clipboardData.setData(\"Text\", text);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n }\r\n\r\n onCellClickedCopy(event) {\r\n //coppiedDataWithHeader = event.colDef.headerName + \" \\r\\n\" + event.value;\r\n //coppiedData = event.value;\r\n var isHistoryCall = false;\r\n\r\n var isHistorySelectionChanged = false; \r\n if (this.state.selectedItems.length == 1 && previousReeferid != event.data.ReeferID)\r\n isHistorySelectionChanged = true;\r\n\r\n if ((selectedRowIndex != event.rowIndex) || (isHistorySelectionChanged == true)) {\r\n selectedRowIndex = event.rowIndex;\r\n isHistoryCall = true;\r\n }\r\n if (event.data != null && event.data != undefined) {\r\n self.props.getLastSelectedRow(event.data);\r\n //$('#globalLoader').show();\r\n if (event.colDef.headerName === \"Comments\" && event.value === 0)\r\n this.reeferdetailsAction(this.state.selectedItems, 'Reefer', 'Comments');\r\n else if (isHistoryCall)\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(event.data, false, self.props.reeferHistoryEnabled);\r\n }\r\n if (this.state.selectedItems.length == 1) \r\n previousReeferid = event.data.ReeferID;\r\n }\r\n\r\n columnRowGroupChanged(params: any) {\r\n self.clearGridRowSelection(params);\r\n }\r\n\r\n\r\n\r\n onRowDataChanged(params: any): void {\r\n var reeferIdSelected = \"\";\r\n if (self.state.IsCommandIssued && self.state.PrevSelectedItems.length > 0) {\r\n //var selItems = self.state.PrevSelectedItems;\r\n reeferIdSelected = self.state.PrevSelectedItems[0].ReeferID;\r\n // reeferIdSelected = \"TEST0000540\";\r\n }\r\n commandIssued = false;\r\n var TotalCount = 0;\r\n var PageSize = self.state.pageSize;\r\n var TempCount = 0;\r\n var gridData = self.state.rowData;\r\n if (gridData != null && gridData != undefined && gridData.length > 0) {\r\n TotalCount = gridData.length;\r\n params.api.setFunctionsReadOnly(false);\r\n } else {\r\n params.api.setFunctionsReadOnly(true);\r\n }\r\n if (TotalCount > 0 && reeferIdSelected !== \"\") {\r\n let count = 0;\r\n if (reeferIdSelected) {\r\n commandIssued = true;\r\n params.api.forEachLeafNode((node) => {\r\n count = count + 1;\r\n if (node.data.ReeferID === reeferIdSelected) {\r\n TempCount = count;\r\n var pageNo = Math.ceil((TempCount / PageSize));\r\n var setPageNum = pageNo - 1;\r\n params.api.paginationGoToPage(setPageNum);\r\n var currentParent = node.parent;\r\n while (currentParent) {\r\n currentParent.setExpanded(true);\r\n currentParent = currentParent.parent;\r\n }\r\n node.setExpanded(true);\r\n node.setSelected(true);\r\n self.setState({ IsCommandIssued: false });\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n UpdateIsCommandIssued(IsCmdIssued: any) {\r\n self.setState({ IsCommandIssued: IsCmdIssued });\r\n }\r\n UpdatePrevSelectedItems(prevSelectedItems: any) {\r\n self.setState({ PrevSelectedItems: prevSelectedItems });\r\n }\r\n\r\n reeferdetailsAction(data: any, dataSource: any, isOpenVia: any) {\r\n var reeferdetails = data;\r\n this.props.reeferdetailsAction(reeferdetails, self.state.reeferFormatter, dataSource, isOpenVia);\r\n }\r\n\r\n reeferhistoryAction(data: any, isOpenVia: any) {\r\n //var reeferdetails = data;\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.state.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.reeferhistoryAction(reeferdetails);\r\n }\r\n\r\n reefermapAction(data: any, isOpenVia: any) {\r\n //var reeferdetails = data;\r\n var reeferdetails = {\r\n reeferData: data, ReeferenceData: self.state.reeferFormatter, isOpenVia: isOpenVia\r\n };\r\n this.props.reeferMapAction(reeferdetails);\r\n }\r\n\r\n reefercommandstatusAction(data: any) {\r\n var reeferdetails = data;\r\n this.props.reefercommandstatusAction(reeferdetails);\r\n }\r\n\r\n static SelectCurrentReefer(currentReefer: any) {\r\n self.state.gridApiParams.deselectAll();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n var countRecordPerPage = 0;\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.forEachLeafNode(function (node) {\r\n countRecordPerPage = countRecordPerPage + 1;\r\n if (node.data.ReeferID === currentReefer.ReeferID) {\r\n var currentPage = Math.trunc(countRecordPerPage / self.state.gridApiParams.paginationProxy.pageSize);\r\n if (currentPage > 1) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.paginationGoToPage(currentPage);\r\n }\r\n\r\n node.setSelected(true);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureIndexVisible(node.rowIndex);\r\n self.setState({ selectedItems: node.data });\r\n self.props.getLastSelectedRow(node.data);\r\n //$('#globalLoader').show();\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(node.data, true, self.props.reeferHistoryEnabled);\r\n }\r\n });\r\n }\r\n\r\n static ShowCurrentPTRSelectedReefer(currentReefer: any) {\r\n self.state.gridApiParams.deselectAll();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n var countRecordPerPage = 0;\r\n var PTRReeferFound = false;\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachLeafNode(function (node) {\r\n countRecordPerPage = countRecordPerPage + 1;\r\n if (node.data.ReeferID === currentReefer.ReeferID) {\r\n var currentPage = Math.trunc(countRecordPerPage / self.state.gridApiParams.paginationProxy.pageSize);\r\n if (currentPage > 1) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.paginationGoToPage(currentPage);\r\n }\r\n\r\n node.setSelected(true);\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.ensureIndexVisible(node.rowIndex);\r\n self.setState({ selectedItems: node.data });\r\n self.props.getLastSelectedRow(node.data);\r\n //$('#globalLoader').show();\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(node.data, true, self.props.reeferHistoryEnabled);\r\n PTRReeferFound = true;\r\n return;\r\n }\r\n });\r\n if (!PTRReeferFound) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer is not found in Reefer Grid.\");\r\n }\r\n }\r\n\r\n\r\n static SelectCurrentNode(currentReeferId: string) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.forEachLeafNode(function (node) {\r\n if (node.data != null && node.data != \"undefined\") {\r\n if (node.data.ReeferID === currentReeferId) {\r\n node.setSelected(true);\r\n }\r\n }\r\n });\r\n }\r\n\r\n static ApplyReeferSearchFilter(filters: server.ReeferSearchFilters) {\r\n if (self != undefined) {\r\n //self.componentDidMount(); \r\n self.setState({\r\n showServerSideGrid: JSON.parse(sessionStorage.getItem('SSRM')) == true ? true : false\r\n }, () => {\r\n $('#globalLoader').show();\r\n // if (self.state.gridApiParams != null && self.state.gridApiParams != undefined) {\r\n // if (self.state.showServerSideGrid) {\r\n // if (typeof self.state.gridApiParams.paginationGoToFirstPage() != \"undefined\") {\r\n // //self.state.gridApiParams.showLoadingOverlay();\r\n // self.state.gridApiParams.paginationGoToFirstPage();\r\n // self.state.gridApiParams.deselectAll();\r\n // }\r\n // }\r\n //}\r\n\r\n if (filters != null && filters != undefined) {\r\n var customAttributesInfo = {};\r\n var filterset: server.ReeferSearchFilters = {\r\n SelectedOem: null, SelectedCountry: null, SelectedGeofence: null, SelectedGeofenceInside: null, SelectedInterval: null, SelectedReefer: null, SelectedAssetStates: null,\r\n SelectedVesselCode: null, StatusFilters: [], AllReefers: null, CustomAttributeFilters: customAttributesInfo, SelectedAssetTypes: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedVoyage: null, SelectedCall: null //WI-26881\r\n ,SelectedCargoCareProfiles:''\r\n };\r\n\r\n filterset.SelectedCountry = (filters.SelectedCountry == \"\" || filters.SelectedCountry == undefined) ? null : filters.SelectedCountry;\r\n filterset.SelectedGeofence = (filters.SelectedGeofence == \"\" || filters.SelectedGeofence == undefined) ? null : filters.SelectedGeofence;\r\n filterset.SelectedGeofenceInside = (filters.SelectedGeofenceInside == \"\" || filters.SelectedGeofenceInside == undefined) ? null : filters.SelectedGeofenceInside;\r\n filterset.SelectedInterval = (filters.SelectedInterval == \"\" || filters.SelectedInterval == undefined) ? null : filters.SelectedInterval;\r\n filterset.SelectedAssetTypes = (filters.SelectedAssetTypes == \"\" || filters.SelectedAssetTypes == undefined) ? null : filters.SelectedAssetTypes;\r\n filterset.SelectedAssetStates = (filters.SelectedAssetStates == \"\" || filters.SelectedAssetStates == undefined) ? null : filters.SelectedAssetStates;\r\n filterset.SelectedOem = (filters.SelectedOem == \"\" || filters.SelectedOem == undefined) ? null : filters.SelectedOem;\r\n filterset.SelectedReefer = (filters.SelectedReefer == \"\" || filters.SelectedReefer == undefined) ? null : filters.SelectedReefer;\r\n filterset.SelectedBookingNumber = (filters.SelectedBookingNumber == \"\" || filters.SelectedBookingNumber == undefined) ? null : filters.SelectedBookingNumber;\r\n filterset.AllReefers = (filters.AllReefers == \"\" || filters.AllReefers == undefined) ? null : filters.AllReefers;\r\n filterset.SelectedVesselCode = (filters.SelectedVesselCode == \"\" || filters.SelectedVesselCode == undefined) ? null : filters.SelectedVesselCode;\r\n filterset.SelectedCall = (filters.SelectedCall == \"\" || filters.SelectedCall == undefined) ? null : filters.SelectedCall; //WI-26881\r\n filterset.SelectedVesselCD = (filters.SelectedVesselCD == \"\" || filters.SelectedVesselCD == undefined) ? null : filters.SelectedVesselCD; //WI-26881\r\n filterset.SelectedVoyage = (filters.SelectedVoyage == \"\" || filters.SelectedVoyage == undefined) ? null : filters.SelectedVoyage; //WI-26881\r\n filterset.StatusFilters = filters.StatusFilters;\r\n filterset.CustomAttributeFilters = filters.CustomAttributeFilters;\r\n filterset.SelectedCargoCareProfiles = (filters.SelectedCargoCareProfiles == \"\" || filters.SelectedCargoCareProfiles == undefined) ? null : filters.SelectedCargoCareProfiles;\r\n\r\n self.setState({\r\n tempFilters: filterset\r\n });\r\n if (self.state.showServerSideGrid) {\r\n var finalData = [];\r\n self.setState({ rowData: [], PrevStartRow: -1, PrevEndRow: -1 });\r\n var datasource = self.ServerSideDatasource(finalData);\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n }\r\n else {\r\n var resultSet = self.props.requestReeferAdvanceSearch(filterset);\r\n }\r\n //\r\n //var finalData = [];\r\n //var datasource = self.ServerSideDatasource(finalData);\r\n //self.state.gridApiParams.setServerSideDatasource(datasource);\r\n //params.api.setServerSideDatasource(datasource);\r\n }\r\n });\r\n }\r\n }\r\n\r\n static refreshGridReady(dashboardWidgetsSearch: any){\r\n var gridPreferencesData: any = dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 4);\r\n var defaultColumns = self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, self.state.gridApiParams, gridPreferencesData, \"ReeferStatusGrid\");\r\n }, 3000); \r\n }\r\n \r\n onGridReadyServer(params: any) {\r\n var totalWidgetSearch = self.props.totalWidgetSearch;//WI26412\r\n $('#globalLoader').show();\r\n //this.gridApi.sizeColumnsToFit();\r\n self.setState({ gridApiParams: params.api });\r\n\r\n //params.api.gridOptionsWrapper.gridOptions.suppressContextMenu = true;\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 4);\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n $('#globalLoader').hide();\r\n setTimeout(() => {\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, params.api, gridPreferencesData, \"ReeferStatusGrid\");\r\n }, 3000);\r\n //GridPreferenceControl.StatusGridPreferenceColumns(functionId, params.api, \"ReeferStatusGrid\");\r\n var finalData = [];\r\n var filterDefault: server.ReeferSearchFilters = {\r\n SelectedCountry: \"\", SelectedAssetTypes: \"\", SelectedAssetStates: \"\", SelectedGeofence: \"\", SelectedGeofenceInside: \"\", SelectedInterval: \"\", SelectedOem: \"\", SelectedReefer: \"\", SelectedVesselCode: \"\", StatusFilters: [12], CustomAttributeFilters: {}, AllReefers: \"\", SelectedBookingNumber: null, SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n var filterDefault2: server.ReeferSearchFilters = {\r\n SelectedCountry: \"\", SelectedAssetTypes: \"\", SelectedAssetStates: \"\", SelectedGeofence: \"\", SelectedGeofenceInside: \"\", SelectedInterval: \"\", SelectedOem: \"\", SelectedReefer: \"\", SelectedVesselCode: \"\", StatusFilters: [12], CustomAttributeFilters: {}, AllReefers: null, SelectedBookingNumber: null, SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '' //WI-26881\r\n };\r\n //if condition added for WI26412\r\n if (totalWidgetSearch) {\r\n var hasReeferFilter = self.props.statusFilter.SelectedAssetTypes;\r\n if (hasReeferFilter != null && hasReeferFilter != undefined && hasReeferFilter.length > 0) {\r\n var regexp = /Reefer/gi;\r\n if (hasReeferFilter.search(regexp) == -1) {\r\n // console.log(\"Does not contain Reefer\");\r\n } else {\r\n if (self.props.hasReefer) {\r\n let isEquals = isEqual(filterDefault, self.props.statusFilter);\r\n if (!isEquals) {\r\n var datasource = self.ServerSideDatasource(finalData);\r\n params.api.setServerSideDatasource(datasource);\r\n }\r\n }\r\n }\r\n } else {\r\n let isEquals = isEqual(filterDefault2, self.props.statusFilter);\r\n if (!isEquals) {\r\n var datasource = self.ServerSideDatasource(finalData);\r\n params.api.setServerSideDatasource(datasource);\r\n }\r\n\r\n }\r\n }\r\n /* WI 26568 changes start */\r\n else {\r\n if (self.props.propsReeferData != null && self.props.propsReeferData != undefined && self.props.propsReeferData.length > 0) {\r\n var datasource = self.ServerSideDatasource(finalData);\r\n params.api.setServerSideDatasource(datasource);\r\n }\r\n }\r\n /* WI 26568 changes end */\r\n }\r\n\r\n showGridPreferenceColumns() {\r\n var gridApi = self.state.gridApiParams;\r\n var gridPreferencesData: any = self.props.dashboardWidgetsSearch.filter(x=>x.DashboardWidgetId == 4);\r\n var defaultColumns = gridApi.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n gridApi.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n $('#globalLoader').hide();\r\n GridColumnPreferences.StatusGridPreferenceColumns(functionId, gridApi, gridPreferencesData, \"ReeferStatusGrid\");\r\n }\r\n\r\n static ClearSelection() {\r\n $('#globalLoader').show();\r\n //ReeferHistoryGrid.ClearHistoryGridData();\r\n //this.props.clearGridHeaderExtension();\r\n if (self != undefined) {\r\n self.state.gridApiParams.deselectAll();\r\n }\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'status', this.state.reeferFormatter.AlarmMasterList);\r\n\r\n\r\n $('#globalLoader').hide();\r\n\r\n }\r\n\r\n onGridPaginationChanged(params: any) {\r\n if (params.newPage) {\r\n self.props.clearGridHeaderExtension();\r\n if (!commandIssued)\r\n params.api.deselectAll();\r\n commandIssued = false;\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n //ReeferCallout.BindClusterMapPushpins(this.state.rowData, 'status');\r\n }\r\n if (params.api.getDisplayedRowCount() == 1 && (self.props.hasReefer && !self.props.hasGenset && !self.props.hasDry && !self.props.hasChassis)) {\r\n var rowindex = 0;\r\n var rowNode = params.api.getRowNode(rowindex);\r\n // do something with the row, eg select it\r\n if (rowNode != undefined && rowNode != null) {\r\n rowNode.setSelected(true);\r\n ReeferHistoryGrid.ApplyReeferHistorySearch(rowNode.data, false, self.props.reeferHistoryEnabled);\r\n }\r\n }\r\n }\r\n\r\n italicizeGridRows(params: any) {\r\n if (params.data != null && params.data != undefined) {\r\n if (params.data.EventDTTM != params.data.UnitEventDTTM)\r\n return { 'font-style': 'italic' }\r\n }\r\n }\r\n\r\n onGridSelectionChanged(params: any) {\r\n $(\"#contextmenu\").show();\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n\r\n if (selectedRows.length != 0) {\r\n var selected = params.api.getFocusedCell();\r\n if (selected != null) {\r\n var selectedRow = params.api.getRowNode(selected.rowIndex);\r\n ReeferCallout.ResetMapPushpins(); // Clear existing pushpins\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n }\r\n\r\n //var selectedItems = self.state.selectedItems;\r\n self.setState({\r\n selectedItems: selectedReeferData,\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: ''\r\n });\r\n\r\n self.props.getSelectedRow(selectedRows);\r\n }\r\n }\r\n\r\n ValidateBookingID(reeferData: any) {\r\n if (reeferData.length > 0 && reeferData[0].LastBookingEventMasterId != null && reeferData[0].LastBookingEventMasterId.length > 0) {\r\n for (var lastBookingID in reeferData[0].LastBookingEventMasterId) {\r\n if (reeferData[0].EventMasterID == parseInt(reeferData[0].LastBookingEventMasterId[lastBookingID])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static ReeferStatusResult() {\r\n ReeferStatusSSRMGrid.ApplyReeferSearchFilter(self.state.tempFilters);\r\n }\r\n HideAllContextMenus() {\r\n $(\"#gensetcontextmenu\").hide();\r\n $(\".gensetcontext-menu\").hide();\r\n $(\"#drycontextmenu\").hide();\r\n $(\".drycontext-menu\").hide();\r\n $(\"#chassiscontextmenu\").hide();\r\n $(\".chassiscontext-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n $(\".context-menu\").hide();\r\n }\r\n\r\n copyRowsToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: false });//RCNG-225\r\n }\r\n\r\n copyRowsWithHeadersToClipBoard() {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.copySelectedRowsToClipboard({ includeHeaders: true });//RCNG-225\r\n }\r\n \r\n ServerSideDatasource(data) {\r\n return {\r\n getRows: (params) => {\r\n //var sprops = self.props.statusFilter;\r\n //var newfilters: server.ReeferSearchFiltersPaginated = {\r\n // SelectedOem: self.props.statusFilter.SelectedOem,\r\n // SelectedCountry: self.props.statusFilter.SelectedCountry,\r\n // SelectedGeofence: self.props.statusFilter.SelectedGeofence,\r\n // SelectedGeofenceInside: self.props.statusFilter.SelectedGeofenceInside,\r\n // SelectedInterval: self.props.statusFilter.SelectedInterval,\r\n // SelectedReefer: self.props.statusFilter.SelectedReefer,\r\n // SelectedVesselCode: self.props.statusFilter.SelectedVesselCode,\r\n // StatusFilters: self.props.statusFilter.StatusFilters,\r\n // AllReefers: self.props.statusFilter.AllReefers,\r\n // CustomAttributeFilters: self.props.statusFilter.CustomAttributeFilters,\r\n // SelectedAssetTypes: self.props.statusFilter.SelectedAssetTypes,\r\n // SelectedBookingNumber: self.props.statusFilter.SelectedBookingNumber,\r\n // StartRow: params.request.startRow,\r\n // EndRow: params.request.endRow\r\n //};\r\n //changed below code to get data from self.state.tempFilters for WI26449\r\n var newfilters: server.ReeferSearchFiltersSSRM = {\r\n SelectedOem: self.state.tempFilters.SelectedOem,\r\n SelectedCountry: self.state.tempFilters.SelectedCountry,\r\n SelectedGeofence: self.state.tempFilters.SelectedGeofence,\r\n SelectedGeofenceInside: self.state.tempFilters.SelectedGeofenceInside,\r\n SelectedInterval: self.state.tempFilters.SelectedInterval,\r\n SelectedReefer: self.state.tempFilters.SelectedReefer,\r\n SelectedVesselCode: self.state.tempFilters.SelectedVesselCode,\r\n StatusFilters: self.state.tempFilters.StatusFilters,\r\n AllReefers: self.state.tempFilters.AllReefers,\r\n CustomAttributeFilters: self.state.tempFilters.CustomAttributeFilters,\r\n SelectedAssetTypes: self.state.tempFilters.SelectedAssetTypes,\r\n SelectedAssetStates: self.state.tempFilters.SelectedAssetStates,\r\n SelectedBookingNumber: self.state.tempFilters.SelectedBookingNumber,\r\n StartRow: params.request.startRow,\r\n EndRow: params.request.endRow,\r\n RowGroupCols: params.request.rowGroupCols,\r\n GroupKeys: params.request.groupKeys,\r\n SortModels: params.request.sortModel,\r\n SelectedVesselCD: self.state.tempFilters.SelectedVesselCD,\r\n SelectedVoyage: self.state.tempFilters.SelectedVoyage,\r\n SelectedCall: self.state.tempFilters.SelectedCall,\r\n SelectedCargoCareProfiles: self.state.tempFilters.SelectedCargoCareProfiles\r\n };\r\n //var p = new ReeferSearchFilters()\r\n // sprops. \r\n //var resultSet = await self.props.requestReeferAdvanceSearch(newfilters);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCurrentConditionReeferDataSP', { method: 'POST', body: JSON.stringify(newfilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n var response = this.getData_old(finalData, params.request);\r\n if (!response.rows.length) {\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n }\r\n else {\r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n setTimeout(function () {\r\n if (response.success) {\r\n $('#globalLoader').hide();\r\n params.successCallback(response.rows, response.lastRow);\r\n } else {\r\n params.failCallback();\r\n }\r\n }, 200);\r\n });\r\n\r\n },\r\n };\r\n };\r\n\r\n ServerSideDatasource_old(data) {\r\n return {\r\n getRows: (params) => {\r\n var sprops = self.props.statusFilter;\r\n var newfilters: server.ReeferSearchFiltersSSRM = {\r\n SelectedOem: self.props.statusFilter.SelectedOem,\r\n SelectedCountry: self.props.statusFilter.SelectedCountry,\r\n SelectedGeofence: self.props.statusFilter.SelectedGeofence,\r\n SelectedGeofenceInside: self.props.statusFilter.SelectedGeofenceInside,\r\n SelectedInterval: self.props.statusFilter.SelectedInterval,\r\n SelectedReefer: self.props.statusFilter.SelectedReefer,\r\n SelectedVesselCode: self.props.statusFilter.SelectedVesselCode,\r\n StatusFilters: self.props.statusFilter.StatusFilters,\r\n AllReefers: self.props.statusFilter.AllReefers,\r\n CustomAttributeFilters: self.props.statusFilter.CustomAttributeFilters,\r\n SelectedAssetTypes: self.props.statusFilter.SelectedAssetTypes,\r\n SelectedAssetStates: self.props.statusFilter.SelectedAssetStates,\r\n SelectedBookingNumber: self.props.statusFilter.SelectedBookingNumber,\r\n StartRow: params.request.startRow,\r\n EndRow: params.request.endRow,\r\n RowGroupCols: null,\r\n GroupKeys: null,\r\n SortModels: null,\r\n SelectedVesselCD: self.state.tempFilters.SelectedVesselCD,\r\n SelectedVoyage: self.state.tempFilters.SelectedVoyage,\r\n SelectedCall: self.state.tempFilters.SelectedCall,\r\n SelectedCargoCareProfiles: self.state.tempFilters.SelectedCargoCareProfiles\r\n };\r\n //var p = new ReeferSearchFilters()\r\n // sprops.\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCurrentConditionReeferDataSP', { method: 'POST', body: JSON.stringify(newfilters), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })\r\n let fetchTask = fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(finalData => {\r\n var response = this.getData_old(finalData, params.request);\r\n if (!response.rows.length) {\r\n self.state.gridApiParams.showNoRowsOverlay();\r\n }\r\n else {\r\n self.state.gridApiParams.hideOverlay();\r\n }\r\n setTimeout(function () {\r\n if (response.success) {\r\n $('#globalLoader').hide();\r\n params.successCallback(response.rows, response.lastRow);\r\n } else {\r\n params.failCallback();\r\n }\r\n }, 200);\r\n });\r\n\r\n },\r\n };\r\n };\r\n sortAndFilter(allOfTheData, sortModel, filterModel) {\r\n return this.sortData(sortModel, this.filterData(filterModel, allOfTheData));\r\n }\r\n sortData(sortModel, data) {\r\n var sortPresent = sortModel && sortModel.length > 0;\r\n if (!sortPresent) {\r\n return data;\r\n }\r\n }\r\n filterData(filterModel, data) {\r\n var filterPresent = filterModel && Object.keys(filterModel).length > 0;\r\n if (!filterPresent) {\r\n return data;\r\n }\r\n data = data.filter(i => {\r\n if (Object.keys(i).some(k => i[k] && i[k].toString().toLowerCase().includes(filterModel['-'].filter)))\r\n return i;\r\n })\r\n return data;\r\n }\r\n getData_old(params, req) {\r\n var newData = params;//params.slice(req.startRow, req.endRow);\r\n //var dataAfterSortingAndFiltering = this.sortAndFilter(newData, params.sortModel, params.filterModel);\r\n //let reefersData = params; //Object.assign({}, params);\r\n let reefersData = cloneDeep(params);\r\n //let reefersData = Object.assign({}, params);\r\n var reeferStateData = self.state.rowData;\r\n //if (req.endRow != reeferStateData.length && req.endRow > reeferStateData.length && params.length != reeferStateData.length) {\r\n if (req.endRow != reeferStateData.length && req.endRow > reeferStateData.length && req.endRow != this.state.PrevEndRow) {\r\n reefersData.push(...reeferStateData);\r\n self.setState({ rowData: reefersData, PrevEndRow: req.endRow, PrevStartRow: req.startRow }, () => {\r\n //ReeferCallout.ResetMapPushpins();\r\n ReeferCallout.BindClusterMapPushpins(self.state.rowData, 'status', this.state.reeferFormatter);\r\n });\r\n }\r\n else {\r\n ReeferCallout.BindClusterMapPushpins(self.state.rowData, 'status', this.state.reeferFormatter);\r\n }\r\n\r\n\r\n //var sortedData = [];\r\n //var sortColId = '';\r\n //var sort = ''; //asc or desc\r\n //if (req.sortModel.length) {\r\n // // implement fake sorting\r\n // req.sortModel.forEach(element => {\r\n // sortColId = element.colId;\r\n // sort = element.sort;\r\n // });\r\n\r\n // if (sort == 'asc') {\r\n // sortedData = lodashsortBy(newData, sortColId);\r\n // } else {\r\n // sortedData = lodashsortBy(newData, sortColId).reverse();\r\n // }\r\n // newData = sortedData;\r\n //}\r\n return {\r\n success: true,\r\n rows: newData,\r\n lastRow: this.getLastRowIndex(req, newData),//params.length,//getLastRowIndex(req, newData),\r\n };\r\n };\r\n\r\n getLastRowIndex(request, results) {\r\n if (!results || results.length === 0) {\r\n return request.startRow;\r\n }\r\n if (self.state.rowData.length == request.endRow || (parseInt(self.state.rowData.length) % parseInt(self.state.pageSize) == 0)) {\r\n var currentLastRow = request.startRow + results.length+1;\r\n } else {\r\n var currentLastRow = request.startRow + results.length;\r\n }\r\n\r\n return currentLastRow <= request.endRow ? currentLastRow : -1;\r\n }\r\n getReeferContextMenuItems = params => {\r\n //TODO : after test uncommnet below line\r\n //RCUtils.HighlightCurrentGridRow(params,\"ReeferID\",self.state.selectedItems);\r\n if (params != null && params != undefined && params.node != null && params.node != undefined && !params.node.group) {\r\n var selectflag = false;\r\n var selectedCell = params.api.getFocusedCell();\r\n var selectedRowIndex = selectedCell.rowIndex;\r\n var currentRow = params.api.getDisplayedRowAtIndex(selectedRowIndex);\r\n if (currentRow != null && currentRow != \"undefined\" && !currentRow.group) {\r\n var currentRowId = currentRow.id;\r\n coppiedData = params.value;\r\n var selectedrowNode = params.api.getRowNode(currentRowId);\r\n var reeferid = selectedrowNode.data.ReeferID;\r\n params.api.forEachNode((newRowNode, index) => {\r\n if ((newRowNode.data.ReeferID === reeferid)) {\r\n selectedrowNode = newRowNode;\r\n return false;\r\n }\r\n });\r\n $.each(self.state.selectedItems, (index, item) => {\r\n if (item.ReeferID == selectedrowNode.data.ReeferID) {\r\n selectflag = true;\r\n return false;\r\n }\r\n });\r\n if (!selectflag)\r\n params.api.deselectAll();\r\n selectedrowNode.setSelected(true);\r\n }\r\n var selectedReeferData = [];\r\n var selectedRows = params.api.getSelectedRows();\r\n selectedRows.forEach(function (selectedRow, index) {\r\n selectedReeferData.push(selectedRow);\r\n });\r\n var distinctOEM = [];\r\n var fullPreTripLabel = 'Full';\r\n var shortPreTripLabel = 'Short';\r\n var funcPreTripLabel = 'Function Test';\r\n $.each(selectedReeferData, function (i, val) {\r\n if (val.ReeferOEMTypeCd != null && val.ReeferOEMTypeCd != undefined) {\r\n if ($.inArray(val.ReeferOEMTypeCd, distinctOEM) === -1) {\r\n distinctOEM.push(val.ReeferOEMTypeCd);\r\n }\r\n }\r\n });\r\n if (distinctOEM.length == 1) {\r\n if (self.state.reeferFormatter != null || self.state.reeferFormatter != undefined) {\r\n var customerSpecificCommandList = self.state.reeferFormatter.CustomerSpecificCommandList;\r\n var custId = JSON.parse(sessionStorage.getItem('customerDetails')).CustomerId;\r\n if (customerSpecificCommandList != null && customerSpecificCommandList.length > 0) {\r\n var custSpecificCommandList = lodashfilter(customerSpecificCommandList, function (item) {\r\n return item.CustomerId === custId;\r\n });\r\n if (custSpecificCommandList != null && custSpecificCommandList.length > 0) {\r\n var fullCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartFullPTI\";\r\n });\r\n if (fullCustSpecificCommandList != null && fullCustSpecificCommandList.length > 0) {\r\n fullPreTripLabel = fullCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n }\r\n var shortCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartShortPTI\";\r\n });\r\n if (shortCustSpecificCommandList != null && shortCustSpecificCommandList.length > 0) {\r\n shortPreTripLabel = shortCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n shortPreTripLabel = 'Auto 3';\r\n }\r\n var funcCustSpecificCommandList = lodashfilter(custSpecificCommandList, function (item) {\r\n return item.OemTypeCD === distinctOEM[0].toString()\r\n && item.Tag === \"StartCAShortPTI\";\r\n });\r\n if (funcCustSpecificCommandList != null && funcCustSpecificCommandList.length > 0) {\r\n funcPreTripLabel = funcCustSpecificCommandList[0].Text;\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n shortPreTripLabel = 'Auto 3';\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n else if (distinctOEM[0].toString().trim() == 'C') {\r\n fullPreTripLabel = 'Auto 2';\r\n shortPreTripLabel = 'Auto 3';\r\n funcPreTripLabel = 'Auto 1';\r\n }\r\n }\r\n }\r\n self.setState({\r\n fullPreTripCommandText: fullPreTripLabel,\r\n shortPreTripCommandText: shortPreTripLabel,\r\n funcPreTripCommandText: funcPreTripLabel\r\n });\r\n var result = [\r\n {\r\n name: 'Copy',\r\n subMenu: [\r\n {\r\n name: 'Copy Cell',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"Copy\");\r\n var cellContent = this.ProcessCellForClipboard(params);\r\n params.api.clipboardService.copyDataToClipboard(cellContent);\r\n\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s)',\r\n action: () => {\r\n this.copyRowsToClipBoard();\r\n }\r\n },\r\n {\r\n name: 'Copy Row(s) with Headers',\r\n action: () => {\r\n this.copyRowsWithHeadersToClipBoard();\r\n }\r\n },\r\n ],\r\n },\r\n //'copy',\r\n //'copyWithHeaders',\r\n {\r\n name: 'Map',\r\n action: () => {\r\n this.reeferContextMenuClick(\"Map\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('14'),\r\n },\r\n {\r\n name: 'Current Details',\r\n action: () => {\r\n this.reeferContextMenuClick(\"Details\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('154'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'CurrentDetails'),\r\n },\r\n {\r\n name: 'History',\r\n action: () => {\r\n this.reeferContextMenuClick(\"History\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('15'),\r\n },\r\n {\r\n name: 'Command History',\r\n action: () => {\r\n this.reeferContextMenuClick(\"CommandStatus\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('155'),\r\n },\r\n {\r\n name: 'CargoCare',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('76, 77, 224', params),\r\n subMenu: [\r\n {\r\n name: 'Assign to CargoCare',\r\n subMenu: this.assignToCargoCareSubMenu(selectedReeferData[0].CCProfileCode, params),\r\n //action: () => {\r\n // this.assignCargoCare();\r\n //},\r\n cssClasses: UserRights.checkMenuItemVisibility('76'),\r\n //disabled: UserRights.checkMenuItemDisabled(params, 'AssigntoCargoCare'),\r\n },\r\n {\r\n name: 'Unassign from CargoCare',\r\n action: () => {\r\n this.unAssignCaregoCare();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('77'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'UnassignfromCargoCare'),\r\n },\r\n {\r\n name: 'Clear CargoCare Alerts',\r\n subMenu: this.ClearCargoCareAlertsSubMenu(selectedReeferData),\r\n\r\n cssClasses: UserRights.checkMenuItemVisibility('224'),//RCNG-588\r\n disabled: UserRights.checkClearCargoCareAlertsSubMenuItemDisabled(params, 'ClearCargoCareAlerts'),\r\n },\r\n /*{\r\n name: 'Clear Set Point',\r\n action: () => {\r\n this.clearSetPoint();\r\n },\r\n //disabled: UserRights.checkMenuItemClearSetPointDisabled(params),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ClearSetPoint'),\r\n },*/\r\n ],\r\n },\r\n {\r\n name: 'Commands',\r\n cssClasses: UserRights.checkCommandMenuItemVisibilityMultiple('18, 19, 20, 21, 22, 23, 26, 27, 24, 25, 28, 29, 30, 31, 32, 33, 80, 81, 83, 84, 85, 89, 90, 92, 103, 104, 106, 108, 109, 111, 112, 113, 114, 115, 116, 118, 122, 123, 125, 126, 145, 150', params),\r\n disabled:\r\n //EnableLynxCommands ? UserRights.checkMenuItemDisabledForCommands(params, 'Commands'):\r\n UserRights.checkMenuItemDisabledForLynxCommands(params, 'Commands', EnableLynxCommands, EnableCT35ML5Commands, self.state.reeferFormatter.RefControllerTypes),//RCNG-1842,RCNG-3425\r\n subMenu: [\r\n {\r\n name: 'Reporting',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('26, 81, 145, 150', params, 'Reporting', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Ping / Report',\r\n action: () => {\r\n this.popUpPing();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('26', params, 'Ping', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set Reporting Interval',\r\n action: () => {\r\n this.popUpChangeReporting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('81', params, 'SetReportingInterval', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'SetReportingInterval'),\r\n },\r\n {\r\n name: 'Device Reset',\r\n action: () => {\r\n this.popUpDeviceReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('145', params, 'DeviceReset', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Reset To Defaults',\r\n action: () => {\r\n this.popUpDeviceHardReset();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('150', params, 'DeviceResetToDefaults', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n\r\n name: 'Reefer Settings',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25, 28, 92, 108,267,268,269', params, 'ReeferSettings', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Change Setpoints',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('23, 27, 24, 25', params, 'ChangeSetpoints', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Temperature',\r\n action: () => {\r\n this.popUpChangeTempSetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('23'),\r\n },\r\n {\r\n name: 'Humidity',\r\n action: () => {\r\n this.popUpHumiditySetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('27', params, 'Humidity', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Humidity'),\r\n },\r\n {\r\n name: 'O2',\r\n action: () => {\r\n this.popUpO2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('24', params, 'O2', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CO2',\r\n action: () => {\r\n this.popUpCo2SetPoint();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('25', params, 'CO2', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Clock',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('92, 108', params, 'Clock', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Sync to Device',\r\n action: () => {\r\n this.popUpSyncReeferClock();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('92', params, 'SynctoDevice', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Clock Sync Settings',\r\n action: () => {\r\n this.popUpChangeReeferClockSyncSetting();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('108', params, 'ClockSyncSettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Change Reefer ID',\r\n action: () => {\r\n this.popUpChangeReeferId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('28', params, 'ChangeReeferID', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ChangeReeferID'),\r\n },\r\n {\r\n name: 'Controlled Atmosphere',\r\n action: () => {\r\n this.popUpControlledAtmosphere();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('139', params, 'ControlledAtmosphere', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Fan Speed',\r\n action: () => {\r\n this.popUpFanSpeed();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('269', params, 'FanSpeed', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledforDimiSetting(params, 'FanSpeed'),\r\n },\r\n {\r\n name: 'OEM PTI',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('267,268', params, 'OEMPTI', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledforDimiSetting(params, 'OEMPTI'),\r\n subMenu: [\r\n {\r\n name: 'DIMI Settings',\r\n action: () => {\r\n this.popUpDIMISettings();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('267', params, 'DIMISettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Intelligent PTI Function',\r\n action: () => {\r\n this.popUpIntelligentPTIFunction();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('268', params, 'IntelligentPTIFunction', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n }\r\n ],\r\n },\r\n {\r\n name: 'Reefer Data Log',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByDataForTDD('29, 31, 32, 80', params, 'ReeferDataLog', self.state.reeferFormatter.RefControllerTypes, ShowTDDForCT36ML5, ShowTDDForCT35ML5),\r\n disabled: UserRights.checkMenuItemDisabledForTDD(params, 'ReeferDataLog', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Get Data Log',\r\n action: () => {\r\n this.popUpDLTraditional(this);\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyDataForTDD('31', params, 'GetDataLog', self.state.reeferFormatter.RefControllerTypes, ShowTDDForCT36ML5, ShowTDDForCT35ML5),\r\n },\r\n {\r\n name: 'Set Data Log Interval',\r\n action: () => {\r\n this.popUpChangeDatalog();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('29', params, 'SetDataLogInterval', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Real-Time Retrieval Settings',\r\n //action: () => {\r\n // to do Check \r\n //this.popUpChangeDatalog();\r\n //},\r\n cssClasses: UserRights.checkMenuItemVisibility('32, 80'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Reefer Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('18, 19, 20, 21, 30, 106, 206', params, 'ReeferPreTrip', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Start Pre-Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('18, 19, 20'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StartPre-Trip'),\r\n subMenu: [\r\n {\r\n name: this.state.fullPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripFull();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('18', params, 'fullPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.shortPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpPreTripShort();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('19', params, 'shortPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: this.state.funcPreTripCommandText.toString(),\r\n action: () => {\r\n this.popUpFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('20', params, 'funcPreTripCommandText', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled',\r\n action: () => {\r\n this.popUpChangeToChilled();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('140', params, 'Chilled', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Frozen',\r\n action: () => {\r\n this.popUpChangeToFrozen();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('141', params, 'Frozen', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA',\r\n action: () => {\r\n this.popUpChangeToCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('142', params, 'CA', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Full',\r\n action: () => {\r\n this.popUpChangeToCAFullPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('143', params, 'CAFull', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'CA Function Test',\r\n action: () => {\r\n this.popUpChangeToCAFunctionTest();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('144', params, 'CAFunctionTest', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Chilled and CA',\r\n action: () => {\r\n this.popUpChangeToChilledandCA();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('148', params, 'ChilledandCA', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Stop Pre-Trip',\r\n action: () => {\r\n this.popUpStopPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('21', params, 'StopPre-Trip', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'StopPre-Trip'),\r\n },\r\n {\r\n name: 'Scheduled Pre-Trip',\r\n action: () => {\r\n this.popUpSchedulePTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('106', params, 'ScheduledPre-Trip', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Get Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTI();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'GetPre-TripResults', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Show Pre-Trip Results',\r\n action: () => {\r\n this.popUpGetPTIReport();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('30', params, 'ShowPre-TripResults', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ShowPreTripResults'),\r\n },\r\n ,\r\n {\r\n name: 'Get TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWR();\r\n },\r\n cssClasses: UserRights.checkTripWISEVisibilitybyData('206', params, 'GetTripWISEReport', tripWISESupport),\r\n },\r\n {\r\n name: 'Show TripWISE Report',\r\n action: () => {\r\n this.popUpGetTWReport();\r\n },\r\n cssClasses: UserRights.checkTripWISEVisibilitybyData('261', params, 'ShowTripWISEReport', tripWISESupport),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ShowTripWISEReport'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Reboot Reefer Controller',\r\n action: () => {\r\n this.popUpRebootReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('22', params, 'RebootReeferController', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Query Reefer Inventory',\r\n action: () => {\r\n this.popUpQueryReefer();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('83,84,85', params, 'QueryReeferInventory', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Reefer Model Configuration',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('89, 90', params, 'ReeferModelConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n {\r\n name: 'Update',\r\n action: () => {\r\n this.popUpUpdateModelConfig();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('89', params, 'Update', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Verify',\r\n action: () => {\r\n this.popUpVerifyModelValidity();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('90', params, 'Verify', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Verify'),\r\n },\r\n ],\r\n\r\n },\r\n {\r\n name: 'Defrost',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('103, 104', params, 'Defrost', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'Defrost'),\r\n\r\n subMenu: [\r\n\r\n {\r\n name: 'Start Defrost',\r\n action: () => {\r\n this.popUpStartDeforst();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('103', params, 'StartDefrost', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Change Defrost Interval',\r\n action: () => {\r\n this.popUpChangeDeforstInterval();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('104', params, 'ChgDefrostInterval', self.state.reeferFormatter.RefControllerTypes),\r\n disabled: UserRights.checkMenuItemDisabledForDefrost(params, 'ChgDefrostInterval', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n\r\n name: 'Multiple Setpoints',\r\n action: () => {\r\n this.popUpMSC();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('123', params, 'MultipleSetpoints', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Automatic Cold Treatment',\r\n action: () => {\r\n this.popUpACT();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('122', params, 'AutomaticColdTreatment', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Guest Reefer configuration',\r\n action: () => {\r\n this.popUpGuestReeferConfigCmd();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('112, 113, 114, 115, 116', params, 'GuestReeferconfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Change Zigbee Config Settings',\r\n action: () => {\r\n this.popUpZigbeeSettings();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('118', params, 'ChangeZigbeeConfigSettings', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Assign PAN Id',\r\n action: () => {\r\n this.popUpAssignPanId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('109', params, 'AssignPANId', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Device Configuration',\r\n action: () => {\r\n this.popAutoConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('110', params, 'DeviceConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Asset Configuration',\r\n action: () => {\r\n this.popAssetConfiguration();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('121', params, 'AssetConfiguration', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Fresh Air Type',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleByData('125, 126', params, 'FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n subMenu: [\r\n\r\n {\r\n name: 'Get - Fresh Air Type',\r\n action: () => {\r\n this.popUpGetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('125', params, 'Get-FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Set - Fresh Air Type',\r\n action: () => {\r\n this.popUpSetFreshAirType();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('126', params, 'Set-FreshAirType', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n\r\n ],\r\n },\r\n {\r\n name: 'Get Asset ID',\r\n action: () => {\r\n this.popUpGetAssetId();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('199', params, 'GetAssetId', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n {\r\n name: 'Enable Door Sensor',\r\n action: () => {\r\n this.popUpEnableDoorSensor();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilitybyData('207', params, 'EnableDoorSensor', self.state.reeferFormatter.RefControllerTypes),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Trip',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('94, 95, 98'),\r\n subMenu: [\r\n {\r\n name: 'Create Trip',\r\n action: () => {\r\n this.popUpCreateTrip();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('95'),\r\n },\r\n {\r\n name: 'Trip Status',\r\n action: () => {\r\n this.popUpTripStatus();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('94'),\r\n },\r\n {\r\n name: 'Clear Deviation',\r\n action: () => {\r\n this.popUpClearDeviation();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibility('98'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ClearDeviation'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Booking and Access',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('40, 82, 100, 101, 102'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'BookingandAccess'),\r\n subMenu: [\r\n {\r\n name: 'Assign / Edit',\r\n action: () => {\r\n this.popUpAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('40, 100, 102'),\r\n },\r\n {\r\n name: 'Unassign',\r\n action: () => {\r\n this.popUpUnAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('82, 101'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'Unassign',self.state.reeferFormatter.EventMasterList),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Bookings',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('212,211,213,214,249'),//Added Right id for RCNG-945\r\n disabled: UserRights.checkMenuItemDisabled(params, 'NewBookingandAccess'),\r\n subMenu: [\r\n {\r\n name: 'Create New Booking',\r\n action: () => {\r\n this.reeferContextMenuClick(\"CreateBooking\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('211'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'NewBookingCreate', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Edit Booking',\r\n action: () => {\r\n this.reeferContextMenuClick(\"EditBooking\");\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('212'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'NewBookingEdit', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'View Booking',\r\n action: () => {\r\n //this.reeferContextMenuClick(\"ViewBooking\");\r\n this.popUpViewBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('213'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'ViewBooking', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Unassign Booking',\r\n action: () => {\r\n this.popUpNewUnAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('214'),\r\n disabled: UserRights.checkMenuItemUnAssignDisabled(params, 'Unassign', self.state.reeferFormatter.EventMasterList),\r\n },\r\n {\r\n name: 'Third-Party Access',\r\n action: () => {\r\n this.popUpAssignBooking();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('249'),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Edit Voyage',\r\n action: () => {\r\n this.popUpEditVoyage();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('248'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'EditVoyage'),\r\n },\r\n {\r\n name: 'Inventory',\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('208,209'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'RetireOrReactivate'),\r\n subMenu: [\r\n {\r\n name: 'Retire',\r\n action: () => {\r\n this.popUpRetire();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('208', params, \"Retire\"),\r\n },\r\n {\r\n name: 'Reactivate',\r\n action: () => {\r\n this.popUpReactivate();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultipleInventory('209', params, \"Reactivate\"),\r\n },\r\n ],\r\n },\r\n {\r\n name: 'Confirm Controller Swap',\r\n action: () => {\r\n this.popUpControllerSwap();\r\n },\r\n cssClasses: UserRights.checkMenuItemVisibilityMultiple('47'),\r\n disabled: UserRights.checkMenuItemDisabled(params, 'ConfirmControllerSwap'),\r\n },\r\n 'separator',\r\n {\r\n name: 'Export',\r\n action: () => {\r\n this.popUpExport();\r\n },\r\n },\r\n {\r\n name: 'Send Email',\r\n action: () => {\r\n this.popUpSendEmail();\r\n },\r\n },\r\n ];\r\n return result;\r\n }\r\n };\r\n\r\n\r\n defaultColDef() {\r\n return [{\r\n flex: 1,\r\n minWidth: 100,\r\n filter: false,\r\n sortable: false,\r\n enableRowGroup: false,\r\n resizable: true,\r\n }]\r\n }\r\n\r\n createColumnDefs() {\r\n return [\r\n {\r\n headerName: 'Group',\r\n minWidth: 210,\r\n hide: true\r\n },\r\n {\r\n headerName: 'State Indicators',\r\n children: [\r\n {\r\n headerName: \"CC\", field: \"CCSeverityLevel\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, filterParams: { valueGetter: params => { return ReeferFormatters.CargoCareFormatterForFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return ReeferFormatters.CargoCareSorting(params); }, cellRenderer: ReeferCellRenderer.CargoCareFormatter,\r\n tooltipComponent: 'cCAlmTooltip',tooltipValueGetter: this.toolTipValueGetter, cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList },onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"ALM\", field: \"MASeverityLevel\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, filterParams: { valueGetter: params => { return ReeferFormatters.statusIndicatorWithDescriptionForALMForFilter(params) } }, valueGetter: (params) => { return ReeferFormatters.statusALMSorting(params); }, resizable: true, width: 65, cellRenderer: (params) => { return ReeferCellRenderer.StatusIndicatorWithDescriptionForAlarms(params, self.state.reeferFormatter.AlarmMasterList); }, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"RUN\", field: \"RunState\", width: 75, enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, filterParams: { valueGetter: params => { return ReeferFormatters.runStateFormatterForFilter(params); } }, resizable: true, valueGetter: (params) => { return ReeferFormatters.RunstateSorting(params); }, cellRenderer: ReeferCellRenderer.RunStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"PWR\", field: \"DevicePowerSourceCd\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, filterParams: { valueGetter: params => { return Formatters.pwrStateFormatterForFilter(params); } }, resizable: true, width: 75, valueGetter: (params) => { return Formatters.PwrSorting(params); }, cellRenderer: ReeferCellRenderer.PwrStateFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BATT\", field: \"ReeferBatteryPct\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, filterParams: { valueGetter: params => { return Formatters.reeferBatteryPctFormatterFilter(params); } }, resizable: true, width: 65, valueGetter: (params) => { return Formatters.reeferBatteryPctSorting(params); }, cellRenderer: ReeferCellRenderer.BatteryPctFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VSL\", field: \"VesselCd\", enableRowGroup: false, cellClass: 'myExcelStyle', hide: true, sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"VesselCd\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VVC Dep\", field: \"DepartingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.DepartingVVCstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"VVC Arr\", field: \"ArrivingVVC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.ArrivingVVCstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"TRIP\", field: \"TripStatusCdAndDFlag\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, resizable: true, tooltipField: \"TripNameAndStatus\", width: 70, valueGetter: (params) => { return ReeferFormatters.TripSorting(params); }, cellRenderer: ReeferCellRenderer.TripstatusIndicator, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"INV\", field: \"AssetState\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"AssetState\"); }, cellRenderer: ReeferCellRenderer.AssetStateFormatter, columnGroupShow: 'open', onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Identification\",\r\n children: [\r\n {\r\n headerName: \"OEM\", field: \"ReeferOEMTypeCd\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.oemTypeFormatterForFilter(params); } }, resizable: true,\r\n valueGetter: params => { return ReeferFormatters.OEMTypeValueFormatterFieldName(params); },\r\n width: 70, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n\r\n\r\n { headerName: \"Reefer ID\", field: \"ReeferID\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ReeferID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Model\", field: \"OEMModel\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.UnitTypesListFormatters(params, self.state.reeferFormatter.UnitTypesList); }, cellRenderer: (params) => { return ReeferFormatters.UnitTypesListFormatters(params, self.state.reeferFormatter.UnitTypesList); }, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: \"Booking\",\r\n children: [\r\n { headerName: \"Booking #\", field: \"BookingNumber\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BookingNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK temp \", enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"TemperatureUnit\"); }, cellRenderer: ReeferFormatters.TemperatureFormatterForBooking, field: \"TemperatureUnit\", columnGroupShow: 'open', width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Assigned to\", field: \"CustomerName\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: params => { if (params.data != null && params.data != undefined) return Formatters.stringTypeSortingFor3P(params.data.CustomerName); }, filterParams: { valueGetter: params => { return Formatters.stringTypeFormatterFor3PForFilter(params); } }, cellRenderer: ReeferCellRenderer.StringTypeFormatterFor3P, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"CC profile\", field: \"CCProfileCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CCProfileCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"CC alerts\", field: \"CCAlarms\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return ReeferFormatters.CCAlarmAliasDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.CCAlertAlarmAliasDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList) }, tooltipComponent: 'cCAlmTooltip', tooltipValueGetter: this.toolTipValueGetter, cellRendererParams: { almData: self.state.reeferFormatter.AlarmMasterList }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"BK VV\", field: \"BKVV\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.BKVVstringTypeValueFormatter(params); }, width: 100, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK POR\", field: \"BKPOR\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOR\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK POL\", field: \"BKPOL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK POD\", field: \"BKPOD\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKPOD\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK DEL\", field: \"BKDEL\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKDEL\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"BK Customer\", field: \"BKCustomer\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BKCustomer\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Trip Start\", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripStartForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripStart\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripStart\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Trip End \", enableRowGroup: true, columnGroupShow: 'open', cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterTripEndForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"TripEnd\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"TripEnd\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: 'Report Date/Time and Location',\r\n children: [\r\n //WI-26422\r\n {\r\n headerName: \"Event\", field: \"EventDescription\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true,\r\n resizable: true, valueGetter: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList,\r\n self.state.reeferFormatter.EventMasterList, self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts,\r\n self.state.reeferFormatter.Ref_SensorAlerts);\r\n },\r\n cellRenderer: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList,\r\n self.state.reeferFormatter.EventMasterList, self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts,\r\n self.state.reeferFormatter.Ref_SensorAlerts);\r\n }, getQuickFilterText: (params) => {\r\n return ReeferFormatters.EventDescriptionFormatters(params,\r\n self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList,\r\n self.state.reeferFormatter.M_CustomerAssetTypeDeviceTypeSensorAlerts, self.state.reeferFormatter.Ref_SensorAlerts);\r\n }, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Event time\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"EventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"EventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Event notes\", field: \"EventNotes\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EventNotes\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Door\", field: \"DoorOpen\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, getQuickFilterText: ReeferFormatters.doorQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.doorFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.DoorFormatterSorting(params); }, cellRenderer: ReeferFormatters.doorFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Door time\", headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DoorEventDtm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDoorEventDtmForFilter(params); } }, valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DoorEventDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 170, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence\", field: \"GeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"GeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence\", field: \"ServerGeofenceName\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofenceName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Region Fence\", field: \"RegionGeofenceName\", cellRenderer: ReeferFormatters.stringTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device fence ID\", field: \"Geofence\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Geofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Server fence ID\", field: \"ServerGeofence\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ServerGeofence\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Region Fence ID\", field: \"RegionGeofence\", cellRenderer: ReeferFormatters.stringTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc coords\", field: \"GPSCoords\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.GPSCoordsSorting(params); }, filterParams: { valueGetter: params => { return Formatters.GPSCoordsForFilter(params); } }, cellRenderer: ReeferCellRenderer.GPSCoordsFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Loc age (h:m:s)\", field: \"GPSLastLock\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.reeferSecondsToTimeConverterFilter(params); }, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"City\", field: \"City\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"City\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"State\", field: \"State\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"State\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Country\", field: \"Country\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Country\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Zip\", field: \"Zip\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"Zip\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Datalog Events',\r\n children: [\r\n { headerName: \"DL event\", field: \"DLEventMasterID\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, cellRenderer: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, getQuickFilterText: (params) => { return ReeferFormatters.DLEventDescriptionFormatters(params, self.state.reeferFormatter.CustomerSpecificEventList, self.state.reeferFormatter.EventMasterList); }, width: 150, enableTooltip: true, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"DL event time\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterDLEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DLEventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DLEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 1\", field: \"DLParam1\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam1\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 2\", field: \"DLParam2\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam2\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 3\", field: \"DLParam3\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam3\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 4\", field: \"DLParam4\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam4\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Data 5\", field: \"DLParam5\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DLParam5\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 110, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n },\r\n {\r\n headerName: 'Reefer Status and Sensor Reporting',\r\n children: [\r\n { headerName: \"Alarm\", field: \"AlarmsList\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.AlarmDescriptionSorting(params, self.state.reeferFormatter.AlarmMasterList); }, cellRenderer: (params) => { return ReeferCellRenderer.AlarmsDescriptionFormatter(params, self.state.reeferFormatter.AlarmMasterList); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Opr mode\", field: \"RunningMode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.OperatingModeFormatter(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Reefer data\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterUnitEventDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"UnitEventDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"UnitEventDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T set \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SetPoint\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 1 \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T sup 2 \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SupplyTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SupplyTemp2\", columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 1 \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T rtn 2 \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"ReturnTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"ReturnTemp2\", columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T amb \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"AmbientTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"AmbientTemp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH set\", field: \"HumiditySetpoint\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HumiditySetpoint\"); }, cellRenderer: ReeferFormatters.HumiditySetpointFormatter, getQuickFilterText: ReeferFormatters.HumiditySetpointFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"RH read\", field: \"Humidity\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.HumiditySettingFormatter(params); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 set\", field: \"CO2Setpoint\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CO2 read\", field: \"CO2Reading\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CO2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 set\", field: \"O2Setpoint\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Setpoint\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"O2 read\", field: \"O2Reading\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"O2Reading\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T evap in \", enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorInletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorInletSensor\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T evap out \", enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EvaporatorOutletSensor\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EvaporatorOutletSensor\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P suc\", field: \"CompositeSuctionPressure\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompositeSuctionPressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T suc \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorSuctionTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorSuctionTemp\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"P dis\", field: \"DischargePressure\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"DischargePressure\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T dis \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T dis 2 \", enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CompressorDischargeTemp2\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CompressorDischargeTemp2\", columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T econ in \", enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerInTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerInTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"T econ out \", enableRowGroup: false, cellClass: 'OneDecimal', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"EconomizerOutTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"EconomizerOutTemp\", width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"P cond\", field: \"CondenserPressure\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataPCondFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"T cond wall \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CondenserTemperature\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CondenserTemperature\", columnGroupShow: 'open', width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"M cond\", field: \"CondenserFanOutPut\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CondenserFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Evap fan set\", field: \"EvaporatorFanSpeedControl\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EvaporatorFanSpeedControl\"); }, columnGroupShow: 'open', cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"LS evap\", field: \"LowSpeedEvaporatorFanOutPut\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LowSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"HS evap\", field: \"HighSpeedEvaporatorFanOutPut\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HighSpeedEvaporatorFanOutPut\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Air pump hr\", field: \"AirPumpRunHours\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.AirPumpRunHoursSorting(params); }, cellRenderer: ReeferFormatters.AirPumpRunHoursFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"Heat on\", field: \"HeaterOnTime\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HeaterOnTime\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open exp\", field: \"EvaporatorExpansionValveOpening\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenExpFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open suc\", field: \"SuctionModulationValveOpening\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataOpenSucFormatter(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open dis\", field: \"HotGasValveOpening\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"HotGasValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Open econ\", field: \"EconomizerValveOpening\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"EconomizerValveOpening\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp freq\", field: \"CompressorFrequency\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorFrequency\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp curr\", field: \"CompressorCurrent\", enableRowGroup: false, cellClass: 'TwoDecimal', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"CompressorCurrent\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Comp hr\", field: \"CompressorRunHours\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.CompressorRunHoursSorting(params); }, cellRenderer: ReeferFormatters.CompressorRunHoursFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CT state\", field: \"ColdTreatmentState\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ColdTreatmentState\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"CT dur (d)\", field: \"CTDuration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTDurationSorting(params); }, cellRenderer: ReeferFormatters.CTDurationFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' }, // RCNG-1818\r\n { headerName: \"CT max \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTTempLimit\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTTempLimit\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },//RCNG-1818\r\n { headerName: \"CT final \", enableRowGroup: true, cellClass: 'OneDecimal', sortable: true, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"CTPostSetPoint\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"CTPostSetPoint\", width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },//RCNG-1818\r\n { headerName: \"CT rem (hr)\", field: \"CTRemainingTime\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, valueGetter: (params) => { return Formatters.CTRemainingTimeSorting(params); }, cellRenderer: ReeferFormatters.CTRemainingTimeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' }, // RCNG-1818\r\n { headerName: \"CT Time\", cellClass: 'myExcelStyle', enableRowGroup: true, sortable: true, resizable: true, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterCTTimeForFilter(params); } }, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"CTTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"CTTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"USDA 1\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA1Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA1Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 2\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA2Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA2Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 3\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"USDA3Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"USDA3Temp\", width: 110, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"USDA 4 cargo \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"Cargo4Temp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"Cargo4Temp\", width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Vent pos\", field: \"VentPositionSensorCMH\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VentPositionSensorCMH\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CA mode\", field: \"ControlledAtmosphereMode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.ControlledAtmosphereMode(params); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Bulb mode\", field: \"BulbMode\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"BulbMode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"CA hr\", field: \"CARunHours\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.CARunHoursSorting(params); }, cellRenderer: ReeferFormatters.CARunHoursFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"CA SW ver\", field: \"CASoftwareRevision\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.CASWVerSorting(params); }, cellRenderer: ReeferFormatters.CASWVerFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"3 ph curr\", field: \"ThreePhaseCurrent\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.ThreePhaseCurrentSortingFieldName(params, \"ThreePhaseCurrent\"); }, cellRenderer: ReeferFormatters.Current3PhaseFormatter, columnGroupShow: 'open', width: 135, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Tot curr\", field: \"TotalCurrentDraw\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"TotalCurrentDraw\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 100, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L1 (VAC)\", field: \"LineVoltage1\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage1\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L2 (VAC)\", field: \"LineVoltage2\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage2\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"L3 (VAC)\", field: \"LineVoltage3\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"LineVoltage3\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n {\r\n headerName: \"EverFRESH\", field: \"EverFRESH\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, columnGroupShow: 'open',\r\n getQuickFilterText: ReeferFormatters.everFreshQuickFilterFormatter,\r\n filterParams: { valueGetter: params => { return ReeferFormatters.everFreshFormatterFilter(params); } },\r\n valueGetter: (params) => { return ReeferFormatters.everFreshFormatterSorting(params); },\r\n cellRenderer: ReeferFormatters.everFreshFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"VFD\", field: \"VFD\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"VFD\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"OEM PTI state\", field: \"TripWiseStatusDescription\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.TripWiseStatusSorting(params, self.state.reeferFormatter.TripWiseStatusList); }, cellRenderer: (params) => { return ReeferCellRenderer.TripWiseStatusFormatter(params, self.state.reeferFormatter.TripWiseStatusList); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"OEM PTI exp (d)\", field: \"TripWiseExpiration\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.TripWiseExpirationSorting(params); }, cellRenderer: ReeferFormatters.TripWiseExpirationFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"OEM PTI type\", field: \"DimiStartAfter\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, resizable: true, width: 80, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DimiStartAfter\"); }, cellRenderer: ReeferCellRenderer.OEMPTITypeFormatter, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"OEM PTI time left (hr)\", field: \"DimiRemainTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiRemainTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"PTI state\", field: \"PTIState\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, cellRenderer: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, getQuickFilterText: (params) => { return ReeferFormatters.PTIStateDescriptionFormatters(params, self.state.reeferFormatter.PreTripList); }, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI result\", field: \"PTResult\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, tooltip: Formatters.toolTipFormatter, valueGetter: (params) => { return ReeferFormatters.PTResultSorting(params); }, cellRenderer: ReeferCellRenderer.PreTripFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI Type\", field: \"PTIType\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PTIType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"PTI time\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"PTRDateTime\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"PTRDateTime\"); }, cellRenderer: Formatters.dateTypeFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Freq\", field: \"LineFrequency\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.LineFrequencySorting(params); }, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont s/n\", field: \"ControllerSerialNumber\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerSerialNumber\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont time\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"DataLoggerDtm\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"DataLoggerDtm\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont SW version\", field: \"SoftwareRevision\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SoftwareRevision\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Cont set\", field: \"ControllerTypeSetting\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ControllerTypeSetting\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 90, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Fresh air type\", field: \"FreshAirType\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"FreshAirType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n { headerName: \"Defrost int\", field: \"DefrostInterval\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DefrostInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this), columnGroupShow: 'open' },\r\n { headerName: \"Tot pwr kWh\", field: \"PowerMeter\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.PowerMeterSorting(params); }, cellRenderer: ReeferFormatters.PowerMeterFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n ]\r\n },\r\n {\r\n headerName: \"Device Status\",\r\n children: [\r\n //{ headerName: \"Device pwr source\", field: \"RCDPowerSourceCd\", cellRenderer: ReeferFormatters.rcdPowerSourceFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device ID\", field: \"RCDID\", enableRowGroup: false, sortable: true, filter: false, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device supply (V)\", field: \"ReeferACPowerLevel\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return ReeferFormatters.sensorDataSortingFieldName(params, \"ReeferACPowerLevel\"); }, cellRenderer: ReeferFormatters.sensorDataValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device FW ver\", field: \"RCDFirmwareVersion\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, cellRenderer: (params) => { return ReeferFormatters.FirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MAIN'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device BL ver\", field: \"RCDBootloaderVersion\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, cellRenderer: (params) => { return ReeferFormatters.BootloaderFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'BL'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device mesh FW ver\", field: \"RCDMeshFirmwareVersion\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, cellRenderer: (params) => { return ReeferFormatters.MeshFirmWareDescriptionFormatters(params, self.state.reeferFormatter.DeviceFirmwareVersions, 'MESH'); }, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device temp \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"DeviceTemp\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"DeviceTemp\", columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Device bat (V)\", field: \"BatteryVoltage\", enableRowGroup: false, cellClass: 'bigInt', sortable: false, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.BattVoltageSortingFieldName(params, \"BatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.BatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n {\r\n headerName: \"Door bat (V)\", field: \"DoorSensorBatteryVoltage\", enableRowGroup: true, cellClass: 'bigInt', sortable: false, filter: true, resizable: true,\r\n valueGetter: (params) => { return Formatters.DoorBattVoltageSortingFieldName(params, \"DoorSensorBatteryVoltage\"); },\r\n filterParams: { valueGetter: params => { return Formatters.DoorBatteryVoltageFormatterForFilter(params); } },\r\n cellRenderer: Formatters.BattVoltageValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n { headerName: \"Reporting (min)\", field: \"RCDReportingInterval\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RCDReportingInterval\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Geofence revision\", field: \"RevisionNum\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"RevisionNum\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MSISDN\", field: \"MSISDN\", enableRowGroup: true, sortable: false, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"MSISDN\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"IMSI\", field: \"SIM_IMSI\", enableRowGroup: true, sortable: false, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"SIM_IMSI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"ICCID\", field: \"ICCID\", enableRowGroup: true, sortable: false, filter: true, resizable: true, cellClass: 'bigInt', columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"ICCID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"EUI\", field: \"EUI\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"EUI\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MCC (country)\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, field: \"CountryName\", valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CountryName\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"MNC\", field: \"MNC\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, valueGetter: (params) => { return Formatters.MNCSorting(params); }, cellRenderer: ReeferCellRenderer.MNCTypeFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"LAC\", field: \"TowerLocalizationAreaCode\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerLocalizationAreaCode\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 70, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Tower ID\", field: \"TowerBaseStationID\", enableRowGroup: true, sortable: false, filter: true, resizable: true, cellClass: 'bigInt', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"TowerBaseStationID\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, columnGroupShow: 'open', width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Cell gen\", field: \"CellNetGeneration\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: false, filter: true, resizable: true, valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"CellNetGeneration\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n {\r\n headerName: \"Cell signal\", field: \"RSSI\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, valueGetter: (params) => { return Formatters.RSSISorting(params); },\r\n filterParams: { valueGetter: params => { return Formatters.RSSITypeFormatterFilter(params); } }, cellRenderer: ReeferCellRenderer.RSSITypeFormatter, width: 80, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\r\n //{ headerName: \"RFR Comms\", field: \"RCDRfrComErr\", columnGroupShow: 'open', cellRenderer: ReeferFormatters.reeferCommsFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device config\", field: \"DeviceConfig\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, filter: false, resizable: true, columnGroupShow: 'open', filterParams: { valueGetter: params => { return Formatters.GuestReeferModeFormatterForFilter(params); } }, cellRenderer: Formatters.GuestReeferModeFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Device type\", field: \"DeviceType\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true, columnGroupShow: 'open', valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"DeviceType\"); }, cellRenderer: ReeferCellRenderer.StringTypeValueFormatter, width: 120, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n\r\n ]\r\n },\r\n {\r\n headerName: \"Misc.\",\r\n children: [\r\n //{ headerName: \"Cmd P\", field: \"PendingCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Cmd A\", field: \"ActiveCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n //{ headerName: \"Cmd E\", field: \"ErrorCommands\", cellRenderer: ReeferFormatters.commandTypeFormatter, columnGroupShow: 'open', width: 50, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Receipt time\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, filterParams: { valueGetter: params => { return Formatters.dateTypeFormatterModifiedDTTMForFilter(params); } }, resizable: true, headerValueGetter: Formatters.TimeZoneHeaderFormatter, field: \"ModifiedDTTM\", valueGetter: (params) => { return Formatters.dateTypeSortingFieldName(params, \"ModifiedDTTM\"); }, cellRenderer: Formatters.dateTypeFormatter, columnGroupShow: 'open', width: 150, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"Comments\", field: \"CommentExists\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, valueGetter: (params) => { return Formatters.CommentExistsSorting(params); }, cellRenderer: ReeferCellRenderer.CommentExistsFormatter, width: 90, onCellClicked: this.onCellClickedCopy.bind(this) }\r\n ]\r\n //},\r\n //{\r\n // headerName: 'Device Sensor',\r\n // children: [\r\n // { headerName: \"Temp Sup. 1 \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorSupplyTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorSupplyTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) },\r\n // { headerName: \"Temp Rtn. 1 \", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: false, resizable: true, headerValueGetter: Formatters.TempHeaderFormatter, valueGetter: (params) => { return ReeferFormatters.TemperatureSortingFieldName(params, \"SensorReturnTemp1\"); }, cellRenderer: ReeferFormatters.TemperatureValueFormatter, field: \"SensorReturnTemp1\", width: 120, onCellClicked: this.onCellClickedCopy.bind(this), cellStyle: this.italicizeGridRows.bind(this) }\r\n // ]\r\n }\r\n ];\r\n }\r\n\r\n clearGridRowSelection(params: any) {\r\n self.props.renderClearSelection();\r\n params.api.deselectAll();\r\n }\r\n\r\n onSaveGridRowGroupState(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data.PreferenceData != null) {\r\n var preferenceData = JSON.parse(data.PreferenceData);\r\n rowGroupItems = currentGropup;\r\n selectedColumnIds = preferenceData.SelectedColumnIds;\r\n selectedColumnValues = preferenceData.SelectedColumnValues;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n else {\r\n // if no userpreference record in db \r\n rowGroupItems = currentGropup;\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n // var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, SelectedRowGroups: rowGroupItems };\r\n var rowGroupDataToSave = { colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(rowGroupDataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n\r\n }\r\n });\r\n //\r\n //var maxRowGroupLimit = 4;\r\n //var current = params.columns.length;\r\n\r\n //if (current === maxRowGroupLimit) {\r\n // \r\n // groupingDisabled = true;\r\n // PopupWindow.showErrorMessage(\"RowGroup!\", \"max limit reached, please remove a group before adding a new one\");\r\n // \r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n //if (current < maxRowGroupLimit && groupingDisabled) {\r\n // let colDefs = [];\r\n // let cols = params.columnApi.getAllColumns();\r\n // cols.forEach(col => {\r\n // let newColDef = { ...col.colDef, enableRowGroup: false };\r\n // colDefs.push(newColDef);\r\n // });\r\n // params.api.setColumnDefs(colDefs);\r\n //}\r\n }\r\n\r\n groupRowInnerRenderer(params) {\r\n // self.clearGridRowSelection(params);\r\n var fieldName = params.node.field;\r\n var fieldValue = params.node.key;\r\n //var colDef = params.node.columnApi.columnController.rowGroupColumns.filter(x => x.colId == fieldName);\r\n //var columnDisplayName = colDef[0].colDef.headerName;\r\n var columnDisplayName = params.node.rowGroupColumn.colDef.headerName;//WI 26719\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"BatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() == \"DoorSensorBatteryVoltage\")\r\n return \"*No \" + columnDisplayName;\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"TripWiseExpiration\" && fieldName.toString().trim() != \"HumiditySetpoint\") // RCNG-169\r\n return \"OOR\";\r\n if (fieldValue == \"-NA-\" || fieldValue == \"null\")\r\n return \"*No \" + columnDisplayName;\r\n\r\n if (fieldValue.toString().trim() == \"-999\" && fieldName.toString().trim() != \"HumiditySetpoint\")\r\n return \"OOR\";\r\n\r\n //if (fieldName.toString() == \"EventDTTM\" || fieldName.toString() == \"UnitEventDTTM\" || fieldName.toString() == \"PTRDateTime\" || fieldName.toString() == \"DataLoggerDtm\" || fieldName.toString() == \"ModifiedDTTM\")\r\n // return Formatters.dateTypeFormatterGrouping(fieldValue);\r\n\r\n switch (fieldName.toString().trim()) {\r\n case \"RunState\":\r\n return ReeferCellRenderer.RunStateFormatterGrouping(fieldValue);\r\n //case \"AssetState\":\r\n // return Formatters.AssetStateFormatterGrouping(fieldValue);//added Asset State\r\n case \"MASeverityLevel\":\r\n return ReeferCellRenderer.StatusIndicatorALMFormatterGrouping(fieldValue);\r\n case \"DevicePowerSourceCd\":\r\n return ReeferCellRenderer.PowerStateFormatterGrouping(fieldValue);\r\n case \"CCSeverityLevel\":\r\n return ReeferCellRenderer.CargoCareFormatterGrouping(fieldValue);\r\n case \"VesselCd\":\r\n return fieldValue == \"-NA-\" ? \"No VSL\" : fieldValue;\r\n case \"TripStatusCdAndDFlag\":\r\n return ReeferCellRenderer.TripStatusFormatterGrouping(fieldValue);\r\n case \"CustomerName\":\r\n return fieldValue == JSON.parse(sessionStorage.getItem('customerDetails')).CustomerName ? \"*No Assigned To\" : fieldValue;\r\n case \"ReeferOEMTypeCd\":\r\n return Formatters.OEMTypeFormatterGrouping(fieldValue);\r\n case \"RSSI\":\r\n return ReeferCellRenderer.RSSIFormatterGrouping(fieldValue);\r\n case \"PTIState\":\r\n return (fieldValue == \"\" || fieldValue == null) ? '-NA-' : fieldValue;\r\n case \"DeviceConfig\":\r\n return Formatters.GuestReeferModeGrouping(fieldValue);\r\n case \"CommentExists\":\r\n return ReeferCellRenderer.CommentExistsGrouping(fieldValue);\r\n case \"PTResult\":\r\n return ReeferCellRenderer.PTResultGrouping(fieldValue);\r\n /* RCNG 108 start*/\r\n case \"AlarmsList\":\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return ReeferCellRenderer.AlarmDescriptionGroupingFormatter(fieldValue, DeviceType, self.state.reeferFormatter.AlarmMasterList);\r\n }\r\n /* RCNG 108 end*/\r\n //case \"Humidity\":\r\n // return Formatters.HumidityGrouping(params);\r\n //case \"CondenserPressure\":\r\n // return Formatters.sensorDataPCondGrouping(params);\r\n //case \"EvaporatorExpansionValveOpening\":\r\n // return Formatters.sensorDataOpenExpGrouping(params);\r\n //case \"SuctionModulationValveOpening\":\r\n // return Formatters.sensorDataOpenSucGrouping(params);\r\n //case \"ControlledAtmosphereMode\":\r\n // return Formatters.ControlledAtmosphereModeGrouping(params);\r\n case \"TripWiseExpiration\": // RCNG-169\r\n return Formatters.TripWiseExpirationGrouping(fieldValue);\r\n case \"DimiRemainTerm\":\r\n return Formatters.DimiRemainTermGrouping(fieldValue);\r\n case \"CTDuration\": // RCNG-1818\r\n return Formatters.CTDurationGrouping(params);\r\n case \"CTRemainingTime\": // RCNG-1818\r\n return Formatters.CTRemainingTimeGrouping(params);\r\n //case \"RunningMode\":\r\n // return Formatters.RunningModeGrouping(fieldValue);\r\n case \"Cargo4Temp\":\r\n case \"USDA3Temp\":\r\n case \"USDA2Temp\":\r\n case \"USDA1Temp\":\r\n case \"SetPoint\":\r\n case \"SupplyTemp1\":\r\n case \"SupplyTemp2\":\r\n case \"ReturnTemp1\":\r\n case \"AmbientTemp\":\r\n case \"ReturnTemp2\":\r\n case \"EvaporatorTemp\":\r\n case \"CompressorSuctionTemp\":\r\n case \"CompressorDischargeTemp\":\r\n case \"EvaporatorInletSensor\": \r\n case \"EvaporatorOutletSensor\":\r\n case \"CompressorDischargeTemp2\":\r\n case \"EconomizerInTemp\": \r\n case \"EconomizerOutTemp\":\r\n case \"CondenserTemperature\":\r\n case \"DeviceTemp\":\r\n case \"SensorReturnTemp1\":\r\n case \"SensorSupplyTemp1\":\r\n case \"CTTempLimit\"://RCNG-1818\r\n case \"CTPostSetPoint\"://RCNG-1818\r\n {\r\n var DeviceType;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n DeviceType = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DeviceType;\r\n }\r\n return Formatters.TemperatureFormatterGrouping(fieldValue, fieldName, params, DeviceType);\r\n }\r\n case \"TemperatureUnit\":\r\n return Formatters.BookingTemperatureFormatterGrouping(fieldValue, fieldName, params);\r\n case \"EventDTTM\":\r\n case \"UnitEventDTTM\":\r\n case \"PTRDateTime\":\r\n case \"DataLoggerDtm\":\r\n case \"ModifiedDTTM\":\r\n case \"DLEventDTTM\":\r\n case \"DoorEventDtm\":\r\n case \"TripStart\":\r\n case \"TripEnd\":\r\n return Formatters.dateTypeGrouping(fieldValue, fieldName, params);\r\n case \"GPSCoords\":\r\n return Formatters.GPSCoordsFormatterGrouping(fieldValue, params);\r\n case \"HumiditySetpoint\":\r\n {\r\n var HumiditySetpointStatus;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n HumiditySetpointStatus = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].HumiditySetpointStatus;\r\n }\r\n return Formatters.HumiditySetpointGrouping(fieldValue, HumiditySetpointStatus);\r\n }\r\n case \"TripWiseStatusDescription\":\r\n {\r\n var ReeferOEMTypeCd; var DimiResultActuator; var DimiResultAlarm; var DimiResultOOR;\r\n if (params.node.rowIndex != undefined && params.node.rowIndex != null\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != undefined\r\n && self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex] != null) {\r\n ReeferOEMTypeCd = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].ReeferOEMTypeCd;\r\n DimiResultActuator = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultActuator;\r\n DimiResultAlarm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultAlarm;\r\n DimiResultOOR = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultOOR;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR);\r\n }\r\n case \"DoorOpen\":\r\n return ReeferFormatters.DoorFormatterGrouping(fieldValue);//RCNG-1106\r\n case \"EverFRESH\":\r\n return Formatters.EverFreshFormatterGrouping(fieldValue);\r\n case 'DimiStartAfter':\r\n return Formatters.OEMPTITypeFormatter(fieldValue);\r\n default:\r\n return fieldValue;\r\n\r\n }\r\n }\r\n\r\n ProcessCellForClipboard(params) {\r\n return Formatters.CopyCommandFormatters(params);\r\n }\r\n onSavecolumnorder(params) {\r\n if (!params.columnApi) return;\r\n var currentGropup = params.columnApi.getRowGroupColumns().map(c => c.colId);\r\n var colState = params.columnApi.getColumnState();\r\n var ColumnValues = params.columnApi.getColumnState().map(col => col.colId);\r\n var selectedColumnIds = [];\r\n var selectedColumnValues = [];\r\n var rowGroupItems = [];\r\n var url = Config.ApiBaseUrl + '/api/User/GetCustomerInterfaceExportColumns?FunctionId=' + functionId;\r\n var request = RCUtils.FetchRequest(url);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n if (data != null) {\r\n rowGroupItems = currentGropup;\r\n $.each(ColumnValues, function (index, value) {\r\n var dataresult = data.filter(x => x.ColumnNm.trim().toUpperCase() == value.trim().toUpperCase());\r\n if (dataresult.length > 0) {\r\n selectedColumnIds.push(dataresult[0].InterfaceExportColumnId);\r\n selectedColumnValues.push(dataresult[0].ColumnNm);\r\n }\r\n });\r\n var url = Config.ApiBaseUrl + '/api/User/SaveUserPreference';\r\n var dataToSave = { SelectedColumnIds: selectedColumnIds, SelectedColumnValues: selectedColumnValues, colState: colState, SelectedRowGroups: rowGroupItems };\r\n var preferencedata = { UserId: 0, FunctionId: functionId, PreferenceData: JSON.stringify(dataToSave) };\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: JSON.stringify(preferencedata), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n // save the row group data in background\r\n });\r\n }\r\n });\r\n }\r\n onFirstDataRendered(params) {\r\n GridReeferStatusToolBar.GetColumns(params);\r\n //this method content is commented for WI26449. user preference should not be applied for SSRM grid.\r\n //// GridReeferStatusToolBar.GetColumns(params);\r\n ////self.setState({ gridApiParams: params.api });\r\n //var rowGroupItems = [];\r\n //var url = Config.ApiBaseUrl + '/api/User/UserPreference?FunctionId=' + functionId;\r\n //var request = RCUtils.FetchRequest(url);\r\n //fetch(request)\r\n // .then(RCUtils.handleError)\r\n // .then(response => response.json() as Promise)\r\n // .then(data => {\r\n // if (data.PreferenceData != null) {\r\n // var preferenceData = JSON.parse(data.PreferenceData);\r\n // rowGroupItems = preferenceData.SelectedRowGroups\r\n // //if (rowGroupItems != null && rowGroupItems != undefined && rowGroupItems.length > 0) {\r\n // // self.state.gridApiParams.gridOptionsWrapper.columnController.setRowGroupColumns(rowGroupItems);\r\n // //}\r\n // if (preferenceData.colState != null && preferenceData.colState != undefined && preferenceData.colState.length > 0) {\r\n // var previousColState = preferenceData.colState;\r\n\r\n // //self.state.gridApiParams.gridOptionsWrapper.columnController.setColumnState(preferenceData.colState);\r\n // self.state.gridApiParams.gridOptionsWrapper.gridOptions.columnApi.applyColumnState({ state: preferenceData.colState, applyOrder: false, });\r\n // //self.state.gridApiParams.gridOptionsWrapper.columnController.applyColumnState(preferenceData.colState);\r\n // }\r\n // }\r\n // });\r\n\r\n }\r\n\r\n refreshStatusGrid() {\r\n //$('#globalLoader').show();\r\n //ReeferToggleButtonsFilter.ClearToggleFilters();\r\n selectedRowIndex = -1;\r\n this.GetCCprofileCode();//RCNG-713\r\n this.props.clearGridHeaderExtension();\r\n ReeferHistoryGrid.ClearHistoryGridData();\r\n this.setState({\r\n selectedItems: [],\r\n isChangeDeforstInterval: false,\r\n pretripCmd: null,\r\n modelTitle: '',\r\n popUpHtml: '',\r\n modelTitleReport: '',\r\n popUpHtmlReport: ''\r\n }, () => {\r\n //self.state.gridApiParams.refreshServerSideStore();\r\n //self.state.gridApiParams.purgeServerSideCache();\r\n //gridOptions.api.purgeServerSideCache(). \r\n //ReeferStatusSSRMGrid.ApplyReeferSearchFilter(self.props.statusFilter);\r\n ReeferStatusSSRMGrid.ApplyReeferSearchFilter(self.state.tempFilters);\r\n \r\n });\r\n }\r\n\r\n static refreshDashboardGrid() {\r\n self.refreshStatusGrid();\r\n }\r\n\r\n static refreshToggleFilters() {\r\n if (self != undefined) {\r\n if (self.state.ToggleSearchParams != undefined && self.state.ToggleSearchParams != null)\r\n self.setState({ ToggleSearchParams: null });\r\n self.setState({ rowData: [] });\r\n }\r\n }\r\n closeToolBarGridPreferenceModel() {\r\n ($(\"[data-bs-dismiss=modal]\") as any).trigger({ type: \"click\" });\r\n }\r\n ComponentRenderingForCommands(popUpName: string, userData: any) {\r\n\r\n switch (popUpName) {\r\n\r\n case 'SendEmail':\r\n return 0 ? true : false} sensorData={reeferAssetSensors}/>\r\n case 'Export':\r\n return ;\r\n case 'Ping':\r\n return ;\r\n case 'ChangeTempSetPoint':\r\n return ;\r\n case 'ChangeHumiditySetPoint':\r\n return ;\r\n case 'ChangeO2SetPoint':\r\n return ;\r\n case 'ChangeCO2SetPoint':\r\n return ;\r\n case 'ChangeControlledAtmosphere':\r\n return ;\r\n case 'GetDLTraditional':\r\n return ;\r\n case 'PreTrip':\r\n return ;\r\n case 'StopPTI':\r\n return ;\r\n case 'SchedulePreTrip':\r\n return ;\r\n case 'GetPTI':\r\n return ;\r\n case 'RebootReefer':\r\n return ;\r\n case 'ChangeDatalogInterval':\r\n return ;\r\n case 'ChangeReeferId':\r\n return ;\r\n case 'ChangeReportingInterval':\r\n return ;\r\n case 'QueryReeferInventory':\r\n return ;\r\n case 'UpdateModelConfiguration':\r\n return ;\r\n case 'VerifyModelValidity':\r\n return ;\r\n case 'SyncReeferClock':\r\n return ;\r\n case 'StartDeforst':\r\n return ;\r\n case 'ChangeDeforstInterval':\r\n return ;\r\n case 'AssignPanId':\r\n return ;\r\n case 'GuestReeferConfiguration':\r\n return ;\r\n case 'CreateTrip':\r\n return ;\r\n case 'TripStatus':\r\n return ;\r\n case 'ClearDeviation':\r\n return ;\r\n case 'AssignBooking':\r\n return ;\r\n case 'UnAssignBooking':\r\n return ;\r\n case 'ViewBooking':\r\n return ;\r\n case 'EditBooking':\r\n return ;\r\n case 'AssignCustomer':\r\n return ;\r\n case 'UnAssignCustomer':\r\n return ;\r\n case 'ControllerSwap':\r\n return ;\r\n case 'ChangeReeferClockSyncSettings':\r\n return ;\r\n case 'Zigbee':\r\n return ;\r\n case 'AutoConfig':\r\n return ;\r\n case 'AssetConfig':\r\n return \r\n case 'MSC':\r\n return ;\r\n case 'ACT':\r\n return ;\r\n case 'GetFreshAirType':\r\n return ;\r\n case 'SetFreshAirType':\r\n return ;\r\n case 'DeviceReset':\r\n return ;\r\n case 'DeviceHardReset':\r\n return ;\r\n case 'GetAssetId':\r\n return ;\r\n case 'GetTWR':\r\n return ;\r\n case 'EnableDoorSensor':\r\n return ;\r\n case 'NewUnAssignBooking':\r\n return ;\r\n case 'EditVoyage':\r\n return ;\r\n case 'DS':\r\n return ;\r\n case 'IntelligentPTIFunction':\r\n return ;\r\n case 'FanSpeed':\r\n return ;\r\n }\r\n }\r\n\r\n RenderContextMenuPopUp(popUpName: string, isCommands: boolean) {\r\n var reeferData = self.state.selectedItems;\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var filterSet: server.USP_UnitCurrentConditionUI_Model[];\r\n filterSet = reeferData;\r\n var filterParams = JSON.stringify(filterSet);\r\n var checkBoxInfo = this.state.VCCheckBoxInfo;\r\n if (isCommands) {\r\n if (reeferData != undefined && reeferData != null) {\r\n if (popUpName == \"GetDLTraditional\" || popUpName == \"SchedulePreTrip\") {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData, checkBoxInfo) }, () => { self.props.getCommandPopupTitle(this.state.modelTitle); self.props.getCommandPopupContent(this.state.popUpHtml); });\r\n $('#btnTriggerPopup').click();\r\n }\r\n else {\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/CheckIsMsgFromVessel', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(data => {\r\n var vesselid = data;\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetVesselInformation?customerID=' + custId;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(result => {\r\n checkBoxInfo.dropDownVCData = result;\r\n if (result.length > 0) {\r\n if (vesselid == \"-1\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n else if (vesselid == \"0\") {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n checkBoxInfo.isVCMessage = false;\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = false;\r\n checkBoxInfo.enableVCCheckBox = true;\r\n checkBoxInfo.disableVCCheckBoxOption = false;\r\n checkBoxInfo.disableVCDropDown = false;\r\n checkBoxInfo.selectedVCData = checkBoxInfo.dropDownVCData.find(d => d.VesselId == parseInt(vesselid));\r\n checkBoxInfo.isVCMessage = true;\r\n }\r\n }\r\n else {\r\n checkBoxInfo.disableVCOption = true;\r\n checkBoxInfo.enableVCCheckBox = false;\r\n checkBoxInfo.disableVCCheckBoxOption = true;\r\n checkBoxInfo.disableVCDropDown = true;\r\n checkBoxInfo.selectedVCData = null;\r\n }\r\n self.setState({ VCCheckBoxInfo: checkBoxInfo });\r\n $('#globalLoader').hide();\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) }, () => { self.props.getCommandPopupTitle(this.state.modelTitle); self.props.getCommandPopupContent(this.state.popUpHtml); });\r\n $('#btnTriggerPopup').click();\r\n });\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n if (popUpName == \"TripStatus\") {\r\n this.setState({\r\n modelTitle: 'Trip Status' + \" - \" + this.state.selectedItems[0].ReeferID\r\n });\r\n }\r\n self.setState({ popUpHtml: self.ComponentRenderingForCommands(popUpName, userData) }, () => {\r\n self.props.getCommandPopupTitle(this.state.modelTitle);\r\n self.props.getCommandPopupContent(this.state.popUpHtml);\r\n });\r\n $('#btnTriggerPopup').click();\r\n }\r\n }\r\n\r\n UpdateVCCheckBoxInfo(VCInfo: any) {\r\n self.setState({ VCCheckBoxInfo: VCInfo });\r\n }\r\n\r\n popUpGetPTIReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetPTRReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ PTReport: result }, () => { self.props.getCommandPopupPTReport(this.state.PTReport); });\r\n this.setState({ ReportReeferId: reeferData[0].ReeferID }, () => { self.props.getCommandPopupReportReeferId(this.state.ReportReeferId); });\r\n $('#globalLoader').hide();\r\n if (this.state.PTReport == null || this.state.PTReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No pre-trip reports have been collected for this reefer. Execute the ‘Get Pre-Trip Results’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'Pre-Trip Report', popUpHtml:
    }, () => { self.props.getCommandPopupTitleReport(this.state.modelTitle); self.props.getCommandPopupContentReport(this.state.popUpHtml); });\r\n $('#btnTriggerReport').click();\r\n }\r\n });\r\n }\r\n }\r\n\r\n popUpGetTWReport() {\r\n var reeferData = self.state.selectedItems;\r\n if (reeferData != undefined && reeferData != null) {\r\n $('#globalLoader').show();\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetTripWISEReport?containerID=' + reeferData[0].ReeferID;\r\n var request = RCUtils.FetchRequest(url, { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n this.setState({ TWReport: result, ReportReeferId: reeferData[0].ReeferID }, () => { this.bindTWReport(); });\r\n });\r\n }\r\n }\r\n bindTWReport() {\r\n self.props.getCommandPopupTWReport(this.state.TWReport);\r\n self.props.getCommandPopupReportReeferId(this.state.ReportReeferId);\r\n $('#globalLoader').hide();\r\n if (this.state.TWReport == null || this.state.TWReport == '')\r\n PopupWindow.showErrorMessage(\"Alert\", \"No TripWISE reports have been collected for this reefer. Execute the ‘Get TripWISE Report’ command to collect the latest available report.\");\r\n else {\r\n this.setState({ modelTitle: 'TripWISE Report', popUpHtml:
    }, () => { self.props.getCommandPopupTitleReport(this.state.modelTitle); self.props.getCommandPopupContentReport(this.state.popUpHtml); });\r\n $('#btnTriggerReportTW').click();\r\n }\r\n }\r\n\r\n popUpPing() {\r\n self.setState({ modelTitle: 'Ping' });\r\n self.RenderContextMenuPopUp('Ping', true);\r\n }\r\n \r\n popUpSendEmail() {\r\n self.setState({ modelTitle: 'Send Email' });\r\n self.RenderContextMenuPopUp('SendEmail', false);\r\n }\r\n\r\n popUpExport() {\r\n self.setState({ modelTitle: 'Export' });\r\n self.RenderContextMenuPopUp('Export', false);\r\n }\r\n\r\n popUpChangeTempSetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('SET', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Temperature Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeTempSetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpHumiditySetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('HUM', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemDaikinCount > 0 && oemDaikinCount != self.state.selectedItems.length)\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n else {\r\n if (carrrierCount <= 0) {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C'? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Humidity Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeHumiditySetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpO2SetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('ORC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n var isSekstantFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isSekstantFound = val.DeviceType.trim() == 'Sekstant' ? isSekstantFound + 1 : isSekstantFound;\r\n });\r\n if (isSekstantFound > 0 && StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change O2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpCo2SetPoint() {\r\n var IsValid = CommonActions.validateCommandSupport('CO2', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n var StarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n\r\n if (DaikinCount >= 1 || StarCoolCount >= 1) {\r\n var isSekstantFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isSekstantFound = val.DeviceType.trim() == 'Sekstant' ? isSekstantFound + 1 : isSekstantFound;\r\n });\r\n if (isSekstantFound > 0 && StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin and Star Cool OEMs.\");\r\n }\r\n else if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change CO2 Setpoint' });\r\n self.RenderContextMenuPopUp('ChangeCO2SetPoint', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n\r\n popUpChangeToChilled() {\r\n var IsValid = CommonActions.validateCommandSupport('SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCH', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Star Cool OEM.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledPTI', modelTitle: 'Start Chilled Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToChilledandCA() {\r\n var IsValid = CommonActions.validateCommandSupport('SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemTypeCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemTypeCount >= 1) {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == oemTypeCount) {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for this combination of OEM Model and Software.\");\r\n }\r\n }\r\n else {\r\n self.setState({ pretripCmd: 'StartChilledCAPTI', modelTitle: 'Start Chilled and CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToFrozen() {\r\n var IsValid = CommonActions.validateCommandSupport('SFR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ pretripCmd: 'StartFrozenPTI', modelTitle: 'Start Frozen Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCA() {\r\n var IsValid = CommonActions.validateCommandSupport('SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAPTI', modelTitle: 'Start CA Pre-Trip' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCAFullPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCF', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFullPTI', modelTitle: 'Start CA Full' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeToCAFunctionTest() {\r\n var IsValid = CommonActions.validateCommandSupport('SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var StarCoolCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SFT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (StarCoolCount == self.state.selectedItems.length) {\r\n self.setState({ pretripCmd: 'StartCAFunctionTest', modelTitle: 'Start CA Function Test' });\r\n self.RenderContextMenuPopUp('PreTrip', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpControlledAtmosphere() {\r\n var IsValid = CommonActions.validateCommandSupport('SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var oemStarCoolCount = CommonActions.validateOEMType('S', self.state.selectedItems);\r\n var oemDaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (oemStarCoolCount == self.state.selectedItems.length) {\r\n if (this.props.refApplicationParams != null && this.props.refApplicationParams != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand != null && this.props.refApplicationParams.ValidateCACommand != undefined) {\r\n if (this.props.refApplicationParams.ValidateCACommand == \"true\") {\r\n var oemValidationCount = CommonActions.validateSpecificOEMTypeForCommand('S', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (oemValidationCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: true }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n }\r\n else if (oemDaikinCount == self.state.selectedItems.length) {\r\n var DaikinCount = CommonActions.validateSpecificOEMTypeForCommand('D', 'SCA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n\r\n if (DaikinCount == self.state.selectedItems.length) {\r\n self.setState({ modelTitle: 'Change Controlled Atmosphere', isStarCoolOem: false }, () => self.RenderContextMenuPopUp('ChangeControlledAtmosphere', true));\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n else if (oemStarCoolCount >= 1 || oemDaikinCount >= 1) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected reefers must be of the same OEM type.\");\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TK and Carrier OEMs.\");\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpDLTraditional(e) {\r\n var IsValid = CommonActions.validateCommandSupport('TDD', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDLCommand(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get Traditional Download' });\r\n self.RenderContextMenuPopUp('GetDLTraditional', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpPreTripFull() {\r\n var IsValid = CommonActions.validateCommandSupport('SFP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartFullPTI');\r\n //self.setState({ pretripCmd: 'StartFullPTI', modelTitle: 'Start Full Pre-Trip' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpPreTripShort() {\r\n var IsValid = CommonActions.validateCommandSupport('SSP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartShortPTI');\r\n //self.setState({ pretripCmd: 'StartShortPTI', modelTitle: 'Start Short Pre-Trip' }); \r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpFunctionTest() {\r\n var IsValid = CommonActions.validateCommandSupport('SCP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var DaikinCount = CommonActions.validateOEMType('D', self.state.selectedItems);\r\n\r\n if (DaikinCount <= 0) {\r\n this.getCommandWindowText(self.state.selectedItems.map(x => x.ReeferOEMTypeCd), 'StartCAShortPTI');\r\n //self.setState({ pretripCmd: 'StartCAShortPTI', modelTitle: 'Start Function Test' });\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Daikin OEM.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpStopPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('SPP', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Stop Pre-Trip' });\r\n self.RenderContextMenuPopUp('StopPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSchedulePTI() {\r\n self.setState({ modelTitle: 'Scheduled Pre-Trip' });\r\n self.RenderContextMenuPopUp('SchedulePreTrip', true);\r\n }\r\n\r\n popUpGetPTI() {\r\n var IsValid = CommonActions.validateCommandSupport('LPR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n if (self.state.selectedItems.filter(row => row.ReeferOEMTypeCd.trim() == 'D' && (row.UnitTypeCd == null || row.UnitTypeCd == \"UK\")).length == 0) {\r\n self.setState({ modelTitle: 'Get Last Pre-Trip Result' });\r\n self.RenderContextMenuPopUp('GetPTI', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should have valid OEM Model.\");\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpGetTWR() {\r\n var IsValid = CommonActions.validateCommandSupport('TWR', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Get TripWISE Report' });\r\n self.RenderContextMenuPopUp('GetTWR', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpRebootReefer() {\r\n var IsValid = CommonActions.validateCommandSupport('RFC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Reboot Reefer Controller' });\r\n self.RenderContextMenuPopUp('RebootReefer', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeDatalog() {\r\n var IsValid = CommonActions.validateCommandSupport('SDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateAllOEMs(self.state.selectedItems);\r\n var carrrierCount = CommonActions.validateOEMType('C', self.state.selectedItems);\r\n if (carrrierCount >= 1) {\r\n var isGuestFound = 0;\r\n $.each(self.state.selectedItems, function (i, val) {\r\n isGuestFound = val.DeviceConfig == true && val.ReeferOEMTypeCd.trim() == 'C' ? isGuestFound + 1 : isGuestFound;\r\n });\r\n\r\n if (isGuestFound > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for Device Type CT3100 and OEM Type Carrier.\");\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Change Datalog Interval' });\r\n self.RenderContextMenuPopUp('ChangeDatalogInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReeferId() {\r\n var IsValid = CommonActions.validateCommandSupport('WRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer ID' });\r\n self.RenderContextMenuPopUp('ChangeReeferId', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReporting() {\r\n self.setState({ modelTitle: 'Set Reporting Interval' });\r\n self.RenderContextMenuPopUp('ChangeReportingInterval', true);\r\n }\r\n\r\n popUpQueryReefer() {\r\n var IsValid = CommonActions.validateCommandSupport('QRI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Query Reefer Inventory' });\r\n self.RenderContextMenuPopUp('QueryReeferInventory', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpUpdateModelConfig() {\r\n var IsValid = CommonActions.validateCommandSupport('UMC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Update Model Configuration' });\r\n self.RenderContextMenuPopUp('UpdateModelConfiguration', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpVerifyModelValidity() {\r\n var IsValid = CommonActions.validateCommandSupport('VMV', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var TKReceiverCount = CommonActions.validateOEMType('TR', self.state.selectedItems);\r\n if (TKReceiverCount == self.state.selectedItems.length) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for TKReceiver OEM.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Verify Model Validity' });\r\n self.RenderContextMenuPopUp('VerifyModelValidity', true);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSyncReeferClock() {\r\n var IsValid = CommonActions.validateCommandSupport('SRC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Sync Reefer Clock' });\r\n self.RenderContextMenuPopUp('SyncReeferClock', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeReeferClockSyncSetting() {\r\n var IsValid = CommonActions.validateCommandSupport('RCS', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n self.setState({ modelTitle: 'Change Reefer Clock Sync Settings' });\r\n self.RenderContextMenuPopUp('ChangeReeferClockSyncSettings', true);\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpStartDeforst() {\r\n var IsValid = CommonActions.validateCommandSupport('DSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateMultipleOEMs(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Start Defrost' });\r\n self.RenderContextMenuPopUp('StartDeforst', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpChangeDeforstInterval() {\r\n var IsValid = CommonActions.validateCommandSupport('CDI', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateStarCoolCarrierDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n this.setState({ isChangeDeforstInterval: true });\r\n self.setState({ modelTitle: 'Change Defrost Interval' });\r\n self.RenderContextMenuPopUp('ChangeDeforstInterval', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpSetFreshAirType() {\r\n var IsValid = CommonActions.validateCommandSupport('SFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Set - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('SetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpGetFreshAirType() {\r\n var IsValid = CommonActions.validateCommandSupport('GFA', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateCarrierDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Get - Fresh Air Type' });\r\n self.RenderContextMenuPopUp('GetFreshAirType', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpAssignPanId() {\r\n self.setState({ modelTitle: 'Assign PAN ID' });\r\n self.RenderContextMenuPopUp('AssignPanId', true);\r\n }\r\n\r\n popUpGuestReeferConfigCmd() {\r\n self.setState({ modelTitle: 'Guest Reefer configuration commands' });\r\n self.RenderContextMenuPopUp('GuestReeferConfiguration', true);\r\n }\r\n\r\n popAutoConfiguration() {\r\n if (self.state.selectedItems.length > 0) {\r\n var reeferData = self.state.selectedItems;\r\n var customerIdsCount = 0;\r\n var DeviceTypeCount = 0;\r\n\r\n $.each(reeferData, function (key, value) {\r\n var customerId = reeferData[0].CustomerID;\r\n if (value.CustomerID != customerId) {\r\n customerIdsCount++;\r\n }\r\n });\r\n $.each(reeferData, function (key, value) {\r\n var DeviceType = reeferData[0].DeviceType;\r\n if (value.DeviceType != DeviceType) {\r\n DeviceTypeCount++;\r\n }\r\n });\r\n if (customerIdsCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same customer.\");\r\n }\r\n else if (DeviceTypeCount > 0) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Selected Reefer(s) should be of same device type.\");\r\n }\r\n else {\r\n self.setState({ modelTitle: 'Device Configuration' });\r\n self.RenderContextMenuPopUp('AutoConfig', true);\r\n }\r\n };\r\n }\r\n\r\n popAssetConfiguration() {\r\n self.setState({ modelTitle: 'Asset Configuration' });\r\n self.RenderContextMenuPopUp('AssetConfig', true);\r\n }\r\n\r\n popUpMSC() {\r\n var IsValid = CommonActions.validateCommandSupport('MSC', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Multiple Setpoint Change' });\r\n self.RenderContextMenuPopUp('MSC', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n\r\n popUpACT() {\r\n var IsValid = CommonActions.validateCommandSupport('ACT', self.state.selectedItems, self.props.reeferConfigTypes);\r\n if (IsValid) {\r\n var validationMessage = CommonActions.validateDaikinThermoKingTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Automatic Cold Treatment' });\r\n self.RenderContextMenuPopUp('ACT', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n else\r\n PopupWindow.showErrorMessage(\"Alert\", \"Command is not supported for OEM Model.\");\r\n }\r\n popUpDIMISettings() {\r\n var validationMessage = CommonActions.validateDaikinDimiTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'DIMI Settings', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('DS', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n popUpIntelligentPTIFunction() {\r\n var validationMessage = CommonActions.validateDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Intelligent PTI Function', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('IntelligentPTIFunction', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n popUpFanSpeed() {\r\n var validationMessage = CommonActions.validateDaikinTypes(self.state.selectedItems);\r\n\r\n if (validationMessage.OpenCommandWindow) {\r\n self.setState({ modelTitle: 'Fan Speed', OEM: validationMessage.OEM });\r\n self.RenderContextMenuPopUp('FanSpeed', true);\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", validationMessage.Message);\r\n }\r\n }\r\n //RCNG-3 -start\r\n popUpRetire() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a retired asset does not appear in search results, nor does it contribute to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesRetire.bind(this),//RCNG-54\r\n self.onCancelRefreshStatusGrid.bind(this));//RCNG-54\r\n }\r\n popUpReactivate() {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"By default, a reactivated asset appears in search results and contributes to the information collected by most dashboard widgets. Continue?\",\r\n self.onYesReactivate.bind(this),//RCNG-54\r\n self.onCancelRefreshStatusGrid.bind(this));//RCNG-54\r\n }\r\n onCancelRefreshStatusGrid() {\r\n RCNGWindow.ConfirmWindow.close();\r\n }\r\n onYesRetire() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits() //RCNG-45\r\n //var reeferData = self.state.selectedItems;//RCNG-45\r\n //if (reeferData != undefined && reeferData != null) {//RCNG-45\r\n RCNGWindow.ConfirmWindow.close();\r\n $('#globalLoader').show();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/RetireAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })//RCNG-45\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/RetireAsset?containerID=' + reeferData[0].ReeferID;//RCNG-45\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });//RCNG-45\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Retired.\");\r\n self.refreshStatusGrid();\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n //}\r\n\r\n }\r\n //}//RCNG-45\r\n }\r\n onYesReactivate() {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n var commandUnits = this.getForwardCommandUnits()//RCNG-45\r\n //var reeferData = self.state.selectedItems;//RCNG-45\r\n //if (reeferData != undefined && reeferData != null) {//RCNG-45\r\n $('#globalLoader').show();\r\n RCNGWindow.ConfirmWindow.close();\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ReactivateAsset', { method: 'POST', body: JSON.stringify(commandUnits), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } })//RCNG-45\r\n //var url = Config.ApiBaseUrl + '/api/reeferstatus/ReactivateAsset?containerID=' + reeferData[0].ReeferID;//RCNG-45\r\n //var request = RCUtils.FetchRequest(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });//RCNG-45\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(result => {\r\n $('#globalLoader').hide();\r\n if (result === \"success\") {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Asset(s) Reactivated.\");\r\n self.refreshStatusGrid();\r\n\r\n }\r\n else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error Occured.\");\r\n }\r\n });\r\n //}\r\n }\r\n }\r\n //RCNG-3 -end\r\n popUpGetAssetId() {\r\n self.setState({ modelTitle: 'Get Asset ID' });\r\n self.RenderContextMenuPopUp('GetAssetId', true);\r\n }\r\n\r\n popUpEnableDoorSensor() {\r\n self.setState({ modelTitle: 'Enable Door Sensor' });\r\n self.RenderContextMenuPopUp('EnableDoorSensor', true);\r\n }\r\n\r\n popUpCreateTrip() {\r\n self.setState({ modelTitle: 'Trip Details' });\r\n self.RenderContextMenuPopUp(\"CreateTrip\", false);\r\n }\r\n\r\n popUpTripStatus() {\r\n self.setState({ modelTitle: 'Trip Status' });\r\n self.RenderContextMenuPopUp(\"TripStatus\", false);\r\n }\r\n\r\n popUpClearDeviation() {\r\n self.setState({ modelTitle: 'Clear Deviation' });\r\n self.RenderContextMenuPopUp('ClearDeviation', false);\r\n }\r\n\r\n popUpViewBooking() {\r\n $('#globalLoader').show();\r\n viewBookingData = [];\r\n self.setState({ modelTitle: 'View Booking' });\r\n\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetbookingDataByNumber?BookingNumber=' + self.state.selectedItems[0].BookingNumber)\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n viewBookingData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('ViewBooking', false);\r\n });\r\n }\r\n\r\n popUpAssignBooking() {\r\n $('#globalLoader').show();\r\n customerAccessData = [];\r\n self.setState({ modelTitle: 'Third-Party Access' });//Modified for RCNG-945\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('AssignBooking', false);\r\n });\r\n }\r\n\r\n popUpUnAssignBooking() {\r\n $('#globalLoader').show();\r\n self.setState({ modelTitle: 'Unassign Booking and Access' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('UnAssignBooking', false);\r\n });\r\n }\r\n popUpEditVoyage() {\r\n self.setState({ modelTitle: 'Edit Voyage' });\r\n self.RenderContextMenuPopUp('EditVoyage', false);\r\n }\r\n popUpNewUnAssignBooking() {\r\n $('#globalLoader').show();\r\n if (JSON.parse(sessionStorage.getItem('customerDetails')).CustomerTypeCd == '3P')//Added for RCNG-975\r\n self.setState({ modelTitle: 'Unassign Booking' });\r\n else\r\n self.setState({ modelTitle: 'Unassign Booking and Access' });\r\n var selectedUnits = \"\";\r\n if (self.state.selectedItems.length > 1) {\r\n $.each(self.state.selectedItems, function (index, value) {\r\n selectedUnits = selectedUnits == \"\" ? value.UnitMasterID : selectedUnits + \",\" + value.UnitMasterID;\r\n });\r\n }\r\n else {\r\n selectedUnits = self.state.selectedItems[0].UnitMasterID.toString();\r\n }\r\n\r\n var filterUnitParams = JSON.stringify(self.state.selectedItems.map(x => x.UnitMasterID));\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking';\r\n var request = RCUtils.FetchRequest(url, { method: 'POST', body: filterUnitParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n //var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/GetCustomerGroupsBooking?selectedUnits=' + selectedUnits);\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n customerAccessData = data;\r\n $('#globalLoader').hide();\r\n self.RenderContextMenuPopUp('NewUnAssignBooking', false);\r\n });\r\n }\r\n \r\n\r\n popUpControllerSwap() {\r\n self.setState({ modelTitle: 'Change Controller swap' });\r\n self.RenderContextMenuPopUp('ControllerSwap', false);\r\n }\r\n\r\n popUpZigbeeSettings() {\r\n self.setState({ modelTitle: 'Change Zigbee Config Settings' });\r\n self.RenderContextMenuPopUp('Zigbee', true);\r\n }\r\n\r\n popUpDeviceReset() {\r\n self.setState({ modelTitle: 'Device Reset' });\r\n self.RenderContextMenuPopUp('DeviceReset', true);\r\n }\r\n\r\n popUpDeviceHardReset() {\r\n self.setState({ modelTitle: 'Device Reset To Defaults' });\r\n self.RenderContextMenuPopUp('DeviceHardReset', true);\r\n }\r\n checkUnitAssignedToCargoCare(CCCustomerProfileId: any, customerProfileCode: any, newCustomerProfileCode: any) {\r\n if (customerProfileCode != null && customerProfileCode != \"\" && customerProfileCode != undefined) {\r\n IsTriggered = false;\r\n RCNGWindow.ConfirmWindow.showConfirmBox(\"The chosen profile \" + newCustomerProfileCode + \", will replace any other profiles currently in use by the selected reefer(s). The reefer(s) will be unassigned from those profiles and all of their CargoCare alerts will be cleared prior to reassignment to \" + newCustomerProfileCode + \". Continue?\",\r\n self.onYesAssignToCargoCare.bind(this, CCCustomerProfileId),\r\n self.onCancelRefreshStatusGrid.bind(this));\r\n }\r\n else\r\n self.assignCargoCare(CCCustomerProfileId);\r\n }\r\n onYesAssignToCargoCare(CCCustomerProfileId: any) {\r\n if (!IsTriggered) {\r\n IsTriggered = true;\r\n\r\n RCNGWindow.ConfirmWindow.close();\r\n self.assignCargoCare(CCCustomerProfileId);\r\n }\r\n }\r\n assignToCargoCareSubMenu(customerProfileCode: any, params: any) {\r\n var cargoCareSubMenus: any = [];\r\n $.each(this.state.CargoCareProfiles, (index, item) => {\r\n var objCCSubMenu: any = {\r\n name: item.CargoCareCustomerProfileCode,\r\n action: () => {\r\n //this.assignCargoCare(item.CargoCareCustomerProfileID);\r\n self.checkUnitAssignedToCargoCare(item.CargoCareCustomerProfileID, customerProfileCode, item.CargoCareCustomerProfileCode);\r\n },\r\n disabled: UserRights.checkCCAssignSubMenuItemDisabled(params, item.CargoCareCustomerProfileID, 'AssigntoCargoCare')\r\n }\r\n cargoCareSubMenus.push(objCCSubMenu);\r\n });\r\n\r\n return cargoCareSubMenus;\r\n }\r\n\r\n ClearCargoCareAlertsSubMenu(selectedReeferData: any) {\r\n var ccAlertsSubMenus: any = [];\r\n var alarmsList = self.state.reeferFormatter.AlarmMasterList;\r\n if (selectedReeferData[0].CCAlarmsList != undefined && selectedReeferData[0].CCAlarmsList != null && selectedReeferData[0].CCAlarmsList != \"\") {\r\n var ccAlarms = selectedReeferData[0].CCAlarmsList.split(',');\r\n\r\n $.each(ccAlarms, function (index, item) {\r\n var lstAlerts = item.split(':');\r\n var almCd = lstAlerts[3] != \"\" ? lstAlerts[3].trim() : '';\r\n var alarmDescription = alarmsList.filter(e =>\r\n e.AlarmCd === almCd);\r\n if (alarmDescription.length > 0) {\r\n var objCCSubMenu: any = {\r\n name: alarmDescription[0].AlarmAlias + \" : \" + alarmDescription[0].Description + \" : \" + lstAlerts[2],\r\n action: () => {\r\n self.clearActiveCargoCareAlert(alarmDescription[0].AlarmMasterID);\r\n },\r\n icon: ReeferCellRenderer.GetCargoCareAlmImg(lstAlerts[1]),\r\n }\r\n ccAlertsSubMenus.push(objCCSubMenu);\r\n\r\n }\r\n\r\n\r\n });\r\n\r\n if (ccAlertsSubMenus.length > 1) {\r\n var objCCAllSubMenuSep: any = 'separator';\r\n ccAlertsSubMenus.push(objCCAllSubMenuSep);\r\n var objCCAllSubMenu: any = {\r\n name: \"Clear All\",\r\n action: () => {\r\n self.clearActiveCargoCareAllAlerts();\r\n },\r\n //disabled: UserRights.checkMenuItemDisabled(params, 'AssigntoCargoCare')\r\n }\r\n ccAlertsSubMenus.push(objCCAllSubMenu);\r\n }\r\n }\r\n return ccAlertsSubMenus;\r\n }\r\n \r\n assignCargoCare(CargoCareCustomerProfileID: any) {\r\n $('#globalLoader').show();\r\n //this.props.requestAssignCargoCare(this.getForwardCommandUnits());\r\n //this.refreshStatusGrid();\r\n var commandUnits = this.getCargoCareCommandUnits(null, CargoCareCustomerProfileID);\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/AssignCargoCare', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care assigned successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n this.refreshStatusGrid();\r\n }\r\n });\r\n\r\n }\r\n\r\n unAssignCaregoCare() {\r\n $('#globalLoader').show();\r\n //this.props.requestUnAssignCargoCare(this.getForwardCommandUnits());\r\n //this.refreshStatusGrid();\r\n\r\n var commandUnits = this.getForwardCommandUnits();\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/UnAssignCargoCare', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care unassigned successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n this.refreshStatusGrid();\r\n }\r\n });\r\n }\r\n clearActiveCargoCareAlert(alarmMasterId: any) {\r\n var commandUnits = this.getCargoCareCommandUnits(alarmMasterId, null);\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearCargoCareAlert', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care alert(s) cleared successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n this.refreshStatusGrid();\r\n }\r\n });\r\n }\r\n\r\n clearActiveCargoCareAllAlerts() {\r\n var commandUnits = this.getCargoCareCommandUnits(null, null);\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearAllCargoCareAlerts', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Cargo care alerts cleared successfully.\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n this.refreshStatusGrid();\r\n }\r\n });\r\n }\r\n clearSetPoint() {\r\n var commandUnits = this.getForwardCommandUnits();\r\n var filterSet: server.ReeferCommandUnits[];\r\n filterSet = commandUnits;\r\n var filterParams = JSON.stringify(filterSet);\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/reeferstatus/ClearSetPoint', { method: 'POST', body: filterParams, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } });\r\n fetch(request)\r\n .then(RCUtils.handleError)\r\n .then(response => response.json())\r\n .then(msg => {\r\n if (msg == \"Clear set point is done\") {\r\n this.setState({ IsCommandIssued: true, PrevSelectedItems: this.state.selectedItems });\r\n this.refreshStatusGrid();\r\n }\r\n });\r\n }\r\n\r\n exportToExcel() {\r\n\r\n var arrData;\r\n if (self.state.selectedItems != null) {\r\n arrData = typeof self.state.selectedItems != 'object' ? JSON.parse(self.state.selectedItems) : self.state.selectedItems;\r\n }\r\n else {\r\n arrData = typeof this.state.rowData != 'object' ? JSON.parse(this.state.rowData) : this.state.rowData;\r\n }\r\n\r\n $(\"#globalLoader\").show();\r\n var r = this.state.columnDefs;\r\n try {\r\n var formName = 'ReeferGrid';\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n var uri = Excel.InitializeChildGridExportToExcel(arrData, r, formName);\r\n this.state.exportFields.ExportData = JSON.stringify(uri);\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n GridReeferStatusToolBar.applySheetData(sheetData, formName);\r\n }\r\n catch (ex) {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Error in data export.\");\r\n }\r\n }\r\n getCargoCareCommandUnits(alarmMasterId: any, CCCustomerProfileId: any) {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userData.UserId,\r\n \"TripId\": value.TripId,\r\n \"RCDReportingInterval\": value.RCDReportingInterval,\r\n \"SetTemp\": value.SetPoint,\r\n \"CustomerID\": value.CustomerID,\r\n \"CCCustomerProfileId\": CCCustomerProfileId,\r\n \"AlarmMasterId\": alarmMasterId\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n getForwardCommandUnits() {\r\n //var userData = JSON.parse(JSON.stringify(this.props.loggedInUserData));\r\n var userData = JSON.parse(sessionStorage.getItem('UserInfo'));\r\n var commandUnits = [];\r\n\r\n if (this.state.selectedItems.length > 0) {\r\n forEach(this.state.selectedItems, function (value, key) {\r\n var commandUnitObject = {\r\n \"RcdEventID\": value.RCDEventID,\r\n \"RCDMasterID\": value.RCDMasterID,\r\n \"RcdId\": value.RCDID,\r\n \"ReeferID\": value.ReeferID,\r\n \"UnitControlEventID\": value.UnitControlEventID,\r\n \"UnitEventID\": value.UnitEventID,\r\n \"UnitMasterID\": value.UnitMasterID,\r\n \"ParentEventId\": (value.ParentEventID.HasValue) ? value.ParentEventID.Value : 0,\r\n \"UserId\": userData.UserId,\r\n \"TripId\": value.TripId,\r\n\r\n \"RCDReportingInterval\": value.RCDReportingInterval,\r\n \"SetTemp\": value.SetPoint,\r\n \"CustomerID\": value.CustomerID\r\n };\r\n\r\n commandUnits.push(commandUnitObject);\r\n });\r\n }\r\n else {\r\n alert('Please select at least one record to proceed.');\r\n }\r\n\r\n return commandUnits;\r\n }\r\n\r\n pageSizeChange(event: React.FormEvent) {\r\n var pageSize = this.state.pageSize;\r\n var Value: string = event.currentTarget.value;\r\n pageSize = Value;\r\n self.setState({\r\n pageSize: pageSize\r\n });\r\n\r\n self.state.gridApiParams.paginationSetPageSize(parseInt(pageSize));\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n\r\n renderEmailDialog(gridData: any, colDefs: any, colDefs2: any, formName: string, parentChild: string, functionId: any, gridApiParams: any, isIncludeRowGroup:boolean, sensorData:any) {\r\n this.props.renderDataToEmailControl(gridData, colDefs, colDefs2, formName, parentChild, functionId, gridApiParams, isIncludeRowGroup, reeferAssetSensors);\r\n }\r\n\r\n renderGridPreferenceDialog(functionId: any, gridApiParams: any, formName: string) {\r\n this.props.renderDataGridPreferenceControl(functionId, gridApiParams, formName);\r\n }\r\n renderExportToExcelDialog(functionId: any, gridApiParams: any, formName: string, gridData: any, colDefs: any, colDefs2: any, parentchild: any, sensorData:any) {\r\n this.props.renderDataGridExportToExcelControl(functionId, gridApiParams, formName, gridData, colDefs, colDefs2, parentchild, reeferAssetSensors);\r\n }\r\n\r\n filterReeferStatusGrid(searchParam: any) {\r\n self.setState({ ToggleSearchParams: searchParam });\r\n $('#globalLoader').show();\r\n ReeferCallout.ResetMapPushpins();\r\n var reeferData = [];\r\n var reeferSearchData = this.props.propsReeferData;\r\n if (!searchParam.AllReefer && !searchParam.Running && !searchParam.MissedRunning && !searchParam.Stopped && !searchParam.MissedStopped && !searchParam.AllMicroAlaram && !searchParam.MASevere && !searchParam.MAMinor && !searchParam.AllCargoCare && !searchParam.CCSevere && !searchParam.CCMinor && !searchParam.CCInformational) {\r\n reeferData.push(...reeferSearchData);\r\n }\r\n\r\n if (searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData);\r\n }\r\n\r\n if (searchParam.Running && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"I\"));\r\n }\r\n\r\n if (searchParam.MissedRunning && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"S\"));\r\n }\r\n\r\n if (searchParam.Stopped && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"X\"));\r\n }\r\n\r\n if (searchParam.MissedStopped && !searchParam.AllReefer) {\r\n reeferData.push(...reeferSearchData.filter(x => x.RunState == \"O\"));\r\n }\r\n\r\n if (searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && (x.MASeverityLevel == \"1\" || x.MASeverityLevel == \"2\")));\r\n }\r\n\r\n if (searchParam.MASevere && !searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != \"\" && x.MASeverityLevel == \"1\"));\r\n }\r\n\r\n if (searchParam.MAMinor && !searchParam.AllMicroAlaram) {\r\n reeferData.push(...reeferSearchData.filter(x => x.MicroAlarms != null && x.MicroAlarms != \"\" && x.MASeverityLevel != \"\" && x.MASeverityLevel == \"2\"));\r\n }\r\n\r\n if (searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && x.CCSeverityLevel != \"\"));\r\n }\r\n\r\n if (searchParam.CCSevere && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"1\")));\r\n }\r\n\r\n if (searchParam.CCMinor && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"2\")));\r\n }\r\n\r\n if (searchParam.CCInformational && !searchParam.AllCargoCare) {\r\n reeferData.push(...reeferSearchData.filter(x => x.CCAlarms != null && x.CCAlarms != \"\" && (x.CCSeverityLevel != \"\" && x.CCSeverityLevel == \"3\")));\r\n }\r\n\r\n let reeferFilterData = uniq(reeferData);\r\n\r\n ReeferCallout.BindClusterMapPushpins(reeferFilterData, 'status', this.state.reeferFormatter);\r\n\r\n this.setState({\r\n rowData: reeferFilterData\r\n });\r\n setTimeout(() => {\r\n $('#globalLoader').hide();\r\n }, 500);\r\n\r\n if (self.state.gridApiParams != null && self.state.gridApiParams != undefined && self.state.gridApiParams != []) {\r\n self.state.gridApiParams.paginationGoToFirstPage();\r\n }\r\n }\r\n childHandler(dataFromChild) {\r\n self.state.gridApiParams.gridOptionsWrapper.gridOptions.api.setFilterModel({ \"-\": { filter: dataFromChild } })\r\n var finalData = [];\r\n var datasource = self.ServerSideDatasource(finalData);\r\n self.state.gridApiParams.setServerSideDatasource(datasource);\r\n //this.props.gridApiParams.gridOptionsWrapper.gridOptions.api.setFilterModel({ \"-\": { filter: str } })\r\n // log our state before and after we updated it\r\n\r\n }\r\n\r\n onGridScroll(params: any) {\r\n $(\".context-menu\").hide();\r\n $(\"#contextmenu\").hide();\r\n }\r\n getMainMenuItems(params) {\r\n let finalMenuItem = [];\r\n let itemsToExclude = \"resetColumns\";\r\n params.defaultItems.forEach(function (item) {\r\n if (itemsToExclude.indexOf(item) < 0) {\r\n finalMenuItem.push(item);\r\n }\r\n });\r\n finalMenuItem.push({\r\n name: 'Reset Columns',\r\n action: function () {\r\n self.setState({ gridApiParams: params.api });\r\n var defaultColumns = params.api.gridOptionsWrapper.gridOptions.columnApi.getAllGridColumns();\r\n params.api.gridOptionsWrapper.gridOptions.columnApi.setColumnsVisible(defaultColumns, false);\r\n GridColumnPreferences.ResetGridColumns(functionId, params.api, \"ReeferStatusGrid\");\r\n },\r\n });\r\n return finalMenuItem;\r\n }\r\n onColumnResized = (params: any) => {\r\n self.onSaveGridRowGroupState(params);\r\n }\r\n public render() {\r\n var groupRowRendererParams: any = {\r\n innerRenderer: this.groupRowInnerRenderer\r\n };\r\n var excelStyles: any = [\r\n {\r\n id: 'bigInt',\r\n dataType: 'string',\r\n font: {\r\n size: 12\r\n },\r\n\r\n },\r\n {\r\n id: 'OneDecimal',\r\n numberFormat: {\r\n format: '0.0',\r\n },\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'myExcelStyle',\r\n font: {\r\n size: 12,\r\n }\r\n },\r\n {\r\n id: 'header',\r\n font: {\r\n size: 14,\r\n },\r\n },\r\n ];\r\n return
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {JSON.parse(sessionStorage.getItem('SSRM')) == false ?\r\n
    \r\n \r\n
    : ''\r\n }\r\n
    \r\n {\r\n
    \r\n nodeB.key) {\r\n // return 1;\r\n // } else {\r\n // return 0;\r\n // }\r\n // }\r\n //}\r\n allowContextMenuWithControlKey={true}\r\n excelStyles={excelStyles}\r\n getContextMenuItems={this.getReeferContextMenuItems}\r\n paginationPageSize={this.state.pageSize}\r\n onRowDataChanged={this.onRowDataChanged}\r\n onPaginationChanged={this.onGridPaginationChanged}\r\n frameworkComponents={this.state.frameworkComponents}\r\n overlayLoadingTemplate={this.state.overlayLoadingTemplate}\r\n tooltipShowDelay={0}\r\n tooltipHideDelay={8000}\r\n onBodyScroll={this.onGridScroll}\r\n\r\n >\r\n \r\n
    \r\n\r\n }\r\n
    \r\n Page Size:\r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n}\r\n\r\nclass ReeferHistorySearch {\r\n FromDate: string;\r\n ToDate: string;\r\n Units: string;\r\n}\r\n\r\ninterface ReeferMasterStatus {\r\n UnitRCDAssociationHistoryID: number,\r\n LastParentEventID: number,\r\n ParentEventID: number,\r\n UnitMasterID: number,\r\n UnitPrefix: string,\r\n UnitNumber: string,\r\n ReeferID: string,\r\n UnitEventID: number,\r\n AlarmsList: string,\r\n CCAlarms: string,\r\n CCSeverityLevel: string,\r\n MicroAlarms: string,\r\n MASeverityLevel: string,\r\n UnitUSDAHistoryID: number,\r\n USDA1Temp: number,\r\n USDA2Temp: number,\r\n USDA3Temp: number,\r\n Cargo4Temp: number,\r\n O2Setpoint: number,\r\n CO2Setpoint: number,\r\n RunningMode: string,\r\n URH_UnitReadingsHistoryID: number,\r\n Humidity: number,\r\n UnitTypeCd: string,\r\n AmbientTemp: number,\r\n CompressorSuctionTemp: number,\r\n CompressorDischargeTemp: number,\r\n ReturnTemp1: number,\r\n SupplyTemp1: number,\r\n SupplyTemp2: number,\r\n ReturnTemp2: number,\r\n EvaporatorTemp: number,\r\n NumberOfAlarmsInQue: number,\r\n DischargePressure: number,\r\n CompositeSuctionPressure: number,\r\n VentPositionSensorCMH: number,\r\n PretripTestStateID: any,\r\n SetPoint: number,\r\n O2Reading: number,\r\n CO2Reading: number,\r\n TotalCurrentDraw: number,\r\n LowSpeedEvaporatorFanOutPut: string,\r\n HighSpeedEvaporatorFanOutPut: string,\r\n CondenserFanOutPut: string,\r\n HumiditySetpoint: number,\r\n SoftwareRevision: string,\r\n ControllerSerialNumber: string,\r\n CompressorFrequency: number,\r\n CondenserTemperature: number,\r\n CondenserPressure: number,\r\n HeaterOnTime: number,\r\n EvaporatorExpansionValveOpening: number,\r\n LineFrequency: number,\r\n DataLoggerDtm: string,\r\n TimeToDefrost: number,\r\n CurrentPhaseA: number,\r\n CurrentPhaseB: number,\r\n CurrentPhaseC: number,\r\n ThreePhaseCurrent: string,\r\n ReturnTempLongAvg: number,\r\n AmbientTempLongAvg: number,\r\n CompositeSuctionPressureLongAvg: number,\r\n DischargePressureLongAvg: number,\r\n SupplyTemperatureLongAvg: number,\r\n ReturnTemperatureLongAvg: number,\r\n CompressorSuctionTempLongAvg: number,\r\n CompressorCondensorTempLongAvg: number,\r\n RCDEventID: number,\r\n R_EventMasterID: number,\r\n R_ParentEventID: number,\r\n RCDMasterID: number,\r\n RCDMasterHistoryID: number,\r\n RCDGSMPositionHistoryID: number,\r\n RCDLocationHistoryID: number,\r\n RCDGPSPositionHistoryID: number,\r\n RCDStateReportedHistoryID: number,\r\n RCDAlarmSummaryHistoryID: number,\r\n R_EventDTTM: string,\r\n RunState: number,\r\n ControlledAtmosphereMode: string;\r\n R_RCDStateReportedHistoryID: number,\r\n IsAcceptableACVoltage: boolean,\r\n IsAcceptableBatteryVoltage: boolean,\r\n BatteryVoltage: number,\r\n RCDPowerSourceCd: string,\r\n ReeferACPowerLevel: number,\r\n ReeferOEMTypeCd: string,\r\n LineVoltage1: number,\r\n LineVoltage2: number,\r\n LineVoltage3: number,\r\n DeviceTemp: number,\r\n LastUnitEventID: number,\r\n EventMasterID: number,\r\n EventDTTM: any,\r\n ModifiedDTTM: any,\r\n U_UnitAlarmSummaryHistoryID: number,\r\n UnitControlEventID: number,\r\n C_EventDTTM: any,\r\n C_EventMasterID: number,\r\n C_ParentEventID: number,\r\n UnitVesselOperationsID: any,\r\n UnitCargoCareID: any,\r\n C_UnitAlarmSummaryHistoryID: any,\r\n Status: any,\r\n IsOnVessel: any,\r\n IsCargoCare: any,\r\n C_ModifiedDTTM: any,\r\n GeofenceName: string,\r\n RCDID: string,\r\n RCDFirmwareVersion: string,\r\n RCDBootloaderVersion: string,\r\n RCDMeshFirmwareVersion: string,\r\n RevisionNum: number,\r\n GPSLatitude: number,\r\n GPSLongitude: number,\r\n GPSLastLock: number,\r\n GPSCoords: string\r\n GPSLockState: string,\r\n IsInsideGeofence: boolean,\r\n Geofence: string,\r\n ActiveCommands: boolean,\r\n PendingCommands: boolean,\r\n ErrorCommands: boolean,\r\n CustomerAccessGroupIDList: string,\r\n TowerBaseStationID: number,\r\n TowerLocalizationAreaCode: number,\r\n MNC: number,\r\n SuctionModulationValveOpening: number,\r\n HotGasValveOpening: number,\r\n EconomizerValveOpening: number,\r\n RSSI: number,\r\n MSISDN: string,\r\n SIM_IMSI: string,\r\n ICCID: string,\r\n CompressorEvaporatorTempLongAvg: number,\r\n CompressorDischargeTempLongAvg: number,\r\n CountryCd: string,\r\n CountryName: string,\r\n UnitEventDTTM: any,\r\n PowerProfileCd: string,\r\n NotReportingFlag: number,\r\n PowerStateIsActive: boolean,\r\n PtiRunning: boolean,\r\n ControllerSerialNumberChgFlag: boolean,\r\n IsActiveAssociation: boolean,\r\n IsReeferCommunicationEstablished: boolean,\r\n UnitSettingsHistoryID: number,\r\n RCDReportingInterval: number,\r\n ReeferConfigTypeCd: string,\r\n Street: string,\r\n City: string,\r\n State: string,\r\n Zip: string,\r\n CustomerID: number,\r\n CustomerName: string,\r\n RCDRfrComErr: boolean,\r\n VesselID: string,\r\n VoyageID: string,\r\n PortOfDestination: string,\r\n PortOfDeparture: string,\r\n TripId: number,\r\n TripStatusCd: string,\r\n TripStatusCdAndDFlag: string,\r\n DeviationFlg: boolean,\r\n TripDefStatusDsc: string,\r\n TripNameAndStatus: string,\r\n TripRouteWaypointId: number,\r\n BookedTemperature: number,\r\n BookingNumber: string,\r\n TemperatureUnit: string,\r\n CommentExists: number,\r\n ErrorMessage: string\r\n}\r\n\r\n//WI-23853\r\nenum GensetAndDryAndChassisStatusEnum {\r\n PowerOnReporting = 12,\r\n PowerOnNotReporting = 13,\r\n PowerOffReporting = 14,\r\n PowerOffNotReporting = 15,\r\n DryInGeofence = 16,\r\n DryOutGeofence = 17,\r\n\r\n ChassisPwrInGeofence = 18,\r\n ChassisPwrOutGeofence = 19,\r\n ChassisNotPwrInGeofence = 20,\r\n ChassisNotPwrOutGeofence = 21\r\n}","module.exports = \"data:image/png;base64,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\"","import * as React from 'react';\r\nimport * as ReactDom from 'react-dom';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport * as Exceljs from '../../actions/ExportToExcel.js';\r\nimport { EmailControl } from './../sharedcomponents/EmailControl';\r\nimport { PopupWindow } from './../sharedcomponents/PopupWindow';\r\nimport { ExportToExcel } from './../sharedcomponents/ExportToExcel';\r\nimport { RCUtils } from '../../RCUtils';\r\nimport Workbook from 'react-excel-workbook';\r\nimport $ from 'jquery';\r\nvar Config: any = require('../../Config.json');\r\nvar Excel = Exceljs.default;\r\n\r\ninterface VCCheckBoxData {\r\n enableVCCheckBox: boolean;\r\n disableVCCheckBoxOption: boolean;\r\n disableVCDropDown: boolean;\r\n disableVCOption: boolean;\r\n selectedVCData: server.VesselInformation;\r\n dropDownVCData: server.VesselInformation[];\r\n isVCMessage: boolean;\r\n}\r\nconst emptyVCCheckBoxData: VCCheckBoxData = { enableVCCheckBox: false, disableVCCheckBoxOption: false, disableVCDropDown: false, disableVCOption: false, selectedVCData: null, dropDownVCData: [], isVCMessage: false };\r\n\r\nexport interface ToolBarState { \r\n exportFields: ExportFields;\r\n DisableVCOption: boolean;\r\n EnableVCCheckBox: boolean;\r\n DisableVCCheckBoxOption: boolean;\r\n DisableVCDropDown: boolean;\r\n DropDownVCData: server.VesselInformation[];\r\n SelectedVCData: server.VesselInformation; \r\n VCCheckBoxInfo: VCCheckBoxData;\r\n SelectedVesselId: number;\r\n excelData: any[];\r\n headerData: any[];\r\n isDownload: boolean;\r\n excelGridData: any[];\r\n formName: string;\r\n fileTitle: string;\r\n sheetInfo: any;\r\n}\r\nclass ExportFields {\r\n ExportData: string;\r\n}\r\n\r\nvar self;\r\nconst emptyExportFields: ExportFields = { ExportData: '' };\r\n\r\nexport class GridToolBarPopups extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n exportFields: emptyExportFields,\r\n DisableVCOption: false,\r\n DisableVCCheckBoxOption: false,\r\n EnableVCCheckBox: false,\r\n DisableVCDropDown: false,\r\n DropDownVCData: [],\r\n SelectedVCData: null,\r\n VCCheckBoxInfo: emptyVCCheckBoxData,\r\n SelectedVesselId: 0,\r\n excelData: [],\r\n headerData: [],\r\n isDownload: false,\r\n excelGridData: this.props.gridData,\r\n formName: this.props.formName,\r\n fileTitle: this.props.formName, sheetInfo: ''\r\n };\r\n\r\n self = this;\r\n } \r\n\r\n componentDidMount() {\r\n this.renderSheets();\r\n }\r\n \r\n componentWillReceiveProps(nextProps: any) {\r\n if (nextProps.VCCheckBoxInfo != null && nextProps.VCCheckBoxInfo != undefined) {\r\n this.setState({\r\n DisableVCOption: nextProps.VCCheckBoxInfo.disableVCOption,\r\n EnableVCCheckBox: nextProps.VCCheckBoxInfo.enableVCCheckBox,\r\n DisableVCCheckBoxOption: nextProps.VCCheckBoxInfo.disableVCCheckBoxOption,\r\n DisableVCDropDown: nextProps.VCCheckBoxInfo.disableVCDropDown,\r\n DropDownVCData: nextProps.VCCheckBoxInfo.dropDownVCData,\r\n SelectedVCData: nextProps.VCCheckBoxInfo.selectedVCData,\r\n VCCheckBoxInfo: nextProps.VCCheckBoxInfo\r\n });\r\n if (nextProps.VCCheckBoxInfo.selectedVCData != null) {\r\n var selectedData = nextProps.VCCheckBoxInfo.selectedVCData;\r\n this.setState({\r\n SelectedVesselId: selectedData.VesselId\r\n });\r\n }\r\n else {\r\n this.setState({\r\n SelectedVesselId: 0\r\n });\r\n }\r\n }\r\n }\r\n \r\n RefreshData() {\r\n this.props.refreshGrid();\r\n }\r\n\r\n ExportToExcel() {\r\n var arrData;\r\n if (self.props.gridData != undefined && self.props.gridData != null && self.props.gridData .length > 0) {\r\n arrData = typeof self.props.gridData != 'object' ? JSON.parse(self.props.gridData) : self.props.gridData;\r\n var r = self.props.colDefs;\r\n var uri;\r\n var sheetData = { HeaderData: [], ColumnData: [] };\r\n $(\"#globalLoader\").show();\r\n if (self.props.parentchild == 'P') {\r\n uri = Excel.InitializeExportParentToXLSX(arrData, r, this.props.formName);\r\n self.state.exportFields.ExportData = JSON.stringify(uri); \r\n } else {\r\n uri = Excel.InitializeExportChildToXLSX(arrData, r, this.props.formName);\r\n self.state.exportFields.ExportData = JSON.stringify(uri); \r\n }\r\n\r\n sheetData = Excel.ConvertCSVToJSon(uri);\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(self.props.formName, true));\r\n }\r\n else {\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"No Data to Export.\");\r\n }\r\n }\r\n\r\n closepopupModel() {\r\n $('#PopupEmailTo').hide();\r\n }\r\n\r\n EmailTo() {\r\n $('#PopupEmailTo').show();\r\n }\r\n \r\n IsVCCheckChange(event: React.FormEvent) {\r\n var IsCheck: boolean = event.currentTarget.checked;\r\n this.setState({\r\n EnableVCCheckBox: IsCheck\r\n });\r\n if (event.currentTarget.checked)\r\n this.setState({ DisableVCDropDown: false });\r\n else\r\n this.setState({ DisableVCDropDown: true });\r\n var checkBoxInfo = this.state.VCCheckBoxInfo;\r\n checkBoxInfo.enableVCCheckBox = IsCheck;\r\n checkBoxInfo.disableVCDropDown = (event.currentTarget.checked) ? false : true;\r\n this.setState({\r\n VCCheckBoxInfo: checkBoxInfo\r\n });\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(checkBoxInfo);\r\n }\r\n\r\n VesselConfigChange(event: React.FormEvent) {\r\n var vesselConfig: string = event.currentTarget.value; \r\n var index = event.currentTarget.selectedIndex;\r\n //var vesselName: string = event.currentTarget[index].text;\r\n var checkBoxInfo = this.state.VCCheckBoxInfo;\r\n var selected;\r\n if (vesselConfig == \"0\") {\r\n selected = null;\r\n checkBoxInfo.selectedVCData = selected; \r\n }\r\n else {\r\n selected = this.state.DropDownVCData.find(t => t.VesselId == parseInt(vesselConfig));\r\n checkBoxInfo.selectedVCData = selected\r\n }\r\n this.setState({\r\n SelectedVCData: selected, VCCheckBoxInfo: checkBoxInfo, SelectedVesselId: parseInt(vesselConfig)\r\n });\r\n if (this.props.UpdateVCCheckBoxInfo != null && this.props.UpdateVCCheckBoxInfo != 'undefined')\r\n this.props.UpdateVCCheckBoxInfo(checkBoxInfo);\r\n }\r\n\r\n renderSheets() {\r\n this.setState({ sheetInfo: this.generateSheetInfo() }, () => this.checkToFileDownload());\r\n }\r\n\r\n checkToFileDownload() {\r\n if (this.state.isDownload) {\r\n $('#btnDownloadPopUpExcel').click();\r\n $(\"#globalLoader\").hide();\r\n PopupWindow.showErrorMessage(\"Alert\", \"Data exported successfully.\");\r\n this.setState({ isDownload: false });\r\n }\r\n }\r\n\r\n getSheetInfo(headerName: string) {\r\n var headerInfo = headerName.replace(/\\s+/g, '');\r\n var removeDotInHeader = headerInfo.split('.').join('');\r\n var removeNInHeader = removeDotInHeader.replace('/n', '');\r\n var removeHashInHeader = removeNInHeader.replace('#', '');\r\n var removeUTCInHeader = removeHashInHeader.replace('(UTC)', '');\r\n var finalHeaderColumn = removeUTCInHeader.replace('(°C)', '');\r\n return ;\r\n }\r\n\r\n generateSheetInfo() {\r\n var columnInfo = [];\r\n if (this.state.headerData != null && this.state.headerData.length > 0) {\r\n $.each(this.state.headerData, function (i, iVal) {\r\n var sheetObject = self.getSheetInfo(iVal.headerName);\r\n columnInfo.push(sheetObject);\r\n });\r\n }\r\n\r\n return \r\n {columnInfo}\r\n ;\r\n }\r\n\r\n downloadExcel(formName: string, isFileDownload: boolean) {\r\n var currentDate = new Date();\r\n self.setState({\r\n fileTitle: formName + currentDate.getDate() + currentDate.getMonth() + currentDate.getFullYear() + currentDate.getHours() + currentDate.getMinutes() + currentDate.getSeconds(),\r\n isDownload: isFileDownload\r\n }, () => self.renderSheets());\r\n }\r\n\r\n static applySheetData(sheetData: any, formName: string) {\r\n self.setState({ excelData: sheetData.ColumnData, headerData: sheetData.HeaderData }, () => self.downloadExcel(formName == '' ? self.props.formName : formName, true));\r\n }\r\n\r\n public render() {\r\n return
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n }>\r\n {this.state.sheetInfo}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Email
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n}"],"sourceRoot":""}