{"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/Possibledamage.svg","images/ClearPD.svg","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/RSSI/RSSI_UNK.png","images/MapPushPins/chassis_orange.png","images/fenceGrey.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","SelectedPod","SelectedPol","SelectedCTProfileIds","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","PossibleDamageFormatter","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","Pols","Pods","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","pols","polOptions","pods","podOptions","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","PolChange","onInputChange","substr","PodChange","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","DimiTermSorting","DimiRemainTermFormatter","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","DimiTermTermGrouping","CTDurationGrouping","CTRemainingTimeGrouping","TemperatureFormatterGrouping","BookingTemperatureFormatterGrouping","dateTypeGrouping","GPSCoordsFormatterGrouping","HumiditySetpointStatus","HumiditySetpointGrouping","DimiResultActuator","DimiResultAlarm","DimiResultOOR","DimiResultTerm","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","PossibleDamageFormatterGrouping","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","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","PossibleDamage","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","DimiTermQualifier","DimiTerm","CTDuration","CTRemainingTime","AirPumpRunHours","CARunHours","CASoftwareRevision","CompressorRunHours","TemperatureUnit","NormalCC","isCargocare","minutesVal","hours","seconds","GPSLatitude","GPSLongitude","currentValue1","currentValue2","currentValue3","phases","ReeferOemTypeCd","TWState","DimiMode","DimiResultValidity","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","loadPols","loadPods","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","getDeviceTypeValidationTripLink","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","validateFirmwareAndSoftware","isValidFW","isValidSW","scopeOptionListTripLink","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","DamageCheck","clearDamage","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","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","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","wgColdTreatment","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","CTSummaryTimer","TotalReeferStatusTimer","chartHistogram","chartmicro","chartcargo","chartColdtreatment","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","ColdTreatment","TotalDrys","TotalChassis","TotalGensets","ReeferMaps","ReeferGrid","GensetGrid","DryGrid","ChassisGrid","ReeferTempGraph","BindCharts","BindColdTreatmentChart","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","ColdTreatmentSummary","CargoCareCTProfilesSelected","CTStateEnabled","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","selectedCCProfileId","UpdateCTCharts","ColdTreatmentTick","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","OnTrip","NotStarted","Started","Restarted","Failed","Successful","PowerOff","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","onCTProfileFilterClick","onCTProfileFilterClickClose","selectAllCTProfiles","renderToogleCargoCareCTProfiles","OnSubmitCTFilters","AllGensets","onTGWidgetClick","onTGWidgetClickClose","handleWidgetCheckTotalGensets","GRPO","GLON","GRPOFF","GLPO","AllDrys","onTDWidgetClick","onTDWidgetClickClose","TotalDryInsideGeofence","TotalDryOutSideGeofence","PoweredInGeofence","PoweredNotInGeofence","NotPoweredInGeofence","NotPoweredNotInGeofence","renderAddGeofenceControl","CCPCodes","divReefersMAAlarmTitle","RefreshSearchControls","renderCargoCareProfilesHtml","cargoCareProfilesHtml","OnChangeCargoCareFilter","renderCargoCareCTProfilesHtml","OnChangeCargoCareCTFilter","checkboxes","CCPSelected","CCPCTSelected","ccProfileCode","isViaEvent","profileCheck","cargoCareProfilesSelected","profileExists","cargoCareCTProfilesSelected","loopOnce","GetUserCCPProfileFiltersWhenAllUncheked","isFromClose","selectedCTProfileId","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","PossibleDamageForExcel","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.4dd4c517.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, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] \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 SelectedPod: self.state.tempFilters.SelectedPod,\r\n SelectedPol: self.state.tempFilters.SelectedPol,\r\n SelectedCTProfileIds: self.state.tempFilters.SelectedCTProfileIds\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: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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: \"Possible damage\", field: \"PossibleDamage\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PossibleDamage\"); }, cellRenderer: DryCellRenderer.PossibleDamageFormatter, 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,\r\n SelectedVoyage: null, SelectedCargoCareProfiles: null, //WI-26881\r\n SelectedPol: null, SelectedPod: null, SelectedCTProfileIds: []\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() - 460);\r\n $(\"#ReeferStatusGrid .ag-root-wrapper-body\").css('height', $(window).height() - 460);\r\n $(\"#ReeferStatusGrid .ag-root-wrapper-body\").css('max-height', $(window).height() - 460);\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 term start\", 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 term (d)\", field: \"DimiTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"OEM PTI term rem (d)\", 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 \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 SelectedPol: '', SelectedPod: '', SelectedCTProfileIds: []\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 \"DimiTerm\":\r\n return Formatters.DimiTermTermGrouping(fieldValue);\r\n\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; var DimiResultTerm;\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 DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR,DimiResultTerm);\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,iVBORw0KGgoAAAANSUhEUgAAABsAAAAXCAYAAAD6FjQuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+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/FRgAAAKtJREFUeNpi/P//PwO9AAstDD11+vQ0BgaGTCSh6WamplkM////pzo+eerU/49ffsDxyVOn/v///5+BiYGOgK6WsdAifmiZQDI1tPTgnBvXLmUOimAcvHFGSvxQI86Ijp/ROKNK/JAaZxTFz+CIs2eMzNOeMTL/R8LTaBlnmVLJrnDBZ3N3Zw751Dh8LWP8//8/AzRBoOSpJ6dOMODIZ2SJmZmaZjHSs3UFGACSopAglM73ugAAAABJRU5ErkJggg==\"","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,\r\n SelectedVoyage: null, SelectedCall: null, SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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 {\r\n headerName: \"Possible damage\", field: \"PossibleDamage\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PossibleDamage\"); }, cellRenderer: DryCellRenderer.PossibleDamageFormatter, 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 \"PossibleDamage\": \r\n return DryCellRenderer.PossibleDamageFormatterGrouping(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, SelectedPod: null, SelectedPol: null, //WI-26881\r\n SelectedCTProfileIds: [] \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 case 'PossibleDamage':\r\n if (params.data.PossibleDamage != null && params.data.PossibleDamage.toString().toUpperCase() == \"TRUE\")\r\n return 'Check';\r\n else if(params.data.PossibleDamage != null && params.data.PossibleDamage.toString().toUpperCase() == \"FALSE\")\r\n return 'Clear';\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 term rem (d)';\r\n },\r\n DimiTermTermGrouping: (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 term (d)';\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 PTI\" : params.toUpperCase().trim() == \"SHORTPTI\" ? \"Short PTI\" : 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 PossibleDamageForExcel: (params) => {\r\n var valueString = \"-NA-\";\r\n if (params == 'Check')\r\n valueString = 'Check';\r\n else if(params == 'Clear')\r\n valueString = 'Clear';\r\n else\r\n valueString = \"-NA-\";\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 && params.data.DimiTermQualifier != null && params.data.DimiTermQualifier != undefined) {\r\n if (params.data.DimiTermQualifier.toString().toUpperCase().trim() == \"OFF\") {\r\n return \"Off\";\r\n }\r\n else 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 if (params.data.DimiRemainTerm == 0)\r\n //return 1;\r\n else\r\n return Math.ceil(params.data.DimiRemainTerm/24);\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 DimiTermSorting: (params) => {\r\n if (params != null && params != undefined) {\r\n if (params.data != null && params.data != undefined && params.data.DimiTermQualifier != null && params.data.DimiTermQualifier != undefined) {\r\n if (params.data.DimiTermQualifier.toString().toUpperCase().trim() == \"OFF\") {\r\n return \"Off\";\r\n }\r\n else if (params.data.DimiTerm != null && params.data.DimiTerm != undefined) {\r\n if (params.data.DimiTerm.toString().trim() == \"-999\")\r\n return \"OOR\";\r\n \r\n else\r\n return params.data.DimiTerm;\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\r\n var TripWiseStatusDescription = '-NA-';\r\n\r\n if (params != null && params != undefined) {\r\n\r\n if (params.data != null && params.data != undefined && params.data.ReeferOemTypeCd != null && params.data.ReeferOemTypeCd.toUpperCase().trim() != \"D\") {\r\n\r\n if (params.data.TWState != undefined) {\r\n\r\n return params.data.TWState;\r\n\r\n }\r\n\r\n else\r\n\r\n return TripWiseStatusDescription;//-999;\r\n\r\n }\r\n\r\n\t\telse{\r\n\r\n\t\tif (params != null && params != undefined && params.data != null && params.data != null && params.data != undefined){\r\n\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n\r\n TripWiseStatusDescription = 'Off';\r\n\r\n }\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\r\n params.data.DimiResultOOR == \"Passed\" && params.data.DimiResultTerm == \"Passed\"\r\n&& params.data.DimiResultValidity == \"Passed\") {\r\n\r\n TripWiseStatusDescription = \"Passed\";\r\n\r\n }\r\n\r\n else if ((params.data.DimiResultValidity == \"Failed\") && (\r\n\r\n (params.data.DimiResultActuator == \"Passed\" || params.data.DimiResultActuator == \"Unknown\") &&\r\n\r\n (params.data.DimiResultAlarm == \"Passed\" || params.data.DimiResultAlarm == \"Unknown\") &&\r\n\r\n (params.data.DimiResultOOR == \"Passed\" || params.data.DimiResultOOR == \"Unknown\") &&\r\n\r\n (params.data.DimiResultTerm == \"Passed\" || params.data.DimiResultTerm == \"Unknown\"))) {\r\n\r\n TripWiseStatusDescription = \"Expired\";\r\n\r\n }\r\n\r\n else if ((params.data.DimiResultActuator == \"Unknown\" || params.data.DimiResultAlarm == \"Unknown\"\r\n\r\n || params.data.DimiResultOOR == \"Unknown\" || params.data.DimiResultTerm == \"Unknown\"\r\n\r\n || params.data.DimiResultValidity == \"Unknown\") &&\r\n\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\" &&\r\n\r\n params.data.DimiResultValidity != \"Failed\")) {\r\n\r\n TripWiseStatusDescription = \"Unknown\";\r\n\r\n }\r\n\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\"\r\n\r\n || params.data.DimiResultOOR == \"Failed\" || params.data.DimiResultTerm == \"Failed\") {\r\n\r\n TripWiseStatusDescription = \"Check\";\r\n\r\n }\r\n\r\n }\r\n\r\n\t}\r\n\r\n\treturn TripWiseStatusDescription;\r\n\r\n }\r\n\r\n }\r\n\r\n}, \r\n\r\nTripWiseGrouping: (param) => {\r\n\r\n if (param != null && param != undefined && param != \"null\") {\r\n\r\n switch (param) {\r\n\r\n case '0':\r\n\r\n return '' + \" \" + \"Off\";\r\n\r\n case '1':\r\n\r\n return '' + \" \" + \"Expired\";\r\n\r\n case '2':\r\n\r\n return '' + \" \" + \"Check\";\r\n\r\n case '3':\r\n\r\n return '' + \" \" + \"Passed\";\r\n\r\n case '4':\r\n\r\n return '' + \" \" + \"Running\";\r\n\r\n case '5':\r\n\r\n return '' + \" \" + \"Unknown\";\r\n\r\n }\r\n\r\n }\r\n\r\n},\r\n\r\nTwStateForFilter: (params) => {\r\n\r\n if (params.data != null && params.data != undefined) {\r\n\r\n if (params.data.ReeferOemTypeCd != null && params.data.ReeferOemTypeCd != undefined && params.data.ReeferOemTypeCd.toString().toUpperCase().trim() != 'D') {\r\n\r\n if (params.data.TWState != undefined) {\r\n\r\n switch (params.data.TWState) {\r\n\r\n case 0:\r\n\r\n return 'Off';\r\n\r\n case 1:\r\n\r\n return 'Expired';\r\n\r\n case 2:\r\n\r\n return 'Check';\r\n\r\n case 3:\r\n\r\n return 'Passed';\r\n\r\n case 4:\r\n\r\n return 'Running';\r\n\r\n case 5:\r\n\r\n return 'Unknown';\r\n\r\n }\r\n\r\n }\r\n\r\n return '-NA-';\r\n\r\n }\r\n\r\n else {\r\n\r\n if (params.data.DimiMode != null && params.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n\r\n return 'Off';\r\n\r\n }\r\n\r\n 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\r\n params.data.DimiResultOOR == \"Passed\" && params.data.DimiResultTerm == \"Passed\"\r\n&& params.data.DimiResultValidity == \"Passed\") {\r\n\r\n return \"Passed\";\r\n\r\n }\r\n\r\n else if ((params.data.DimiResultValidity == \"Failed\") && (\r\n\r\n (params.data.DimiResultActuator == \"Passed\" || params.data.DimiResultActuator == \"Unknown\") &&\r\n\r\n (params.data.DimiResultAlarm == \"Passed\" || params.data.DimiResultAlarm == \"Unknown\") &&\r\n\r\n (params.data.DimiResultOOR == \"Passed\" || params.data.DimiResultOOR == \"Unknown\") &&\r\n\r\n (params.data.DimiResultTerm == \"Passed\" || params.data.DimiResultTerm == \"Unknown\"))) {\r\n\r\n return \"Expired\";\r\n\r\n }\r\n\r\n else if ((params.data.DimiResultActuator == \"Unknown\" || params.data.DimiResultAlarm == \"Unknown\"\r\n\r\n || params.data.DimiResultOOR == \"Unknown\" || params.data.DimiResultTerm == \"Unknown\"\r\n\r\n || params.data.DimiResultValidity == \"Unknown\") &&\r\n\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\" &&\r\n\r\n params.data.DimiResultValidity != \"Failed\")) {\r\n\r\n return \"Unknown\";\r\n\r\n }\r\n\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\"\r\n\r\n || params.data.DimiResultOOR == \"Failed\" || params.data.DimiResultTerm == \"Failed\") {\r\n\r\n return \"Check\";\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n},\r\n\r\n TripWiseGroupingForExcel: (fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm, DimiMode, DimiResultValidity) => {\r\n\r\n var TripWiseStatusDescription = '*No OEM PTI';\r\n if (fieldValue != null && fieldValue != undefined && fieldValue != \"null\") {\r\n switch (fieldValue.toString()) {\r\n\r\n case 'Off': case '0':\r\n\r\n return 'Off';\r\n\r\n case 'Expired': case '1':\r\n\r\n return 'Expired';\r\n\r\n case 'Check': case '2':\r\n\r\n return 'Check';\r\n\r\n case 'Passed': case '3':\r\n\r\n return 'Passed';\r\n\r\n case 'Running': case '4':\r\n\r\n return 'Running';\r\n\r\n case 'Unknown': case '5':\r\n\r\n return 'Unknown';\r\n\r\n case null:\r\n\r\n return TripWiseStatusDescription;\r\n }\r\n }\r\n else\r\n return TripWiseStatusDescription;\r\n\r\n},\r\n \r\ntripWiseFormatterForExcel: (params) => {\r\n\r\n var TripWiseStatusDescription = '-NA-';\r\n\r\n if (params.node.data.ReeferOemTypeCd != null && params.node.data.ReeferOemTypeCd.toUpperCase().trim() != \"D\") {\r\n\r\n switch (params.value.toString()) {\r\n\r\n case '0':\r\n\r\n return 'Off';\r\n\r\n case '1':\r\n\r\n return 'Expired';\r\n\r\n case '2':\r\n\r\n return 'Check';\r\n\r\n case '3':\r\n\r\n return 'Passed';\r\n\r\n case '4':\r\n\r\n return 'Running';\r\n\r\n case '5':\r\n\r\n return 'Unknown';\r\n\r\n }\r\n\r\n return TripWiseStatusDescription;\r\n\r\n }\r\n\r\n else {\r\n \r\n if (params.node.data.DimiMode != null && params.node.data.DimiMode.toUpperCase().trim() == \"OFF\") {\r\n\r\n TripWiseStatusDescription = 'Off';\r\n\r\n }\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\r\n params.node.data.DimiResultOOR == \"Passed\" && params.node.data.DimiResultTerm == \"Passed\"\r\n && params.node.data.DimiResultValidity == \"Passed\") {\r\n\r\n TripWiseStatusDescription = \"Passed\";\r\n\r\n }\r\n\r\n else if ((params.node.data.DimiResultValidity == \"Failed\") && (\r\n\r\n (params.node.data.DimiResultActuator == \"Passed\" || params.node.data.DimiResultActuator == \"Unknown\") &&\r\n\r\n (params.node.data.DimiResultAlarm == \"Passed\" || params.node.data.DimiResultAlarm == \"Unknown\") &&\r\n\r\n (params.node.data.DimiResultOOR == \"Passed\" || params.node.data.DimiResultOOR == \"Unknown\") &&\r\n\r\n (params.node.data.DimiResultTerm == \"Passed\" || params.node.data.DimiResultTerm == \"Unknown\"))) {\r\n\r\n TripWiseStatusDescription = \"Expired\";\r\n\r\n }\r\n\r\n else if ((params.node.data.DimiResultActuator == \"Unknown\" || params.node.data.DimiResultAlarm == \"Unknown\"\r\n\r\n || params.node.data.DimiResultOOR == \"Unknown\" || params.node.data.DimiResultTerm == \"Unknown\"\r\n\r\n || params.node.data.DimiResultValidity == \"Unknown\") &&\r\n\r\n (params.node.data.DimiResultActuator != \"Failed\" && params.node.data.DimiResultAlarm != \"Failed\" &&\r\n\r\n params.node.data.DimiResultOOR != \"Failed\" && params.node.data.DimiResultTerm != \"Failed\" &&\r\n\r\n params.node.data.DimiResultValidity != \"Failed\")) {\r\n\r\n TripWiseStatusDescription = \"Unknown\";\r\n\r\n }\r\n\r\n else if (params.node.data.DimiResultActuator == \"Failed\" || params.node.data.DimiResultAlarm == \"Failed\"\r\n\r\n || params.node.data.DimiResultOOR == \"Failed\" || params.node.data.DimiResultTerm == \"Failed\") {\r\n\r\n TripWiseStatusDescription = \"Check\";\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n return TripWiseStatusDescription;\r\n\r\n},\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 && params.node.data.DimiResultValidity == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((params.node.data.DimiResultValidity == \"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 (params.node.data.DimiResultTerm == \"Passed\" || params.node.data.DimiResultTerm == \"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.DimiResultValidity == \"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 params.node.data.DimiResultValidity != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (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 = \"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; var DimiResultTerm;\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 DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue, ReeferOEMTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm);\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: '',\r\n CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '',\r\n SelectedVoyage: '', SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: []//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 Pols: any[];//RCNG5588\r\n Pods: any[];//RCNG5588\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: '', SelectedPol: '', SelectedPod: '', SelectedCTProfileIds: [] //RCNG5588\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 if (this.props.previousState.SelectedPol != null) {\r\n filter.SelectedPol = this.props.previousState.SelectedPol;\r\n }\r\n if (this.props.previousState.SelectedPod != null) {\r\n filter.SelectedPod = this.props.previousState.SelectedPod;\r\n }\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: [], Pols: [], Pods: [] //RCNG5588\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 this.loadPols();//RCNG5588\r\n this.loadPods();//RCNG5588\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 filters.SelectedPol = userPreference.SelectedPol;\r\n filters.SelectedPod = userPreference.SelectedPod;\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\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 //RCNG5588\r\n loadPols() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetPOLDetails');\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({ Pols: data });\r\n });\r\n }\r\n loadPods() {\r\n var request = RCUtils.FetchRequest(Config.ApiBaseUrl + '/api/CargoCareProfile/GetPODDetails');\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({ Pods: data });\r\n });\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 filters.SelectedPol = \"\";\r\n filters.SelectedPod = \"\";\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 //RCNG-5880\r\n if (filters.SelectedPol != userPreference.SelectedPol)\r\n isModified = false;\r\n\r\n if (filters.SelectedPod != userPreference.SelectedPod)\r\n isModified = false;\r\n\r\n if (filters.SelectedCargoCareProfiles != userPreference.SelectedCargoCareProfiles)\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 //RCNG5588\r\n case \"POL\":\r\n filters.SelectedPol = \"\";\r\n return;\r\n case \"POD\":\r\n filters.SelectedPod = \"\";\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 //RCNG5588\r\n PolChange(value) {\r\n var filters = this.state.Filters;\r\n filters.SelectedPol = value;\r\n this.setState({ Filters: filters });\r\n }\r\n PodChange(value) {\r\n var filters = this.state.Filters;\r\n filters.SelectedPod = 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 filters.SelectedPol = UserPreference.SelectedPol; \r\n filters.SelectedPod = UserPreference.SelectedPod; \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 //RCNG5588\r\n var pols = this.state.Pols;\r\n if (pols != undefined && pols != null && pols.length > 0) {\r\n\r\n var polOptions = pols.map(function (POL) {\r\n\r\n return (\r\n { value: POL.POL, label: POL.POL }\r\n );\r\n });\r\n }\r\n\r\n var pods = this.state.Pods;\r\n if (pods != undefined && pods != null && pods.length > 0) {\r\n\r\n var podOptions = pods.map(function (POD) {\r\n\r\n return (\r\n { value: POD.POD, label: POD.POD }\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 //RCNG5588\r\n case \"POL\":\r\n return (\r\n /*UserRights.checkMenuItemVisibility('247')[0] == \"hidden\" ? '' :*/\r\n
    \r\n false}\r\n onInputChange={inputValue =>\r\n (inputValue.length <= 30 ? inputValue : inputValue.substr(0, 30))\r\n }\r\n />\r\n
    );\r\n\r\n case \"POD\":\r\n return (\r\n /*UserRights.checkMenuItemVisibility('247')[0] == \"hidden\" ? '' :*/\r\n
    \r\n false}\r\n onInputChange={inputValue =>\r\n (inputValue.length <= 30 ? inputValue : inputValue.substr(0, 30))\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\r\n if (this.props.reeferData[0].DeviceType.trim().toUpperCase() == \"TRIPLINK\")\r\n this.getDeviceTypeValidationTripLink(this.props.reeferData, this.props.reeferData[0].DeviceType)\r\n else\r\n this.getDeviceTypeValidation(this.props.reeferData, this.props.reeferFormatter);\r\n\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\r\n if (reeferData[0].DeviceType.trim().toUpperCase() == \"TRIPLINK\")\r\n this.getDeviceTypeValidationTripLink(reeferData, reeferData[0].DeviceType);\r\n else\r\n this.getDeviceTypeValidation(reeferData, nextprops.reeferFormatter);\r\n\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 getDeviceTypeValidationTripLink(reeferData: any, DeviceType: string) {\r\n\r\n if (reeferData != null && reeferData.length > 0) {\r\n if (!(reeferData[0].ReeferOEMTypeCd == null || reeferData[0].ReeferOEMTypeCd == undefined)) {\r\n if (DeviceType.trim().toUpperCase() == \"TRIPLINK\") {\r\n if (reeferData[0].ReeferOEMTypeCd.trim() == \"C\") {\r\n\r\n const { isValidFW, isValidSW } = this.validateFirmwareAndSoftware(reeferData[0].RCDFirmwareVersion, reeferData[0].SoftwareRevision);\r\n\r\n if (isValidFW && isValidSW) {\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 var scopeOptionListTripLink = [];\r\n scopeOptionListTripLink.push({ 'key': 'LastTrip', 'value': 'LastTrip', 'display': 'Latest trip' });\r\n\r\n scopeOptionListTripLink.push({ 'key': 'Last30Days', 'value': 'Last30Days', 'display': 'Last 30 days' });\r\n scopeOptionListTripLink.push({ 'key': 'Last60Days', 'value': 'Last60Days', 'display': 'Last 60 days' });\r\n scopeOptionListTripLink.push({ 'key': 'Last90Days', 'value': 'Last90Days', 'display': 'Last 90 days' });\r\n\r\n scopeOptionListTripLink.push({ 'key': 'DateRange', 'value': 'DateRange', 'display': 'Specific date range' });\r\n scopeOptionListTripLink.push({ 'key': 'EntireDatalog', 'value': 'EntireDatalog', 'display': 'Entire log' });\r\n\r\n this.setState({ IsScopeVisible: true, IsDateRangeDisabled: true, ValidState: true, scopeOptions: scopeOptionListTripLink });\r\n }\r\n else {\r\n this.setState({ ValidState: false });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n validateFirmwareAndSoftware(RCDFirmwareVersion: string, SoftwareRevision: string): { isValidFW: boolean, isValidSW: boolean } {\r\n\r\n let isValidFW = false;\r\n let isValidSW = false;\r\n\r\n const regexFW = /^\\d\\.\\d{2}$/; //single digit and then two decimal places\r\n if (!regexFW.test(RCDFirmwareVersion)) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Device FW ver does not support this command.\");\r\n return { isValidFW, isValidSW };;\r\n } else {\r\n const DeviceFW = parseFloat(RCDFirmwareVersion);\r\n if (DeviceFW >= 2.20) {\r\n isValidFW = true;\r\n } else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Device FW ver is not valid.\");\r\n return { isValidFW, isValidSW };;\r\n }\r\n }\r\n\r\n const regexSW = /^\\d{4}$/; //must have 4 digit\r\n if (!regexSW.test(SoftwareRevision)) {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Cont SW version does not support this command.\");\r\n return { isValidFW, isValidSW };;\r\n } else {\r\n const ContSWversion = parseInt(SoftwareRevision);\r\n if (ContSWversion >= 6318) {\r\n isValidSW = true;\r\n } else {\r\n PopupWindow.showErrorMessage(\"Alert\", \"Cont SW version is not valid.\");\r\n return { isValidFW, isValidSW };;\r\n }\r\n }\r\n\r\n return { isValidFW, isValidSW };\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\nimport DamageCheck from '../images/Possibledamage.svg';\r\nimport clearDamage from '../images/ClearPD.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 static PossibleDamageFormatter(params) {\r\n\r\n if (params.data != null && params.data != undefined) {\r\n if(params.value == 'Check')\r\n return ;\r\n else if (params.value == 'Clear')\r\n return ;\r\n else\r\n return '-NA-';\r\n \r\n }\r\n return '-NA-';\r\n }\r\n static PossibleDamageFormatterGrouping(param) {\r\n\r\n if (param != null && param != undefined) {\r\n if (param == 'NA') return '*No Possible Damage';\r\n else {\r\n if ( param == 'Check')\r\n return
    Check
    ;\r\n else\r\n return
    Clear
    ;\r\n }\r\n }\r\n return \"*No Possible Damage\"\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,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/FRgAAAMNJREFUeNpi/M/A8J+BAGBCF2AkRhE2YwEAAAD//2IkZB0TyW5BBwAAAAD//2IkxkeU20INQ4hxJgAAAP//oo93Rg0hDwAAAAD//6JK7Awa3wwKhzCOhggZxcSQChEAAAAA//8azTWjDqGpQ2aNhshIcMhoOTLqEEIAAAAA//8aNGlkNGZGA2Q0QAiCPdAuADKeNcABwjKQlt+jci9g2GQZ5BRybySnEIbRFIIKlLCkkIrRdshoLTMaIEMJAAAAAP//AwBr0RuQUjFlkQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","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 { 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,\r\n CustomAttributeFilters: null, SelectedAssetTypes: null, SelectedAssetStates: null, SelectedBookingNumber: null, SelectedVesselCD: null, SelectedVoyage: null,\r\n SelectedCall: null, SelectedCargoCareProfiles: null, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] //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: '',\r\n CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '',\r\n SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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+IDwvcmRmOlJERj4gPC94OnhtcG1l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\"","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 /* 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 POL = \"POL\", /* Added POL and POD for RCNG - 5518 */\r\n POD = \"POD\"\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: '',\r\n CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '',\r\n SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] \r\n };//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, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] //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: '',\r\n CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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 term start\", 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 term (d)\", field: \"DimiTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130 },\r\n { headerName: \"OEM PTI term rem (d)\", 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 \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,\r\n SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] //WI-26881\r\n\r\n}\r\nconst unloadedState: HomeState = {\r\n isLoading: false, searchFilters: emptySearchFilter, gridType: '', allAssetStatus: [], reeferStatus: [], gensetStatus: [],\r\n dryStatus: [], chassisStatus: [], performCargoAction: false, reeferFormatter: null, reeferConfigTypes: null, refApplicationParams: null, tripWISESupportdeviceTypes: null, eventsRefreshed: false, SearchLoadingIsInProgress: false\r\n};\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,\r\n SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null, SelectedPol: null, SelectedPod: null, SelectedCTProfileIds: [] //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,\r\n SelectedBookingNumber: null, SelectedVesselCD: null, SelectedCall: null, SelectedVoyage: null, SelectedCargoCareProfiles: null, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] //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,\r\n SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: []//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: \"Possible damage\", field: \"PossibleDamage\", enableRowGroup: false, cellClass: 'myExcelStyle', sortable: true, filter: false, resizable: true,\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PossibleDamage\"); }, cellRenderer: DryCellRenderer.PossibleDamageFormatter, 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 case \"PossibleDamage\":\r\n return DryCellRenderer.PossibleDamageFormatterGrouping(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 SelectedPol: searchState.SelectedPol,\r\n SelectedPod: searchState.SelectedPod,\r\n SelectedCTProfileIds:searchState.SelectedCTProfileIds\r\n\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 && params.data.DimiResultValidity == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((params.data.DimiResultValidity == \"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 (params.data.DimiResultTerm == \"Passed\" || params.data.DimiResultTerm == \"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.DimiResultValidity == \"Unknown\") &&\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\" &&\r\n params.data.DimiResultValidity != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\"\r\n || params.data.DimiResultOOR == \"Failed\" || params.data.DimiResultTerm == \"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: '',\r\n SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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: '',\r\n CustomAttributeFilters: null, SelectedAssetTypes: '', SelectedAssetStates: '', SelectedBookingNumber: '', SelectedVesselCD: '', SelectedVoyage: '', SelectedCall: '', SelectedCargoCareProfiles: '',\r\n SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] \r\n\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 {\r\n headerName: \"Possible damage\", field: \"PossibleDamage\",\r\n valueGetter: (params) => { return Formatters.stringTypeSortingFieldName(params, \"PossibleDamage\"); }, cellRenderer: DryCellRenderer.PossibleDamageFormatter, width: 140, onCellClicked: this.onCellClickedCopy.bind(this)\r\n },\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 = __webpack_public_path__ + \"static/media/Possibledamage.0b8423f6.svg\";","module.exports = __webpack_public_path__ + \"static/media/ClearPD.09d56e99.svg\";","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 $('#PTRPopUP').removeClass('show');\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 state\", 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 state\", 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 state\", 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 state\", 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;var DimiResultValidity = 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 DimiResultValidity = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultValidity;\r\n }\r\n return ReeferCellRenderer.TripWiseGrouping(fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm, DimiMode,DimiResultValidity);\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 ColdTreatmentSummary: server.CTUnitSummaryModel;\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 CargoCareCTProfilesSelected: 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 CTStateEnabled: boolean;\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 wgColdTreatment: 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,\r\n SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: []//WI-26881\r\n \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 CTSummaryTimer: any;\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 chartColdtreatment: 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, ColdTreatmentSummary: {}, CargoCareCTProfilesSelected: [], CTStateEnabled:true\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 this.state.WGSwitchAll.ColdTreatment = 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 wgColdTreatment = UserRights.checkMenuItemVisibility('271');\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, wgCTPosY = 53, 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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { \"hasRight\": wgColdTreatment[0], \"minW\": 12, \"minH\": isSOLogedin ? 10.3 : 13, \"w\": 12, \"h\": isSOLogedin ? 10.3 : 13, \"x\": 0, \"y\": wgCTPosY, \"i\": \"wgColdTreatment\", \"moved\": false, \"static\": false, \"isDraggable\": true, \"isResizable\": false }\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 { hasRight: wgColdTreatment[0], Key: \"wgColdTreatment\", Layout: this.GetItemLayout(\"wgColdTreatment\", 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 onCTProfileFilterClickClose(e) {\r\n $('#CTProfileFilter').css(\"display\", \"none\");\r\n }\r\n\r\n onCTProfileFilterClick(e) {\r\n isSaveLayout = true;\r\n //console.log(\"onCCProfileFilterClick: \"+isSaveLayout);\r\n setTimeout(() => {\r\n //self.BindCargoCareProfileFilters(); // Todo\r\n $('[id^=drop-down-inv]').css(\"display\", \"none\");\r\n $('#drop-down-inv-cc').css(\"display\", \"none\");\r\n $('#CTProfileFilter').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\",\"wgColdTreatment\", \"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 \"wgColdTreatment\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ColdTreatment: 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\",\"wgColdTreatment\", \"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 \"wgColdTreatment\": self.setState({ WGSwitchAll: { ...self.state.WGSwitchAll, ColdTreatment: 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 (wgColdTreatment[0] != \"hidden\") {\r\n setTimeout(() => { \r\n $('#CTHeaderLoader').show();\r\n var selectedCCProfileId: any = self.state.CargoCareCTProfilesSelected.length > 0 ? self.state.CargoCareCTProfilesSelected : \"0\";\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummaryCT?CCPProfile=' + selectedCCProfileId;\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').hide();\r\n this.setState({ ColdTreatmentSummary: data, loading: false }, () => {\r\n this.BindColdTreatmentChart();\r\n this.UpdateCTCharts();\r\n $('#CTHeaderLoader').hide();\r\n });\r\n });\r\n\r\n this.CTSummaryTimer = setInterval(\r\n () => {\r\n if (this.state.SearchLoadingIsInProgress == false) {\r\n //console.log(\"CT setInterval if part, value of SearchLoadingIsInProgress is \" + this.state.SearchLoadingIsInProgress);\r\n this.ColdTreatmentTick();\r\n }\r\n else {\r\n //console.log(\"CT 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 }\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 }, () => { \r\n $('#totalReefersLoader').show();\r\n $('#headerLoader').show();\r\n //$('#CTHeaderLoader').show(); \r\n this.TotalReeferStatusSummary(false) })\r\n else {\r\n $('#totalReefersLoader').show();\r\n $('#headerLoader').show();\r\n //$('#CTHeaderLoader').show();\r\n \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 this.state.WGSwitchAll.ColdTreatment = 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 if (hasReefers) {\r\n this.BindCharts();\r\n this.BindColdTreatmentChart();\r\n }\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 == \"wgColdTreatment\") {\r\n\r\n if (this.state.WGSwitchAll.ColdTreatment == 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: \"wgColdTreatment\", Layout: this.GetItemLayout(\"wgColdTreatment\", 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, ColdTreatment: !this.state.WGSwitchAll.ColdTreatment } });\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 if (hasReefers) {\r\n this.BindCharts();\r\n this.BindColdTreatmentChart();\r\n }\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 filters.SelectedPol = \"\";\r\n filters.SelectedPod = \"\";\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 ColdTreatmentTick(){\r\n if (this.state.WGSwitchAll.ColdTreatment) {\r\n $('#CTHeaderLoader').show();\r\n var selectedCCProfileId: any = self.state.CargoCareCTProfilesSelected.length > 0 ? self.state.CargoCareCTProfilesSelected : \"0\";\r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummaryCT?CCPProfile=' + selectedCCProfileId;\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 this.setState({ ColdTreatmentSummary: data, loading: false }, () => {\r\n this.UpdateCTCharts();\r\n $('#CTHeaderLoader').hide();\r\n });\r\n });\r\n } \r\n }\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 //$('#CTHeaderLoader').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 var filters = this.state.Filters; //RCNG5906-Added Profile Filter\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 else if (value == \"OnTrip\") {\r\n statusfilters.push(ReeferStatusEnum.OnTrip);\r\n filters.SelectedCTProfileIds = self.state.CargoCareCTProfilesSelected; //RCNG5906-Added Profile Filter\r\n }\r\n else if (value == \"NotStarted\") {\r\n statusfilters.push(ReeferStatusEnum.NotStarted);\r\n filters.SelectedCTProfileIds = self.state.CargoCareCTProfilesSelected; //RCNG5906-Added Profile Filter\r\n }\r\n else if (value == \"Started\") {\r\n statusfilters.push(ReeferStatusEnum.Started);\r\n filters.SelectedCTProfileIds = self.state.CargoCareCTProfilesSelected; //RCNG5906 - Added Profile Filter\r\n }\r\n else if (value == \"Restarted\") {\r\n statusfilters.push(ReeferStatusEnum.Restarted);\r\n filters.SelectedCTProfileIds = self.state.CargoCareCTProfilesSelected; //RCNG5906-Added Profile Filter\r\n }\r\n else if (value == \"Failed\") {\r\n statusfilters.push(ReeferStatusEnum.Failed);\r\n filters.SelectedCTProfileIds = self.state.CargoCareCTProfilesSelected; //RCNG5906-Added Profile Filter\r\n }\r\n else if (value == \"Successful\") {\r\n statusfilters.push(ReeferStatusEnum.Successful);\r\n filters.SelectedCTProfileIds = self.state.CargoCareCTProfilesSelected; //RCNG5906-Added Profile Filter\r\n }\r\n else if (value == \"PowerOff\") {\r\n statusfilters.push(ReeferStatusEnum.PowerOff);\r\n filters.SelectedCTProfileIds = self.state.CargoCareCTProfilesSelected; //RCNG5906-Added Profile Filter\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\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 BindColdTreatmentChart() {\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('chartcoldtreatment');\r\n if (typeof (element) != 'undefined' && element != null) {\r\n parent.chartColdtreatment = Highcharts.chart('chartcoldtreatment', {\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'column',\r\n height: 280\r\n },\r\n title: {\r\n text: ''\r\n }, \r\n xAxis: {\r\n type: 'category'\r\n },\r\n yAxis: {\r\n title: {\r\n text: 'Cold Treatment counts'\r\n }\r\n\r\n },\r\n tooltip: {\r\n pointFormat: ': {point.y}'\r\n },\r\n legend: {\r\n enabled: false\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']);\r\n }\r\n }\r\n }\r\n }, \r\n },\r\n series: [{\r\n name: 'ColdTreatment',\r\n //colorByPoint: true,\r\n data: [{ y: 1, id: '' }]\r\n }]\r\n });\r\n }\r\n parent.UpdateCTCharts();\r\n }, 10);\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 UpdateCTCharts() {\r\n if (this.chartColdtreatment != undefined && this.chartColdtreatment != null\r\n && this.chartColdtreatment.series != undefined && this.chartColdtreatment.series[0] != undefined) {\r\n this.chartColdtreatment.series[0].setData([\r\n {\r\n name: 'On Trip',\r\n id: 'OnTrip',\r\n y: this.state.ColdTreatmentSummary.OnTrip,\r\n color: '#045976',\r\n }, {\r\n name: 'Not Started',\r\n id: 'NotStarted',\r\n y: this.state.ColdTreatmentSummary.NotStarted,\r\n color: '#00a8ff'\r\n },\r\n {\r\n name: 'Started',\r\n id: 'Started',\r\n y: this.state.ColdTreatmentSummary.Started,\r\n color: '#fd7800'\r\n },\r\n {\r\n name: 'Restarted',\r\n id: 'Restarted',\r\n y: this.state.ColdTreatmentSummary.Restarted,\r\n color: '#615f60'\r\n },\r\n {\r\n name: 'Failed',\r\n id: 'Failed',\r\n y: this.state.ColdTreatmentSummary.Failed,\r\n color: '#ff0000'\r\n },\r\n {\r\n name: 'Successful',\r\n id: 'Successful',\r\n y: this.state.ColdTreatmentSummary.Successful,\r\n color: '#3ea538'\r\n },\r\n {\r\n name: 'Power Off',\r\n id: 'PowerOff',\r\n y: this.state.ColdTreatmentSummary.PowerOff,\r\n color: '#dfdfdf'\r\n }\r\n \r\n ]);\r\n\r\n if (this.state.ColdTreatmentSummary.OnTrip == 0 && this.state.ColdTreatmentSummary.NotStarted == 0 && this.state.ColdTreatmentSummary.Started == 0\r\n && this.state.ColdTreatmentSummary.Restarted == 0 && this.state.ColdTreatmentSummary.Failed == 0 && this.state.ColdTreatmentSummary.Successful == 0\r\n && this.state.ColdTreatmentSummary.PowerOff == 0) {\r\n this.chartColdtreatment.destroy();\r\n $('#chartcoldtreatment').html(\"
    No Data Available for Cold Treatment
    \"); //WI26386 renamed Gensets to Genset\r\n }\r\n }\r\n\r\n $('#CTHeaderLoader').hide();\r\n\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 if (hasReefers) {\r\n this.BindCharts();\r\n this.BindColdTreatmentChart();\r\n }\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
    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 == 'wgColdTreatment') {\r\n\r\n return
    \r\n
    \r\n
    \r\n
    Cold Treatment
    \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.renderToogleCargoCareCTProfiles() } \r\n
    \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 == '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 \r\n \r\n renderToogleCargoCareCTProfiles() {\r\n var cargoCareProfiles = this.state.CargoCareProfiles;\r\n if (cargoCareProfiles != undefined && cargoCareProfiles != null && cargoCareProfiles.length > 0) {\r\n //var cargoCareProfilesHtml = \"\";\r\n var renderCargoCareCTProfilesHtml: any[] = [];\r\n $.each(this.state.CargoCareProfiles, (index, item) => {\r\n var cargoCareProfilesHtml =
  • \r\n \r\n
  • \r\n renderCargoCareCTProfilesHtml.push(cargoCareProfilesHtml);\r\n });\r\n // {item.CargoCareCustomerProfileCode} \r\n return renderCargoCareCTProfilesHtml;\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 selectAllCTProfiles() {\r\n isSaveLayout = true;\r\n let checkboxes = document.getElementsByName('chkCTProfile');\r\n let chkSelectAll = document.getElementById(\"chkSelectAllCTProfile\");\r\n\r\n var CCPCTSelected: any[] = this.state.CargoCareCTProfilesSelected;\r\n CCPCTSelected = [];\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 CCPCTSelected.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({ CargoCareCTProfilesSelected: CCPCTSelected });\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 OnChangeCargoCareCTFilter(ccProfileId: any, isViaEvent: boolean, obj: any) {\r\n isSaveLayout = true;\r\n var cargoCareCTProfilesSelected: any[] = this.state.CargoCareCTProfilesSelected.length > 0 ? this.state.CargoCareCTProfilesSelected : [];// To do\r\n var profileCheck: any;\r\n let chkSelectAll = document.getElementById(\"chkSelectAllCTProfile\");\r\n let checkboxes = document.getElementsByName('chkCTProfile');\r\n //console.log(\"OnChangeCargoCareFilter: \"+isSaveLayout);\r\n var numberOfCheckboxes = $(\"input:checkbox[name=chkCTProfile]\").length;\r\n var numberOfCheckboxesChecked = $(\"input:checkbox[name=chkCTProfile]: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.CargoCareCTProfilesSelected.length == 0)\r\n cargoCareCTProfilesSelected = [];\r\n if (!cargoCareCTProfilesSelected.includes(ccProfileId)) {\r\n cargoCareCTProfilesSelected.push(ccProfileId);\r\n\r\n }\r\n if (numberOfCheckboxes == numberOfCheckboxesChecked)\r\n chkSelectAll.checked = true;\r\n\r\n }\r\n else {\r\n if (cargoCareCTProfilesSelected.length > 0) {\r\n var profileExists = cargoCareCTProfilesSelected.filter(x => x == ccProfileId);\r\n if (profileExists == profileExists) {\r\n cargoCareCTProfilesSelected.splice($.inArray(ccProfileId, cargoCareCTProfilesSelected), 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({ CargoCareCTProfilesSelected: cargoCareCTProfilesSelected });\r\n }\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 OnSubmitCTFilters(isFromClose: boolean){\r\n isSaveLayout = true;\r\n var filterCCProfileAlertssummary:any[] =[];\r\n var selectedCTProfileId: any = self.state.CargoCareCTProfilesSelected;\r\n if (selectedCTProfileId.length == 0 && isFromClose==false) {\r\n //PopupWindow.showErrorMessage('Error', \"Please select at least one profile.\");//RCNG-61\r\n //return;\r\n selectedCTProfileId = \"0\";\r\n }\r\n $('#globalLoader').show();\r\n \r\n var url = Config.ApiBaseUrl + '/api/reeferstatus/ReeferStatusSummaryCT?CCPProfile=' + selectedCTProfileId;\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 $('#CTProfileFilter').css(\"display\", \"none\");\r\n $('#globalLoader').hide();\r\n this.setState({ ColdTreatmentSummary: data, loading: false }, () => {\r\n if (!this.state.CTStateEnabled && data.OnTrip > 0)\r\n this.BindColdTreatmentChart();\r\n this.UpdateCTCharts();\r\n //$('#CTHeaderLoader').hide();\r\n });\r\n if (data.OnTrip == 0)\r\n this.setState({ CTStateEnabled: false });\r\n else\r\n this.setState({ CTStateEnabled: true });\r\n });\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
      Cold Treatment
      \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 ColdTreatment: 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 OnTrip=22,\r\n NotStarted=23,\r\n Started=24,\r\n Restarted=25,\r\n Failed=26,\r\n Successful=27,\r\n PowerOff=28\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: '',\r\n SelectedBookingNumber: '', SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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 'PossibleDamage':\r\n {\r\n return Formatters.PossibleDamageForExcel(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;var DimiResultValidity = 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 DimiResultValidity = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultValidity;\r\n }\r\n return Formatters.TripWiseGroupingForExcel(fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm, DimiMode,DimiResultValidity);\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 'PossibleDamage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.PossibleDamageForExcel(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':case 'DimiTerm': 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 'PossibleDamage': \r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.PossibleDamageForExcel(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':case 'DimiTerm': 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,\r\n SelectedCargoCareProfiles: null, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] //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, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] //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: '', SelectedPol: '', SelectedPod: '', SelectedCTProfileIds: [] //RCNG5906-Added Profile Filter\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 filterset.SelectedPol = (filters.SelectedPol == \"\" || filters.SelectedPol == undefined) ? null : filters.SelectedPol; \r\n filterset.SelectedPod = (filters.SelectedPod == \"\" || filters.SelectedPod == undefined) ? null : filters.SelectedPod; \r\n filterset.SelectedCTProfileIds = (filters.SelectedCTProfileIds == null || filters.SelectedCTProfileIds == undefined) ? null : filters.SelectedCTProfileIds; //RCNG5906-Added Profile Filter\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 term start\", 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 term (d)\", field: \"DimiTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"OEM PTI term rem (d)\", 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 \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 \"DimiTerm\":\r\n return Formatters.DimiTermTermGrouping(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; var DimiResultTerm;\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 DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR,DimiResultTerm);\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;var DimiResultValidity=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 DimiResultValidity = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultValidity;\r\n }\r\n return Formatters.TripWiseGroupingForExcel(fieldValue, ReeferOemTypeCd, DimiResultActuator, DimiResultAlarm, DimiResultOOR, DimiResultTerm,DimiMode,DimiResultValidity);//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 case 'PossibleDamage':\r\n {\r\n return Formatters.PossibleDamageForExcel(fieldValue);\r\n }\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 'PossibleDamage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.PossibleDamageForExcel(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': case 'DimiTerm': 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 'PossibleDamage':\r\n {\r\n if (params.value != undefined && params.value != null)\r\n returnValue = Formatters.PossibleDamageForExcel(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':case 'DimiTerm': 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: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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 PTI\" : params.value.toUpperCase().trim() == \"SHORTPTI\" ? \"Short PTI\" : 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 && params.data.DimiResultValidity == \"Passed\") {\r\n TripWiseStatusDescription= \"Passed\";\r\n }\r\n else if ((params.data.DimiResultValidity == \"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 (params.data.DimiResultTerm == \"Passed\" || params.data.DimiResultTerm == \"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.DimiResultValidity == \"Unknown\") &&\r\n (params.data.DimiResultActuator != \"Failed\" && params.data.DimiResultAlarm != \"Failed\" &&\r\n params.data.DimiResultOOR != \"Failed\" && params.data.DimiResultTerm != \"Failed\" &&\r\n params.data.DimiResultValidity != \"Failed\")) {\r\n TripWiseStatusDescription= \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\"\r\n || params.data.DimiResultOOR == \"Failed\" || params.data.DimiResultTerm == \"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 (params.data.DimiResultTerm == \"Failed\") {\r\n ErrorCount = ErrorCount + 1;\r\n text = text + 'Term,';\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 else if (params.data.DimiResultTerm == \"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 && params.data.DimiResultValidity == \"Passed\") {\r\n TripWiseStatusDescription = \"Passed\";\r\n }\r\n else if ((params.data.DimiResultValidity == \"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 (params.data.DimiResultTerm == \"Passed\" || params.data.DimiResultTerm == \"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 params.data.DimiResultValidity != \"Failed\")) {\r\n TripWiseStatusDescription = \"Unknown\";\r\n }\r\n else if (params.data.DimiResultActuator == \"Failed\" || params.data.DimiResultAlarm == \"Failed\"\r\n || params.data.DimiResultOOR == \"Failed\" || params.data.DimiResultTerm == \"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 (params.data.DimiResultTerm == \"Failed\") {\r\n ErrorCount = ErrorCount + 1;\r\n text = text + 'Term,';\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 else if (params.data.DimiResultTerm == \"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,DimiResultTerm) {\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 (DimiResultTerm == \"Failed\") {\r\n // ErrorCount = ErrorCount + 1;\r\n // text = text + 'Term,';\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 // else if (DimiResultTerm == \"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, DimiResultValidity) {\r\n \r\n\r\n if (fieldValue != null && fieldValue != undefined && fieldValue != \"null\") {\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 }\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 term start\", 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 term (d)\", field: \"DimiTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130 },\r\n { headerName: \"OEM PTI term rem (d)\", 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 \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 \"DimiTerm\":\r\n return Formatters.DimiTermTermGrouping(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; var DimiResultTerm;\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 DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR,DimiResultTerm);\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,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\"","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,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\"","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,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+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M2VkMTg2ZTgtYWUwOC1kNjRmLThjNDctNzI5NmJkYjM0ZjlmIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3NmQ3YzQ2LWMyZDctYWY0Zi05OWFiLTY5Y2U1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\"","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,\r\n SelectedVoyage: null, SelectedCargoCareProfiles: null, SelectedPod: null, SelectedPol: null, SelectedCTProfileIds: [] //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: '',\r\n SelectedVoyage: '', SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', SelectedCTProfileIds: [] //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: '', SelectedPol: '', SelectedPod: '', SelectedCTProfileIds: [] //RCNG5906-Added Profile Filter\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 filterset.SelectedPol = (filters.SelectedPol == \"\" || filters.SelectedPol == undefined) ? null : filters.SelectedPol; \r\n filterset.SelectedPod = (filters.SelectedPod == \"\" || filters.SelectedPod == undefined) ? null : filters.SelectedPod; \r\n filterset.SelectedCTProfileIds = (filters.SelectedCTProfileIds == null || filters.SelectedCTProfileIds == undefined) ? null : filters.SelectedCTProfileIds; //RCNG5906-Added Profile Filter\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: \"\",\r\n StatusFilters: [12], CustomAttributeFilters: {}, AllReefers: \"\", SelectedBookingNumber: null, SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', //WI-26881\r\n SelectedCTProfileIds: [] //RCNG5906-Added Profile Filter\r\n };\r\n var filterDefault2: server.ReeferSearchFilters = {\r\n SelectedCountry: \"\", SelectedAssetTypes: \"\", SelectedAssetStates: \"\", SelectedGeofence: \"\", SelectedGeofenceInside: \"\", SelectedInterval: \"\", SelectedOem: \"\", SelectedReefer: \"\", SelectedVesselCode: \"\",\r\n StatusFilters: [12], CustomAttributeFilters: {}, AllReefers: null, SelectedBookingNumber: null, SelectedVesselCD: '', SelectedCall: '', SelectedVoyage: '', SelectedCargoCareProfiles: '', SelectedPod: '', SelectedPol: '', //WI-26881\r\n SelectedCTProfileIds: [] //RCNG5906-Added Profile Filter\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 SelectedPol: self.state.tempFilters.SelectedPol,\r\n SelectedPod: self.state.tempFilters.SelectedPod,\r\n SelectedCTProfileIds: self.state.tempFilters.SelectedCTProfileIds //RCNG5906-Added Profile Filter\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 SelectedPol: self.state.tempFilters.SelectedPol,\r\n SelectedPod: self.state.tempFilters.SelectedPod,\r\n SelectedCTProfileIds: self.state.tempFilters.SelectedCTProfileIds //RCNG5906-Added Profile Filter\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 term start\", 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 term (d)\", field: \"DimiTerm\", enableRowGroup: true, cellClass: 'myExcelStyle', sortable: true, filter: true, resizable: true, valueGetter: (params) => { return Formatters.DimiTermSorting(params); }, cellRenderer: ReeferFormatters.DimiRemainTermFormatter, width: 130, onCellClicked: this.onCellClickedCopy.bind(this) },\r\n { headerName: \"OEM PTI term rem (d)\", 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 \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 \"DimiTerm\":\r\n return Formatters.DimiTermTermGrouping(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; var DimiResultTerm;\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 DimiResultTerm = self.state.gridApiParams.rowRenderer.gridOptionsWrapper.gridOptions.rowData[params.node.rowIndex].DimiResultTerm;\r\n }\r\n return ReeferCellRenderer.TripWiseStatusGrouping(fieldValue,ReeferOEMTypeCd,DimiResultActuator,DimiResultAlarm,DimiResultOOR,DimiResultTerm);\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":""}