{"version":3,"sources":["Communications.js","Authentication.js","CommunicationService.js","ErrorHandleService.js","Globals.js","LocalStorage.js","MainScript.js","ImportService.js","Bulk/BulkState.js","NavigationView.js","Redirect.js","Bulk/BulkCargoRequest.js","Bulk/BulkCargoRequestManager.js","Bulk/BulkCompatibility.js","Bulk/BulkDeviationAreaView.js","Bulk/BulkLoadingAreaView.js","Bulk/BulkModalView.js","Bulk/BulkOffloadAreaView.js","Bulk/BulkPopoverHelper.js","Bulk/BulkStateView.js","Bulk/BulkTank.js","Bulk/BulkTankManager.js","Bulk/BulkToolbarView.js","Bulk/BulkViewUtil.js","Bulk/SpecialVoyageBulkManager.js","Bulk/TankCleanModal.js","Bulk/VoyageBulk.js","DeckState/Deck.js","DeckState/DeckState.js","DeckState/DeckPacker.js","Home/HomeState.js","MasterData/MasterData.js","ModalsAndDialogs/Dialogs.js","Utils/Tools.js","Voyage/VoyageState.js","DeckState/DeckStateActions.js","DeckState/FindMathingContainerModal.js","MasterData/MasterDataService.js","MasterData/PortManager.js","ModalsAndDialogs/ConfirmationModal.js","ModalsAndDialogs/LoadingModal.js","ModalsAndDialogs/ModalManager.js","ModalsAndDialogs/PopupManager.js","ROB/RobManager.js","ROB/RobRow.js","ROB/RobState.js","ROB/RobStateView.js","Utils/ConversionUnitService.js","Utils/Events.js","Utils/Handlebars.js","Utils/Number.js","Utils/Polyfills.js","Utils/Selectize.js","Utils/TabelSorterParser.js","Utils/Utils.js","Utils/VersionConverter.js","Voyage/CurrentVoyage.js","Voyage/CurrentVoyageView.js","Voyage/ListVoyagesView.js","Voyage/MissionTypeService.js","Voyage/Voyage.js","Voyage/VoyageLogEntry.js","Voyage/VoyageLogEntryEndView.js","Voyage/VoyageLogEntryManager.js","Voyage/VoyageLogEntryView.js","Voyage/VoyageLogTableView.js","Voyage/VoyageNoView.js","Voyage/VoyageService.js","Voyage/VoyageStartView.js","DeckState/Container/Container.js","DeckState/Container/NewContainer.js","DeckState/Container/ContainerEditModal.js","DeckState/Container/ContainerManager.js","DeckState/Container/ContainerPopoverView.js","DeckState/Container/ContainerService.js","DeckState/Container/ContainerView.js","Utils/Versions/v131.js"],"names":["Communication","this","CLFR","headerBoundary","FetchMainInfo","p_id","p_type","p_operator","p_password","p_username","ClearAllContainers","RemoveDecks","g_remote_object","VRC","Authentication","displayMessage","msg","status","$alert","$","find","text","removeClass","addClass","attachUsernameMethod","g_master_data","master_data","vessel_list","length","appendTo","SetAvailableDropdownList","attachForgottenPassword","$dialog","unbind","click","ConfirmationModal","show","onConfirm","resetPassword","attachKeyPressInPasswordInput","keypress","e","which","preventDefault","login","attachOnLoginBtnClick","bind","l_operator","getOperator","l_type","l_id","getVesselId","l_password","getPassword","vesselName","getVesselName","l_username","getUsername","l_can_log_in","SetLoginInformation","done","data","LoadPage","G_PAGE","HOME_PAGE","PortManager","init","g_dataIsReady","modal","location","reload","fail","message","errorMsg","indexOf","val","login_id","alert","operator","vesselId","ajax","url","G_ROOT_ADDRESS","getResetPasswordUrl","JSON","parse","responseText","prototype","HasRemoteAccess","navigator","onLine","ErrorHandleService","showDefaultError","errors","NO_NETWORK","LoadingModal","hide","FetchDeckStateFromDB","p_owner","f_callback","ver","GetVersionNumber","l_source","undefined","g_data_list","getJSON","p_data","Error","WELS_container_list","showMessage","G_MSG_TYPE_WARNING","G_MSG_TYPE_ERROR","readyState","NO_RESPONSE_FROM_SERVER","DEFAULT","l_err","PARSE_ERROR_DEFAULT","CreateDataHeader","p_name","p_is_file","body","SubmitDataFile","p_data_content","p_submit_type","onSuccess","onError","supressMessage","l_url","com_object","contentType","type","cache","success","ParseReturnData","G_MSG_TYPE_SUCCESS","g_localsave_object","RemoveLocalStorageItem","G_LS_NAMES","MAIN_VESSEL_DATA","error","parseJSON","showError","console","SUBMIT_ERROR_DEFAULT","SubmitAllData","submitCode","suppressMessage","l_extra_data","version","userAgent","token","currentVoyageData","GetLocalStorageItem","current_voyage","l_voyage_log_data","g_voyage_planning","CreateJSON","l_bulk_data","l_deck_data","l_container_data","l_data","WELS_current_voyage","WELS_voyage_log","WELS_containers","WELS_deck_data","WELS_bulk_data","WELS_fuel_log","WELS_extra_data","l_json_data","stringify","SubmitDeckStateToDB","GL_LS_NAMES","WELS_deck","JSON_data","ParseValidations","ParseLastSubmitDate","parsed_data","lastSubmitDate","requiredSubmitIntervalHours","SetLocalStorageItem","JSON_validations","voyage_alerts","ShowVoyageValidations","g_current_page","html","FetchTransitContainers","deferred","Deferred","WELS_container_data","l_counter","PopulateTransitContainers","G_MSG_TYPE_NORMAL","resolve","reject","promise","versionNumber","dataType","p_data_response","currentVoyage","jQuery","G_DECK_SCALES","showDepartureWarnings","enableVoyageDpMode","g_container_list","BulkState","fetchBulkTanks","xhr","responseType","errorObj","ProcessReturnedSavedStatement","p_return_data","err","FetchDataFromServer","p_fetch_type","p_params","l_params","voyage","response","FETCH_ERROR_DEFAULT","FetchHTMLFromServer","get","FetchMasterData","localStorage","FetchMasterData2","vessel_data","l_vessel_id","id","l_vessel_hash","hash_code","CommunicationService","createDeferredHandler","self","fetchData","owner","fetchType","params","def","_service","globalService","fetchMasterData","fetchMasterData2","getBulkCargoRequests","portId","port","submitData","showLoading","G_MAX_MSG_STRINGS","p_msg","$l_info","$l_msg_box","l_date_str","GetFullDate","Date","append","children","remove","code","g_current_deck","DECK_CONTAINER_DATA","DECK_DATA","MASTER_DATA","BULK_TANKS","FUEL_LOG","VOYAGE_LOG","FUEL_DATA","VOYAGE_VALIDATIONS","G_CONSUMABLE_SEQ","FUEL","LNG","POTWATER","DRILLWATER","MAIN_PAGE","DECK_PAGE","BULK_PAGE","VOYAGE_PAGE","FUEL_PAGE","DEBUG_PAGE","G_CONTAINER_COLOURS","TRANSIT","DECK","OUTGOING","CONSTRAINT","G_CONTAINER_TYPES","REFRIGERATED","VESSEL","RIG","G_CONTAINING_DIV","g_fuel_planning","g_bulk_planning","g_ctrl_key_down","g_dbl_container_pos","g_deck_list","g_deck_scale","g_autosave_interval_id","g_container_is_dirty","g_isDragging","g_selected_container","g_master_data2_fetched","g_timeStampFormat","g_app_locale","g_actions","load","offload","backload","discharge","dump","start_rob","rob","tankCleanStarted","tankClean","deviation","transferTo","transferFrom","rob_adjustment","g_destination_type","toRig","fromRig","noRig","g_autoupdate_deck","LocalSaveSystem","LoadLocalState","LoadMasterData","stack","SaveLocalState","InitApplication","VerifyCompatibility","MasterData","VoyagePlanning","InitialiseDialogs","PopupManager","InitialiseMainData","ImportService","importData","ParseLogData","voyageLogs","bulk","CurrentVoyage","ParseContainers","deck","containers","InitialiseLocalData","HasLocalStorageItem","p_item_name","getItem","l_obj","p_value","setItem","l_exception","QUOTA_EXCEEDED_ERRPR","removeItem","PrintLocalStorageData","l_output","l_key","CheckOnlineStatus","$online_text","toggleClass","window","addEventListener","LoadHomePage","VoyageLogEntryManager","Login","LoginDialog","ParseMasterData","BulkTankManager","isInitialised","MasterDataService","compatibility","v136_to_v137_upgrade","localItems","_","each","localItem","log","event","subEvent","MainMenuClick","p_page_type","p_menu_item","hasClass","NavigationView","setActive","SubMenuChoice","p_select","ParseWELSForm","dialog","SavePageState","CheckLastSubmit","_lastSubmit","moment","_hoursSinceSubmit","diff","OnLeavingVoyagePage","RobState","save","OnLeavingBulkPage","OnLeavingDeckPage","p_page","$validationArea","validations","page_validations","result","voyage_log","concat","vessel_manifest","voyage_deck","voyage_bulk","voyage_rob","ConfirmFetchData","FetchData","fetchVoyage","getCurrentVoyage","fetch","fetchVoyageLog","FetchLogEntries","fetchDeckState","fetchBulkState","when","v1","v2","v3","v4","ClosePopup","return_msg","OpenSubmitDialog","$submitParams","attr","CloseSubmitDialog","SubmitData","SaveLogEntries","DisplayValidations","saveToLocalStorage","InitialiseBulkPlanning","InitialiseBulkDialogs","BulkStateView","toJson","BulkLoadingAreaView","BulkOffloadAraeView","BulkDeviationView","BulkToolbarView","BulkMenuSelect","loadFromLocalStorage","clearTanks","render","BulkSubMenuChoice","document","ready","replaceMainMenu","isDisabled","$mainMenuWrapper","WELL","Handlebars","main_menu","disabled","disable","hasCurrentVoyage","enable","menuMenuLink","RedirectModule","hasLoginInformation","redirectToApplication","handleNoLocalStorage","getURLParameter","name","decodeURIComponent","search","match","RegExp","initIndexPage","initOperatorsPage","initOperatorsDirectPage","valuev","valueopr","selectOperator","selectCountry","replace","BulkCargoRequest","getCargoItemId","_cargoItemId","setCargoItemId","cargoItemId","Utils","Number","parseInt","getDeliveryType","_deliveryType","setDeliveryType","deliveryType","getItemDescription","_itemDescription","setItemDescription","itemDescription","getPortColourCode","_portColourCode","setPortColourCode","portColourCode","getColour","getDestinationId","getOriginId","setOriginId","originId","_originId","getOriginName","_originName","setOriginName","originName","origin","getPort","getValueQty","_valueQty","setValueQty","valueQty","parseFloat","setValueUnit","valueUnit","_valueUnit","setDestinationId","destinationId","_destinationId","getDestinationName","_destinationName","setDestinationName","destinationName","destination","getDgClass","_dgClass","setDgClass","dgClass","getSg","_sg","setSg","sg","getCompanyId","_companyId","setCompanyId","companyId","getCompanyName","_companyName","setCompanyName","companyName","company","getCompany","getBulkTypeName","_bulkTypeName","setBulkTypeName","bulkTypeName","bulkType","getBulkType","getBulkTypeId","setBulkTypeId","bulkTypeId","_bulkTypeId","getItemGroupName","_itemGroupName","getContainerId","_containerId","setContainerId","containerId","getItemId","_itemId","setItemId","itemId","getDisplayPort","_displayPort","getManifestAction","_manifestAction","setManifestAction","manifestAction","setItemGroupId","itemGroupId","_itemGroupId","isHidden","_hidden","_dgUnNumber","_tankShape","getValueUnit","dgUnNumber","setDgUnNumber","itemGroupName","setItemGroupName","portColorCode","displayPort","setDisplayPort","setTankShape","getDangerous","setDangerous","setHidden","hidden","subtractValueQty","qty","isNaN","newQty","getItemGroupId","tankShape","BulkCargoRequestManager","clear","_bulkCargoRequests","LOCALKEY","checkForLoadedCargo","loadedCargoRequest","findLoadedCargoItems","cargoRequest","cargoQty","ii","bulkCargoRequestData","push","json","bulkCargoRequest","loadOnline","saveToLocal","loadFromLocal","getBulkCargoRequestById","BulkCompatibility","_ruleWrapper","canMixBulk","leftItemType","rightItemType","wrapper","matrix","row","column","rule","rules","none","hasComponent","isEmpty","getRuleList","keys","bulk_matrix","_queries","showSelectCargoId","$placeHolder","content","popOverHtml","offload_action_selector","units","getBulkValueUnitsAsArray","popover","placement","sanitize","$popover","next","$cargoItemsBtn","$cancelBtn","$btn","prop","bulkTankCargoItem","findWhere","showModal","$dropzoneElement","droppedElement","config","bulkTankId","action","BulkLoadingPopoverView","inputElements","addDeviation","attachModal","on","bulkTank","SpecialBulkTanks","getDeviationTank","BulkModalView","getBulkTankId","isSpecialTank","$valueQty","qtyRob","$qtyRob","date","$date","inputRemarks","$remarkField","getBulkTankById","lastContainerAction","getLatestContentByContainerId","voyageBulk","VoyageBulk","createNewId","setAction","setDate","setRemarks","addContent","renderTank","addOffloadDeviation","parseFromBulkRequest","reRenderBulkRequest","addLoadingDeviation","context","$container","bulk_deviation_area","$deviationArea","interact","dropzone","accept","ondropactivate","ondragenter","target","ondragleave","ondrop","$draggableElement","relatedTarget","$droppable","request","offloadableContent","getOffloadableContent","ondropdeactivate","attachDraggable","reRenderPortColors","bulkTankRequests","portColors","findPortColorsInRequests","partials","getPortColors","replaceWith","getBulkRequestElement","_size","checkBulkMixCompatibility","bulkRequest","requestItemGroupName","bulkTanks","getBulkTanks","lastLoadAction","getLastAction","tankItemGroupName","getBulkTankElement","css","backgroundColor","colour","clearBulkMixOverlay","getTankColour","requests","chain","groupBy","map","group","item","first","portName","sortBy","value","ctx","BulkViewUtil","calculateSize","size","margin","createContext","bulk_loading_area","draggable","autoScroll","onstart","style","zIndex","classList","add","onmove","x","getAttribute","dx","y","dy","webkitTransform","transform","setAttribute","onend","setTimeout","bulk_loading_area_loading","bulkRequestJson","main","removeBulkRequest","hasValue","showErrors","$form","isValidDate","isValid","checkForVoyageBulkErrors","firstEvent","_bulkTank","getFirstContentIgnoreStartRob","firstDate","getDate","isBefore","_errorMessages","startRobIsAfter","vessel","min","max","isBetween","sgRange","sgRequired","positiveQty","offloadDestination","vesselOffload","isEmptyObject","getContent","$el","renderContent","attachRemoveEvent","attachEditEvent","$voyageBulkTable","trigger","updateVoyageBulk","onSucess","$voyageForm","$inputElements","serializedObject","Forms","serializeObject","_masterData","_template","bulk_modal","attachEvents","attachAddVoyageBulkEvent","attachAddTankCleanEvent","attachRemoveValidationEvent","attachDatePickerEvent","attachMapEventChange","attachChangeAction","initSelectize","change","voyageLogId","voyageLog","getEventById","$dateField","originSelectize","selectize","getDateTime","setValue","Selectize","getConfig","datetimepicker","format","removeError","ev","$input","$formGroup","closest","getElement","parent","createErrorMessage","isTransferAction","createTransferAction","transferToTank","renderForm","clone","_tempAction","$row","invalidDestinationActions","$destinationField","$destinationSelectize","contains","showActionFields","showActionField","actionFieldsMap","actionDiv","actionField","$tankCleanForm","checkForTankCleanErrors","voyageBulkId","objectId","objectType","editMode","getContentById","lastAction","masterData","getBulkTanksNameAndId","update","recalcRob","getAction","removeContent","port_list","getGroupedPorts","bulk_clean_type_list","getBulkCleanTypes","$content","cargoEvents","getCargoEvents","cargoEventsJson","cargoEvent","backdrop","TableSorterParsers","removeInputFieldListerens","addInputFieldListeners","tablesorter","headers","0","sorter","1","2","3","4","5","6","7","8","9","10","11","12","13","14","headerTemplate","submit","removeErrors","inputs","key","input","attachAllClickable","$offloadEvents","attachClickable","showInputPopup","onCancel","getSelectedPort","portPort","title","voyageBulkJson","insertBulkAction","getMainJson","placeHolderHtml","$elements","$offloadEvent","highlight","setQtyRob","$bulkTypeId","showPopup","bulkTankCargoItems","bulk_offloading_area","offloadDeck","draggableElement","dropzoneElement","$placeHolderHtml","last","getOffloadEvents","jsonElement","loadingQuantitySelection","droppedElementJson","$valueType","selectpicker","focus","mapOldFormatToNewFormat","tankName","tankType","shape","tankCapacity","capacity","tankRadius","radius","positionX","x_pos","positionY","y_pos","consumableSeqNo","consumable_seq_no","value_unit","availableForDelivery","available_for_delivery","bulkTankPumpSystemName","bulk_tank_pump_system_name","pumpSystemColorCode","color_code","deviations","importBulkData","createBulkTankObjects","parseFromServer","serverInfo","bulk_tanks","tanks","transformedTanks","transformBulkStateData","numberOfColumns","findNumberOfColumns","_deckWidth","findPortColorsInBulkState","pumpSystems","findPumpSystemsInBulkState","deckWidth","tank","tankJson","getLatestContent","Infinity","getBulkTankContainer","selectMainBulkTanks","attachDropEvents","attachDragEvent","attachSubMenu","$bulkTank","getQtyRob","showPopover","getName","keyup","cancelBulkAction","_$mainBulkTanks","currentLatestDate","index","i","splice","filter","tankColor","uniq","flatten","TankCleanModal","query","cargoId","tankId","enabled","filterByPumpSystem","pumpSystemElement","pumpSystemName","$filteredBulkTankContainers","not","BulkTank","isConsumable","getConsumableSeqNo","isLng","isFuel","_id","setBulkTankId","_tankName","setName","getRadius","_radius","setRadius","getShape","setShape","getType","_tankType","setType","getXPos","_positionX","setXPos","xPos","getYPos","_positionY","setYPos","yPos","setConsumableSeqNo","_consumableSeqNo","getAvailableForDelivery","_availableForDelivery","setAvailableForDelivery","allContent","_content","valueOf","getFirstContent","firstContent","unshift","getVoyageBulkId","getLastActionRigOrClean","getLastTankClean","getLast","cargoItem","isTankClean","isCalcAction","_capacity","_contentDesc","_bulkTankPumpSystemName","_colorCode","setCapacity","contentDesc","setContentDesc","setBulkTankPumpSystemName","colorCode","setPumpSystemColorCode","calcActions","calcId","getCalcId","reverse","remarks","getRemarks","isRig","reduce","voyageBulk1","voyageBulk2","calcId2","comparableId","_bulkTypeSeqNoMapping","sortedContent","memo","voyageBulm","calced","getCalcQty","sum","isTankCleanStarted","isRob","isRobAdjustment","createStartRob","dateTime","getFromDateTime","trim","subtract","getStartDateTime","newRob","isFuelConsumable","tankColour","getYpos","filteredContent","without","clearTank","fillTank","contentArray","contentJson","lastTankClean","lastTankCleanVoyageBulk","lastRegisteredRob","filteredAndGrouped","isAfter","toISOString","voyageBulkList","displayName","getRobActions","hasStartRob","some","isStartRobAction","getConsumable","_consumable","_bulkTanks","_bulkTanksIndex","getBulkContentInInterval","fromDate","toDate","isMoment","getAllContent","isSame","robNumber","getFuelTanks","fuelTanks","loadedCargo","deviationTank","allTanks","bulkTankCargo","flattenContent","groupedContent","bulkTankObject","isOffloadAction","ignoreId","getBulkContentSumInDateInterval","bulkInDateRange","indexUnits","bulkAction","unit","indexBy","valueObject","setHeaders","$selectBox","getSelectBox","$loadingHeader","$offloadHeader","attachFetchManifest","$html","loadBulkCargoRequest","attachChange","bulkRequests","bulk_toolbar","marginPercent","showMsg","_loadingTemplate","_title","getTankCleanings","object","tankCleanings","cleanType","getBulkCleanType","actionObject","cleanTypeName","showTankCleanings","tankclean_modal","progress_modal","_voyageBulkId","setVoyageBulkId","_bulkTankId","definition","_qtyRob","_valueType","getDgInfo","_dgInfo","setDgInfo","dangerous","_remarks","_action","_date","_tankColour","setTankColour","isLoadAction","now","Math","floor","random","getNewId","getActionObject","_actionObject","setActionObject","setCleanTypeName","_cleanTypeName","getCleanTypeName","getVessel","dgInfo","setCompany","extend","slice","getactionObject","setactionObject","SetWrapperHeight","xMeter","GetCurrentDeckLength","yPixel","width","GetDeckAreaHeight","minHeight","InitialiseDecks","p_json_decks","p_i","p_obj","l_new_deck","InitialiseVisual","l_overlay_content","l_vertical_line","l_i","toFixed","deck_lines","currentPresentage","currentLength","presentageWidth","l_overlay","ContainerPopoverView","divID","deckId","l_relativeX","pageX","offset","left","l_relativeY","pageY","top","clickXPos","GetLengthPosFromPixel","clickYPos","GetWidthPosFromPixel","GetCurrentDeckWidth","OpenContainerDialog","ContainerEditModal","styleCursor","AddDeckConstraints","constraints","l_transit_in","vertical_line_range","l_transit_out","$deck_middle_area","after","deck_middle_area","dropZone","draggedItem","l_this_id","l_draggable_id","deckID","SetContainerColour","UpdateColorMap","DeckStateActionsView","$deck","constraint","newConstraint","CalculatePresentageOfTotal","height","image","position","CalculatePresentageOfDeckLength","includePresentage","CalculatePresentageOfDeckWidth","heightMargin","resize","resizeTO","clearTimeout","p_containingID","l_div","GetXPostitionInPresentage","outerWidth","GetYPostitionInPresentage","outerHeight","InitialiseDeckPlanning","PopulateContainerTypeList","SetManifestLocations","SetDefaultContainerDataList","LoadLocalDeckState","SetInitialManifestLocation","keydown","p_e","keyCode","split","UpdateAllDeckTotals","SetInputNumbersOnly","SetAutoSaveDeck","DestroyDialogs","GetList","p_index","$portSelection","$containerDestination","$contarinerOrigin","portHtml","placeHolder","$l_this","cnt_type_list","l_temp_list","container","new","GrowingPacker","w","h","root","fit","blocks","n","node","block","len","findNode","splitNode","growNode","used","right","down","canGrowDown","growDown","growRight","l_colour_list","l_port_list","containerColor","$colour_codes","ClearVesselDeck","increment","l_old_container","properties","roundtrip","storage","UpdateContainerVisual","ConfirmClearDeck","ConfirmClearAllContainers","ConfirmClearOutgoingContainers","RemoveOutgoingContainers","transitContainers","prev_id","c","features","sort","a","b","SetContainerAsRoundtrip","weight","dg_info","dg_class","tag","p_roundtrip_container","old_container_data","rotation","DeleteContainerVisual","HighlightContainers","clearSearch","searchStr","toLowerCase","regExString","innerText","SetContainerData","priority","transfer","l_port_id","CreateNewContainer","l_count","prev_pos","prev_deck_id","created_id","CreateOrUpdateContainer","ChangePosition","CloseContainerDialog","l_update","containerVal","is","l_new_container","p_container_data","l_origin","l_destination","isCurrentPage","ParseContainersAndDisplay","containerList","ConfirmFetchTransitContainers","FindMatchingContainerModal","OpenToolsPopup","ParseContainerSyncList","TakeDeckPicture","Android","takePicture","DisplayCaptureImageButton","display","CalculateDeckTotals","total_mt","count_container_mt","count_container_total","containerDeckId","mt","mt_count","mt_missing_count","total_count","$wrapper","UpdateDeckTotals","deckNameWithPreposition","$mt_total","$mt_containers","prefUnits","getValueUnitPreferences","containertext","missing_container_alert","ContainerService","highligthContainersWithoutWeight","no_missing_container_alert","no_container_alert","UpdateTransitAreaTotals","is_checked","clearInterval","setInterval","AutoSaveDeck","InitialiseHomePage","ParseHomeData","page_type","InitialiseMainDialogs","InitialiseDeckDialogs","InitialiseApexPopupDialog","autoOpen","closeOnEscape","minWidth","dialogClass","screen","resizable","beforeClose","ui","close","ClearContainerData","page","p_master_object","l_operator_value","l_value","$p_dropdown_list","l_list","HoverInfoBox","p_show","ContainerManager","getContainerById","Settings","p_open","Relog","ClearWorkingData","ClearLocalStorage","GetMasterData","GetBulkTanks","PrintLocalData","local_output","output","open","write","ReverseDateString","p_string","date_and_time","date_parts","l_return_string","p_date","StringifyDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","GetDate","GetTime","GetDateTime","p_date_part","p_element_id","$element","blur","num","total","InitialiseVoyagePlanning","VoyageState","VoyageMenuSelect","p_calling_element","AddLogEntryAndAppendToDom","LoadLogEntries","VoyageLogTableView","ClearLogEntries","AddEndVoyageLogEntry","InsertLogEntry","getPortsSelectList","selectizeElement","optionList","allPorts","mappedKeys","active","rig","addOption","element","optgroup","onmouseenter","OpenVoyageInfoAndStartNewVoyage","p_log_table_name","l_log_entries","l_table_name","l_is_dirty","zoomIn","zoom","scale","zoomOut","$zoomInBtn","$zoomOutBtn","$rotateContainerBtn","$containerDom","l_container","l_rot","rotateContainer","$findMatchingContainersBtn","gesturable","ds","scrollLeft","clientX0","findMatchingContainers","ModalManager","$modal","checkboxpicker","selectedContainers","switchContainers","SaveMasterData","p_key","p_list","p_list_name","getPorts","_portTypes","getDgClasses","dg_classes","portList","vesselList","companyList","company_list","ports","vessels","isActive","isAvailable","bulkTypeList","bulk_type_list","getDgSegRule","dgClass2","dgSegregationRules","dg_segregation_rules","dgClassId","getBulkValueUnits","bulk_value_unit_list","pluck","value_unit_preferences","getBulkTypeNameAndIs","getQuaysByPort","quays","getContainerTypes","getContainerTemplates","getInside500mZonePosition","settings","inside500mZonePosition","getEventCode","eventCode","eventTypeList","event_type_list","eventType","event_code","locale_settings","datetimeFormat","g_dateFormat","dateFormat","timeZone","env","VoyageNoView","updateEnvironment","server","tz","setDefault","ConversionUnitService","conversion_units","isHarboursOrBase","getRigs","getHarboursAndBases","confirmation_modal","TYPES","CONFIRMATION","INFO","_defaults","options","$confirmBtn","pleaseWaitDiv","loading_modal","modalCount","keepTrackOnOpenModals","template","handlebarTemplate","$popup","defaults","RobManager","_bulkTankIds","_robRows","KEY_FORMAT","addNewRob","endOf","RobRow","voyageBulkOnDate","bulkTankIds","addRow","getRow","addRobRow","removeRow","removeAllVoyageBulk","ordered","getRows","hasDate","updateIndex","oldKey","newKey","getLastestRow","maxKey","consumableTanks","fuelTank","bulkTanksSimple","bulkTankName","joined","arr","grouped","deleteAll","robRow","setBulkTankIds","setEntries","_entries","initEntries","bulkTankPos","getBulkTankIndex","entry","hasVoyageBulk","getEntries","getEntryByBulkTankId","robEntries","addVoyageBulk","bulkTankIndex","removeVoyageBulk","getEntry","RobStateView","menuSelect","isBlank","str","test","robRows","attachDateChange","attachRemarksChange","attachRobChange","attachAvailableForDeliveryChange","attachAddRow","attachRemoveRow","attachDocumentsButton","attachROBValidationButton","newRow","insertAfter","getDateValue","backupValue","$robField","updateRobQty","$inputElement","findRow","backupDate","$afdField","newFieldValue","_conversionUnits","getConversionUnit","conversionUnit","conversionUnits","getWeight","from","to","toObj","toCof","coefficientFactor","round","roundToTwo","Events","RobEntry","registerHelper","fn","inverse","selected","optionalValue","charAt","toUpperCase","inputFormat","f","hash","inside_500m_zone","logEntry","stringStartsWith","string","prefix","orgNumber","number","arguments","callee","caller","toString","NaN","filterFloat","Array","fun","TypeError","t","Object","res","thisArg","call","_config","plugins","sortField","searchField","lockOptgroupOrder","addParser","txt","table","cell","parsed","formatFloat","ignoreCase","toLocaleLowerCase","cellIndex","$cell","wo","widgetOptions","group_checkbox","isChecked","checked","$select","$textarea","namespace","off","isTbody","restoreValue","nodeName","join","altKey","$target","$table","indx","$hdr","$headerIndexed","$object","o","serializeArray","createProp","newName","secondName","substr","String","toPascalCase","underCased","array","validateDgClasses","VersionConverter","isUpgraded","upgrade","Version131","Voyage","getSeqNo","MissionTypeService","setFuelTankInfo","_fuelTankInfo","hasFuel","hasLng","refresh","onVoyageLogChange","calcFromDate","CurrentVoyageView","getFuelTankInfo","getVoyageId","fetchNewVoyage","startingNewVoyage","endVoyage","addEventsHandler","$currentVoyageContainer","addOnMissionTypeChange","$event","_this","oldMissionType","getMissionType","setMissionType","invalidEvents","getInvalidEvents","invalidSubEvents","getInvalidSubEvents","setEventType","setSubEventType","missionTypes","getMissionTypes","$currentVoyage","current_voyage_info","ListVoyagesView","_isInit","voyages","loading","switchVoyage","replaceVoyageId","currentVoyageId","VoyageStartView","list_voyages_modal","attachReopenEvent","hideMsg","fromDatetime","_missionTypeEvents","_missionTypes","findActiveEventTypes","missionTypeEvents","activeEventIds","getEventTypes","eventLogType","sub_event_types","setActiveEventTypes","missionType","mission_type","is_available","getEventTypeById","orgId","found","eventTypes","tempEventType","isSubEvent","eventId","level","getEventTypesByType","event_type","findActiveSubEventTypes","parentEventID","parentMissionType","logEntries","getAll","validTypes","logEventTypeValue","getEventType","inArray","subEventTypeValue","getSubEventType","voyage_mission_type_list","resetValues","_voyageId","_missionType","getFromPort","_fromPort","getToPort","_toPort","setToPort","toPort","setToDateTime","toDateTime","_toDateTime","getStartFuel","_startFuel","setStartFuel","startFuel","getEndFuel","_endFuel","setEndFuel","endFuel","getStartLng","_startLng","setStartLng","startLng","getEndLng","_endLng","setEndLng","endLng","getFirst","setFromDateTime","_seqNo","setSeqNo","seqNo","_fromDateTime","setVoyageId","voyageId","voyageType","fromDateTime","voyage_id","to_port_id","start_fuel","start_lng","seq_no","from_dateTime","from_date","to_dateTime","to_date","end_fuel","end_lng","from_port","setFromPort","fromPort","getWarnings","callback","warningWrapper","next_voyage_date","buttons","Cancel","End voyage","End and Start voyage","endAndStartVoyage","warnings","warningsSubSet","show_warnings","parseVoyageData","last_mission_type","startNewVoyage","VoyageLogEntry","entryData","getId","setId","getTime","createId","setDateTime","_dateTime","setMtLoad","mtLoad","_mtLoad","getMtLoad","setMtOffLoad","mtOffLoad","_mtOffload","getMtOffLoad","setM2Load","m2Load","_m2Load","getM2Load","setM2OffLoad","m2Offload","_m2Offload","getBulkLoad","nextEvent","getNextEvent","getBulkOffload","getM2OffLoad","_event","_subEvent","setInside500mZone","inside500mZone","_inside_500m_zone","setPort","_port","_portName","getLng","_lng","setLng","lng","getFuel","_fuel","setFuel","fuel","getQuayId","_quayId","setQuayId","quayId","getDpMode","_dpMode","setDpMode","dpMode","inputObject","mt_load","mt_offload","m2_load","m2_offload","rob_fuel","rob_lng","port_quay_id","dp_mode","setMtOffload","getMtOffload","setM2Offload","getM2Offload","bulk_load","bulk_offload","hasRequiredExtraInfo","hasExtraInfo","isMatch","thisDateTime","momentDateTime","VoyageLogEntryEndView","_voyage","voyageJson","fuelTankInfo","end_voyage_event_log","attachEventHandlers","validateEndDate","$view","toggleVoyageBtn","onPortChange","onNumberChange","showTodayButton","initDatepicker","onDateTimeChange","onEndMission","$portBox","GetPreviousPort","$datePicker","getView","_logEntries","CARGOITEM_EVENTS","CARGOITEM_EVENT_CODES","set","localEvents","localEvent","jsonArray","getEvent","importVoyageLogs","voyageLogEntry","dateString","sortedEvents","idx","VoyageLogEntryView","isDpModeEnabled","_logEntry","_valueUnitPreferences","subEventTypes","selected_event_title","app_description","selected_sub_event","logEntryData","selectedEventType","getSelectedEventType","voyageMissionType","selectedEventId","event_title","selectedSubEventId","quayInfo","selectedQuayId","valueUnitPreferences","event_log","removeWarning","updateInside500mZone","isSelectedBefore","isEndVoyageEvent","onEventChange","onSubEventChange","onExtraInfoClick","onFieldInputChange","onDelete","onQuayChange","onInside500mZoneChange","onDpModeChange","$extraInfoContainer","reDrawExtraInfo","slideToggle","$l_port_box","updateQuay","$logQuayTableCell","$l_event_box","showExtraInfo","hideExtraInfo","updateSubEvent","$l_sub_event_box","subEvents","$logSubEventTableCell","$fieldTypes","field","dynamicFunction","$l_row","$extraInfo","$inputs","$eventLogTable","_hasFuel","_hasLng","eventLogTableId","dateformat","addHeaders","setFuelTanks","headerData","prepend","event_log_headers","deactivate","voyageNo","environment","$env","delay","fadeTo","VoyageService","OPEN_VOYAGE","AVAILABLE_VOYAGES","NO_VOYAGES","importVoyage","noErrors","validateImport","importContainers","check","deffered","checking","isArray","_wrapper","renderVoyageStart","voyage_start","attachCheckVoyageEvents","voyage_available_voyages","checkStartOrContinueEvents","getVoyageLogContainer","showVoyageLogContainer","submenu","voyagelog_menu","initVoyageLogPage","voyageLogEntries","logEntryrows","GetLogEntryRow","appendLogEntryRowsToDOM","hashSet","voyageLogAlert","eventTypeId","voyageAlertsOnDate","before","inState","has","CreateDomLogEntry","AddLogEntry","view","$insertAfterObject","$l_table","rows","$l_entry","$l_parent","inputData","previousEvent","local","entryJson","time","entryArray","list","logs","ParseLogDataAndDisplay","logData","GetDecimalFromPresentage","substring","dragEndListener","totalWidth","totalHeight","clearConflictedStatus","dragMoveListener","stopPropagation","shouldDGIconsBePrinted","containerDiv","iconSize","iconCount","getDGFormattedList","tagArea","stringArray","formattedList","forEach","ChangeRotation","hasWeight","hasDgClass","ChangeSize","ChangeColor","SetProperty","property","ShowContainerInfo","EditContainer","selectContainer","$containerEl","unselectContainer","p_opts","l_date","cargo_dg_info","Boolean","duplicate","color","restrict","restriction","endOnly","elementRect","bottom","drawConflictedStatus","$l_div","$l_tag_area","$l_tag","heavy_lift","isOnDeck","setPrevValues","serializedContainer","_prevContainer","createCtx","containerJson","isNew","Container","posObj","containerPos","tranformContainerPosFromMousePosition","setPosX","setPosY","setDeckId","setOrigin","setDestination","containerTemplates","containerTypes","dgClasses","setDangerousTag","isDangerous","attchPorts","$destination","destinationList","attachDestination","$origin","originList","attachOrigin","$dgclass","maxItems","onChange","dgClassList","attachDgClass","$btnMultiple","$btnConfirm","$containerQty","updateBtnText","createContainer","updateContainer","serializeContainer","ending","multipleContainerQty","getRotation","con","isUpdate","oldContainerFormat","dg","containerPopover","animation","findContainersWithoutWeight","containersWithoutWeight","getContainersWithRules","_matches","highLightContainer","getConflictedContainers","baseContainer","baseRules","containerRules","temp_match","rule1","rule2","isRelevantRule","meters","yM2","widthM2","lengthM2","xM2","deckWidthM2","meter","boundries","findAdHocContainers","searchString","findManifestedTransitContainers","adHocContainers","manifestedContainers","difference","findManifestedContainers","sanitizeString","inpup","overlays","overlay","dropped","boundry","isInSideBoundries","matches","matchingAdHocContainer","adHocContainer","container1","container2","tag1","tag2","hasSameTag","ContainerView","_containerModel","attachEditModal","attachViewModal","model","_destination","_deckId","setWeight","_weight","_origin","_type","obj","cargoDgInfo","_cargoDgInfo","setCargoDgInfo","_width","setWidth","_length","setLength","_rotation","setRotation","_image","setImage","prevId","_prevId","setPrevId","setProperty","setProperties","_tag","setTag","getOrigin","getDestination","_colour","setColour","getLength","getWidth","_position","_properties","upgradeBulk","formattedData","old","bulk_id","qty_rob","mapVoyageBulk","newVB","upgradeBulkTank","upgradeVoyageLogs","vl","fromArray","upgradeVoyageLog","types","returnValue"],"mappings":"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","file":"build.js","sourcesContent":["/*\r\n * Communications.js\r\n *\r\n * Functions for passing data between front-end and back-end system.\r\n */\r\n\r\n/*\r\n * Constructor for communication object\r\n */\r\nfunction Communication() {\r\n this.CLFR = \"\\r\\n\";\r\n this.headerBoundary = \"----welsFormBoundary5474902110\";\r\n}\r\n\r\n/*\r\n * Takes function object and passes boolean to function\r\n * whether a connection is active or not\r\n */\r\nCommunication.prototype.HasRemoteAccess = function () {\r\n if (navigator.onLine) {\r\n return true;\r\n }\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.NO_NETWORK);\r\n VRC.LoadingModal.hide();\r\n return false;\r\n};\r\n\r\n/*\r\n * Fetches JSON object from deckstate\r\n */\r\nCommunication.prototype.FetchDeckStateFromDB = function (p_owner, f_callback) {\r\n if (!this.HasRemoteAccess()) {\r\n return;\r\n }\r\n ClearAllContainers();\r\n try {\r\n var ver = GetVersionNumber();\r\n var l_source = g_data_list[\"source\"] === undefined ? 0 : g_data_list[\"source\"];\r\n $.getJSON(\r\n G_ROOT_ADDRESS +\r\n \"/vessel.load_deck?h=\" +\r\n g_data_list[\"hash_code\"] +\r\n \"&v=\" +\r\n g_data_list[\"id\"] +\r\n \"&s=\" +\r\n l_source +\r\n \"&o=\" +\r\n g_data_list[\"type\"] +\r\n \"&i=\" +\r\n g_data_list[\"operator\"] +\r\n \"&ver=\" +\r\n ver,\r\n function (p_data) {\r\n if (p_data == null || p_data.Error != null) {\r\n VRC.ErrorHandleService.showMessage(\"Could not find any stored container data\", G_MSG_TYPE_ERROR);\r\n return;\r\n }\r\n if (p_data.WELS_container_list.length <= 0) {\r\n VRC.ErrorHandleService.showMessage(\"No saved containers were found\", G_MSG_TYPE_WARNING);\r\n return;\r\n }\r\n f_callback(p_owner, p_data);\r\n }\r\n ).fail(function (p_data) {\r\n if (data.status === 0 && data.readyState === 0) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.NO_RESPONSE_FROM_SERVER);\r\n } else {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.DEFAULT);\r\n }\r\n });\r\n } catch (l_err) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.PARSE_ERROR_DEFAULT);\r\n }\r\n};\r\n\r\n/*\r\n * Creates file headers to pass on data\r\n */\r\nCommunication.prototype.CreateDataHeader = function (p_name, p_data, p_is_file) {\r\n var body = \"--\" + this.headerBoundary + this.CLFR + 'Content-Disposition: form-data; name=\"' + p_name + '\"';\r\n if (p_is_file) {\r\n body += '; filename=\"rc_log.txt\"' + this.CLFR + \"Content-Type: text/plain\";\r\n }\r\n body += this.CLFR + this.CLFR + p_data + this.CLFR;\r\n return body;\r\n};\r\n\r\n/*\r\n * Submits data as a file\r\n */\r\n\r\nCommunication.prototype.SubmitDataFile = function (\r\n p_data_content,\r\n p_submit_type,\r\n p_owner,\r\n onSuccess,\r\n onError,\r\n supressMessage\r\n) {\r\n if (!this.HasRemoteAccess()) {\r\n return;\r\n }\r\n\r\n var l_url = G_ROOT_ADDRESS + \"/reporting.submit_file\";\r\n var body = this.CreateDataHeader(\"h\", g_data_list[\"hash_code\"], false);\r\n body += this.CreateDataHeader(\"i\", g_data_list[\"id\"], false);\r\n body += this.CreateDataHeader(\"t\", g_data_list[\"type\"], false);\r\n body += this.CreateDataHeader(\"f\", p_submit_type, false);\r\n body += this.CreateDataHeader(\"o\", g_data_list[\"operator\"], false);\r\n body += this.CreateDataHeader(\"file\", p_data_content, true);\r\n body += this.CreateDataHeader(\"ver\", GetVersionNumber(), false);\r\n body += \"--\" + this.headerBoundary + \"--\" + this.CLFR;\r\n\r\n var com_object = this;\r\n\r\n $.ajax({\r\n contentType: \"multipart/form-data; boundary=\" + this.headerBoundary,\r\n data: body,\r\n type: \"POST\",\r\n cache: false,\r\n url: l_url,\r\n success: function (data, status) {\r\n try {\r\n com_object.ParseReturnData(data);\r\n\r\n if (onSuccess) {\r\n onSuccess(p_owner, data);\r\n }\r\n if (!supressMessage) {\r\n VRC.ErrorHandleService.showMessage(\"Data successfully submitted\", G_MSG_TYPE_SUCCESS);\r\n }\r\n } catch (e) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.PARSE_ERROR_DEFAULT);\r\n }\r\n },\r\n fail: function (data, status) {\r\n if (data.status === 401) {\r\n g_localsave_object.RemoveLocalStorageItem(G_LS_NAMES.MAIN_VESSEL_DATA);\r\n location.reload();\r\n } else if (data.status === 0 && data.readyState === 0) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.NO_RESPONSE_FROM_SERVER);\r\n } else if (data.responseText !== \"\") {\r\n try {\r\n var error = $.parseJSON(data.responseText);\r\n if (error.message) {\r\n VRC.ErrorHandleService.showError(error.message);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.SUBMIT_ERROR_DEFAULT);\r\n }\r\n } else {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.SUBMIT_ERROR_DEFAULT);\r\n }\r\n\r\n VRC.LoadingModal.hide();\r\n if (onError) {\r\n onError(data, status);\r\n }\r\n },\r\n });\r\n};\r\n\r\n/*\r\n * Submits everything\r\n */\r\nCommunication.prototype.SubmitAllData = function (submitCode, onSuccess, onError, suppressMessage) {\r\n var l_extra_data = {\r\n version: GetVersionNumber(),\r\n userAgent: navigator.userAgent,\r\n token: g_data_list[\"hash_code\"],\r\n };\r\n\r\n var mainVesselData = g_localsave_object.GetLocalStorageItem(G_LS_NAMES.MAIN_VESSEL_DATA);\r\n\r\n var currentVoyageData = mainVesselData.current_voyage;\r\n\r\n var l_voyage_log_data = g_voyage_planning.CreateJSON();\r\n var l_bulk_data = g_localsave_object.GetLocalStorageItem(G_LS_NAMES[\"BULK_TANKS\"]);\r\n var l_deck_data = g_localsave_object.GetLocalStorageItem(G_LS_NAMES[\"DECK_DATA\"]);\r\n var l_container_data = g_localsave_object.GetLocalStorageItem(G_LS_NAMES[\"DECK_CONTAINER_DATA\"]);\r\n\r\n if (l_voyage_log_data === null || l_bulk_data === null || l_deck_data === null || l_container_data === null) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"Voyage log, bulk or deck data was not valid. Please try again, or re-open browser and try again. No submission done.\",\r\n G_MSG_TYPE_ERROR\r\n );\r\n VRC.LoadingModal.hide();\r\n return;\r\n }\r\n\r\n var l_data = {\r\n WELS_current_voyage: currentVoyageData,\r\n WELS_voyage_log: l_voyage_log_data,\r\n WELS_containers: l_container_data,\r\n WELS_deck_data: l_deck_data,\r\n WELS_bulk_data: l_bulk_data,\r\n WELS_fuel_log: {},\r\n WELS_extra_data: l_extra_data,\r\n };\r\n\r\n var l_json_data = JSON.stringify(l_data);\r\n this.SubmitDataFile(l_json_data, submitCode, null, onSuccess, onError, suppressMessage);\r\n};\r\n\r\n/*\r\n * Submits deck state to DB\r\n */\r\nCommunication.prototype.SubmitDeckStateToDB = function () {\r\n if (!this.HasRemoteAccess()) {\r\n return;\r\n }\r\n\r\n var l_container_list = g_localsave_object.GetLocalStorageItem(GL_LS_NAMES[\"DECK_CONTAINER_DATA\"]);\r\n var l_deck_submission = g_localsave_object.GetLocalStorageItem(GL_LS_NAMES[\"DECK_DATA\"]);\r\n\r\n var l_deck_data = { WELS_containers: l_container_list, WELS_deck: l_deck_submission };\r\n\r\n this.SubmitDataFile(JSON.stringify(l_deck_data), \"deck\");\r\n};\r\n\r\n/**\r\n * Parses data returned from a submit/fetch. This groups several functions together\r\n * which can instead be called separately where needed\r\n *\r\n * @param JSON_data data to be parsed\r\n *\r\n */\r\nCommunication.prototype.ParseReturnData = function (JSON_data) {\r\n this.ParseValidations(JSON_data);\r\n this.ParseLastSubmitDate(JSON_data);\r\n};\r\n\r\n/**\r\n * Parses last submit date and submit interval.\r\n * Leave date empty and interval 0 if not found and save result\r\n *\r\n * @param JSON_data data to be parsed\r\n *\r\n */\r\nCommunication.prototype.ParseLastSubmitDate = function (JSON_data) {\r\n try {\r\n var parsed_data = $.parseJSON(JSON_data);\r\n\r\n if (parsed_data.current_voyage) {\r\n parsed_data = parsed_data.current_voyage;\r\n }\r\n\r\n g_data_list.lastSubmitDate = parsed_data.lastSubmitDate || g_data_list.lastSubmitDate || \"\";\r\n g_data_list.requiredSubmitIntervalHours =\r\n parsed_data.requiredSubmitIntervalHours || g_data_list.requiredSubmitIntervalHours || 0;\r\n\r\n g_localsave_object.SetLocalStorageItem(G_LS_NAMES.MAIN_VESSEL_DATA, g_data_list);\r\n } catch (e) {\r\n console.error(\"ParseValidations\", e);\r\n }\r\n};\r\n\r\n/*\r\n * Parses any validations returned from a submit\r\n */\r\nCommunication.prototype.ParseValidations = function (JSON_validations) {\r\n try {\r\n var parsed_data = $.parseJSON(JSON_validations);\r\n\r\n g_localsave_object.SetLocalStorageItem(G_LS_NAMES[\"VOYAGE_VALIDATIONS\"], parsed_data.voyage_alerts || {});\r\n\r\n ShowVoyageValidations(g_current_page);\r\n } catch (e) {\r\n console.error(\"ParseValidations\", e);\r\n $(\"#validation_area\").html(\"\");\r\n g_localsave_object.RemoveLocalStorageItem(G_LS_NAMES[\"VOYAGE_VALIDATIONS\"]);\r\n }\r\n};\r\n\r\n/*\r\n * Fetches transit containers for deck\r\n */\r\nCommunication.prototype.FetchTransitContainers = function () {\r\n var deferred = $.Deferred();\r\n if (!this.HasRemoteAccess()) {\r\n return;\r\n }\r\n try {\r\n $.getJSON(\r\n G_ROOT_ADDRESS +\r\n \"/vessel.get_transit_containers?h=\" +\r\n g_data_list[\"hash_code\"] +\r\n \"&v=\" +\r\n g_data_list[\"id\"] +\r\n \"&s=\" +\r\n g_data_list[\"source\"] +\r\n \"&o=\" +\r\n g_data_list[\"type\"] +\r\n \"&i=\" +\r\n g_data_list[\"operator\"],\r\n function (p_data) {\r\n if (p_data.Error != null) {\r\n VRC.ErrorHandleService.showMessage(p_data.Error, G_MSG_TYPE_ERROR);\r\n return;\r\n }\r\n\r\n if (p_data.WELS_container_data === null || p_data.WELS_container_data.length <= 0) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"No transit containers found from given source.\",\r\n G_MSG_TYPE_WARNING\r\n );\r\n return;\r\n }\r\n\r\n var l_counter = PopulateTransitContainers(p_data);\r\n\r\n if (l_counter > 0) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"Fetched \" + l_counter + \" transit containers\",\r\n G_MSG_TYPE_SUCCESS\r\n );\r\n } else {\r\n VRC.ErrorHandleService.showMessage(\r\n \"No transit containers to fetch that are not already present.\",\r\n G_MSG_TYPE_NORMAL\r\n );\r\n }\r\n deferred.resolve(p_data);\r\n }\r\n ).fail(function (p_data) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"There was a problem retrieving transit containers from server. Most likely a parsing issue or invalid hash. Please try to re-log or contact support\",\r\n G_MSG_TYPE_ERROR\r\n );\r\n deferred.reject(p_data);\r\n });\r\n } catch (l_err) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"An error occured whilst trying to retrieve transit containers. Exception\" + l_err,\r\n G_MSG_TYPE_ERROR\r\n );\r\n deferred.reject(l_err);\r\n }\r\n return deferred.promise();\r\n};\r\n\r\n/*\r\n * Attempts to log in and fetch main info\r\n */\r\nCommunication.prototype.FetchMainInfo = function (p_id, p_type, p_operator, p_password, p_username) {\r\n var deferred = $.Deferred();\r\n if (!this.HasRemoteAccess()) {\r\n deferred.reject({ errorMsg: \"No remote access\" });\r\n }\r\n try {\r\n var versionNumber = GetVersionNumber();\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: G_ROOT_ADDRESS + \"/vessel.get_info\",\r\n data:\r\n \"v=\" +\r\n p_id +\r\n \"&u=\" +\r\n p_username +\r\n \"&o=\" +\r\n p_type +\r\n \"&i=\" +\r\n p_operator +\r\n \"&p=\" +\r\n p_password +\r\n \"&ver=\" +\r\n versionNumber,\r\n dataType: \"text\",\r\n contentType: \"text/json\",\r\n success: function (p_data_response) {\r\n if (p_data_response == null) {\r\n SetLoginInformation(\"Could not log in\", \"Could not log in\");\r\n deferred.reject({\r\n errorMsg:\r\n \"No user data found for id: \" + p_id + \", type:\" + p_type + \", operator: \" + p_operator,\r\n });\r\n } else if (p_data_response.indexOf(\"Invalid or missing password\") > 1) {\r\n SetLoginInformation(\"Could not log in\", \"Could not log in\");\r\n g_dataIsReady = false;\r\n deferred.reject({ errorMsg: p_data_response });\r\n } else {\r\n try {\r\n var p_data = jQuery.parseJSON(p_data_response);\r\n var currentVoyage;\r\n g_data_list = p_data[G_LS_NAMES[\"MAIN_VESSEL_DATA\"]];\r\n\r\n g_data_list[\"operator\"] = p_operator;\r\n\r\n SetLoginInformation(g_data_list[\"name\"], p_operator);\r\n\r\n g_data_list[\"deck_scale_value\"] = G_DECK_SCALES[\"VESSEL\"];\r\n\r\n if (g_data_list.current_voyage) {\r\n currentVoyage = JSON.parse(g_data_list.current_voyage);\r\n g_data_list.lastSubmitDate = currentVoyage.lastSubmitDate || \"\";\r\n g_data_list.requiredSubmitIntervalHours = currentVoyage.requiredSubmitIntervalHours || 0;\r\n g_data_list.showDepartureWarnings = currentVoyage.showDepartureWarnings || \"no\";\r\n g_data_list.enableVoyageDpMode = currentVoyage.enableVoyageDpMode || \"no\";\r\n }\r\n\r\n g_localsave_object.SetLocalStorageItem(G_LS_NAMES[\"MAIN_VESSEL_DATA\"], g_data_list);\r\n\r\n g_localsave_object.SetLocalStorageItem(\r\n G_LS_NAMES[\"DECK_DATA\"],\r\n p_data[G_LS_NAMES[\"DECK_DATA\"]]\r\n );\r\n g_localsave_object.SetLocalStorageItem(G_LS_NAMES[\"DECK_CONTAINER_DATA\"], g_container_list); // resets container list\r\n\r\n var fetchingBulkTanks = VRC.BulkState.fetchBulkTanks();\r\n\r\n fetchingBulkTanks.done(function () {\r\n VRC.BulkState.init();\r\n deferred.resolve();\r\n });\r\n } catch (l_err) {\r\n deferred.reject({\r\n errorMsg: \"An error occured whilst trying to retrieve user data. Exception\" + l_err,\r\n });\r\n }\r\n }\r\n },\r\n error: function (xhr, responseType, p_data) {\r\n var errorObj = {\r\n errorMsg: \"\",\r\n };\r\n if (p_data.indexOf(\"User exceeded maxmimum number\") > 1) {\r\n errorObj.errorMsg = p_data;\r\n } else {\r\n errorObj.errorMsg =\r\n \"There was a problem retrieving main data from server. Most likely a parsing issue. Please try to re-log or contact support\" +\r\n p_data;\r\n }\r\n deferred.reject(errorObj);\r\n },\r\n });\r\n } catch (l_err) {\r\n deferred.reject({ errorMsg: \"An error occured whilst trying to retrieve user data. Exception\" + l_err });\r\n }\r\n return deferred.promise();\r\n};\r\n\r\n/*\r\n * Writes return statement of the specific type based on returned data from server\r\n */\r\nCommunication.prototype.ProcessReturnedSavedStatement = function (p_return_data) {\r\n if (p_return_data !== undefined && p_return_data != null) {\r\n if (p_return_data.length > 0) {\r\n try {\r\n var l_data = JSON.parse(p_return_data);\r\n VRC.ErrorHandleService.showMessage(l_data[0].msg, l_data[0].status);\r\n } catch (err) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"Data sent to server. Additional info: \" + p_return_data,\r\n G_MSG_TYPE_NORMAL\r\n );\r\n }\r\n } else {\r\n VRC.ErrorHandleService.showMessage(\"Data sent to server.\", G_MSG_TYPE_SUCCESS);\r\n }\r\n } else {\r\n VRC.ErrorHandleService.showMessage(\"Data sent to server\", G_MSG_TYPE_SUCCESS);\r\n }\r\n};\r\n\r\nCommunication.prototype.FetchDataFromServer = function (p_owner, onSuccess, p_fetch_type, p_params, onError) {\r\n if (!this.HasRemoteAccess()) {\r\n return;\r\n }\r\n try {\r\n if (p_params) {\r\n p_params = JSON.stringify(p_params);\r\n } else {\r\n p_params = GetVersionNumber();\r\n }\r\n\r\n var l_params =\r\n \"h=\" +\r\n g_data_list[\"hash_code\"] +\r\n \"&i=\" +\r\n g_data_list[\"id\"] +\r\n \"&t=\" +\r\n g_data_list[\"type\"] +\r\n \"&f=\" +\r\n p_fetch_type;\r\n l_params += \"&o=\" + g_data_list[\"operator\"] + \"&d=\" + p_params;\r\n\r\n $.getJSON(G_ROOT_ADDRESS + \"/reporting.fetch_data?\" + l_params, function (p_data) {\r\n // we want to save current voyage data, which could be coming from either current_voyage or voyage.\r\n if (p_data.current_voyage || (p_data.voyage && p_data.voyage.lastSubmitDate)) {\r\n var currentVoyage = p_data.current_voyage || p_data.voyage;\r\n g_data_list.lastSubmitDate = currentVoyage.lastSubmitDate || \"\";\r\n g_data_list.requiredSubmitIntervalHours = currentVoyage.requiredSubmitIntervalHours || 0;\r\n g_data_list.showDepartureWarnings = currentVoyage.showDepartureWarnings || \"no\";\r\n g_data_list.enableVoyageDpMode = currentVoyage.enableVoyageDpMode || \"no\";\r\n g_data_list.current_voyage = currentVoyage;\r\n g_localsave_object.SetLocalStorageItem(G_LS_NAMES[\"MAIN_VESSEL_DATA\"], g_data_list);\r\n }\r\n onSuccess(p_owner, p_data);\r\n }).fail(function (response) {\r\n if (response.status === 401) {\r\n g_localsave_object.RemoveLocalStorageItem(G_LS_NAMES.MAIN_VESSEL_DATA);\r\n location.reload();\r\n } else if (response.status === 0 && response.readyState === 0) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.NO_RESPONSE_FROM_SERVER);\r\n } else if (response.responseText !== \"\") {\r\n try {\r\n var error = $.parseJSON(response.responseText);\r\n if (error.message) {\r\n VRC.ErrorHandleService.showError(error.message);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.FETCH_ERROR_DEFAULT);\r\n }\r\n } else {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.FETCH_ERROR_DEFAULT);\r\n }\r\n\r\n if (onError) {\r\n onError(response);\r\n }\r\n });\r\n } catch (l_err) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"An error occured whilst trying to fetch data from server. Exception \" + l_err,\r\n G_MSG_TYPE_ERROR\r\n );\r\n }\r\n};\r\n\r\n/*\r\n * Fetches data from DB as HTML and lets a callback function handle the result\r\n */\r\nCommunication.prototype.FetchHTMLFromServer = function (p_owner, f_callback, p_fetch_type, p_params) {\r\n if (!this.HasRemoteAccess()) {\r\n return;\r\n }\r\n try {\r\n var l_params =\r\n \"h=\" +\r\n g_data_list[\"hash_code\"] +\r\n \"&i=\" +\r\n g_data_list[\"id\"] +\r\n \"&t=\" +\r\n g_data_list[\"type\"] +\r\n \"&f=\" +\r\n p_fetch_type;\r\n l_params += \"&o=\" + g_data_list[\"operator\"] + \"&d=\" + p_params;\r\n\r\n $.get(G_ROOT_ADDRESS + \"/reporting.fetch_data?\" + l_params, function (p_data) {\r\n f_callback(p_owner, p_data);\r\n }).fail(function (response) {\r\n if (response.status === 401) {\r\n g_localsave_object.RemoveLocalStorageItem(G_LS_NAMES.MAIN_VESSEL_DATA);\r\n location.reload();\r\n }\r\n VRC.ErrorHandleService.showMessage(\r\n \"FetchHTMLFromServer: There was a problem fetching data from server. Most likely a parsing issue or invalid hash. Please try to re-log or contact support. Debug: \" +\r\n response,\r\n G_MSG_TYPE_ERROR\r\n );\r\n });\r\n } catch (l_err) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"An error occured whilst trying to fetch data from server. Exception\" + l_err,\r\n G_MSG_TYPE_ERROR\r\n );\r\n }\r\n};\r\n\r\n/*\r\n * Fetches master data from DB and lets a callback function handle the result\r\n */\r\nCommunication.prototype.FetchMasterData = function (p_owner, onSuccess, onError) {\r\n try {\r\n var l_type = localStorage[\"login_user_param\"];\r\n var l_operator = localStorage[\"login_operator_param\"];\r\n\r\n if (l_type === undefined || l_type == null || l_type == \"null\") {\r\n l_type = g_data_list[\"type\"];\r\n }\r\n\r\n if (l_operator === undefined || l_operator == null || l_operator == \"null\") {\r\n l_operator = g_data_list[\"operator\"];\r\n }\r\n\r\n if (\r\n l_operator === undefined ||\r\n l_operator == null ||\r\n l_operator == \"null\" ||\r\n l_type === undefined ||\r\n l_type == null ||\r\n l_type == \"null\"\r\n ) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"FetchMasterData: There was a problem fetching master data from server. Could not find the type or operator name. Please try to re-log or contact support\",\r\n G_MSG_TYPE_ERROR\r\n );\r\n return;\r\n }\r\n\r\n var l_params = \"h=00000000&i=99\" + \"&t=\" + l_type + \"&o=\" + l_operator;\r\n $.getJSON(G_ROOT_ADDRESS + \"/reporting.get_master_data?\" + l_params, function (p_data) {\r\n onSuccess(p_owner, p_data);\r\n }).fail(function (response) {\r\n onError =\r\n onError ||\r\n function (response) {\r\n response = response || {};\r\n if (response.status === 401) {\r\n g_localsave_object.RemoveLocalStorageItem(G_LS_NAMES.MAIN_VESSEL_DATA);\r\n location.reload();\r\n } else if (response.status === 0 && response.readyState === 0) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.NO_RESPONSE_FROM_SERVER);\r\n } else if (response.responseText !== \"\") {\r\n try {\r\n var error = $.parseJSON(response.responseText);\r\n if (error.message) {\r\n VRC.ErrorHandleService.showError(error.message);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n VRC.ErrorHandleService.showError(\r\n \"An error occured whilst trying to fetch master data from server.\"\r\n );\r\n }\r\n } else {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.SUBMIT_ERROR_DEFAULT);\r\n }\r\n\r\n console.error(response.responseText);\r\n };\r\n onError(response);\r\n });\r\n } catch (l_err) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.PARSE_ERROR_DEFAULT);\r\n }\r\n};\r\n\r\nCommunication.prototype.FetchMasterData2 = function (p_owner, onSuccess, onError) {\r\n try {\r\n var l_type = localStorage[\"login_user_param\"];\r\n var l_operator = localStorage[\"login_operator_param\"];\r\n var vessel_data = JSON.parse(localStorage[\"WELS_vessel_data\"]);\r\n var l_vessel_id = vessel_data.id;\r\n var l_vessel_hash = vessel_data.hash_code;\r\n\r\n if (l_type === undefined || l_type == null || l_type == \"null\") {\r\n l_type = g_data_list[\"type\"];\r\n }\r\n\r\n if (l_operator === undefined || l_operator == null || l_operator == \"null\") {\r\n l_operator = g_data_list[\"operator\"];\r\n }\r\n\r\n if (\r\n l_operator === undefined ||\r\n l_operator == null ||\r\n l_operator == \"null\" ||\r\n l_type === undefined ||\r\n l_type == null ||\r\n l_type == \"null\"\r\n ) {\r\n VRC.ErrorHandleService.showMessage(\r\n \"FetchMasterData: There was a problem fetching master data from server. Could not find the type or operator name. Please try to re-log or contact support\",\r\n G_MSG_TYPE_ERROR\r\n );\r\n return;\r\n }\r\n\r\n if (l_vessel_id == undefined) {\r\n l_vessel_id = g_data_list.id;\r\n }\r\n\r\n if (l_vessel_hash == undefined) {\r\n l_vessel_hash = g_data_list.hash_code;\r\n }\r\n\r\n var l_params = \"h=\" + l_vessel_hash + \"&i=\" + l_vessel_id + \"&t=\" + l_type + \"&o=\" + l_operator;\r\n $.getJSON(G_ROOT_ADDRESS + \"/reporting.get_master_data2?\" + l_params, function (p_data) {\r\n onSuccess(p_owner, p_data);\r\n }).fail(function (response) {\r\n onError =\r\n onError ||\r\n function (response) {\r\n response = response || {};\r\n if (response.status === 401) {\r\n g_localsave_object.RemoveLocalStorageItem(G_LS_NAMES.MAIN_VESSEL_DATA);\r\n location.reload();\r\n } else if (response.status === 0 && response.readyState === 0) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.NO_RESPONSE_FROM_SERVER);\r\n } else if (response.responseText !== \"\") {\r\n try {\r\n var error = $.parseJSON(response.responseText);\r\n if (error.message) {\r\n VRC.ErrorHandleService.showError(error.message);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n VRC.ErrorHandleService.showError(\r\n \"An error occured whilst trying to fetch master data from server.\"\r\n );\r\n }\r\n } else {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.SUBMIT_ERROR_DEFAULT);\r\n }\r\n\r\n console.error(response.responseText);\r\n };\r\n onError(response);\r\n });\r\n } catch (l_err) {\r\n VRC.ErrorHandleService.showDefaultError(VRC.ErrorHandleService.errors.PARSE_ERROR_DEFAULT);\r\n }\r\n};\r\n\r\n/**\r\n * Fetches user info from database. Clears previously saved deck and container data\r\n * and sets user and deck data.\r\n * Also saves this to local storage\r\n */\r\nfunction FetchMainInfo(p_id, p_type, p_operator, p_password, p_username) {\r\n // Clear everything first\r\n ClearAllContainers();\r\n RemoveDecks();\r\n\r\n return g_remote_object.FetchMainInfo(p_id, p_type, p_operator, p_password, p_username);\r\n}\r\n","/**\r\n * This module render the Login Panel, binds all triggers, validation and redirect the login to the FetchMainInfo authentication.\r\n */\r\nvar VRC = VRC || {};\r\nVRC.Authentication = (function () {\r\n\tvar ENTER_KEY = 13;\r\n\r\n\t/**\r\n\t * Inititialize the login panel event handlers for login and forgotten password..\r\n\t */\r\n\tvar init = function () {\r\n\r\n\t\tvar $dialog = $('#login_dialog');\r\n\t\t$dialog.modal();\r\n\r\n\r\n\t\tattachOnLoginBtnClick($dialog);\r\n\t\tattachKeyPressInPasswordInput($dialog);\r\n\t\tattachForgottenPassword($dialog);\r\n\t\tattachUsernameMethod();\r\n\t};\r\n\r\n\tvar attachUsernameMethod = function () {\r\n\t\tif (g_master_data.master_data.vessel_list.length < 1) {\r\n\t\t\t$('
').appendTo('.username_field');\r\n\t\t} else {\r\n \t\t\t$('
').appendTo('.username_field');\r\n\t\t\tSetAvailableDropdownList('vessel', $('#login_id_selection'));\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * When clicking the forgotten password link\r\n\t * @param $dialog The container\r\n\t */\r\n\tvar attachForgottenPassword = function ($dialog) {\r\n\t\tvar $forgotPasswordBtn = $dialog.find('.login_dialog__forgot-password');\r\n\t\t$forgotPasswordBtn.unbind('click').click(function () {\r\n\t\t\tvar msg = 'Generate new password and send it to the bridge email?';\r\n\t\t\tvar onConfirm = function () {\r\n\t\t\t\tresetPassword();\r\n\t\t\t};\r\n\r\n\t\t\tVRC.ConfirmationModal.show({msg: msg, onConfirm: onConfirm});\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * When clicking enter key in password field.\r\n\t * @param $dialog The container\r\n\t */\r\n\tvar attachKeyPressInPasswordInput = function ($dialog) {\r\n\t\tvar $passwordField = $dialog.find('#login_password');\r\n\t\t$passwordField.keypress(function (e) {\r\n\t\t\tif (e.which == ENTER_KEY) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tlogin();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * When pressing the login button\r\n\t * @param $dialog The container\r\n\t */\r\n\tvar attachOnLoginBtnClick = function ($dialog) {\r\n\t\tvar $loginBtn = $dialog.find('.login_dialog__submit-btn');\r\n\t\t$loginBtn.unbind('click').bind('click touchstart', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tlogin();\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Finds all errors in the login dialog.\r\n\t * @returns {*|jQuery} All alerts\r\n\t */\r\n\tvar getDomError = function () {\r\n\t\treturn $('#login_dialog').find('.alert');\r\n\t};\r\n\r\n\t/**\r\n\t * Display an alert message in the panel\r\n\t * @param msg Message\r\n\t * @param status (optional) alert-danger or other bootstrap status.\r\n\t */\r\n\tvar displayMessage = function (msg, status) {\r\n\t\tstatus = status || 'alert-danger';\r\n\t\tvar $alert = getDomError();\r\n\r\n\t\t$alert.text(msg);\r\n\t\t$alert.removeClass('hidden');\r\n\t\t$alert.addClass(status);\r\n\t};\r\n\r\n\t/**\r\n\t * Get values from inputfields, validates and tries to login.\r\n\t * If sucess, redirect to HOME_PAGE.\r\n\t * If not, show error message\r\n\t */\r\n\tvar login = function () {\r\n\t\tvar l_operator = getOperator();\r\n\t\tvar l_type = 'vessel'; //Always vessel\r\n\t\tvar l_id = getVesselId();\r\n\t\tvar l_password = getPassword();\r\n\t\tvar vesselName = getVesselName();\r\n\t\tvar l_username = getUsername();\r\n\r\n\t\tvar l_can_log_in = false;\r\n\r\n\t\tif (l_operator === '' || l_type === '' || l_id === '' || l_password === '') {\r\n\t\t\tdisplayMessage('Password is required');\r\n\t\t}\r\n\t\telse {\r\n\t\t\tl_can_log_in = true;\r\n\t\t}\r\n\r\n\t\tif (l_can_log_in) {\r\n\t\t\tSetLoginInformation(vesselName, l_operator);\r\n\t\t\tFetchMainInfo(l_id, l_type, l_operator, l_password, l_username)\r\n\t\t\t\t.done(function (data) {\r\n\t\t\t\t\tLoadPage(G_PAGE.HOME_PAGE);\r\n\t\t\t\t\tVRC.PortManager.init();\r\n\t\t\t\t\tg_dataIsReady = true;\r\n\t\t\t\t\t$('#login_dialog').modal('hide');\r\n\t\t\t\t\tlocation.reload();\r\n\t\t\t\t})\r\n\t\t\t\t.fail(function (data) {\r\n\t\t\t\t\t\tvar message = data.errorMsg;\r\n\t\t\t\t\t\tif (message.indexOf('ORA-20006: Invalid or missing') > 1) {\r\n\t\t\t\t\t\t\tdisplayMessage('Incorrect password');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (message.indexOf('User exceeded maxmimum number') > 1) {\r\n\t\t\t\t\t\t\tdisplayMessage('User exceeded maxmimum number of failed login attempts. Contact support to reopen the account');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (message.indexOf('ORA-20000: vessel-role')) {\r\n\t\t\t\t\t\t\tdisplayMessage('This vessel has a role in WELS Operator, Please log in there or contact your operator for assistance');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tdisplayMessage('Something went wrong when trying to log on, please contact support.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tvar getOperator = function () {\r\n\t\treturn $('#login_operator_selection').val();\r\n\t};\r\n\r\n\tvar getVesselId = function () {\r\n\r\n\t\tvar login_id;\r\n\r\n\t\tlogin_id = $('#login_id_selection').val();\r\n\r\n\t\tif (!login_id) {\r\n\t\t\tlogin_id = $('#login_username').val();\r\n\t\t}\r\n\r\n\t\tif (!login_id || login_id.length === 0) {\r\n\t\t\talert('Please select a valid vessel in order to reset the password.');\r\n\t\t}\r\n\r\n\t\treturn login_id;\r\n\r\n\t};\r\n\r\n\tvar getVesselName = function(){\r\n\t\treturn $(\"#login_id_selection option:selected\").text();\r\n\t};\r\n\r\n\tvar getPassword = function () {\r\n\t\treturn $('#login_password').val();\r\n\t};\r\n\r\n\tvar getUsername = function () {\r\n\t\treturn $('#login_username').val();\r\n\t};\r\n\r\n\tvar getResetPasswordUrl = function (operator, vesselId) {\r\n\t\treturn G_ROOT_ADDRESS + '/reporting.reset_password?i=' + vesselId + \"&o=\" + operator;\r\n\t};\r\n\r\n\tvar resetPassword = function () {\r\n\t\tvar operator = getOperator();\r\n\t\tvar vesselId = getVesselId();\r\n\r\n\t\t$.ajax({\r\n\t\t\turl: getResetPasswordUrl(operator, vesselId)\r\n\t\t})\r\n\t\t\t.done(function (data) {\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\tdisplayMessage(data.message, 'alert-info')\r\n\t\t\t})\r\n\t\t\t.fail(function(data) {\r\n\t\t\t\tdisplayMessage(data.responseText);\r\n\r\n\t\t});\r\n\r\n\t};\r\n\r\n\treturn {\r\n\t\tinit: init\r\n\t}\r\n})();","/**\r\n * Act as a wrapper to the global communication object to deliver promises for more manageable asynchronous calls.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.CommunicationService = (function () {\r\n\tvar _service;\r\n\r\n\t/**\r\n\t * Initializes the service\r\n\t * @param globalService the global communation object.\r\n\t */\r\n\tvar init = function (globalService) {\r\n\t\t_service = globalService;\r\n\t};\r\n\r\n\t/**\r\n\t * Creates generig handler\r\n\t * @returns {{deferred: *, onSuccess: Function, onError: Function}}\r\n\t */\r\n\tvar createDeferredHandler = function () {\r\n\t\tvar deferred = $.Deferred();\r\n\r\n\t\tvar onSuccess = function (self, data) {\r\n\t\t\tVRC.LoadingModal.hide();\r\n\t\t\tdeferred.resolve(self, data);\r\n\t\t};\r\n\t\tvar onError = function (data) {\r\n\t\t\tVRC.LoadingModal.hide();\r\n\t\t\tdeferred.reject(data);\r\n\t\t};\r\n\r\n\t\treturn {\r\n\t\t\tdeferred: deferred,\r\n\t\t\tonSuccess: onSuccess,\r\n\t\t\tonError: onError\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Fetches data from server\r\n\t * @param owner The element that sends the request\r\n\t * @param fetchType type of fetch: 'bulk_tanks', 'bulk_data'\r\n\t * @param (optional) parameters.\r\n\t * @returns promise resolved in FetchDataFromServer.\r\n\t */\r\n\tvar fetchData = function (owner, fetchType, params) {\r\n\t\tparams = params || '';\r\n\t\tvar def = createDeferredHandler();\r\n\t\t_service.FetchDataFromServer(owner, def.onSuccess, fetchType, params, def.onError);\r\n\t\treturn def.deferred.promise();\r\n\t};\r\n\r\n\t/**\r\n\t * Fetches masterdata from server\r\n\t * @param owner The element that sends the request\r\n\t * @returns promise resolved in FetchMasterData.\r\n\t */\r\n\tvar fetchMasterData = function (owner) {\r\n\t\tvar def = createDeferredHandler();\r\n\t\t_service.FetchMasterData(owner, def.onSuccess, def.onError);\r\n\t\treturn def.deferred.promise();\r\n\t};\r\n\r\n\t/**\r\n\t * Fetches masterdata2 from server\r\n\t * @param owner The element that sends the request\r\n\t * @returns promise resolved in FetchMasterData2.\r\n\t */\r\n\tvar fetchMasterData2 = function (owner) {\r\n\t\tvar def = createDeferredHandler();\r\n\t\t_service.FetchMasterData2(owner, def.onSuccess, def.onError);\r\n\t\treturn def.deferred.promise();\r\n\t};\r\n\r\n\t/**\r\n\t * Fetches Bulk Cargo Request from server\r\n\t * @param portId portId\r\n\t * @returns promise resolved in FetchMasterData.\r\n\t */\r\n\tvar getBulkCargoRequests = function (portId) {\r\n\t\tvar params = {\"port\": portId, \"ver\": GetVersionNumber()};\r\n\t\treturn fetchData({}, 'bulk_transit', params);\r\n\t};\r\n\r\n\t/**\r\n\t * Submitting Data\r\n\t * @param submitCode What to be submitted ['all', 'all_no_deck', 'deck']\r\n\t * @param suppressMessage (boolean) should Infomessage be sent?\r\n\t * @param showLoading (boolean) should Loading modal be showmn?\r\n\t * @returns {*}\r\n\t */\r\n\tvar submitData = function (submitCode, suppressMessage, showLoading) {\r\n\t\tif (showLoading === undefined) {\r\n\t\t\tshowLoading = true;\r\n\t\t}\r\n\t\tif (showLoading) {\r\n\t\t\tVRC.LoadingModal.show();\r\n\t\t}\r\n\r\n\t\tsubmitCode = submitCode || 'all';\r\n\t\tsuppressMessage = suppressMessage || true;\r\n\t\tvar def = createDeferredHandler();\r\n\t\t_service.SubmitAllData(submitCode, def.onSuccess, def.onError, suppressMessage)\r\n\t\treturn def.deferred.promise();\r\n\t};\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t\tfetchData: fetchData,\r\n\t\tfetchMasterData: fetchMasterData,\r\n\t\tfetchMasterData2: fetchMasterData2,\r\n\t\tgetBulkCargoRequests: getBulkCargoRequests,\r\n\t\tsubmitData: submitData\r\n\t}\r\n\r\n})();","/**\r\n * This module handles errors and show error and info messages.\r\n */\r\n// msg constants for information message types\r\nvar G_MSG_TYPE_NORMAL = 0;\r\nvar G_MSG_TYPE_WARNING = 1;\r\nvar G_MSG_TYPE_ERROR = 2;\r\nvar G_MSG_TYPE_SUCCESS = 3;\r\nvar G_MAX_MSG_STRINGS = 3;\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.ErrorHandleService = (function(){\r\n\r\n /**\r\n * Different error types constants with code and messages\r\n * @private\r\n */\r\n var _errors = {\r\n NO_RESPONSE_FROM_SERVER : {\r\n code : 1,\r\n msg : 'We were unable to get any response at all from Wels Operator. Please check http://wellit.com/access-wels/ for messages from Wels regarding updates and other messages.' +\r\n 'If no information is available please try again in a little while and/or contact support@wellit.no.'\r\n },\r\n DEFAULT : {\r\n code : 0,\r\n msg : 'Something went wrong and we don\\'t know exactly what. If you are sure that all your data is submitted to server you can try to . If you have work saved locally please contact support@wellit.no.'\r\n },\r\n SUBMIT_ERROR_DEFAULT : {\r\n code : 2,\r\n msg : 'We were able to upload your data, but something went wrong when importing it to the Wels Operator. We have logged your submit, but please contact support@wellit.no so we can see what went wrong.'\r\n },\r\n FETCH_ERROR_DEFAULT : {\r\n code : 3,\r\n msg : 'We were unable to fetch your data from Wels operator. If you are sure that all your data is submitted you can try to . If you have work saved locally please contact support@wellit.no.'\r\n },\r\n PARSE_ERROR_DEFAULT : {\r\n code : 4,\r\n msg : 'We received an unexpected response from the Wels Operator. If you are sure that all your data is submitted you can try to . If you have work saved locally please contact support@wellit.no.'\r\n },\r\n NO_NETWORK : {\r\n code : 5,\r\n msg : 'No Internet connection. Data could not be sent or fetched. Save and load locally until you have a internet connection.'\r\n }\r\n };\r\n\r\n /**\r\n * Show info below menu\r\n * @param p_msg Message to be shown\r\n * @param p_type [G_MSG_TYPE_NORMAL, G_MSG_TYPE_WARNING, G_MSG_TYPE_ERROR, G_MSG_TYPE_SUCCESS]\r\n */\r\n var showMessage = function( p_msg, p_type ){\r\n var $l_info = $('#info');\r\n var $l_msg_box = '';\r\n\r\n var l_date = new Date();\r\n var l_date_str = GetFullDate( l_date );\r\n\r\n if( p_type == G_MSG_TYPE_NORMAL )\r\n $l_msg_box = $('
' + l_date_str + ': ' + p_msg + '
');\r\n else if( p_type == G_MSG_TYPE_WARNING )\r\n $l_msg_box = $('
' + l_date_str + ': ' + p_msg + '
');\r\n else if( p_type == G_MSG_TYPE_ERROR )\r\n $l_msg_box = $('
' + l_date_str + ': ' + p_msg + '
');\r\n else if( p_type == G_MSG_TYPE_SUCCESS )\r\n $l_msg_box = $('
' + l_date_str + ': ' + p_msg + '
');\r\n\r\n $l_info.append( $l_msg_box.hide() );\r\n if( $l_info.children().length > G_MAX_MSG_STRINGS ) {\r\n\r\n $l_info.find(':first-child').hide('blind', {}, 500, function(e) {\r\n $(this).remove();\r\n });\r\n }\r\n $l_msg_box.show( 'slide', {}, 500 );\r\n };\r\n\r\n /**\r\n * Shows default error from _errors. Used in Communication.\r\n * @param type Type of error [NO_RESPONSE_FROM_SERVER etc].\r\n */\r\n var showDefaultError = function(type){\r\n if(type.msg !== null) {\r\n showError(type.msg);\r\n }\r\n };\r\n\r\n /**\r\n * Utility for showMessage type Error.\r\n * @param msg Message\r\n */\r\n var showError = function(msg){\r\n showMessage(msg, G_MSG_TYPE_ERROR);\r\n };\r\n\r\n return {\r\n showMessage: showMessage,\r\n showError : showError,\r\n showDefaultError : showDefaultError,\r\n errors : _errors\r\n }\r\n})();\r\n\r\n","/*\r\n* Globals.js\r\n*\r\n* File for keeping globals ( constants at least ) to have a better overview\r\n*\r\n* TODO: SBE: Needless to say, I'm not a fan.\r\n*/\r\n\r\n/*****************************\r\n* CONSTANTS\r\n*****************************/\r\n\r\n// names for local storage use\r\nvar G_LS_NAMES = {\r\n\t'DECK_CONTAINER_DATA': 'WELS_container_data',\r\n\t'DECK_DATA' : 'WELS_deck_data',\r\n\t'MASTER_DATA' : 'WELS_master_data',\r\n\t'MAIN_VESSEL_DATA' : 'WELS_vessel_data',\r\n\t'BULK_TANKS': 'WELS_bulk_tanks',\r\n\t'FUEL_LOG' : 'WELS_fuel_reporting_log',\r\n\t'VOYAGE_LOG' : 'WELS_voyage_event_log',\r\n\t'FUEL_DATA' : 'WELS_rob_data',\r\n\t'VOYAGE_VALIDATIONS': 'WELS_voyage_validations'\r\n};\r\n\r\n\r\nvar G_CONSUMABLE_SEQ = {\r\n FUEL : 1,\r\n LNG : 2,\r\n POTWATER : 3,\r\n DRILLWATER : 4\r\n}\r\n\r\n// Page names\r\nvar G_PAGE = {\r\n 'MAIN_PAGE' : -1,\r\n 'HOME_PAGE' : 0,\r\n 'DECK_PAGE' : 1,\r\n 'BULK_PAGE' : 2,\r\n 'VOYAGE_PAGE' : 3,\r\n 'FUEL_PAGE' : 4,\r\n 'DEBUG_PAGE' : 5\r\n};\r\n\r\n// Colour scheme for containers on deck\r\nvar G_CONTAINER_COLOURS = {\r\n'TRANSIT': '#71BC78',\r\n'DECK': '#AD8998',\r\n'OUTGOING':\t'#FF5349',\r\n'CONSTRAINT': '#000000',\r\n};\r\n\r\nvar G_CONTAINER_TYPES = {\r\n\t'REFRIGERATED': 'refrigerated'\r\n};\r\n\r\n// Deck scale\r\nvar G_DECK_SCALES = {\r\n 'VESSEL': 25,\r\n 'RIG': 15\r\n};\r\n\r\n\r\nvar G_CONTAINING_DIV = '#deck'; // The main div for decks\r\n\r\nvar G_ROOT_ADDRESS = '/service/wels'; // Path to functions for interacting with DB\r\n\r\n\r\n/*****************************\r\n* Global variable variables :)\r\n*****************************/\r\n\r\nvar g_voyage_planning = null; \t// Voyage planning state object\r\nvar g_fuel_planning = null;\t\t// Fuel planning/reporting state object\r\nvar g_bulk_planning = null;\t// Bulk planning/reporting state object\r\n\r\nvar g_remote_object = null; // Remote communication object\r\nvar g_master_data = null;\t\t// Master data object\r\nvar g_localsave_object = null;\t// The local storage save system\r\n\r\n\r\n\r\nvar g_current_page = G_PAGE['HOME_PAGE']; // What page we are currently looking at\r\n\r\nvar g_ctrl_key_down = false; // For avoiding double click conflicts when double clicking on a container\r\nvar g_dbl_container_pos = []; // Last doubleclick on deck for adding new containers. Keeps track of x,y pos\r\n\r\nvar g_container_list = {}; // stores containers\r\nvar g_data_list = {}; // Stores data for user\r\n\r\nvar g_deck_list = {}; // Stores deck data\r\nvar g_deck_scale = G_DECK_SCALES['VESSEL']; // keeps track of deck scale\r\nvar g_current_deck; // keeps track of current deck\r\nvar g_autosave_interval_id = null; // interval id for autosaving deck\r\nvar g_container_is_dirty = false; // whether any containers have been moved since previous autosave\r\nvar g_isDragging = false;\r\nvar g_selected_container = null;\r\n\r\nvar g_master_data2_fetched = false;\r\n\r\nvar g_timeStampFormat = \"DD.MM.YYYY HH:mm\"; //Default set to norwegian\r\nvar g_app_locale = \"Europe/Oslo\";\r\n\r\nvar g_actions = {\r\n load : 'load',\r\n offload : 'offload',\r\n backload : 'backload',\r\n discharge: 'discharge',\r\n dump: 'dump',\r\n start_rob : 'start_rob',\r\n rob : 'rob',\r\n tankCleanStarted : 'tank_clean_started',\r\n tankClean : 'tank_clean',\r\n deviation : 'deviation',\r\n transferTo : 'transfer_to',\r\n transferFrom : 'transfer_from',\r\n rob_adjustment : 'rob_adjustment'\r\n};\r\n\r\nvar g_destination_type = {\r\n toRig : 'toRig',\r\n fromRig : 'fromRig',\r\n noRig : 'noRig'\r\n};\r\n\r\nvar g_autoupdate_deck = false;\r\n\r\nvar g_dataIsReady = false;\r\n","/*\r\n * LocalStorage.js\r\n *\r\n * Functions for saving, loading and checking local storage\r\n */\r\n\r\n/*\r\n * Constructor for Local Save System\r\n * Wrapper object for the local storage object\r\n */\r\nfunction LocalSaveSystem () {\r\n\r\n}\r\n\r\n/*\r\n * Initialise any main local storage items\r\n */\r\nLocalSaveSystem.prototype.InitialiseLocalData = function () {\r\n}\r\n\r\n/*\r\n * Checks if a local storage item exists\r\n */\r\nLocalSaveSystem.prototype.HasLocalStorageItem = function (p_item_name) {\r\n if (localStorage[p_item_name] === undefined || localStorage[p_item_name] === null) {\r\n return false;\r\n }\r\n\r\n\treturn true;\r\n};\r\n\r\n/*\r\n * Retrieves an item from local storage\r\n */\r\n\r\nLocalSaveSystem.prototype.GetLocalStorageItem = function (p_item_name) {\r\n\tif (localStorage.getItem(p_item_name) === undefined || localStorage[p_item_name] === null) {\r\n\r\n\t\tvar msg = 'Item ' + p_item_name + ' does not exist in local storage. Ignoring ';\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t}\r\n\ttry {\r\n\t\tvar l_obj = localStorage.getItem(p_item_name)\r\n\r\n\t\treturn JSON.parse(l_obj);\r\n\r\n\t}\r\n\tcatch (e) {\r\n\r\n\t\treturn l_obj;\r\n\t}\r\n}\r\n\r\n/*\r\n * Sets a local storage item\r\n */\r\nLocalSaveSystem.prototype.SetLocalStorageItem = function (p_name, p_value) {\r\n\ttry {\r\n\t\tlocalStorage.setItem(p_name, JSON.stringify(p_value));\r\n\t}\r\n\tcatch (l_exception) {\r\n\t\tif (l_exception == QUOTA_EXCEEDED_ERRPR) {\r\n\t\t\tvar msg = 'Max allowed storage space exceeded. Could not store (all) items in local storage';\r\n\r\n\t\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t\t\tVRC.ErrorHandleService.showMessage('Max allowed storage space exceeded. Could not store (all) items in local storage', G_MSG_TYPE_ERROR);\r\n\t\t\tconsole.error(e.stack); //Added to get debug info in production\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar msg = 'An error occured whilst trying to save to local storage. Exception: ' + l_exception;\r\n\t\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t\t\tVRC.ErrorHandleService.showMessage('An error occured whilst trying to save to local storage. Exception: ' + l_exception, G_MSG_TYPE_ERROR);\r\n\t\t\tconsole.error(e.stack); //Added to get debug info in production\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * Deletes local storage item\r\n */\r\nLocalSaveSystem.prototype.RemoveLocalStorageItem = function (p_name) {\r\n\tif (localStorage.getItem(p_name) === undefined || localStorage[p_name] === null) {\r\n\t\tvar msg = 'Item ' + p_name + ' does not exist in local storage. Ignoring ';\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t}\r\n\ttry {\r\n\t\tlocalStorage.removeItem(p_name)\r\n\t}\r\n\tcatch (e) {\r\n\t\tvar msg = ' Error deleting ' + p_name + ' from local storage ';\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t\tVRC.ErrorHandleService.showMessage(' Error deleting ' + p_name + ' from local storage ', G_MSG_TYPE_ERROR);\r\n\t\tconsole.error(e.stack); //Added to get debug info in production\r\n\t}\r\n}\r\n\r\n/*\r\n * Prints out all data to a webpage\r\n */\r\nLocalSaveSystem.prototype.PrintLocalStorageData = function () {\r\n\tvar l_output;\r\n\ttry {\r\n\t\tfor (var l_key in localStorage) {\r\n\t\t\tvar l_data = '';\r\n\t\t\ttry {\r\n\t\t\t\tl_data = this.GetLocalStorageItem(l_key);\r\n\t\t\t\tl_output += '

' + l_key + '

' + JSON.stringify(l_data) + '

';\r\n\t\t\t}\r\n\t\t\tcatch (l_err) {\r\n\t\t\t\tl_data = localStorage[l_key];\r\n\t\t\t\tl_output += '

' + l_key + '

' + l_data + '

';\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn l_output;\r\n\t}\r\n\tcatch (l_err) {\r\n\r\n\t}\r\n}\r\n\r\n/*\r\n * Loads local state.\r\n */\r\nfunction LoadLocalState () {\r\n\ttry {\r\n\t\t// Load master data from local storage\r\n\t\tg_master_data.LoadMasterData();\r\n\r\n\t\t// Populate data again\r\n\t\tg_data_list = g_localsave_object.GetLocalStorageItem(G_LS_NAMES['MAIN_VESSEL_DATA']);\r\n\r\n\t}\r\n\tcatch (l_err) {\r\n\t\tVRC.ErrorHandleService.showMessage('An error occured whilst trying to load local data: ' + l_err, G_MSG_TYPE_ERROR);\r\n\t\tconsole.error(l_err.stack); //Added to get debug info in production\r\n\t}\r\n}\r\n\r\n/*\r\n * Saves local state ( containers, deck and vessel/rig data\r\n */\r\nfunction SaveLocalState () {\r\n\ttry {\r\n\t\tg_localsave_object.SetLocalStorageItem(G_LS_NAMES['DECK_CONTAINER_DATA'], g_container_list);\r\n\t\tg_localsave_object.SetLocalStorageItem(G_LS_NAMES['MAIN_VESSEL_DATA'], g_data_list);\r\n\t\tVRC.ErrorHandleService.showMessage('Succesfully saved content to local storage', G_MSG_TYPE_SUCCESS);\r\n\t}\r\n\tcatch (l_err) {\r\n\t\tVRC.ErrorHandleService.showMessage('An error occured whilst trying to save local data: ' + l_err, G_MSG_TYPE_ERROR);\r\n\t\tconsole.error(l_err.stack); //Added to get debug info in production\r\n\t}\r\n}\r\n","/**\r\n\r\n */\r\n\r\nfunction InitApplication () {\r\n\tif (!VerifyCompatibility()) {\r\n\t\tvar msg = 'Your browser does not have all necessary HTML5 features. Can not continue';\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Initialise the local save system\r\n\tg_localsave_object = new LocalSaveSystem();\r\n\r\n\t// Initialise remote communication object\r\n\tg_remote_object = new Communication();\r\n\r\n\t// Initialise a wrapper servic IF you want to use promise based calls\r\n\tVRC.CommunicationService.init(g_remote_object);\r\n\r\n\t// initialise master_data object\r\n\tg_master_data = new MasterData();\r\n\r\n\t// Sub pages (Only Voyage planning Planning left!)\r\n\tg_voyage_planning = new VoyagePlanning('#event_log_table');\r\n\r\n\t//We start on the main page, let's initialize all dialogs on this page.\r\n\tInitialiseDialogs(G_PAGE['MAIN_PAGE']);\r\n\r\n\t//And the generic popup\r\n\tVRC.PopupManager.init();\r\n\r\n\t//Initialize Main Data.\r\n\tInitialiseMainData();\r\n\r\n}\r\n\r\n/**\r\n * Checks if the navigator is online. Update the status text, and set class.\r\n */\r\nvar CheckOnlineStatus = function () {\r\n var $online_text = $('#online_text');\r\n if (navigator.onLine) {\r\n\r\n $online_text.toggleClass('online', true);\r\n $online_text.toggleClass('offline', false);\r\n $online_text.text('Status: online');\r\n }\r\n else {\r\n $online_text.toggleClass('offline', true);\r\n $online_text.toggleClass('online', false);\r\n $online_text.text('Status: offline');\r\n }\r\n};\r\n\r\nCheckOnlineStatus();\r\n\r\nwindow.addEventListener('offline', CheckOnlineStatus);\r\nwindow.addEventListener('online', CheckOnlineStatus);\r\n\r\n/**\r\n * Loads and initialized the homepage.\r\n */\r\nvar LoadHomePage = function () {\r\n\tSetLoginInformation(g_data_list['name'], g_data_list['operator']);\r\n\tVRC.CurrentVoyage.init();\r\n\tVRC.PortManager.init();\r\n\tVRC.VoyageLogEntryManager.load();\r\n\tLoadPage(G_PAGE['HOME_PAGE']);\r\n\r\n\tg_dataIsReady = true;\r\n};\r\n\r\n/**\r\n * Checks if user is online, fetches masterdata, when this is done, show the Login Dialog.\r\n */\r\nvar Login = function () {\r\n\tif (navigator.onLine) {\r\n\t\tVRC.LoadingModal.show();\r\n\t\tVRC.CommunicationService.fetchMasterData(g_master_data)\r\n\t\t\t.done(LoginDialog);\r\n\t}\r\n\telse {\r\n\t\tvar msg = 'Warning: Could not find local storage nor access the Internet. This page can not be used fully until an' +\r\n\t\t\t'active Internet connection is obtained.';\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t\tVRC.ErrorHandleService.showMessage('No local data or Internet connection found.', G_MSG_TYPE_ERROR);\r\n\t}\r\n};\r\n/**\r\n * 1. Tries to\r\n * Initialises the main elements of the page. Local storage is checked and decks and containers are loaded.\r\n */\r\nfunction InitialiseMainData () {\r\n\r\n\r\n\tvar hasMainData = function () {\r\n\t\treturn g_localsave_object.HasLocalStorageItem(G_LS_NAMES['MAIN_VESSEL_DATA']) && g_localsave_object.HasLocalStorageItem(G_LS_NAMES['DECK_DATA'])\r\n\t};\r\n\r\n\tvar hasLoginData = function () {\r\n\t\treturn g_data_list['id'] !== undefined && g_data_list['type'] !== undefined && g_data_list['hash_code'] !== undefined\r\n\t};\r\n\r\n\tif (hasMainData()) {\r\n\t\tg_data_list = g_localsave_object.GetLocalStorageItem(G_LS_NAMES['MAIN_VESSEL_DATA']);\r\n\r\n\t\tVRC.ErrorHandleService.showMessage('Found local data. Re-loading to saved state (if any)', G_MSG_TYPE_NORMAL);\r\n\r\n\t\tif (hasLoginData()) {\r\n\t\t\tLoadLocalState();\r\n\r\n\t\t\tVRC.CommunicationService.fetchMasterData2(g_master_data)\r\n\t\t\t\t.done(function (owner, data) {\r\n\t\t\t\t\tg_master_data.ParseMasterData(owner, data);\r\n\t\t\t\t\tVRC.BulkState.init();\r\n\r\n\t\t\t\t\tif (!VRC.BulkTankManager.isInitialised()) {\r\n\t\t\t\t\t\tvar loadingBulkTanks = VRC.BulkState.fetchBulkTanks();\r\n\t\t\t\t\t\tloadingBulkTanks.done(function () {\r\n\t\t\t\t\t\t\tLoadHomePage();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tLoadHomePage();\r\n\t\t\t\t\t}\r\n\t\t\t\t}).fail(function (owner, data) {\r\n\t\t\t\t\t//Try getting it from local storage\r\n\t\t\t\t\tg_master_data.LoadMasterData();\r\n\t\t\t\t\tVRC.MasterDataService.init(g_master_data);\r\n\t\t\t\t\tVRC.BulkState.init();\r\n\t\t\t\t\tLoadPage(G_PAGE['HOME_PAGE']);\r\n\t\t\t\t\tg_dataIsReady = true;\r\n\t\t\t\t})\r\n\r\n\t\t} else {\r\n\t\t\t//TODO: A pretty crappy error handling? Why not relog automaticly?\r\n\t\t\tVRC.ErrorHandleService.showMessage('Found local data, but id and type was not set. Try to re-log', G_MSG_TYPE_ERROR);\r\n\t\t}\r\n\t} else {\r\n\t\tLogin();\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Checks if all necessary HTML5 features are included\r\n * @return {boolean} if browser is compatible\r\n */\r\nfunction VerifyCompatibility () {\r\n\tvar msg;\r\n\tvar compatibility = true;\r\n\r\n\t// Check if local storage is available\r\n\tif (localStorage === undefined) {\r\n\t\tmsg = 'Your browser does not have localStorage. Can not save or load locally';\r\n\t\tcompatibility = false;\r\n\t}\r\n\telse if ('serviceWorker' in navigator === undefined) {\r\n\t\tmsg = 'Your browser does not support service workers. Can not work offline';\r\n\t\tcompatibility = false;\r\n\t}\r\n\tif (!compatibility) {\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t}\r\n\treturn compatibility;\r\n}\r\n\r\n\r\nfunction v136_to_v137_upgrade() {\r\n\r\n var localItems = JSON.parse(localStorage.getItem(G_LS_NAMES['VOYAGE_LOG']));\r\n _.each(localItems, function(localItem) {\r\n console.log(localItem);\r\n if(localItem.event == 130 || localItem.event == 131 || localItem.event == 132 || localItem.event == 133 || localItem.event == 134 || localItem.event == 135) {\r\n localItem.event = 105;\r\n }\r\n else if(localItem.event == 160 || localItem.event == 161 || localItem.event == 162 || localItem.event == 163 || localItem.event == 164 || localItem.event == 165 ||\r\n localItem.event == 166 || localItem.event == 167 || localItem.event == 168 || localItem.event == 169 || localItem.event == 170 || localItem.event == 171 ||\r\n localItem.event == 160 || localItem.event == 160) {\r\n localItem.subEvent = localItem.event;\r\n localItem.event = 104;\r\n }\r\n if(localItem.subEvent == 130 || localItem.subEvent == 131 || localItem.subEvent == 132 || localItem.subEvent == 133 || localItem.subEvent == 134 || localItem.subEvent == 135) {\r\n localItem.subEvent = -1;\r\n localItem.event = 105;\r\n }\r\n\r\n });\r\n localStorage.setItem(G_LS_NAMES['VOYAGE_LOG'], JSON.stringify(localItems));\r\n LoadLocalState();\r\n}\r\n\r\n/**\r\n * Main Menu Click,\r\n * @param p_page_type Page Type, a number. Defined by G_PAGE in Globals.\r\n * @param p_menu_item The button/link pressed\r\n * */\r\nfunction MainMenuClick (p_page_type, p_menu_item) {\r\n\tif (!g_dataIsReady) {\r\n\t\tVRC.ErrorHandleService.showMessage('Vessel Client is starting up or you are not logged in. Please wait to the main page is ready, or try to re-log.', G_MSG_TYPE_NORMAL);\r\n\t\treturn false;\r\n\r\n\t}\r\n\tif ($(p_menu_item).hasClass('disabled')) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tLoadPage(p_page_type);\r\n\tVRC.NavigationView.setActive(p_menu_item);\r\n}\r\n\r\n/**\r\n * Selects action in submenu. Normally opens a apex page (E.g. 'Departure Report', 'Daily Reports').\r\n * There are some expeptions 'List voyages' and 'Complete Tank Clean Overview'. These use triggers for the button.\r\n */\r\nfunction SubMenuChoice (p_select) {\r\n\tg_remote_object.FetchHTMLFromServer(g_voyage_planning, ParseWELSForm, 'info', p_select);\r\n}\r\n/**\r\n * Puts the HTML in the apex popup.\r\n * @param p_owner (unused)\r\n * @param p_data HTML from server.\r\n */\r\nfunction ParseWELSForm (p_owner, p_data) {\r\n\t$(\"#apex_popup\").html(p_data);\r\n\t$(\"#apex_popup\").dialog('open');\r\n}\r\n\r\n/**\r\n * Loads a Page by taking the x_menu and x.html.\r\n * x.html contains a script tag that initializes another page.\r\n *\r\n * @param p_page_type A pagetype/number defined in G_PAGE\r\n */\r\nfunction LoadPage (p_page_type) {\r\n\tSavePageState();\r\n\tVRC.NavigationView.init();\r\n\r\n\r\n\tif (p_page_type == G_PAGE.DECK_PAGE) {\r\n\t\t$('#menu_content').load('deck_menu.html');\r\n\t\t$('#main_content').load('deck.html');\r\n\t}\r\n\telse if (p_page_type == G_PAGE.BULK_PAGE) {\r\n\t\t$('#menu_content').load('bulk_menu.html');\r\n\t\t$('#main_content').load('bulk.html');\r\n\t}\r\n\telse if (p_page_type == G_PAGE.VOYAGE_PAGE) {\r\n\t\t//Menu is loaded in VoyageState.init()\r\n\t\t$('#main_content').load('voyage.html');\r\n\t}\r\n\telse if (p_page_type == G_PAGE.FUEL_PAGE) {\r\n\t\t$('#menu_content').load('fuel_menu.html');\r\n\t\t$('#main_content').load('fuel.html');\r\n\t}\r\n\telse if (p_page_type == G_PAGE.HOME_PAGE) {\r\n\t\t$('#menu_content').load('home_menu.html');\r\n\t\t$('#main_content').load('home.html');\r\n\t}\r\n\telse {\r\n\r\n\t\tvar msg = 'A page that does not exist has been selected';\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t}\r\n\tg_current_page = p_page_type;\r\n CheckLastSubmit();\r\n\tShowVoyageValidations(p_page_type);\r\n}\r\n\r\n/**\r\n * Checks the last submit flag and pushes a warning message to be displayed when it has gone over a certain limit\r\n */\r\nfunction CheckLastSubmit() {\r\n\r\n\tif(g_data_list.requiredSubmitIntervalHours && g_data_list.requiredSubmitIntervalHours > 0) {\r\n\r\n if(g_data_list.lastSubmitDate) {\r\n\r\n _lastSubmit = moment(g_data_list.lastSubmitDate, g_timeStampFormat);\r\n\t _hoursSinceSubmit = moment().diff(_lastSubmit, 'hours');\r\n\r\n if( _hoursSinceSubmit > g_data_list.requiredSubmitIntervalHours ) {\r\n VRC.ErrorHandleService.showMessage(\"You haven't submitted all data in the last \" + _hoursSinceSubmit + \" hours. Please consider submitting\", G_MSG_TYPE_WARNING);\r\n\t\t}\r\n }\r\n else {\r\n VRC.ErrorHandleService.showMessage(\"You haven't submitted any data yet. Please consider submitting\", G_MSG_TYPE_WARNING);\r\n\t }\r\n }\r\n}\r\n\r\n/**\r\n * Saves page state. Uses g_global_page.\r\n * TODO: g_global_page should not be a global but sent by parameters\r\n */\r\nfunction SavePageState () {\r\n\tif (g_current_page == G_PAGE.VOYAGE_PAGE) {\r\n\t\tOnLeavingVoyagePage();\r\n\t}\r\n\telse if (g_current_page == G_PAGE.FUEL_PAGE) {\r\n\t\tVRC.RobState.save();\r\n\t}\r\n\telse if (g_current_page == G_PAGE.BULK_PAGE) {\r\n\t\tOnLeavingBulkPage();\r\n\t}\r\n\telse if (g_current_page == G_PAGE.DECK_PAGE) {\r\n\t\tOnLeavingDeckPage();\r\n\t}\r\n}\r\n\r\n/**\r\n * Show validations (if any) from last submit on the given page.\r\n * @param p_page_type A pagetype/number defined in G_PAGE\r\n *\r\n */\r\nfunction ShowVoyageValidations (p_page) {\r\n\tvar $validationArea = $('#validation_area');\r\n\tif ($validationArea) {\r\n\t\t$validationArea.hide();\r\n\t}\r\n\r\n\tif (!g_localsave_object.HasLocalStorageItem(G_LS_NAMES['VOYAGE_VALIDATIONS'])) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar validations = g_localsave_object.GetLocalStorageItem(G_LS_NAMES['VOYAGE_VALIDATIONS']);\r\n\tvar page_validations = [];\r\n\tvar result = '';\r\n\r\n\tif (p_page == G_PAGE.VOYAGE_PAGE && validations.voyage_log !== undefined) {\r\n\t\tpage_validations = validations.voyage_log;\r\n\t\tpage_validations = page_validations.concat(validations.vessel_manifest || []);\r\n\t}\r\n\r\n\telse if (p_page == G_PAGE.DECK_PAGE && validations.voyage_deck !== undefined) {\r\n\t\tpage_validations = validations.voyage_deck;\r\n\t\tpage_validations = page_validations.concat(validations.vessel_manifest);\r\n\t}\r\n\telse if (p_page == G_PAGE.BULK_PAGE && validations.voyage_bulk !== undefined) {\r\n\t\tpage_validations = validations.voyage_bulk;\r\n\t}\r\n\telse if (p_page == G_PAGE.FUEL_PAGE && validations.voyage_rob !== undefined) {\r\n\t\tpage_validations = validations.voyage_rob;\r\n\t}\r\n\r\n\t$.each(page_validations, function () {\r\n\t\tresult += this.type + ' : ' + this.message + ' (Error ID: ' + this.id + ')
';\r\n\t});\r\n\tif (result != '') {\r\n\t\tresult = ' From Previous Submit
' + result;\r\n\t}\r\n\r\n\tif ($validationArea) {\r\n\t\tif (result === \"\") {\r\n\t\t\t$validationArea.hide();\r\n\t\t} else {\r\n\t\t\t$validationArea.html(result);\r\n\t\t\t$validationArea.show();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * Display confirmation box for fetching data\r\n */\r\nfunction ConfirmFetchData () {\r\n\tvar msg = 'This will fetch last submitted data for Voyage Log, Bulk Tanks, ROB and Deck. Continue?';\r\n\tvar onConfirm = function () {\r\n\t\tFetchData();\r\n\t};\r\n\tVRC.ConfirmationModal.show({msg: msg, onConfirm: onConfirm});\r\n}\r\n\r\n/**\r\n * Fetches all data and display data as necessary based on which page we are on.\r\n * Chains the ajaxrequest\r\n * Will show loading modal as long as all request are loading.\r\n * @returns a promise which is resolved when all ajax request are resolved.\r\n */\r\nfunction FetchData () {\r\n\tVRC.LoadingModal.show();\r\n\tvar deferred = $.Deferred();\r\n\r\n\tvar voyage = VRC.CurrentVoyage.getCurrentVoyage();\r\n\r\n\t//Fetch data Four ajax requests\r\n\tvar fetchVoyage = voyage.fetch();\r\n\tvar fetchVoyageLog = g_voyage_planning.FetchLogEntries();\r\n\tvar fetchDeckState = FetchDeckStateFromDB();\r\n\tvar fetchBulkState = VRC.BulkState.fetch();\r\n\r\n\t//Wait for ALL 4 different ajax requests to be finished.\r\n\t$.when(fetchVoyage, fetchVoyageLog, fetchDeckState, fetchBulkState).done(function (v1, v2, v3, v4) {\r\n\t\tVRC.ErrorHandleService.showMessage('Data fetched from server', G_MSG_TYPE_SUCCESS);\r\n\t\tVRC.LoadingModal.hide();\r\n\t\tdeferred.resolve();\r\n\t});\r\n\r\n\treturn deferred.promise();\r\n}\r\n\r\n/**\r\n * Closes the ajax Popup\r\n * Used by the Ajax pages with some top.ClosePopup?\r\n * @param return_msg Optional message to be shown.\r\n * @constructor\r\n */\r\nfunction ClosePopup (return_msg) {\r\n\t$('#apex_popup').dialog('close');\r\n\r\n\tif (return_msg !== undefined) {\r\n\t\tVRC.ErrorHandleService.showMessage(return_msg, G_MSG_TYPE_NORMAL);\r\n\t}\r\n}\r\n\r\n/**\r\n * Get version number\r\n * From html method\r\n * TODO: Save this somewhere sane and not i DOM.\r\n */\r\nfunction GetVersionNumber () {\r\n\treturn $('.version_no span').text();\r\n}\r\n\r\n/**\r\n * Opens submit dialog for sending data to server.\r\n * Voyage Log and Bulk/ROB has a relationship and needs to be submitted together to create warnings.\r\n * Deck is not connected and could be sent individually.\r\n *\r\n * Voyage Log, Rob and Bulk Tanks are selected by default, unless on Deck page.\r\n *\r\n */\r\nfunction OpenSubmitDialog () {\r\n\tvar $submitParams = $('#submit_params');\r\n\t$('#submit_text').html('Select whether to Submit everything, just the Deck or Voyage Log, ROB and Bulk Tanks');\r\n\t$submitParams.html('' +\r\n\t\t'
' +\r\n\t\t'
' +\r\n\t\t'');\r\n\r\n\tif (g_current_page == G_PAGE.DECK_PAGE) {\r\n\t\t\t$submitParams.find('input[value=\"deck\"]').attr('checked', true);\r\n\t}\r\n\r\n\t$('#submit_dialog').dialog('open');\r\n}\r\n/**\r\n * Closes Submit Dialog\r\n */\r\nfunction CloseSubmitDialog () {\r\n\t$('#submit_dialog').dialog('close');\r\n}\r\n\r\n/**\r\n * Saves data on current page and submits data based on checkbox values.\r\n */\r\nfunction SubmitData () {\r\n\tVRC.LoadingModal.show();\r\n\tvar submitCode = $('#submit_params input[name=\"submit_type\"]:checked').val() || 'all_no_deck';\r\n\r\n\t//Default callback\r\n\tvar onSuccess = function () {\r\n\t\tVRC.LoadingModal.hide();\r\n\t};\r\n\r\n\tif (g_current_page == G_PAGE.VOYAGE_PAGE) {\r\n\t\tg_voyage_planning.SaveLogEntries();\r\n\r\n\t\tonSuccess = function () {\r\n\t\t\tg_voyage_planning.DisplayValidations();\r\n\t\t\tVRC.LoadingModal.hide();\r\n\t\t};\r\n\t}\r\n\telse if (g_current_page == G_PAGE.FUEL_PAGE) {\r\n\t\tVRC.RobState.save();\r\n\t}\r\n\telse if (g_current_page == G_PAGE.BULK_PAGE) {\r\n\t\tVRC.BulkState.saveToLocalStorage();\r\n\t}\r\n\telse if (g_current_page == G_PAGE.DECK_PAGE) {\r\n\t\tSaveLocalState();\r\n\t}\r\n\r\n\tg_remote_object.SubmitAllData(submitCode, onSuccess, null);\r\n\tCloseSubmitDialog();\r\n}\r\n\r\n/**\r\n * Here all begins.\r\n */\r\n$(document).ready(function () {\r\n\tInitApplication();\r\n});\r\n","/**\r\n * Wrapper that imports all data and deligates to the four main modules.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.ImportService = (function(){\r\n\r\n\tvar importData = function(data){\r\n\r\n\t\tg_voyage_planning.ParseLogData(null, data.voyageLogs);\r\n\t\tVRC.BulkState.importData(data.bulk);\r\n\t\tVRC.CurrentVoyage.importData(data.voyage);\r\n\t\tParseContainers(data.deck.containers);\r\n\r\n\t};\r\n\r\n\treturn {\r\n\t\timportData : importData\r\n\t}\r\n})();\r\n","/*\r\n * Bulkstate.js\r\n *\r\n * Initialisation of Bulk state page\r\n * Loads reporting page for bulk tanks\r\n *\r\n */\r\n\r\n/*\r\n * Initialisation function for when voyage page is loaded\r\n */\r\nfunction InitialiseBulkPlanning() {\r\n $('html').unbind('click');\r\n $('html').unbind('hidden.bs.popover');\r\n InitialiseBulkDialogs();\r\n\r\n VRC.BulkStateView.init(VRC.BulkTankManager.toJson());\r\n VRC.BulkLoadingAreaView.init();\r\n VRC.BulkOffloadAraeView.init();\r\n VRC.BulkDeviationView.init();\r\n VRC.BulkToolbarView.init();\r\n\r\n\r\n}\r\n\r\n/*\r\n * Actions for when page is left\r\n */\r\nfunction OnLeavingBulkPage() {\r\n VRC.BulkState.saveToLocalStorage()\r\n}\r\n\r\n/*\r\n * Menu selection\r\n */\r\nfunction BulkMenuSelect( p_select, p_params ) {\r\n if( p_select == 2 ) {\r\n VRC.BulkState.saveToLocalStorage();\r\n VRC.ErrorHandleService.showMessage('Data for bulk tanks saved locally', G_MSG_TYPE_NORMAL );\r\n }\r\n else if( p_select == 3) {\r\n VRC.BulkState.loadFromLocalStorage();\r\n VRC.ErrorHandleService.showMessage('Data for bulk tanks loaded from local', G_MSG_TYPE_NORMAL );\r\n }\r\n else if( p_select == 5) {\r\n var msg = 'This will clear your bulk tank data. Do you want to proceed?';\r\n var onConfirm = function(){\r\n\r\n VRC.BulkTankManager.clearTanks();\r\n VRC.BulkStateView.render();\r\n VRC.ErrorHandleService.showMessage( 'Cleared all bulk data entries.', G_MSG_TYPE_NORMAL );\r\n };\r\n VRC.ConfirmationModal.show({msg : msg, onConfirm : onConfirm})\r\n\r\n }\r\n else if( p_select == 6 ) {\r\n OpenSubmitDialog();\r\n }\r\n else if( p_select == 7 ) {\r\n ConfirmFetchData();\r\n }\r\n};\r\n\r\nfunction BulkSubMenuChoice(p_select) {\r\n if(p_select == 2) {\r\n g_remote_object.FetchHTMLFromServer( g_bulk_planning, ParseWELSForm, 'info', 'fuel_documents');\r\n }\r\n};\r\n\r\n\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkState = (function(){\r\n\r\n var init = function(){\r\n VRC.BulkCompatibility.init();\r\n loadFromLocalStorage();\r\n };\r\n\r\n var mapOldFormatToNewFormat = function(bulkTank){\r\n return {\r\n bulkTankId : bulkTank.id,\r\n tankName : bulkTank.name,\r\n tankType : bulkTank.type,\r\n tankShape : bulkTank.shape,\r\n tankCapacity : bulkTank.capacity,\r\n tankRadius: bulkTank.radius,\r\n positionX : bulkTank.x_pos,\r\n positionY: bulkTank.y_pos,\r\n consumableSeqNo : bulkTank.consumable_seq_no,\r\n valueUnit : bulkTank.value_unit,\r\n availableForDelivery : bulkTank.available_for_delivery,\r\n bulkTankPumpSystemName : bulkTank.bulk_tank_pump_system_name,\r\n pumpSystemColorCode : bulkTank.color_code\r\n };\r\n };\r\n\r\n var saveToLocalStorage = function(json){\r\n json = json || {};\r\n if(!json.bulkTanks){\r\n json.bulkTanks = VRC.BulkTankManager.toJson();\r\n }\r\n if(!json.deviations){\r\n\r\n json.deviations = VRC.SpecialBulkTanks.toJson();\r\n }\r\n\r\n g_localsave_object.SetLocalStorageItem( G_LS_NAMES.BULK_TANKS, json);\r\n };\r\n\r\n var loadFromLocalStorage = function(){\r\n\r\n var json = g_localsave_object.GetLocalStorageItem( G_LS_NAMES['BULK_TANKS']) || {};\r\n\r\n VRC.BulkTankManager.createBulkTankObjects(json.bulkTanks);\r\n\r\n json.deviations = json.deviations || [];\r\n VRC.SpecialBulkTanks.init(json.deviations);\r\n };\r\n\r\n var isCurrentPage = function(){\r\n return g_current_page === G_PAGE.BULK_PAGE;\r\n };\r\n\r\n var loadBulkTanksOnline = function(){\r\n var deferred = $.Deferred();\r\n var fetchData = VRC.CommunicationService.fetchData({}, 'bulk_tanks');\r\n fetchData.done(function(owner, data){\r\n parseFromServer(data);\r\n loadFromLocalStorage();\r\n deferred.resolve();\r\n });\r\n\r\n return deferred.promise();\r\n };\r\n\r\n var importData = function (data) {\r\n VRC.BulkTankManager.importBulkData(data);\r\n saveToLocalStorage();\r\n if (isCurrentPage()) {\r\n VRC.BulkStateView.render();\r\n VRC.ErrorHandleService.showMessage('Data loaded from server', G_MSG_TYPE_SUCCESS);\r\n }\r\n };\r\n\r\n var fetch = function(){\r\n VRC.BulkTankManager.clearTanks();\r\n var deferred = $.Deferred();\r\n var fetchData = VRC.CommunicationService.fetchData({}, 'bulk_data');\r\n fetchData.done(function(owner, data){\r\n importData(data);\r\n deferred.resolve();\r\n });\r\n fetchData.fail(function(){\r\n VRC.ErrorHandleService.showMessage('Something went wrong', G_MSG_TYPE_ERROR)\r\n });\r\n return deferred.promise();\r\n };\r\n\r\n var parseFromServer = function(serverInfo){\r\n var bulkTanks = _.map(serverInfo.bulk_tanks, function(bulkTank){ return mapOldFormatToNewFormat(bulkTank)});\r\n saveToLocalStorage({bulkTanks : bulkTanks, deviations : []});\r\n };\r\n\r\n return{\r\n mapOldFormatToNewFormat : mapOldFormatToNewFormat,\r\n fetch : fetch,\r\n fetchBulkTanks : loadBulkTanksOnline,\r\n saveToLocalStorage : saveToLocalStorage,\r\n loadFromLocalStorage : loadFromLocalStorage,\r\n init : init,\r\n importData : importData\r\n }\r\n})();\r\n\r\n\r\n\r\n\r\n","/**\r\n * Module that\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.NavigationView = (function(){\r\n\r\n var init = function(){\r\n if(!VRC.CurrentVoyage.hasCurrentVoyage()){\r\n disable();\r\n }\r\n };\r\n\r\n var replaceMainMenu = function(isDisabled){\r\n var $mainMenuWrapper = $('#menu_top_row');\r\n var html = WELL.Handlebars.VRC.main_menu({disabled : isDisabled});\r\n $mainMenuWrapper.html(html);\r\n };\r\n\r\n /**\r\n * Enable all menu choices.\r\n */\r\n var enable = function(){\r\n replaceMainMenu(false);\r\n };\r\n\r\n /**\r\n * Disable all menu choices.\r\n */\r\n var disable = function(){\r\n replaceMainMenu(true);\r\n };\r\n\r\n /**\r\n * Sets active menu element\r\n * @param menuMenuLink the menuItem pressed.\r\n */\r\n var setActive = function(menuMenuLink){\r\n $('.main-menu__link').removeClass('active');\r\n $(menuMenuLink).addClass('active');\r\n };\r\n\r\n return {\r\n init : init,\r\n enable : enable,\r\n disable : disable,\r\n setActive : setActive\r\n }\r\n})() ;\r\n\r\n","/**\r\n * If redirection in IIS is correctly setup. Redirection is made by WELS Operator by WELS Schema, welsws_pkg.print_app_front_page.\r\n * Then initOperatorsDirectPage is the only entry point, as operators_direct is the only entrypoint.\r\n *\r\n * If redirection in IIS is NOT correctly setup. Fallback is static pages index.html and operators.html.\r\n *\r\n * This module has responsibility to\r\n * - Check if localstorage is available (should be in all modern browsers).\r\n * - Check if 'WELS_deck_data' and 'WELS_vessel_data' is set in the localstorage, meaning someone allready is logged in.\r\n *\r\n */\r\nvar VRC = VRC || {};\r\nVRC.RedirectModule = (function(){\r\n\r\n\t/**\r\n\t * Initializes the index.html\r\n\t */\r\n\tvar initIndexPage = function(){\r\n\t\tif(!localStorage) {\r\n\t\t\thandleNoLocalStorage();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif( hasLoginInformation() ){\r\n\t\t\tredirectToApplication();\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Initializes the operators.html\r\n\t */\r\n\tvar initOperatorsPage = function(){\r\n\t\tif(!localStorage) {\r\n\t\t\thandleNoLocalStorage();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif( hasLoginInformation() ){\r\n\t\t\tredirectToApplication();\r\n\t\t}\r\n\t\tvar operator = getURLParameter('v') || 'no';\r\n\t\t$('.operator_selection_area__'+operator).show();\r\n\t};\r\n\r\n\t/**\r\n\t * Initializes the operators_direct.html\r\n\t * Used to set URL parameters ('v') and ('o') for set the operator and 'user_param' to local storage.\r\n\t*/\r\n\tvar initOperatorsDirectPage = function() {\r\n\t\tvar valuev = getURLParameter('v');\r\n\t\tvar valueopr = getURLParameter('o');\r\n\r\n\t\tif (valueopr !== undefined && valuev !== undefined) {\r\n\t\t\tlocalStorage['login_operator_param'] = valueopr;\r\n\t\t\tlocalStorage['login_user_param'] = valuev;\r\n\t\t\tredirectToApplication();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Check if 'WELS_deck_data' and 'WELS_vessel_data' is set in locale storage, meaning that the vessel is logged in then.\r\n\t * @returns {boolean} Is already logged in.\r\n\t */\r\n\tvar hasLoginInformation = function(){\r\n\t\t\treturn localStorage['WELS_deck_data'] !== undefined && localStorage['WELS_vessel_data'] !== undefined;\r\n\t};\r\n\r\n\t/**\r\n\t * Redirects to the actual application, which (for some legacy reason) is at deckstate.html\r\n\t */\r\n\tvar redirectToApplication = function(){\r\n\t\tdocument.location = \"deckstate.html\";\r\n\t};\r\n\r\n\t/**\r\n\t * Used by operator.html with OnClick\r\n\t * Selects the operator ('BPN', 'BPUK' etc.) and user_param (always 'vessel' maybe thinking this could be expanded in the future);\r\n\t * @param operator\r\n\t */\r\n\tvar selectOperator = function(operator) {\r\n\t\tlocalStorage['login_operator_param'] = operator;\r\n\t\tlocalStorage['login_user_param'] = 'vessel';\r\n\t\tredirectToApplication();\r\n\t};\r\n\r\n\t/**\r\n\t * Prints out alert if localstorage is not implemented in the browser.\r\n\t */\r\n\tvar handleNoLocalStorage = function(){\r\n\t\talert( 'Your browser does not support HTML5 localStorage. Can not save or load local state' );;\r\n\t};\r\n\r\n\t/**\r\n\t * Get parameter from URL\r\n\t * @param name parameterName\r\n\t * @returns {string} parameterValue\r\n\t */\r\n\tvar getURLParameter = function(name) {\r\n\t\treturn decodeURIComponent(\r\n\t\t\t(location.search.match(RegExp(\"[?|&]\"+name+'=(.+?)(&|$)'))||[,null])[1]\r\n\t\t);\r\n\t};\r\n\r\n\t/**\r\n\t * Set the country parameter for the operators.html.\r\n\t * @param type country ('no', 'dk', 'us')\r\n\t */\r\n\tvar selectCountry = function( type ) {\r\n\t\tdocument.location.replace(\"operators.html?v=\" + type );\r\n\t};\r\n\r\n\treturn{\r\n\t\tinitIndexPage : initIndexPage,\r\n\t\tinitOperatorsPage : initOperatorsPage,\r\n\t\tinitOperatorsDirectPage : initOperatorsDirectPage,\r\n\t\tselectOperator : selectOperator,\r\n\t\tselectCountry : selectCountry,\r\n\t\tgetURLParameter : getURLParameter\r\n\t}\r\n})();\r\n\r\n\r\n\r\n","/**\r\n * Bulk Cargo Request.\r\n *\r\n * Bulk Containers (with items or ad-hoc from manifest.\r\n *\r\n */\r\n\r\nvar VRC = VRC || {};\r\nVRC.BulkCargoRequest = (function (data) {\r\n\tvar _bulkTypeId;\r\n\tvar _bulkTypeName;\r\n\tvar _cargoItemId;\r\n\tvar _companyId;\r\n\tvar _companyName;\r\n\tvar _containerId;\r\n\tvar _deliveryType;\r\n\tvar _destinationId;\r\n\tvar _destinationName;\r\n\tvar _dgClass;\r\n\tvar _dgUnNumber;\r\n\tvar _itemDescription;\r\n\tvar _itemId;\r\n\tvar _portColourCode;\r\n\tvar _originId;\r\n\tvar _originName;\r\n\tvar _sg;\r\n\tvar _valueQty;\r\n\tvar _valueUnit;\r\n\tvar _displayPort;\r\n\tvar _manifestAction;\r\n\tvar _itemGroupName;\r\n\tvar _itemGroupId;\r\n\tvar _tankShape;\r\n\tvar _hidden;\r\n\r\n\tvar init = function (data) {\r\n\t\tparse(data);\r\n\t};\r\n\r\n\tvar getTankShape = function () {\r\n\t\treturn _tankShape;\r\n\t};\r\n\r\n\tvar setTankShape = function () {\r\n\t\tvar valueUnit = getValueUnit();\r\n\t\t_tankShape = valueUnit === 'mt' ? 'circle' : 'square';\r\n\r\n\t};\r\n\r\n\tvar getCargoItemId = function () {\r\n\t\treturn _cargoItemId;\r\n\t};\r\n\r\n\tvar setCargoItemId = function (cargoItemId) {\r\n\t\tcargoItemId = VRC.Utils.Number.parseInt(cargoItemId);\r\n\t\t_cargoItemId = cargoItemId;\r\n\t};\r\n\r\n\tvar getDeliveryType = function () {\r\n\t\treturn _deliveryType;\r\n\t};\r\n\r\n\tvar setDeliveryType = function (deliveryType) {\r\n\t\t_deliveryType = deliveryType;\r\n\t};\r\n\r\n\tvar getItemDescription = function () {\r\n\t\treturn _itemDescription;\r\n\t};\r\n\r\n\tvar setItemDescription = function (itemDescription) {\r\n\t\t_itemDescription = itemDescription;\r\n\t};\r\n\r\n\tvar getPortColourCode = function () {\r\n\t\treturn _portColourCode;\r\n\t};\r\n\r\n\tvar setPortColourCode = function (portColourCode) {\r\n\t\tif (!portColourCode) {\r\n\t\t\tportColourCode = VRC.MasterDataService.getColour(getDestinationId(), getOriginId());\r\n\t\t}\r\n\t\t_portColourCode = portColourCode;\r\n\t};\r\n\r\n\tvar getOriginId = function () {\r\n\t\treturn _originId;\r\n\t};\r\n\r\n\tvar setOriginId = function (originId) {\r\n\t\toriginId = VRC.Utils.Number.parseInt(originId);\r\n\t\t_originId = originId;\r\n\t};\r\n\r\n\tvar getOriginName = function () {\r\n\t\treturn _originName;\r\n\t};\r\n\r\n\tvar setOriginName = function (originName) {\r\n\t\tif (!originName) {\r\n\t\t\tvar origin = VRC.MasterDataService.getPort(getOriginId());\r\n\t\t\tif (origin) {\r\n\t\t\t\toriginName = origin.name;\r\n\t\t\t}\r\n\t\t}\r\n\t\t_originName = originName;\r\n\t};\r\n\r\n\tvar getValueQty = function () {\r\n\t\treturn _valueQty;\r\n\t};\r\n\r\n\tvar setValueQty = function (valueQty) {\r\n\t\tvalueQty = VRC.Utils.Number.parseFloat(valueQty);\r\n\r\n\t\t_valueQty = valueQty;\r\n\t};\r\n\r\n\tvar getValueUnit = function () {\r\n\t\treturn _valueUnit;\r\n\t};\r\n\r\n\tvar setValueUnit = function (valueUnit) {\r\n\t\t_valueUnit = valueUnit;\r\n\t};\r\n\r\n\tvar getDestinationId = function () {\r\n\t\treturn _destinationId;\r\n\t};\r\n\r\n\tvar setDestinationId = function (destinationId) {\r\n\t\tdestinationId = VRC.Utils.Number.parseInt(destinationId);\r\n\t\t_destinationId = destinationId;\r\n\t};\r\n\r\n\tvar getDestinationName = function () {\r\n\t\treturn _destinationName;\r\n\t};\r\n\r\n\tvar setDestinationName = function (destinationName) {\r\n\t\tif (!destinationName) {\r\n\t\t\tvar destination = VRC.MasterDataService.getPort(getDestinationId())\r\n\t\t\tif (destination) {\r\n\t\t\t\tdestinationName = destination.name;\r\n\t\t\t}\r\n\t\t}\r\n\t\t_destinationName = destinationName;\r\n\t};\r\n\r\n\tvar getDgClass = function () {\r\n\t\treturn _dgClass;\r\n\t};\r\n\r\n\tvar setDgClass = function (dgClass) {\r\n\t\t_dgClass = dgClass;\r\n\t};\r\n\r\n\tvar getSg = function () {\r\n\t\treturn _sg;\r\n\t};\r\n\r\n\tvar setSg = function (sg) {\r\n\t\tsg = VRC.Utils.Number.parseFloat(sg);\r\n\t\t_sg = sg;\r\n\t};\r\n\r\n\tvar getCompanyId = function () {\r\n\t\treturn _companyId;\r\n\t};\r\n\r\n\tvar setCompanyId = function (companyId) {\r\n\t\tcompanyId = VRC.Utils.Number.parseFloat(companyId);\r\n\t\t_companyId = companyId;\r\n\t};\r\n\r\n\tvar getCompanyName = function () {\r\n\t\treturn _companyName;\r\n\t};\r\n\r\n\tvar setCompanyName = function (companyName) {\r\n\t\tif (!companyName) {\r\n\t\t\tvar company = VRC.MasterDataService.getCompany(getCompanyId())\r\n\t\t\tif (company) {\r\n\t\t\t\tcompanyName = company.name;\r\n\t\t\t}\r\n\t\t}\r\n\t\t_companyName = companyName;\r\n\t};\r\n\r\n\tvar getBulkTypeName = function () {\r\n\t\treturn _bulkTypeName;\r\n\t};\r\n\r\n\tvar setBulkTypeName = function (bulkTypeName) {\r\n\t\tif (!bulkTypeName) {\r\n\t\t\tvar bulkType = VRC.MasterDataService.getBulkType(getBulkTypeId());\r\n\t\t\tif (bulkType) {\r\n\t\t\t\tbulkTypeName = bulkType.name;\r\n\t\t\t}\r\n\t\t}\r\n\t\t_bulkTypeName = bulkTypeName;\r\n\t};\r\n\r\n\tvar getBulkTypeId = function () {\r\n\t\treturn _bulkTypeId;\r\n\t};\r\n\r\n\tvar setBulkTypeId = function (bulkTypeId) {\r\n\t\tbulkTypeId = VRC.Utils.Number.parseInt(bulkTypeId);\r\n\t\t_bulkTypeId = bulkTypeId;\r\n\t};\r\n\r\n\tvar getItemGroupName = function () {\r\n\t\treturn _itemGroupName;\r\n\t};\r\n\r\n\tvar setItemGroupName = function (itemGroupName) {\r\n\t\t_itemGroupName = itemGroupName;\r\n\t};\r\n\r\n\tvar subtractValueQty = function (qty) {\r\n\t\tqty = VRC.Utils.Number.parseFloat(qty);\r\n\t\tif (qty === undefined || isNaN(qty)) {\r\n\t\t\tqty = 0;\r\n\t\t}\r\n\t\tvar currentQty = getValueQty();\r\n\t\tvar newQty = currentQty - qty;\r\n\t\tif (isNaN(newQty)) {\r\n\t\t\tnewQty = 0;\r\n\t\t}\r\n\t\tsetValueQty(newQty);\r\n\t};\r\n\r\n\tvar getContainerId = function () {\r\n\r\n\t\treturn _containerId;\r\n\t};\r\n\r\n\tvar setContainerId = function (containerId) {\r\n\t\tcontainerId = VRC.Utils.Number.parseFloat(containerId);\r\n\t\t_containerId = containerId;\r\n\t};\r\n\r\n\tvar getDgUnNumber = function () {\r\n\t\treturn _dgUnNumber;\r\n\t};\r\n\r\n\tvar setDgUnNumber = function (dgUnNumber) {\r\n\t\t_dgUnNumber = dgUnNumber;\r\n\t};\r\n\r\n\tvar getItemId = function () {\r\n\t\treturn _itemId;\r\n\t};\r\n\r\n\tvar setItemId = function (itemId) {\r\n\t\t_itemId = itemId;\r\n\t};\r\n\r\n\tvar getDisplayPort = function () {\r\n\t\treturn _displayPort;\r\n\t};\r\n\r\n\tvar setDisplayPort = function (displayPort) {\r\n\t\tif (!displayPort) {\r\n\t\t\tdisplayPort = VRC.MasterDataService.getDisplayPort(getDestinationId(), getOriginId());\r\n\t\t}\r\n\t\t_displayPort = displayPort;\r\n\t};\r\n\r\n\tvar getManifestAction = function () {\r\n\t\treturn _manifestAction;\r\n\t};\r\n\r\n\tvar setManifestAction = function (manifestAction) {\r\n\t\t_manifestAction = manifestAction;\r\n\t};\r\n\r\n\tvar getItemGroupId = function () {\r\n\t\treturn _itemGroupId;\r\n\t};\r\n\r\n\tvar setItemGroupId = function (itemGroupId) {\r\n\t\t_itemGroupId = itemGroupId;\r\n\t};\r\n\r\n\tvar isHidden = function () {\r\n\t\treturn _hidden || false;\r\n\t};\r\n\r\n\tvar setHidden = function (hidden) {\r\n\t\t_hidden = hidden;\r\n\t};\r\n\r\n\tvar parse = function (data) {\r\n\t\tsetBulkTypeId(data.bulkTypeId);\r\n\t\tsetBulkTypeName(data.bulkTypeName);\r\n\t\tsetCargoItemId(data.cargoItemId);\r\n\t\tsetCompanyId(data.companyId);\r\n\t\tsetCompanyName(data.companyName);\r\n\t\tsetContainerId(data.containerId);\r\n\t\tsetDeliveryType(data.deliveryType);\r\n\t\tsetDestinationId(data.destinationId);\r\n\t\tsetDestinationName(data.destinationName);\r\n\t\tsetDgClass(data.dgClass);\r\n\t\tsetDgUnNumber(data.dgUnNumber);\r\n\t\tsetItemDescription(data.itemDescription);\r\n\t\tsetItemGroupName(data.itemGroupName);\r\n\t\tsetItemGroupId(data.itemGroupId);\r\n\t\tsetItemId(data.itemId);\r\n\t\tsetOriginId(data.originId);\r\n\t\tsetOriginName(data.originName);\r\n\t\tsetSg(data.sg);\r\n\t\tsetValueQty(data.valueQty);\r\n\t\tsetValueUnit(data.valueUnit);\r\n\t\tsetManifestAction(data.manifestAction);\r\n\r\n\t\t//Dependent on originId and destinationId to be set.\r\n\t\tsetPortColourCode(data.portColorCode);\r\n\t\tsetDisplayPort(data.displayPort);\r\n\t\tsetTankShape();\r\n\t};\r\n\r\n\tvar toJson = function () {\r\n\t\treturn {\r\n\t\t\tbulkTypeId: getBulkTypeId(),\r\n\t\t\tbulkTypeName: getBulkTypeName(),\r\n\t\t\tcargoItemId: getCargoItemId(),\r\n\t\t\tcompanyId: getCompanyId(),\r\n\t\t\tcompanyName: getCompanyName(),\r\n\t\t\tcontainerId: getContainerId(),\r\n\t\t\tdeliveryType: getDeliveryType(),\r\n\t\t\tdgClass: getDgClass(),\r\n\t\t\tdgUnNumber: getDgUnNumber(),\r\n\t\t\titemDescription: getItemDescription(),\r\n\t\t\titemGroupName: getItemGroupName(),\r\n\t\t\titemId: getItemId(),\r\n\t\t\tportColorCode: getPortColourCode(),\r\n\t\t\toriginId: getOriginId(),\r\n\t\t\toriginName: getOriginName(),\r\n\t\t\tdestinationId: getDestinationId(),\r\n\t\t\tdestinationName: getDestinationName(),\r\n\t\t\tvalueQty: getValueQty(),\r\n\t\t\tvalueUnit: getValueUnit(),\r\n\t\t\tsg: getSg(),\r\n\t\t\tdisplayPort: getDisplayPort(),\r\n\t\t\tmanifestAction: getManifestAction(),\r\n\t\t\ttankShape: getTankShape(),\r\n\t\t\tisHidden: isHidden()\r\n\t\t}\r\n\t};\r\n\r\n\tinit(data);\r\n\r\n\treturn {\r\n\t\tgetCargoItemId: getCargoItemId,\r\n\t\tsetCargoItemId: setCargoItemId,\r\n\t\tgetDeliveryType: getDeliveryType,\r\n\t\tsetDeliveryType: setDeliveryType,\r\n\t\tgetItemDescription: getItemDescription,\r\n\t\tsetItemDescription: setItemDescription,\r\n\t\tgetItemGroupName: getItemGroupName,\r\n\t\tgetDisplayPort: getDisplayPort,\r\n\t\tgetPortColourCode: getPortColourCode,\r\n\t\tsetPortColourCode: setPortColourCode,\r\n\t\tgetOriginId: getOriginId,\r\n\t\tsetOriginId: setOriginId,\r\n\t\tgetOriginName: getOriginName,\r\n\t\tsetOriginName: setOriginName,\r\n\t\tgetValueQty: getValueQty,\r\n\t\tsetValueQty: setValueQty,\r\n\t\tgetValueUnit: getValueUnit,\r\n\t\tsetValueUnit: setValueUnit,\r\n\t\tgetDangerous: getDgClass,\r\n\t\tsetDangerous: setDgClass,\r\n\t\tgetDestinationId: getDestinationId,\r\n\t\tsetDestinationId: setDestinationId,\r\n\t\tgetDestinationName: getDestinationName,\r\n\t\tsetDestinationName: setDestinationName,\r\n\t\tgetCompanyId: getCompanyId,\r\n\t\tsetCompanyId: setCompanyId,\r\n\t\tgetCompanyName: getCompanyName,\r\n\t\tsetCompanyName: setCompanyName,\r\n\t\tgetBulkTypeId: getBulkTypeId,\r\n\t\tsetBulkTypeId: setBulkTypeId,\r\n\t\tgetBulkTypeName: getBulkTypeName,\r\n\t\tsetBulkTypeName: setBulkTypeName,\r\n\t\tgetItemId: getItemId,\r\n\t\tsetItemId: setItemId,\r\n\t\tgetContainerId: getContainerId,\r\n\t\tsetContainerId: setContainerId,\r\n\t\tgetSg: getSg,\r\n\t\tsetSg: setSg,\r\n\t\tsetHidden: setHidden,\r\n\t\tisHidden: isHidden,\r\n\t\tgetManifestAction: getManifestAction,\r\n\t\tsetManifestAction: setManifestAction,\r\n\t\tsubtractValueQty: subtractValueQty,\r\n\t\tgetItemGroupId: getItemGroupId,\r\n\t\tsetItemGroupId: setItemGroupId,\r\n\t\tinit: init,\r\n\t\tparse: parse,\r\n\t\ttoJson: toJson\r\n\r\n\t}\r\n});\r\n\r\n","/**\r\n * Bulk Cargo Request Manger.\r\n *\r\n * Collection that contins all bulkRequests.\r\n *\r\n */\r\n\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkCargoRequestManager = (function(){\r\n var LOCALKEY = 'WELS_bulk_request';\r\n var _bulkCargoRequests = [];\r\n\r\n var clear = function(){\r\n _bulkCargoRequests = [];\r\n };\r\n\r\n var loadOnline = function(portId){\r\n var deferred = $.Deferred();\r\n\r\n var getBulkRequest = VRC.CommunicationService.getBulkCargoRequests(portId);\r\n\r\n getBulkRequest.done(function(owner, data){\r\n clear();\r\n parse(data);\r\n checkForLoadedCargo();\r\n deferred.resolve(toJson());\r\n });\r\n\r\n return deferred.promise();\r\n };\r\n\r\n var saveToLocal = function(){\r\n g_localsave_object.SetLocalStorageItem(LOCALKEY, toJson())\r\n };\r\n\r\n var loadFromLocal = function(){\r\n clear();\r\n parse(g_localsave_object.GetLocalStorageItem(LOCALKEY));\r\n checkForLoadedCargo();\r\n };\r\n\r\n var getBulkCargoRequests = function(){\r\n return _bulkCargoRequests;\r\n };\r\n\r\n var getBulkCargoRequestById = function(containerId){\r\n containerId = parseInt(containerId);\r\n\r\n return _.find(_bulkCargoRequests, function(cargoRequest) {\r\n return cargoRequest.getContainerId() === containerId;\r\n });\r\n\r\n };\r\n\r\n var checkForLoadedCargo = function(){\r\n var loadedCargoRequest = VRC.BulkTankManager.findLoadedCargoItems();\r\n _.each(_bulkCargoRequests, function(cargoRequest){\r\n\r\n var cargoQty = loadedCargoRequest[cargoRequest.getContainerId()];\r\n\r\n if(cargoQty !== undefined){\r\n\r\n if(cargoQty - cargoRequest.getValueQty() === 0 || cargoRequest.getValueQty() === undefined){\r\n\r\n\r\n cargoRequest.setValueQty(0);\r\n }\r\n else{\r\n\r\n cargoRequest.subtractValueQty(cargoQty);\r\n }\r\n }\r\n\r\n\r\n });\r\n };\r\n\r\n var parse = function(data){\r\n $.each(data, function(ii, bulkCargoRequestData){\r\n _bulkCargoRequests.push(VRC.BulkCargoRequest(bulkCargoRequestData));\r\n });\r\n };\r\n\r\n var toJson = function(){\r\n var json = [];\r\n $.each(getBulkCargoRequests(), function(ii, bulkCargoRequest){\r\n json.push(bulkCargoRequest.toJson());\r\n });\r\n\r\n return json;\r\n };\r\n\r\n\r\n\r\n return {\r\n loadOnline : loadOnline,\r\n parse : parse,\r\n toJson : toJson,\r\n saveToLocal : saveToLocal,\r\n loadFromLocal : loadFromLocal,\r\n getBulkCargoRequests : getBulkCargoRequests,\r\n getBulkCargoRequestById : getBulkCargoRequestById,\r\n clear : clear,\r\n\r\n }\r\n})();\r\n","/**\r\n * Service for checking bulk compatibility.\r\n * Needs bulk_matrix_compatibility component in Wels and a matrix set..Only available for ConocoPhillips pr 14.11.2016.\r\n *\r\n */\r\n\r\nvar VRC = VRC || {};\r\nVRC.BulkCompatibility = (function() {\r\n var _ruleWrapper = {};\r\n\r\n var init = function() {\r\n _ruleWrapper = g_master_data.master_data.bulk_matrix;\r\n };\r\n\r\n var canMixBulk = function(leftItemType, rightItemType) {\r\n var wrapper;\r\n\r\n if(_ruleWrapper && _ruleWrapper.matrix){\r\n var row = _ruleWrapper.matrix[leftItemType];\r\n var column = row ? row[rightItemType] : undefined;\r\n var rule = column ? _ruleWrapper.rules[column.rule] : _ruleWrapper.rules.none;\r\n\r\n wrapper = {rule: rule};\r\n if (column) {\r\n wrapper.data = column;\r\n }\r\n }\r\n return wrapper;\r\n };\r\n\r\n var hasComponent = function(){\r\n var hasComponent = false;\r\n if(_ruleWrapper){\r\n if(_ruleWrapper.matrix){\r\n hasComponent = _.isEmpty(_ruleWrapper.matrix) === false;\r\n }\r\n }\r\n return hasComponent;\r\n };\r\n\r\n var getRuleList = function() {\r\n return _.keys(_ruleWrapper.rules);\r\n };\r\n\r\n return {\r\n canMixBulk: canMixBulk,\r\n hasComponent : hasComponent,\r\n getRuleList: getRuleList,\r\n init: init\r\n };\r\n})();\r\n","/**\r\n * View for bulk Deviations are for all deviations coming from Bulk Cargo Request.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkDeviationView = (function(){\r\n\r\n var _queries = {\r\n container : '#bulk-state-deviation'\r\n };\r\n\r\n var init = function(){\r\n var ctx = {};\r\n render(ctx);\r\n attachModal();\r\n };\r\n\r\n var attachDraggable = function(){\r\n\r\n var $deviationArea = $(\".bulk_deck.deviation-area\");\r\n\r\n interact(\".bulk_deck.deviation-area\").dropzone({\r\n accept: \".main, .request\",\r\n ondropactivate: function () {\r\n // add active dropzone feedback\r\n $deviationArea.addClass(\"can-drop\");\r\n },\r\n ondragenter: function (event) {\r\n var dropzoneElement = $(event.target);\r\n\r\n // feedback the possibility of a drop\r\n dropzoneElement.addClass(\"drop-target\");\r\n },\r\n ondragleave: function (event) {\r\n var dropzoneElement = $(event.target);\r\n\r\n // remove the drop feedback style\r\n dropzoneElement.removeClass(\"drop-target\");\r\n },\r\n ondrop: function (event) {\r\n var $draggableElement = $(event.relatedTarget);\r\n var $droppable = $(event.target);\r\n\r\n var isLoading = $draggableElement.hasClass('request');\r\n\r\n if(isLoading){\r\n var containerId = $draggableElement.attr('data-container-id');\r\n var request = VRC.BulkCargoRequestManager.getBulkCargoRequestById(containerId);\r\n showModal($droppable, request.toJson());\r\n }\r\n\r\n else{\r\n var bulkTankId = $draggableElement.attr('data-bulk-tank-id');\r\n var bulkTank = VRC.BulkTankManager.getBulkTankById(bulkTankId);\r\n var offloadableContent = bulkTank.getOffloadableContent();\r\n if(offloadableContent.length > 1){\r\n showSelectCargoId($droppable, offloadableContent)\r\n }\r\n else{\r\n showModal($droppable, offloadableContent[0]);\r\n }\r\n }\r\n $deviationArea.removeClass(\"can-drop\");\r\n },\r\n ondropdeactivate: function () {\r\n $deviationArea.removeClass(\"can-drop\");\r\n }\r\n });\r\n };\r\n\r\n var showSelectCargoId = function ($placeHolder, content) {\r\n var popOverHtml = WELL.Handlebars.VRC.offload_action_selector({\r\n units: VRC.MasterDataService.getBulkValueUnitsAsArray(),\r\n content : content\r\n });\r\n\r\n $placeHolder.attr('data-content', popOverHtml);\r\n $placeHolder.popover({html: true, placement: 'left auto', sanitize: false });\r\n $placeHolder.popover('show');\r\n\r\n var $popover = $placeHolder.next();\r\n var $cargoItemsBtn = $popover.find('.offload-popup__cargo-list__btns');\r\n var $cancelBtn = $popover.find('.bulk-offload-cancel');\r\n\r\n $cargoItemsBtn.click(function (e) {\r\n e.preventDefault();\r\n\r\n var $btn = $(this);\r\n $btn.prop('disabled', true);\r\n\r\n var containerId = $btn.attr('data-container-id');\r\n if(!containerId){\r\n containerId = \"undefined\";\r\n }\r\n\r\n var bulkTankCargoItem = _.findWhere(content, {containerId : containerId});\r\n showModal($placeHolder, bulkTankCargoItem)\r\n });\r\n\r\n $cancelBtn.click(function(e){\r\n e.preventDefault();\r\n $placeHolder.popover('destroy');\r\n $placeHolder.remove();\r\n });\r\n };\r\n\r\n var showModal = function ($dropzoneElement, droppedElement) {\r\n if(!droppedElement){\r\n return;\r\n }\r\n\r\n var onConfirm = function($dropzoneElement, inputElements, json){\r\n addDeviation(inputElements, json);\r\n $dropzoneElement.popover('destroy');\r\n };\r\n\r\n var config = {};\r\n if(!droppedElement.bulkTankId){\r\n config.action = 'cargo_to_dev';\r\n }\r\n\r\n VRC.BulkLoadingPopoverView.show($dropzoneElement, droppedElement, onConfirm, null, config)\r\n };\r\n\r\n var attachModal = function(){\r\n $(\".bulk_deck.deviation-area\")\r\n .on('click', function (e) {\r\n\r\n var bulkTank = VRC.SpecialBulkTanks.getDeviationTank();\r\n VRC.BulkModalView.render(bulkTank.getBulkTankId(), {isSpecialTank : true});\r\n });\r\n };\r\n\r\n\r\n var addOffloadDeviation = function (json, date, qty, inputRemarks) {\r\n var bulkTank = VRC.BulkTankManager.getBulkTankById(json.bulkTankId);\r\n var lastContainerAction = bulkTank.getLatestContentByContainerId(json.containerId);\r\n var voyageBulk = VRC.VoyageBulk(lastContainerAction.toJson());\r\n\r\n voyageBulk.createNewId();\r\n voyageBulk.setAction(g_actions.deviation);\r\n voyageBulk.setDate(date);\r\n voyageBulk.setValueQty(qty);\r\n voyageBulk.setRemarks(inputRemarks);\r\n bulkTank.addContent(voyageBulk);\r\n VRC.BulkStateView.renderTank(bulkTank);\r\n\r\n };\r\n var addLoadingDeviation = function (json, date, qty, qtyRob, inputRemarks) {\r\n var voyageBulk = VRC.VoyageBulk();\r\n var bulkCargoRequest = VRC.BulkCargoRequestManager.getBulkCargoRequestById(json.containerId);\r\n var bulkTank = VRC.SpecialBulkTanks.getDeviationTank();\r\n\r\n voyageBulk.parseFromBulkRequest(bulkCargoRequest, bulkTank, qty, qtyRob, date, inputRemarks);\r\n voyageBulk.setAction(g_actions.deviation);\r\n bulkCargoRequest.subtractValueQty(qty);\r\n bulkTank.addContent(voyageBulk);\r\n VRC.BulkLoadingAreaView.reRenderBulkRequest(bulkCargoRequest);\r\n };\r\n\r\n var addDeviation = function (inputElements, json) {\r\n var qty = VRC.Utils.Number.parseFloat(inputElements.$valueQty.val()) || 0;\r\n var qtyRob = VRC.Utils.Number.parseFloat(inputElements.$qtyRob.val()) || 0;\r\n var date = inputElements.$date.val();\r\n var inputRemarks = inputElements.$remarkField.val();\r\n\r\n if(json.bulkTankId) {\r\n addOffloadDeviation(json, date, qty, inputRemarks);\r\n }\r\n else{\r\n addLoadingDeviation(json, date, qty, qtyRob,inputRemarks);\r\n }\r\n\r\n };\r\n\r\n var render = function(context) {\r\n var $container = $(_queries.container);\r\n var content = WELL.Handlebars.VRC.bulk_deviation_area(context);\r\n $container.html(content);\r\n attachDraggable();\r\n };\r\n\r\n return {\r\n init : init,\r\n render : render\r\n }\r\n})();\r\n","/**\r\n * Bulk Loading Area view. View for loading area, fetches all manifested bulk.\r\n * Initalizes drag and drop for all bulk cargo request.\r\n *\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkLoadingAreaView = (function () {\r\n\tvar _loadingAreaColumnNum = 6;\r\n\r\n\tvar _marginPercent = 0.5;\r\n\tvar _size;\r\n\r\n\tvar _queries = {\r\n\t\tcontainer: '#bulk-state-loading'\r\n\t};\r\n\r\n\tvar showLoading = function () {\r\n\t\tvar $container = $(_queries.container);\r\n\r\n\t\tvar content = WELL.Handlebars.VRC.bulk_loading_area_loading();\r\n\t\t$container.html(content);\r\n\t};\r\n\r\n\tvar init = function () {\r\n\r\n\t\tvar bulkTankRequests = VRC.BulkCargoRequestManager.toJson();\r\n\r\n\t\trender(bulkTankRequests);\r\n\t};\r\n\r\n\tvar attachDraggable = function () {\r\n\t\tvar $bulkTankRequests = interact('.bulk_deck.requests .bulk_tank');\r\n\r\n\t\t$bulkTankRequests.draggable({\r\n\t\t\tautoScroll: true,\r\n\t\t\tonstart: function (event) {\r\n\r\n\t\t\t\tvar target = event.target;\r\n\t\t\t\ttarget.style.zIndex = '1000';\r\n\t\t\t\ttarget.classList.add('drag-element');\r\n\r\n\t\t\t\tvar containerId = $(target).attr('data-container-id');\r\n\t\t\t\tvar cargoRequest = VRC.BulkCargoRequestManager.getBulkCargoRequestById(containerId);\r\n\t\t\t\tif (VRC.BulkCompatibility.hasComponent()) {\r\n\t\t\t\t\tcheckBulkMixCompatibility(cargoRequest);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//allBulkTanks.popover('hide');\r\n\t\t\t\t//disableClickHandling();\r\n\t\t\t},\r\n\t\t\tonmove: function dragMoveListener (event) {\r\n\t\t\t\tvar target = event.target;\r\n\t\t\t\tvar x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx;\r\n\t\t\t\tvar y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy;\r\n\t\t\t\ttarget.style.webkitTransform = target.style.transform = 'translate(' + x + 'px, ' + y + 'px)';\r\n\t\t\t\ttarget.setAttribute('data-x', x);\r\n\t\t\t\ttarget.setAttribute('data-y', y);\r\n\t\t\t},\r\n\t\t\t// call this function on every dragend event\r\n\t\t\tonend: function (event) {\r\n\t\t\t\tvar target = event.target;\r\n\t\t\t\ttarget.classList.remove('drag-element');\r\n\t\t\t\ttarget.style.zIndex = 'auto';\r\n\t\t\t\ttarget.style.transform = 'translate(0, 0)';\r\n\t\t\t\ttarget.setAttribute('data-x', '0');\r\n\t\t\t\ttarget.setAttribute('data-y', '0');\r\n\t\t\t\tclearBulkMixOverlay();\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t//enableClickHandling();\r\n\t\t\t\t}, 0);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar checkBulkMixCompatibility = function (bulkRequest) {\r\n\t\tvar requestItemGroupName = bulkRequest.getItemGroupId();\r\n\r\n\t\tvar bulkTanks = VRC.BulkTankManager.getBulkTanks();\r\n\t\t_.each(bulkTanks, function (bulkTank) {\r\n\t\t\tvar bulkTankId = bulkTank.getBulkTankId();\r\n\t\t\tvar lastLoadAction = bulkTank.getLastAction();\r\n\t\t\tvar tankItemGroupName = lastLoadAction ? lastLoadAction.getItemGroupId() : undefined;\r\n\r\n\t\t\tvar rule = VRC.BulkCompatibility.canMixBulk(requestItemGroupName, tankItemGroupName);\r\n\t\t\tvar $bulkTank = VRC.BulkStateView.getBulkTankElement(bulkTankId);\r\n\t\t\t$bulkTank.css({backgroundColor: rule.rule.colour})\r\n\t\t});\r\n\t};\r\n\r\n\tvar clearBulkMixOverlay = function () {\r\n\t\tvar bulkTanks = VRC.BulkTankManager.getBulkTanks();\r\n\t\t_.each(bulkTanks, function (bulkTank) {\r\n\t\t\tvar bulkTankId = bulkTank.getBulkTankId();\r\n\t\t\tvar colour = bulkTank.getTankColour();\r\n\t\t\tvar $bulkTank = VRC.BulkStateView.getBulkTankElement(bulkTankId);\r\n\t\t\t$bulkTank.css({backgroundColor: colour})\r\n\t\t});\r\n\r\n\t};\r\n\r\n\tvar createContext = function (bulkTankRequests) {\r\n\r\n\t\t_.each(bulkTankRequests, function (request) {\r\n\t\t\t// request.tankShape = request['valueUnit'] && request['valueUnit'] === 'mt' ? 'circle' : 'square';\r\n\t\t});\r\n\r\n\t\t_size = VRC.BulkViewUtil.calculateSize(_marginPercent, _loadingAreaColumnNum);\r\n\r\n\t\tvar portColors = findPortColorsInRequests(bulkTankRequests);\r\n\r\n\t\treturn {\r\n\t\t\tbulkTankRequests: bulkTankRequests,\r\n\t\t\tsize: _size,\r\n\t\t\tmargin: _marginPercent,\r\n\t\t\tportColors: portColors,\r\n\t\t\tunits: VRC.MasterDataService.getBulkValueUnitsAsArray()\r\n\t\t};\r\n\t};\r\n\r\n\tvar reRenderPortColors = function () {\r\n\t\tvar bulkTankRequests = VRC.BulkCargoRequestManager.toJson();\r\n\r\n\t\tvar portColors = findPortColorsInRequests(bulkTankRequests);\r\n\t\tvar html = Handlebars.partials['port_colors'](portColors);\r\n\t\tvar $portColors = getPortColors();\r\n\t\t$portColors.replaceWith(html);\r\n\t};\r\n\r\n\tvar getBulkRequestElement = function (containerId) {\r\n\t\treturn $(_queries.container).find('.bulk_tank[data-container-id=' + containerId + ']');\r\n\t};\r\n\tvar getPortColors = function () {\r\n\t\treturn $(_queries.container).find('.port-color-codes');\r\n\t};\r\n\r\n\tvar reRenderBulkRequest = function (bulkRequest) {\r\n\t\tvar containerId = bulkRequest.getContainerId();\r\n\t\tvar bulkRequestJson = bulkRequest.toJson();\r\n\r\n\t\tbulkRequestJson.main = {\r\n\t\t\tsize: _size,\r\n\t\t\tmargin: _marginPercent\r\n\t\t};\r\n\r\n\t\tvar html = Handlebars.partials['bulk_cargo_request'](bulkRequestJson);\r\n\t\tvar $bulkRequest = getBulkRequestElement(containerId);\r\n\t\t$bulkRequest.replaceWith(html);\r\n\t\treRenderPortColors();\r\n\t};\r\n\r\n\tvar removeBulkRequest = function (bulkRequest) {\r\n\t\tvar containerId = bulkRequest.getContainerId();\r\n\r\n\t\tvar $bulkRequest = getBulkRequestElement(containerId);\r\n\t\t$bulkRequest.remove();\r\n\t\treRenderPortColors();\r\n\r\n\t};\r\n\r\n\tvar findPortColorsInRequests = function (requests) {\r\n\t\tvar portColors = _.chain(requests).groupBy(function (request) {\r\n\t\t\treturn request.displayPort;\r\n\t\t}).map(function (group) {\r\n\t\t\tvar item = _.first(group);\r\n\t\t\treturn {\r\n\t\t\t\tportName: item.displayPort,\r\n\t\t\t\tportColorCode: item.portColorCode\r\n\t\t\t};\r\n\t\t}).sortBy(function (request) {\r\n\t\t\treturn request.portColorCode;\r\n\t\t}).value();\r\n\r\n\t\treturn portColors;\r\n\t};\r\n\r\n\tvar render = function (bulkTankRequests) {\r\n\t\tvar ctx = createContext(bulkTankRequests);\r\n\t\tvar $container = $(_queries.container);\r\n\r\n\t\tvar content = WELL.Handlebars.VRC.bulk_loading_area(ctx);\r\n\t\t$container.html(content);\r\n\r\n\t\tattachDraggable();\r\n\r\n\t\t//setupClickHandling();\r\n\t\t//setupDragHandling();\r\n\t};\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t\tshowLoading: showLoading,\r\n\t\treRenderBulkRequest: reRenderBulkRequest,\r\n\t\tremoveBulkRequest: removeBulkRequest,\r\n\t\trender: render\r\n\t}\r\n})();\r\n","/**\r\n * Bulk Modal View.\r\n * View that appear when you click on a bulk tank.\r\n * Has two main parts: Form (the input part) and the Content (The history of actions).\r\n * Handles all button input events and validation.\r\n *\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkModalView = (function () {\r\n\tvar $el;\r\n\tvar _bulkTank;\r\n\tvar _masterData;\r\n\tvar _template = WELL.Handlebars.VRC.bulk_modal;\r\n\r\n\tvar init = function () {\r\n\t\t$el = $('#bulk_modal');\r\n\t};\r\n\r\n\t/**\r\n\t * Sets which field should be sortable in the history view.\r\n\t */\r\n\tvar attachContentSorting = function () {\r\n\t\tVRC.TableSorterParsers.removeInputFieldListerens('#voyagebulk-content');\r\n\t\tVRC.TableSorterParsers.addInputFieldListeners('#voyagebulk-content');\r\n\r\n\t\tvar $eventLogTable = $('#voyagebulk-content');\r\n\t\t$eventLogTable.tablesorter({\r\n\r\n\t\t\theaders: {\r\n\t\t\t\t0: {sorter: 'datetime'},\r\n\t\t\t\t1: {sorter: false},\r\n\t\t\t\t2: {sorter: false},\r\n\t\t\t\t3: {sorter: false},\r\n\t\t\t\t4: {sorter: false},\r\n\t\t\t\t5: {sorter: true},\r\n\t\t\t\t6: {sorter: false},\r\n\t\t\t\t7: {sorter: true},\r\n\t\t\t\t8: {sorter: false},\r\n\t\t\t\t9: {sorter: false},\r\n\t\t\t\t10: {sorter: false},\r\n\t\t\t\t11: {sorter: false},\r\n\t\t\t\t12: {sorter: false},\r\n\t\t\t\t13: {sorter: false},\r\n\t\t\t\t14: {sorter: false}\r\n\t\t\t},\r\n\t\t\theaderTemplate: '{content} {icon}'\r\n\t\t});\r\n\t};\r\n\tvar render = function (bulkTankId, config) {\r\n\t\tconfig = config || {};\r\n\r\n\t\tif (config.isSpecialTank) {\r\n\t\t\t_bulkTank = VRC.SpecialBulkTanks.getBulkTankById(bulkTankId);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t_bulkTank = VRC.BulkTankManager.getBulkTankById(bulkTankId);\r\n\t\t}\r\n\r\n\t\t_masterData = _(g_master_data.master_data).clone();\r\n\t\t_masterData.port_list = VRC.MasterDataService.getGroupedPorts();\r\n\t\t_masterData.bulk_clean_type_list = VRC.MasterDataService.getBulkCleanTypes();\r\n\r\n\t\tvar $content = $el.find('.modal-content');\r\n\t\tvar lastAction = _bulkTank.getLastAction();\r\n\r\n\t\tif (lastAction) {\r\n\t\t\tlastAction = lastAction.toJson();\r\n\t\t}\r\n\r\n\t\tvar cargoEvents = VRC.VoyageLogEntryManager.getCargoEvents();\r\n\t\tvar cargoEventsJson = [];\r\n\t\t_.each(cargoEvents, function (cargoEvent) {\r\n\t\t\tcargoEventsJson.push(cargoEvent.toJson());\r\n\t\t});\r\n\r\n\t\tvar context = {\r\n\t\t\tlastAction: lastAction,\r\n\t\t\tbulkTank: _bulkTank.toJson(),\r\n\t\t\tcargoEvents: cargoEventsJson,\r\n\t\t\tmasterData: _masterData,\r\n\t\t\tbulkTanks: VRC.BulkTankManager.getBulkTanksNameAndId(_bulkTank.getBulkTankId()),\r\n\t\t\tconfig: config\r\n\t\t};\r\n\r\n\t\t$content.html(_template(context));\r\n\t\tattachEvents();\r\n\t\t$el.modal('show', {backdrop: 'static'});\r\n\t\tattachContentSorting();\r\n\r\n\t\t$('#addVoyagebulk').submit(function () {\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t};\r\n\r\n\tvar attachEvents = function () {\r\n\t\tattachAddVoyageBulkEvent();\r\n\t\tattachAddTankCleanEvent();\r\n\t\tattachRemoveEvent();\r\n\t\tattachEditEvent();\r\n\t\tattachRemoveValidationEvent();\r\n\t\tattachDatePickerEvent();\r\n\t\tattachMapEventChange();\r\n\t\tattachChangeAction();\r\n\t\tinitSelectize();\r\n\r\n\t};\r\n\r\n\tvar attachMapEventChange = function () {\r\n\t\t$(\"#change__cargoEvent\").change(function (e) {\r\n\t\t\tvar voyageLogId = $(e.target).val();\r\n\t\t\tvar voyageLog = VRC.VoyageLogEntryManager.getEventById(voyageLogId);\r\n\r\n\t\t\tvar $dateField = $(\"#addVoyagebulk__date\");\r\n\t\t\tvar originSelectize = $(\"#addVoyagebulk__originId\")[0].selectize;\r\n\r\n\t\t\tif (voyageLog) {\r\n\t\t\t\t$dateField.val(voyageLog.getDateTime());\r\n\r\n\t\t\t\toriginSelectize.setValue(voyageLog.getPort());\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$dateField.val('');\r\n\t\t\t\toriginSelectize.setValue('');\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar _$addVoyagebulk__originId;\r\n\tvar initSelectize = function () {\r\n\t\t_$addVoyagebulk__originId = $(\"#addVoyagebulk__originId\").selectize(VRC.Utils.Selectize.getConfig());\r\n\t\t$(\"#addVoyagebulk__destinationId\").selectize(VRC.Utils.Selectize.getConfig());\r\n\t\t$(\"#addVoyagebulk__companyId\").selectize(VRC.Utils.Selectize.getConfig());\r\n\t\t$(\"#addVoyagebulk__type\").selectize(VRC.Utils.Selectize.getConfig());\r\n\t};\r\n\r\n\tvar attachDatePickerEvent = function () {\r\n\t\t$(\"#addVoyagebulk__date, #addTankClean__date\").datetimepicker(\r\n\t\t\t{\r\n\t\t\t\tformat: g_timeStampFormat\r\n\t\t\t});\r\n\t};\r\n\r\n\tvar attachRemoveValidationEvent = function () {\r\n\t\tvar $inputs = $el.find(\"#addVoyagebulk\").find(':input');\r\n\r\n\t\t$inputs.change(function () {\r\n\t\t\tremoveError($(this));\r\n\t\t});\r\n\r\n\t\t$('#addVoyagebulk__date').on('dp.change', function (ev) {\r\n\t\t\tremoveError($(this));\r\n\t\t});\r\n\r\n\t};\r\n\r\n\tvar _errorMessages = {\r\n\t\tdate: 'Required format: ' + g_timeStampFormat,\r\n\t\tstartRobIsAfter: 'Start rob cannot be added after other events',\r\n\t\toriginId: 'Origin is required',\r\n\t\tsgRequired: 'When unit m3 is set, SG is required',\r\n\t\tsgRange: 'Sg outside valid range [0.1-3.0]',\r\n\t\toffloadDestination: 'The can be no destination on offload. Use Origin.',\r\n\t\tvalueQty: 'Qty is required',\r\n\t\tpositiveQty: 'Qty has to be a positive number',\r\n\t\tvesselOffload: 'Destination can not be set when transferring Bulk to another vessel. Please use Origin'\r\n\t};\r\n\r\n\tvar hasValue = function (value) {\r\n\t\treturn value !== undefined && value !== '';\r\n\t};\r\n\r\n\tvar isBetween = function (value, min, max) {\r\n\t\ttry {\r\n\t\t\tparseFloat(value);\r\n\t\t\treturn value >= min && value <= max;\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tvar showErrors = function ($form, errors) {\r\n\t\t$.each(errors, function (name, error) {\r\n\t\t\tshowError($form, name, error)\r\n\t\t});\r\n\t};\r\n\r\n\tvar removeErrors = function(){\r\n\t\tvar inputs = $('#addVoyagebulk').find(':input');;\r\n\t\t$.each(inputs, function(key,input){\r\n\t\t\tremoveError(input);\r\n\t\t});\r\n\t};\r\n\r\n\tvar removeError = function ($input) {\r\n\t\tvar $formGroup = $($input.closest('.form-group'));\r\n\r\n\t\tif($formGroup){\r\n\t\t\t$formGroup.removeClass('has-error');\r\n\t\t\t$formGroup.find('.help-block').remove();\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tvar showError = function ($form, name, error) {\r\n\t\tvar $input = getElement($form, name);\r\n\t\tremoveError($input);\r\n\t\tvar $formGroup = $input.parent();\r\n\t\t$formGroup.addClass('has-error');\r\n\t\t$formGroup.append(createErrorMessage(error));\r\n\t};\r\n\r\n\tvar getElement = function ($form, name) {\r\n\t\treturn $form.find(':input[name=\"' + name + '\"]');\r\n\t};\r\n\r\n\tvar isValidDate = function (date) {\r\n\t\treturn moment(date, g_timeStampFormat, true).isValid();\r\n\t};\r\n\r\n\tvar checkForVoyageBulkErrors = function (data) {\r\n\t\tvar errors = {};\r\n\r\n\t\tif (!isValidDate(data.date)) {\r\n\t\t\terrors.date = _errorMessages.date;\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (data.action === g_actions.start_rob) {\r\n\t\t\t\tvar firstEvent = _bulkTank.getFirstContentIgnoreStartRob();\r\n\r\n\t\t\t\tif (firstEvent) {\r\n\t\t\t\t\tvar firstDate = moment(firstEvent.getDate(), g_timeStampFormat);\r\n\t\t\t\t\tvar isValid = moment(data.date, g_timeStampFormat).isBefore(firstDate);\r\n\t\t\t\t\tif (!isValid) {\r\n\t\t\t\t\t\terrors.date = _errorMessages.startRobIsAfter;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (data.action !== g_actions.start_rob) {\r\n\t\t\tif (!hasValue(data.originId) && (!hasValue(data.vessel))) {\r\n\t\t\t\terrors.originId = _errorMessages.originId;\r\n\t\t\t}\r\n\t\t\tif (data.valueUnit === 'm3') {\r\n\t\t\t\tif (!hasValue(data.sg)) {\r\n\t\t\t\t\terrors.sg = _errorMessages.sgRequired;\r\n\t\t\t\t}\r\n\t\t\t\telse if (!isBetween(data.sg, 0.1, 3.0)) {\r\n\t\t\t\t\terrors.sg = _errorMessages.sgRange;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\tif (!hasValue(data.valueQty)) {\r\n\t\t\terrors.valueQty = _errorMessages.valueQty;\r\n\t\t}\r\n\t\telse if (data.valueQty < 0 && data.action !== g_actions.deviation) {\r\n\t\t\terrors.valueQty = _errorMessages.positiveQty;\r\n\t\t}\r\n\r\n\t\tif (data.action === g_actions.offload) {\r\n\t\t\tif (data.destinationId) {\r\n\t\t\t\terrors.destinationId = _errorMessages.offloadDestination;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(VRC.Utils.Number.parseInt(data.originId)) || isNaN(VRC.Utils.Number.parseInt(data.destinationId))) {\r\n\t\t\tif (data.destinationId) {\r\n\t\t\t\terrors.destinationId = _errorMessages.vesselOffload;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn errors;\r\n\t};\r\n\r\n\tvar checkForTankCleanErrors = function (data) {\r\n\t\tvar errors = {};\r\n\r\n\t\tif (!isValidDate(data.date)) {\r\n\t\t\terrors.date = _errorMessages.date;\r\n\t\t}\r\n\r\n\t\treturn errors;\r\n\t};\r\n\r\n\tvar isValid = function (errors) {\r\n\t\treturn jQuery.isEmptyObject(errors);\r\n\t};\r\n\r\n\tvar createErrorMessage = function (error) {\r\n\t\treturn $('' + error + '');\r\n\t};\r\n\r\n\tvar getContent = function () {\r\n\t\treturn $el.find('#voyagebulk-content tbody');\r\n\t};\r\n\r\n\tvar renderContent = function () {\r\n\t\tvar bulkJson = _bulkTank.toJson();\r\n\t\tvar ctx = bulkJson;\r\n\r\n\t\tvar html = Handlebars.partials['bulk_modal_content'](ctx);\r\n\t\tvar $content = getContent();\r\n\t\t$content.html(html);\r\n\t\tattachRemoveEvent();\r\n\t\tattachEditEvent();\r\n\r\n\t\tvar $voyageBulkTable = $('#voyagebulk-content');\r\n\t\t$voyageBulkTable.trigger(\"update\");\r\n\t\t$voyageBulkTable.trigger(\"appendCache\");\r\n\t};\r\n\r\n\tvar updateVoyageBulk = function (onSucess) {\r\n\t\tvar $voyageForm = $el.find(\"#addVoyagebulk\");\r\n\t\tvar $inputElements = $voyageForm.find(':input');\r\n\t\tvar serializedObject = VRC.Utils.Forms.serializeObject($inputElements);\r\n\r\n\t\tvar errors = checkForVoyageBulkErrors(serializedObject);\r\n\r\n\t\tif (isValid(errors)) {\r\n\r\n\t\t\tonSucess(serializedObject);\r\n\r\n\t\t\trenderContent();\r\n\t\t\tVRC.BulkStateView.renderTank(_bulkTank);\r\n\t\t\tVRC.BulkState.saveToLocalStorage();\r\n\t\t\tVRC.BulkOffloadAraeView.init();\r\n\t\t\tVRC.BulkLoadingAreaView.init();\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tshowErrors($voyageForm, errors);\r\n\t\t}\r\n\t};\r\n\r\n\tvar attachAddVoyageBulkEvent = function () {\r\n\r\n\t\tvar $btn = $el.find(\"#addVoyagebulk__add-btn\");\r\n\r\n\t\t$btn.unbind('click').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar onSuccess = function (serializedObject) {\r\n\t\t\t\tvar action = serializedObject.action;\r\n\t\t\t\tvar voyageBulk = VRC.VoyageBulk(serializedObject);\r\n\t\t\t\t_bulkTank.addContent(voyageBulk);\r\n\r\n\t\t\t\tif (isTransferAction(action)) {\r\n\t\t\t\t\tcreateTransferAction(action, serializedObject.transferToTank, serializedObject);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trenderForm();\r\n\t\t\t\tattachDatePickerEvent();\r\n\r\n\t\t\t};\r\n\r\n\t\t\tupdateVoyageBulk(onSuccess);\r\n\t\t});\r\n\t};\r\n\r\n\tvar createTransferAction = function (action, bulkTankId, voyageBulk) {\r\n\t\tbulkTankId = parseInt(bulkTankId);\r\n\t\tvar clone = VRC.VoyageBulk(voyageBulk);\r\n\t\tvar bulkTank = VRC.BulkTankManager.getBulkTankById(bulkTankId);\r\n\t\tif (action === 'transfer_to') {\r\n\t\t\tclone.setAction('transfer_from');\r\n\r\n\t\t}\r\n\t\telse if (action === 'transfer_from') {\r\n\t\t\tclone.setAction('transfer_to');\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\tconsole.error('invalid action');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tbulkTank.addContent(clone);\r\n\t\tVRC.BulkStateView.renderTank(bulkTank);\r\n\t};\r\n\r\n\tvar attachUpdateVoyageBulkEvent = function () {\r\n\r\n\t\tvar $btn = $el.find(\"#addVoyagebulk__edit-btn\");\r\n\r\n\t\t$btn.unbind('click').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar onSuccess = function (serializedObject) {\r\n\t\t\t\tvar voyageBulk = _bulkTank.getContentById(serializedObject.voyageBulkId);\r\n\t\t\t\tvoyageBulk.update(serializedObject);\r\n\t\t\t\t_bulkTank.recalcRob();\r\n\t\t\t\trenderForm();\r\n\t\t\t\tattachDatePickerEvent();\r\n\t\t\t};\r\n\r\n\t\t\tupdateVoyageBulk(onSuccess);\r\n\r\n\t\t});\r\n\t};\r\n\r\n\tvar _tempAction = '';\r\n\r\n\tvar attachChangeAction = function ($row) {\r\n\t\tvar invalidDestinationActions = ['offload', 'tank_clean_started', 'tank_clean', 'dump'];\r\n\t\tvar $action = $(\"#addVoyagebulk__action\");\r\n\r\n\t\t$action.unbind('change').change(function (e) {\r\n\t\t\tvar $field = $(e.target);\r\n\t\t\tvar action = $field.val();\r\n\t\t\tvar $destinationField = $(\"#addVoyagebulk__destinationId\");\r\n\t\t\tvar $destinationSelectize = $destinationField[0].selectize;\r\n\t\t\tif (_.contains(invalidDestinationActions, action)) {\r\n\r\n\t\t\t\t_tempAction = $destinationField.val();\r\n\t\t\t\tvar $destinationSelectize = $destinationField[0].selectize;\r\n\t\t\t\t$destinationSelectize.setValue('');\r\n\t\t\t\t$destinationSelectize.disable();\r\n\t\t\t}\r\n\t\t\telse if (action === '') {\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$destinationSelectize.enable();\r\n\t\t\t\t$destinationSelectize.setValue(_tempAction);\r\n\t\t\t\t_tempAction = '';\r\n\t\t\t}\r\n\r\n\t\t\tshowActionFields(action);\r\n\r\n\t\t});\r\n\t};\r\n\r\n\tvar showActionFields = function (action) {\r\n\t\tswitch (action) {\r\n\t\t\tcase 'transfer_to':\r\n\t\t\tcase 'transfer_from':\r\n\t\t\t\tshowActionField(\"#addVoyagebulk__transferToTank\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'tank_clean_started':\r\n\t\t\tcase 'tank_clean':\r\n\t\t\t\tshowActionField('#addVoyagebulk__actionObject');\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tshowActionField(null);\r\n\t\t}\r\n\t};\r\n\r\n\tvar isTransferAction = function (action) {\r\n\t\tvar invalidDestinationActions = ['transfer_to', 'transfer_from'];\r\n\t\treturn _.contains(invalidDestinationActions, action)\r\n\t};\r\n\r\n\tvar actionFieldsMap = [\"#addVoyagebulk__transferToTank\", '#addVoyagebulk__actionObject'];\r\n\r\n\tvar showActionField = function (actionDiv) {\r\n\t\t_.map(actionFieldsMap,function(actionField) {\r\n\t\t\tvar $row = $(actionField).parent();\r\n\t\t\tif (actionField === actionDiv) {\r\n\t\t\t\t$row.show();\r\n\t\t\t} else {\r\n\t\t\t\t$row.hide();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar attachUpdateVoyageBulkCancelEvent = function () {\r\n\r\n\t\tvar $btn = $el.find(\"#addVoyagebulk__edit-cancel-btn\");\r\n\r\n\t\t$btn.unbind('click').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\trenderForm();\r\n\t\t\tattachDatePickerEvent();\r\n\r\n\t\t});\r\n\t};\r\n\r\n\tvar attachAddTankCleanEvent = function () {\r\n\t\tvar $btn = $el.find(\"#addTankClean__add-btn\");\r\n\t\tvar $tankCleanForm = $el.find(\"#addTankClean\");\r\n\t\tvar $inputElements = $tankCleanForm.find(':input');\r\n\t\t$btn.unbind('click').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar serializedObject = VRC.Utils.Forms.serializeObject($inputElements);\r\n\r\n\t\t\tvar errors = checkForTankCleanErrors(serializedObject);\r\n\r\n\t\t\tif (isValid(errors)) {\r\n\t\t\t\tvar voyageBulk = VRC.VoyageBulk(serializedObject);\r\n\t\t\t\t_bulkTank.addContent(voyageBulk);\r\n\t\t\t\trenderContent();\r\n\t\t\t\tVRC.BulkStateView.renderTank(_bulkTank);\r\n\t\t\t\tVRC.BulkOffloadAraeView.init();\r\n\t\t\t\tVRC.BulkState.saveToLocalStorage();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tshowErrors($tankCleanForm, errors);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar attachEditEvent = function () {\r\n\t\tvar $content = getContent();\r\n\t\tvar $btns = $content.find('.voyagebulk-content__edit-btn');\r\n\t\t$btns.unbind('click').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar $row = $(this).closest('tr');\r\n\t\t\tvar voyageBulkId = $row.attr('data-voyagebulk-id');\r\n\r\n\t\t\trenderForm(voyageBulkId);\r\n\t\t});\r\n\r\n\t};\r\n\r\n\tvar renderForm = function (objectId, objectType) {\r\n\t\tobjectType = objectType || 'bulk';\r\n\t\tvar $form = $('#addVoyagebulk');\r\n\t\tvar config = {};\r\n\t\tvar voyageBulk;\r\n\r\n\t\tif (objectId && objectType === 'bulk') {\r\n\t\t\tconfig.editMode = true;\r\n\t\t\tvoyageBulk = _bulkTank.getContentById(objectId);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvoyageBulk = _bulkTank.getLastAction();\r\n\t\t}\r\n\r\n\t\tif (voyageBulk) {\r\n\r\n\t\t\tvar ctx = {\r\n\t\t\t\tlastAction: voyageBulk.toJson(),\r\n\t\t\t\tbulkTank: _bulkTank.toJson(),\r\n\t\t\t\tmasterData: _masterData,\r\n\t\t\t\tconfig: config,\r\n\t\t\t\tbulkTanks: VRC.BulkTankManager.getBulkTanksNameAndId(_bulkTank.getBulkTankId())\r\n\t\t\t};\r\n\r\n\t\t\tvar html = Handlebars.partials['bulk_modal_voyagebulk_form'](ctx);\r\n\t\t\t$form.replaceWith(html);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$el.modal('hide')\r\n\t\t}\r\n\t\tattachUpdateVoyageBulkEvent();\r\n\t\tattachUpdateVoyageBulkCancelEvent();\r\n\r\n\t\tattachAddVoyageBulkEvent();\r\n\t};\r\n\r\n\tvar attachRemoveEvent = function () {\r\n\t\tvar $content = getContent();\r\n\t\tvar $btns = $content.find('.voyagebulk-content__remove-btn');\r\n\t\t$btns.unbind('click').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar $row = $(this).closest('tr');\r\n\t\t\tvar voyageBulkId = $row.attr('data-voyagebulk-id');\r\n\r\n\t\t\tvar voyageBulk = _bulkTank.getContentById(voyageBulkId);\r\n\r\n\t\t\tif (voyageBulk.getContainerId() && voyageBulk.getAction() === g_actions.load) {\r\n\t\t\t\tvar bulkRequest = VRC.BulkCargoRequestManager.getBulkCargoRequestById(voyageBulk.getContainerId());\r\n\t\t\t\tif (bulkRequest) {\r\n\t\t\t\t\tbulkRequest.subtractValueQty(voyageBulk.getValueQty() * -1)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t_bulkTank.removeContent(voyageBulk);\r\n\r\n\t\t\trenderContent();\r\n\t\t\tVRC.BulkStateView.renderTank(_bulkTank);\r\n\t\t\tVRC.BulkOffloadAraeView.init();\r\n\t\t\tVRC.BulkLoadingAreaView.init();\r\n\t\t});\r\n\t};\r\n\r\n\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t\trender: render,\r\n\t\tremoveErrors : removeErrors\r\n\t};\r\n\r\n})();\r\n","/**\r\n * The Offload Area View.\r\n * Sets up the rendering, click events and drag&drop events for the offload area.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\n\tVRC.BulkOffloadAraeView = (function () {\r\n\tvar NUMBER_OF_COLUMNS = 5;\r\n\tvar MARGIN_PRESENTAGE = 0.5;\r\n\r\n\tvar _size;\r\n\r\n\tvar _queries = {\r\n\t\tcontainer: \"#bulk-state-offloading\",\r\n\t\toffloadEvents: '.request'\r\n\t};\r\n\r\n\tvar init = function () {\r\n\t\tvar port = VRC.BulkToolbarView.getSelectedPort();\r\n\r\n\t\tvar bulkTankRequests = VRC.BulkTankManager.getOffloadEvents(port);\r\n\r\n\t\tvar ctx = createContext(bulkTankRequests);\r\n\r\n\t\trender(ctx);\r\n\r\n\t};\r\n\r\n\tvar attachAllClickable = function () {\r\n\t\tvar $container = $(_queries.container);\r\n\t\tvar $offloadEvents = $container.find(_queries.offloadEvents);\r\n\t\tattachClickable($offloadEvents);\r\n\t};\r\n\r\n\tvar attachClickable = function ($elements) {\r\n\t\t$elements.unbind('click').click(function (e) {\r\n\t\t\tvar $offloadEvent = $(e.target).closest('.request');\r\n\t\t\tvar bulkTankId = $offloadEvent.attr('data-bulktank-id');\r\n\t\t\tvar voyageBulkId = $offloadEvent.attr('data-voyagebulk-id');\r\n\r\n\t\t\tVRC.BulkModalView.render(bulkTankId, {highlight: voyageBulkId});\r\n\t\t})\r\n\r\n\t};\r\n\r\n\tvar attachDraggable = function () {\r\n\t\tvar offloadDeck = $(\".bulk_deck.offload\");\r\n\t\tinteract(\".bulk_deck.offload\").dropzone({\r\n\t\t\taccept: \".main\",\r\n\t\t\tondropactivate: function () {\r\n\t\t\t\t// add active dropzone feedback\r\n\t\t\t\toffloadDeck.addClass(\"can-drop\");\r\n\t\t\t},\r\n\t\t\tondragenter: function (event) {\r\n\t\t\t\tvar dropzoneElement = $(event.target);\r\n\r\n\t\t\t\t// feedback the possibility of a drop\r\n\t\t\t\tdropzoneElement.addClass(\"drop-target\");\r\n\t\t\t},\r\n\t\t\tondragleave: function (event) {\r\n\t\t\t\tvar dropzoneElement = $(event.target);\r\n\r\n\t\t\t\t// remove the drop feedback style\r\n\t\t\t\tdropzoneElement.removeClass(\"drop-target\");\r\n\t\t\t},\r\n\t\t\tondrop: function (event) {\r\n\t\t\t\tvar draggableElement = event.relatedTarget,\r\n\t\t\t\t\tdropzoneElement = $(event.target);\r\n\r\n\t\t\t\tdropzoneElement.removeClass(\"drop-target\");\r\n\r\n\t\t\t\t//GetOffloadableContent\r\n\t\t\t\tvar bulkTankId = draggableElement.getAttribute('data-bulk-tank-id');\r\n\t\t\t\tvar bulkTank = VRC.BulkTankManager.getBulkTankById(bulkTankId);\r\n\t\t\t\tvar offloadableContent = bulkTank.getOffloadableContent();\r\n\r\n\t\t\t\t//Create Temp html\r\n\t\t\t\tvar placeHolderHtml = Handlebars.partials['bulk_cargo_request']({main: getMainJson()});\r\n\t\t\t\tdropzoneElement.append(placeHolderHtml);\r\n\t\t\t\tvar $placeHolderHtml = dropzoneElement.children().last();\r\n\r\n\t\t\t\tshowPopup($placeHolderHtml, offloadableContent, bulkTank)\r\n\t\t\t},\r\n\t\t\tondropdeactivate: function () {\r\n\t\t\t\toffloadDeck.removeClass(\"can-drop\");\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar getMainJson = function () {\r\n\t\treturn {size: _size, margin: MARGIN_PRESENTAGE};\r\n\t};\r\n\r\n\tvar showInputPopup = function ($placeHolder, droppedElement) {\r\n\r\n\t\tvar onConfirm = function ($placeHolder, inputElements, json) {\r\n\t\t\tvar voyageBulk = insertBulkAction(inputElements, droppedElement);\r\n\t\t\tvar voyageBulkJson = voyageBulk.toJson();\r\n\t\t\tvoyageBulkJson.main = getMainJson();\r\n\t\t\tvar placeHolderHtml = Handlebars.partials['bulk_cargo_request'](voyageBulkJson);\r\n\t\t\t$placeHolder.popover('destroy');\r\n\t\t\t$placeHolder.replaceWith(placeHolderHtml);\r\n\r\n\t\t\tattachAllClickable();\r\n\t\t};\r\n\r\n\t\tvar onCancel = function () {\r\n\t\t\t$placeHolder.remove();\r\n\t\t};\r\n\r\n\t\tvar portId = VRC.BulkToolbarView.getSelectedPort();\r\n\t\tvar portPort = VRC.MasterDataService.getPort(portId);\r\n\r\n\t\tif(portPort){\r\n\t\t\tvar config = {\r\n\t\t\t\taction: 'offload',\r\n\t\t\t\ttitle: 'Offloading to ' + portPort.name\r\n\t\t\t};\r\n\r\n\t\t\tVRC.BulkLoadingPopoverView.show($placeHolder, droppedElement, onConfirm, onCancel, config)\r\n\t\t}\r\n\t\telse{\r\n\t\t VRC.ErrorHandleService.showMessage('No port selected', G_MSG_TYPE_WARNING);\r\n\t\t\tonCancel();\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tvar insertBulkAction = function (inputElements, json) {\r\n\r\n\t\tvar bulkTank = VRC.BulkTankManager.getBulkTankById(json.bulkTankId);\r\n\t\tvar containerId = json.containerId;\r\n\t\t//Getting values from popover\r\n\r\n\t\tvar qty = VRC.Utils.Number.parseFloat(inputElements.$valueQty.val());\r\n\t\tqty = qty || 0;\r\n\t\tvar qtyRob = VRC.Utils.Number.parseFloat(inputElements.$qtyRob.val());\r\n\t\tqtyRob = qtyRob || 0;\r\n\t\tvar date = inputElements.$date.val();\r\n\t\tvar inputRemarks = inputElements.$remarkField.val();\r\n\r\n\t\tvar lastContainerAction = bulkTank.getLatestContentByContainerId(containerId);\r\n\t\tvar portId = VRC.BulkToolbarView.getSelectedPort();\r\n\t\tvar voyageBulk = VRC.VoyageBulk(lastContainerAction.toJson());\r\n\r\n\t\t//Todo do in VoyageBulk\r\n\t\tvoyageBulk.createNewId();\r\n\t\tvoyageBulk.setAction(g_actions.offload);\r\n\t\tvoyageBulk.setDate(date);\r\n\t\tvoyageBulk.setValueQty(qty);\r\n\t\tvoyageBulk.setQtyRob(qtyRob);\r\n\t\tvoyageBulk.setRemarks(inputRemarks);\r\n\t\tvoyageBulk.setOriginId(portId);\r\n\t\tvoyageBulk.setOriginName();\r\n\t\tvoyageBulk.setDestinationId(undefined);\r\n\t\tvoyageBulk.setDestinationName(undefined);\r\n\t\tvoyageBulk.setDisplayPort();\r\n\t\tif (inputElements.$valueQty) {\r\n\t\t\tvoyageBulk.setBulkTypeId(inputElements.$bulkTypeId.val());\r\n\t\t\tvoyageBulk.setBulkTypeName();\r\n\t\t}\r\n\r\n\t\t//END Todo\r\n\r\n\t\tbulkTank.addContent(voyageBulk);\r\n\t\t//UpdateUi\r\n\t\tVRC.BulkStateView.renderTank(bulkTank);\r\n\r\n\t\treturn voyageBulk;\r\n\t};\r\n\r\n\tvar showSelectCargoId = function ($placeHolder, content, bulkTank) {\r\n\r\n\t\tvar popOverHtml = WELL.Handlebars.VRC.offload_action_selector({\r\n\t\t\tunits: VRC.MasterDataService.getBulkValueUnitsAsArray(),\r\n\t\t\tcontent: content\r\n\t\t});\r\n\r\n\t\t$placeHolder.attr('data-content', popOverHtml);\r\n\t\t$placeHolder.popover({html: true, placement: 'left auto', sanitize: false });\r\n\t\t$placeHolder.popover('show');\r\n\r\n\t\tvar $popover = $placeHolder.next();\r\n\t\tvar $cargoItemsBtn = $popover.find('.offload-popup__cargo-list__btns');\r\n\t\tvar $cancelBtn = $popover.find('.bulk-offload-cancel');\r\n\r\n\t\t$cargoItemsBtn.click(function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar $btn = $(this);\r\n\t\t\t$btn.prop('disabled', true);\r\n\t\t\tvar containerId = $btn.attr('data-container-id');\r\n\r\n\t\t\tif (!containerId) {\r\n\t\t\t\tcontainerId = \"undefined\";\r\n\t\t\t}\r\n\t\t\tvar bulkTankCargoItem = _.findWhere(content, {containerId: containerId});\r\n\r\n\t\t\tshowInputPopup($placeHolder, bulkTankCargoItem, bulkTank)\r\n\t\t});\r\n\r\n\t\t$cancelBtn.click(function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\t$placeHolder.popover('destroy');\r\n\t\t\t$placeHolder.remove();\r\n\t\t});\r\n\t};\r\n\r\n\tvar showPopup = function ($placeHolder, bulkTankCargoItems, bulkTank) {\r\n\r\n\t\tif (bulkTankCargoItems.length > 1) {\r\n\t\t\tshowSelectCargoId($placeHolder, bulkTankCargoItems, bulkTank);\r\n\t\t}\r\n\t\telse if (bulkTankCargoItems.length === 1) {\r\n\t\t\tshowInputPopup($placeHolder, bulkTankCargoItems[0], bulkTank);\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\t$placeHolder.remove();\r\n\t\t\tconsole.error('There is no offloadable content in this tank');\r\n\t\t}\r\n\t};\r\n\r\n\tvar createContext = function (bulkTankRequests) {\r\n\r\n\t\t_.each(bulkTankRequests, function (request) {\r\n\t\t\trequest.tankShape = request[\"valueUnit\"] && request[\"valueUnit\"] === \"mt\" ? \"circle\" : \"square\";\r\n\t\t});\r\n\r\n\t\t_size = VRC.BulkViewUtil.calculateSize(MARGIN_PRESENTAGE, NUMBER_OF_COLUMNS);\r\n\r\n\t\tvar portColors = findPortColorsInRequests(bulkTankRequests);\r\n\r\n\t\treturn {\r\n\t\t\tbulkTankRequests: bulkTankRequests,\r\n\t\t\tsize: _size,\r\n\t\t\tmargin: MARGIN_PRESENTAGE,\r\n\t\t\tportColors: portColors,\r\n\t\t\tunits: VRC.MasterDataService.getBulkValueUnitsAsArray()\r\n\t\t};\r\n\t};\r\n\r\n\tvar findPortColorsInRequests = function (requests) {\r\n\t\treturn _.chain(requests).groupBy(function (request) {\r\n\t\t\treturn request.originName || request.destinationName;\r\n\t\t}).map(function (group) {\r\n\t\t\tvar item = _.first(group);\r\n\t\t\treturn {\r\n\t\t\t\tportName: item.displayPort,\r\n\t\t\t\tportColorCode: item.portColorCode\r\n\t\t\t};\r\n\t\t}).sortBy(function (request) {\r\n\t\t\treturn request.portColorCode;\r\n\t\t}).value();\r\n\t};\r\n\r\n\tvar render = function (context) {\r\n\t\tvar $container = $(_queries.container);\r\n\r\n\t\tvar content = WELL.Handlebars.VRC.bulk_offloading_area(context);\r\n\t\t$container.html(content);\r\n\r\n\t\tattachDraggable();\r\n\t\tattachAllClickable();\r\n\t};\r\n\r\n\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t\trender: render\r\n\t}\r\n})();\r\n","/**\r\n * The view (popup) that appear when you drag and drop a cargoRequest or bulk content.\r\n */\r\nvar VRC = VRC || {};\r\nVRC.BulkLoadingPopoverView = (function(){\r\n\r\n var init = function ($placeHolder, droppedElement, config) {\r\n var jsonElement = droppedElement.toJson ? droppedElement.toJson() : droppedElement;\r\n\r\n var popOverHtml = WELL.Handlebars.VRC.loadingQuantitySelection({\r\n qtyRob : jsonElement.qtyRob - jsonElement.valueQty,\r\n date : moment().format(g_timeStampFormat),\r\n request: jsonElement,\r\n units: VRC.MasterDataService.getBulkValueUnitsAsArray(),\r\n action: config.action\r\n });\r\n\r\n $placeHolder.attr('data-content', popOverHtml);\r\n $placeHolder.popover({html: true, placement: 'left auto', title : config.title, sanitize: false });\r\n $placeHolder.popover('show');\r\n\r\n };\r\n\r\n\r\n var show = function($dropzoneElement, droppedElement, onConfirm, onCancel, config){\r\n config = config || {};\r\n init($dropzoneElement, droppedElement, config);\r\n\r\n var $popover = $dropzoneElement.next();\r\n\r\n var droppedElementJson = droppedElement.toJson ? droppedElement.toJson() : droppedElement;\r\n\r\n\r\n var $valueType = $popover.find('#popover__valueUnit');\r\n var $date = $popover.find('#popover__date');\r\n $valueType.selectpicker();\r\n $date.datetimepicker({format : g_timeStampFormat});\r\n var $valueQty = $popover.find('#popover__valueQty');\r\n\r\n var $bulkTypeId = $(\"#popover__bulkTypeId\");\r\n var $qtyRob = $popover.find('#popover__qtyRob');\r\n var $remarkField = $popover.find('#popover__remarks');\r\n\r\n $valueQty.focus();\r\n\r\n $valueQty.change(function(e){\r\n\r\n var qty = $(e.target).val();\r\n $qtyRob.val(droppedElementJson.qtyRob - qty);\r\n });\r\n\r\n $('.bulk-insertion-cancel').click(function(e){\r\n e.preventDefault();\r\n $dropzoneElement.popover('destroy');\r\n if(onCancel){\r\n onCancel();\r\n }\r\n });\r\n\r\n $('.bulk-insertion-confirm').click(function(e){\r\n e.preventDefault();\r\n onConfirm($dropzoneElement, {$valueQty :$valueQty, $date : $date, $qtyRob : $qtyRob, $remarkField : $remarkField, $bulkTypeId : $bulkTypeId}, droppedElementJson);\r\n\r\n });\r\n };\r\n\r\n return {\r\n show : show\r\n }\r\n})();\r\n","/**\r\n * Main State View.\r\n * Responsible for rendering the bulk tanks and all events.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkStateView = (function () {\r\n\r\n\tvar _$mainBulkTanks;\r\n\tvar MARGIN_PRESENTAGE = 0;\r\n\tvar BULK_TANK_SIZE = 130;\r\n\tvar _size;\r\n\tvar _deckWidth;\r\n\r\n\tvar createContext = function (tanks) {\r\n\r\n\t\tvar transformedTanks = transformBulkStateData(tanks);\r\n\r\n\t\tvar numberOfColumns = findNumberOfColumns(transformedTanks);\r\n\t\t_size = VRC.BulkViewUtil.calculateSize(MARGIN_PRESENTAGE, numberOfColumns);\r\n\t\t_deckWidth = (numberOfColumns * BULK_TANK_SIZE) + 'px';\r\n\t\tvar portColors = findPortColorsInBulkState(tanks);\r\n\t\tvar pumpSystems = findPumpSystemsInBulkState(tanks);\r\n\r\n\t\tvar bulkStateData = {\r\n\t\t\tmain: {\r\n\t\t\t\tbulkTanks: transformedTanks,\r\n\t\t\t\t//summary: data.summary,\r\n\t\t\t\tsize: _size,\r\n\t\t\t\tmargin: MARGIN_PRESENTAGE,\r\n\t\t\t\tportColors: portColors,\r\n\t\t\t\tunits: VRC.MasterDataService.getBulkValueUnitsAsArray(),\r\n\t\t\t\tdeckWidth: _deckWidth,\r\n\t\t\t\tpumpSystems: pumpSystems\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn bulkStateData;\r\n\t};\r\n\r\n\tvar transformBulkStateData = function (tanks) {\r\n\r\n\t\treturn _.chain(tanks).each(function (tank) {\r\n\t\t\t// Find the latest content from the list based on the date field\r\n\t\t\tif (tank.content && tank.content !== undefined) {\r\n\r\n\t\t\t\tvar index = 0;\r\n\t\t\t\tvar currentLatestDate;\r\n\t\t\t\tfor (var i = 0; i < tank.content.length; i++) {\r\n\r\n\t\t\t\t\tvar content = tank.content[i];\r\n\t\t\t\t\tvar date = moment(content.date, g_timeStampFormat);\r\n\t\t\t\t\tif (currentLatestDate && currentLatestDate.isBefore(date)) {\r\n\t\t\t\t\t\tcurrentLatestDate = date;\r\n\t\t\t\t\t\tindex = i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttank.content = tank.content[index];\r\n\t\t\t}\r\n\t\t}).sortBy(function (tank) {\r\n\t\t\treturn tank['positionX'];\r\n\t\t}).groupBy(function (tank) {\r\n\t\t\treturn tank['positionY'];\r\n\t\t}).map(function (tank) {\r\n\t\t\treturn tank;\r\n\t\t}).each(function (group) {\r\n\t\t\tfor (var i = 0; i < group.length; i++) {\r\n\t\t\t\tvar tank = group[i];\r\n\t\t\t\tif (tank['positionX'] && tank['positionX'] > i + 1) {\r\n\t\t\t\t\tgroup.splice(i, 0, {tankShape: 'hidden_tank'});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}).value();\r\n\t};\r\n\r\n\tvar findNumberOfColumns = function (tanks) {\r\n\t\tvar rowMax = _.chain(tanks).max(function (row) {\r\n\t\t\tvar max = _.max(row, function (tank) {\r\n\t\t\t\treturn tank['positionX'];\r\n\t\t\t});\r\n\r\n\t\t\treturn max['positionX'];\r\n\t\t}).last().value();\r\n\r\n\t\treturn rowMax['positionX'] || 0;\r\n\t};\r\n\r\n\tvar findPortColorsInBulkState = function (tanks) {\r\n\r\n\t\tvar portColors = _.chain(tanks)\r\n\t\t\t.groupBy(function (tank) {\r\n\r\n\t\t\t\tif (tank.content) {\r\n\t\t\t\t\tif (tank.content.displayPort && tank.content.action !== 'rob' && (tank.content.action === 'tank_clean' || tank.content.qtyRob > 0)) {\r\n\t\t\t\t\t\treturn tank.content.displayPort;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}).filter(function (group, key) {\r\n\t\t\t\treturn key !== \"undefined\";\r\n\t\t\t})\r\n\t\t\t.map(function (group, key) {\r\n\r\n\t\t\t\tvar item = _.first(group).content;\r\n\r\n\t\t\t\tif (item) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tportName: item.displayPort,\r\n\t\t\t\t\t\tportColorCode: item.tankColor\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}).sortBy(function (tank) {\r\n\r\n\t\t\t\tif (tank) {\r\n\t\t\t\t\treturn tank.portColorCode;\r\n\t\t\t\t}\r\n\t\t\t}).value();\r\n\t\treturn portColors;\r\n\r\n\t};\r\n\r\n\tvar findPumpSystemsInBulkState = function (tanks) {\r\n\t\tvar pumpSystems;\r\n\t\tpumpSystems = _.chain(tanks)\r\n\r\n\t\t\t.filter(function (tank) {\r\n\t\t\t\treturn (tank.bulkTankPumpSystemName || tank.pumpSystemColorCode)\r\n\t\t\t})\r\n\t\t\t.uniq(function (tank) {\r\n\t\t\t\treturn tank.bulkTankPumpSystemName\r\n\t\t\t})\r\n\t\t\t.map(function(tank) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tbulkTankPumpSystemName: tank.bulkTankPumpSystemName,\r\n\t\t\t\t\tpumpSystemColorCode: tank.pumpSystemColorCode\r\n\t\t\t\t}\r\n\t\t\t}).value();\r\n\r\n\t\treturn pumpSystems\r\n\t};\r\n\r\n\tvar filterByPumpSystem = function (pumpSystemElement) {\r\n\t\tvar pumpSystemName = $(pumpSystemElement).data('pumpSystemName');\r\n\t\tvar $filteredBulkTankContainers = $('.bulk_tank_container[data-pump-system-name=\"'+pumpSystemName+'\"]');\r\n\t\tif ($filteredBulkTankContainers.length) {\r\n\t\t\t$('.bulk_tank_container').not($filteredBulkTankContainers).css('visibility', 'hidden');\r\n\t\t\t$filteredBulkTankContainers.css('visibility', 'visible');\r\n\t\t} else {\r\n\t\t\t$('.bulk_tank_container').css('visibility', 'visible');\r\n\t\t}\r\n\t};\r\n\r\n\tvar getBulkTankElement = function (bulkTankId) {\r\n\t\treturn $(\"#bulk-state-container\").find('.bulk_tank[data-bulk-tank-id=' + bulkTankId + ']');\r\n\t};\r\n\tvar getBulkTankContainer = function (bulkTankId) {\r\n\t\treturn $(\"#bulk-state-container\").find('.bulk_tank[data-bulk-tank-id=' + bulkTankId + ']').closest('.bulk_tank_container');\r\n\t};\r\n\tvar getPortList = function () {\r\n\t\treturn $(\"#bulk-state-container\").find('.port-color-codes');\r\n\t};\r\n\r\n\tvar renderTank = function (tank) {\r\n\t\tvar bulkTankId = tank.getBulkTankId();\r\n\t\tvar tankJson = tank.toJson();\r\n\t\tvar content = tank.getLatestContent();\r\n\r\n\t\ttankJson.main = {\r\n\t\t\tsize: _size,\r\n\t\t\tmargin: MARGIN_PRESENTAGE\r\n\t\t};\r\n\r\n\t\tif (content && content !== -Infinity) {\r\n\t\t\ttankJson.content = content.toJson();\r\n\t\t}\r\n\r\n\t\tvar html = Handlebars.partials['bulk_tank'](tankJson);\r\n\t\tvar $tank = getBulkTankContainer(bulkTankId);\r\n\t\t$tank.replaceWith(html);\r\n\r\n\t\tselectMainBulkTanks();\r\n\r\n\t\tattachModal('#bulk_tank_' + bulkTankId);\r\n\t\treRenderPortColors();\r\n\r\n\t};\r\n\r\n\tvar reRenderPortColors = function () {\r\n\t\tvar bulkTanks = VRC.BulkTankManager.toJson();\r\n\t\tbulkTanks = _.flatten(transformBulkStateData(bulkTanks));\r\n\r\n\t\tvar portColors = findPortColorsInBulkState(bulkTanks);\r\n\r\n\t\tvar html = Handlebars.partials['port_colors'](portColors);\r\n\t\tvar $portList = getPortList();\r\n\t\t$portList.replaceWith(html);\r\n\t};\r\n\r\n\tvar selectMainBulkTanks = function () {\r\n\t\t_$mainBulkTanks = $('.bulk_deck.main .bulk_tank');\r\n\t};\r\n\r\n\tvar render = function () {\r\n\t\tvar bulkTanks = VRC.BulkTankManager.toJson();\r\n\t\tvar context = createContext(bulkTanks);\r\n\t\tvar $container = $('#bulk-state-container');\r\n\r\n\t\tvar content = WELL.Handlebars.VRC['bulk_state'](context);\r\n\t\t$container.html(content);\r\n\r\n\t\tselectMainBulkTanks();\r\n\r\n\t\tattachDropEvents();\r\n\t\tattachDragEvent();\r\n\t\tattachModal('.bulk_deck.main .bulk_tank');\r\n\t\tattachSubMenu();\r\n\t};\r\n\r\n\tvar attachSubMenu = function () {\r\n\t\t$(\"#bulk_page-submenu__tankclean-btn\").unbind('click').click(function () {\r\n\t\t\tVRC.TankCleanModal.render();\r\n\t\t});\r\n\t\t$(\"#bulk_page-submenu__robvalidation-btn\").unbind('click').click(function(e) {\r\n e.preventDefault();\r\n\r\n g_remote_object.FetchHTMLFromServer( g_bulk_planning, ParseWELSForm, 'info', 'rob_validation');\r\n\t\t})\r\n\t};\r\n\r\n\tvar attachModal = function (query) {\r\n\t\tinteract(query).on('tap', function (e) {\r\n\t\t\tvar $bulkTank = $(e.target).closest('.bulk_tank');\r\n\t\t\tvar bulkTankId = $bulkTank.attr('data-bulk-tank-id');\r\n\t\t\tVRC.BulkModalView.render(bulkTankId);\r\n\t\t});\r\n\t};\r\n\r\n\tvar showPopover = function (bulkCargoRequest, $bulkTank, bulkTank) {\r\n\t\tvar rule;\r\n\t\tvar lastAction = bulkTank.getLastAction();\r\n\t\tif (lastAction) {\r\n\t\t\tif (VRC.BulkCompatibility.hasComponent()) {\r\n\t\t\t\trule = VRC.BulkCompatibility.canMixBulk(bulkCargoRequest.getItemGroupId(), lastAction.getItemGroupId());\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tvar ctx = {\r\n\t\t\tqtyRob: bulkTank.getQtyRob() + bulkCargoRequest.getValueQty(),\r\n\t\t\tdate: moment().format(g_timeStampFormat),\r\n\t\t\trequest: bulkCargoRequest.toJson(),\r\n\t\t\trule: rule,\r\n\t\t\tunits: VRC.MasterDataService.getBulkValueUnitsAsArray(),\r\n\t\t\taction: 'load'\r\n\t\t};\r\n\r\n\t\tvar popOverHtml = WELL.Handlebars.VRC.loadingQuantitySelection(ctx);\r\n\t\t$bulkTank.attr('data-content', popOverHtml);\r\n\t\t$bulkTank.popover({ html: true, placement: 'left auto', sanitize: false });\r\n\t\t$bulkTank.popover('show');\r\n\r\n\t};\r\n\r\n\tvar showPopup = function (dropzoneElement, bulkCargoRequest, bulkTank) {\r\n\t\tvar $bulkTank = $(dropzoneElement);\r\n\r\n\t\tshowPopover(bulkCargoRequest, $bulkTank, bulkTank);\r\n\r\n\t\tvar $popover = $bulkTank.next();\r\n\t\t$popover.find('.popover-title').text(bulkCargoRequest.getItemDescription() + ' to ' + bulkTank.getName());\r\n\t\tvar $valueType = $popover.find('#popover__valueUnit');\r\n\t\tvar $date = $popover.find('#popover__date');\r\n\t\t$valueType.selectpicker();\r\n\t\t$date.datetimepicker({format: g_timeStampFormat});\r\n\t\tvar $valueQty = $popover.find('#popover__valueQty');\r\n\r\n\t\tvar $qtyRob = $popover.find('#popover__qtyRob');\r\n\t\tvar $remarkField = $popover.find('#popover__remarks');\r\n\r\n\t\t$valueQty.focus();\r\n\r\n\t\t$valueQty.keyup(function (e) {\r\n\r\n\t\t\ttry {\r\n\t\t\t\tvar qty = parseInt($(e.target).val());\r\n\t\t\t\t$qtyRob.val(bulkTank.getQtyRob() + qty);\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\t$qtyRob.val(bulkTank.getQtyRob());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\t$('.bulk-insertion-cancel').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tcancelBulkAction($bulkTank)\r\n\t\t});\r\n\r\n\t\t$('.bulk-insertion-confirm').click(function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tinsertBulkAction($bulkTank, $valueQty, $date, $qtyRob, $remarkField, $valueType, bulkTank, bulkCargoRequest)\r\n\r\n\t\t});\r\n\t};\r\n\r\n\tvar cancelBulkAction = function ($bulkTank) {\r\n\t\t$bulkTank.popover('destroy');\r\n\t};\r\n\r\n\tvar insertBulkAction = function ($bulkTank, $valueQty, $date, $qtyRob, $remarkField, $valueType, bulkTank, bulkCargoRequest) {\r\n\t\t//Getting values from popover\r\n\r\n\t\tvar qty = VRC.Utils.Number.parseFloat($valueQty.val());\r\n\t\tqty = qty || 0;\r\n\r\n\t\tvar qtyRob = VRC.Utils.Number.parseFloat($qtyRob.val());\r\n\t\tqtyRob = qtyRob || 0;\r\n\r\n\t\tvar date = $date.val();\r\n\r\n\t\tvar inputRemarks = $remarkField.val();\r\n\r\n\t\tvar type = $valueType.val();\r\n\r\n\t\t//Creating new VoyageBulk, adding to tank\r\n\t\tvar voyageBulk = VRC.VoyageBulk({bulkTankId: bulkTank.getBulkTankId()});\r\n\t\tvoyageBulk.parseFromBulkRequest(bulkCargoRequest, bulkTank, qty, qtyRob, date, inputRemarks, type);\r\n\t\tbulkTank.addContent(voyageBulk);\r\n\r\n\t\tbulkCargoRequest.subtractValueQty(qty);\r\n\r\n\t\t//UpdateUi\r\n\t\t$bulkTank.popover('destroy');\r\n\t\trenderTank(bulkTank);\r\n\r\n\t\tVRC.BulkLoadingAreaView.reRenderBulkRequest(bulkCargoRequest);\r\n\t};\r\n\r\n\tvar attachDropEvents = function () {\r\n\t\tvar mainBulkTanksInteraction = interact('.bulk_deck.main .bulk_tank:not(.hidden_tank)');\r\n\r\n\t\tmainBulkTanksInteraction.dropzone({\r\n\t\t\taccept: '.request',\r\n\t\t\tondropactivate: function () {\r\n\t\t\t\t// add active dropzone feedback\r\n\t\t\t\t_$mainBulkTanks.addClass('can-drop');\r\n\t\t\t},\r\n\t\t\tondragenter: function (event) {\r\n\t\t\t\tvar dropzoneElement = event.target;\r\n\r\n\t\t\t\t// feedback the possibility of a drop\r\n\t\t\t\tdropzoneElement.classList.add('drop-target');\r\n\t\t\t},\r\n\t\t\tondragleave: function (event) {\r\n\t\t\t\tvar dropzoneElement = event.target;\r\n\t\t\t\t// remove the drop feedback style\r\n\t\t\t\tdropzoneElement.classList.remove('drop-target');\r\n\t\t\t},\r\n\t\t\tondrop: function (event) {\r\n\t\t\t\tvar draggableElement = event.relatedTarget;\r\n\t\t\t\tvar dropzoneElement = event.target;\r\n\r\n\t\t\t\tdropzoneElement.classList.remove('drop-target');\r\n\r\n\t\t\t\tvar cargoId = draggableElement.getAttribute('data-container-id');\r\n\t\t\t\tvar cargoRequest = VRC.BulkCargoRequestManager.getBulkCargoRequestById(cargoId);\r\n\r\n\t\t\t\tvar tankId = dropzoneElement.getAttribute('data-bulk-tank-id');\r\n\t\t\t\tvar tank = VRC.BulkTankManager.getBulkTankById(tankId);\r\n\r\n\t\t\t\tshowPopup(dropzoneElement, cargoRequest, tank);\r\n\t\t\t},\r\n\t\t\tondropdeactivate: function () {\r\n\t\t\t\t_$mainBulkTanks.removeClass('can-drop');\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar attachDragEvent = function () {\r\n\t\tvar mainBulkTanksInteraction = interact('.bulk_deck.main .bulk_tank');\r\n\r\n\t\tmainBulkTanksInteraction.draggable({\r\n\t\t\tautoScroll: true,\r\n\t\t\tonstart: function (event) {\r\n\t\t\t\tif (!$(event.target).hasClass('filled')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.enabled === false) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar target = event.target;\r\n\r\n\t\t\t\ttarget.style.zIndex = '1000';\r\n\t\t\t\t$(target).addClass('drag-element');\r\n\r\n\t\t\t},\r\n\t\t\tonmove: function (event) {\r\n\t\t\t\tif (this.enabled === false) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (!$(event.target).hasClass('filled')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar target = event.target,\r\n\t\t\t\t// keep the dragged position in the data-x/data-y attributes\r\n\t\t\t\t\tx = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx,\r\n\t\t\t\t\ty = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy;\r\n\r\n\t\t\t\t// translate the element\r\n\t\t\t\ttarget.style.webkitTransform = target.style.transform = 'translate(' + x + 'px, ' + y + 'px)';\r\n\r\n\t\t\t\t// update the posiion attributes\r\n\t\t\t\ttarget.setAttribute('data-x', x);\r\n\t\t\t\ttarget.setAttribute('data-y', y);\r\n\t\t\t},\r\n\t\t\t// call this function on every dragend event\r\n\t\t\tonend: function (event) {\r\n\t\t\t\tif (this.enabled === false) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (!$(event.target).hasClass('filled')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar target = event.target;\r\n\r\n\t\t\t\t$(target).removeClass('drag-element');\r\n\t\t\t\ttarget.style.zIndex = 'auto';\r\n\t\t\t\ttarget.style.transform = 'translate(0, 0)';\r\n\t\t\t\ttarget.setAttribute('data-x', '0');\r\n\t\t\t\ttarget.setAttribute('data-y', '0');\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tattachModal('.bulk_deck.main .bulk_tank');\r\n\t\t\t\t}, 0)\r\n\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar init = function () {\r\n\t\tVRC.BulkModalView.init();\r\n\t\trender();\r\n\r\n\t};\r\n\r\n\treturn {\r\n\t\ttransformBulkStateData: transformBulkStateData,\r\n\t\tfindNumberOfColumns: findNumberOfColumns,\r\n\t\tfindPortColorsInBulkState: findPortColorsInBulkState,\r\n\t\tcreateContext: createContext,\r\n\t\trender: render,\r\n\t\trenderTank: renderTank,\r\n\t\tinit: init,\r\n\t\tgetBulkTankElement: getBulkTankElement,\r\n\t\tfilterByPumpSystem: filterByPumpSystem\r\n\t}\r\n})();\r\n","/**\r\n * Model class for a Bulk Tank. Each bulk tank can contain zero or more VoyageBulk.\r\n */\r\n\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkTank = (function(bulkTank){\r\n var DEFAULT_COLOUR = \"#ff9933\",\r\n\r\n _content,\r\n\r\n _capacity,\r\n _id,\r\n _isRob,\r\n _tankName,\r\n _radius,\r\n _tankShape,\r\n _tankType,\r\n _valueUnit,\r\n _positionX,\r\n _positionY,\r\n _consumableSeqNo,\r\n _contentDesc,\r\n _availableForDelivery,\r\n _bulkTankPumpSystemName,\r\n _colorCode;\r\n\r\n var init = function(bulkTank){\r\n _content = [];\r\n parse(bulkTank)\r\n\r\n };\r\n\r\n var isConsumable = function(){\r\n\r\n return !(getConsumableSeqNo() === undefined || getConsumableSeqNo() === null);\r\n };\r\n\r\n var isLng = function(){\r\n return getConsumableSeqNo() === G_CONSUMABLE_SEQ.LNG;\r\n };\r\n\r\n var isFuel = function(){\r\n return getConsumableSeqNo() === G_CONSUMABLE_SEQ.FUEL;\r\n };\r\n\r\n var isFuelConsumable = function(){\r\n return isFuel() || isLng();\r\n };\r\n\r\n\r\n var getCapacity = function () {\r\n return _capacity;\r\n };\r\n\r\n var setCapacity = function (capacity) {\r\n _capacity = capacity;\r\n };\r\n\r\n var getBulkTankId = function () {\r\n return _id;\r\n };\r\n\r\n var setBulkTankId = function (id) {\r\n _id = id;\r\n };\r\n\r\n var getName = function () {\r\n return _tankName;\r\n };\r\n\r\n var setName = function (name) {\r\n _tankName = name;\r\n };\r\n\r\n var getRadius = function () {\r\n return _radius;\r\n };\r\n\r\n var setRadius = function (radius) {\r\n _radius = radius;\r\n };\r\n\r\n var getShape = function () {\r\n return _tankShape;\r\n };\r\n\r\n var setIsRob = function(isRob){\r\n _isRob = isRob;\r\n };\r\n\r\n\r\n var setShape = function (shape) {\r\n _tankShape = shape;\r\n };\r\n\r\n var getType = function () {\r\n return _tankType;\r\n };\r\n\r\n var setType = function (type) {\r\n _tankType = type;\r\n };\r\n\r\n var getValueUnit = function () {\r\n return _valueUnit;\r\n };\r\n\r\n var setValueUnit = function (valueUnit) {\r\n _valueUnit = valueUnit;\r\n };\r\n\r\n var getXPos = function () {\r\n return _positionX;\r\n };\r\n\r\n var setXPos = function (xPos) {\r\n _positionX = xPos;\r\n };\r\n var getYPos = function () {\r\n return _positionY;\r\n };\r\n\r\n var setYPos = function (yPos) {\r\n _positionY = yPos;\r\n };\r\n\r\n var getConsumableSeqNo = function () {\r\n return _consumableSeqNo;\r\n };\r\n\r\n var setConsumableSeqNo = function (consumableSeqNo) {\r\n _consumableSeqNo = consumableSeqNo;\r\n };\r\n\r\n var getContentDesc = function () {\r\n return _contentDesc;\r\n };\r\n\r\n var setContentDesc = function (contentDesc) {\r\n _contentDesc = contentDesc;\r\n };\r\n\r\n var getAvailableForDelivery = function() {\r\n return _availableForDelivery;\r\n };\r\n\r\n var setAvailableForDelivery = function (availableForDelivery) {\r\n _availableForDelivery = availableForDelivery;\r\n };\r\n\r\n var getBulkTankPumpSystemName = function() {\r\n return _bulkTankPumpSystemName;\r\n };\r\n\r\n var setBulkTankPumpSystemName = function(bulkTankPumpSystemName) {\r\n _bulkTankPumpSystemName = bulkTankPumpSystemName;\r\n };\r\n\r\n var getPumpSystemColorCode = function() {\r\n return _colorCode;\r\n };\r\n\r\n var setPumpSystemColorCode = function(colorCode) {\r\n _colorCode = colorCode;\r\n };\r\n\r\n var getLatestContent = function (allContent) {\r\n allContent = allContent || _content;\r\n\r\n\r\n if(allContent.length === 0){\r\n return null;\r\n }\r\n return _.max(allContent,\r\n function (content) {\r\n return moment(content.getDate(), g_timeStampFormat).valueOf()\r\n });\r\n };\r\n\r\n\r\n var getFirstContent = function (content, filter) {\r\n\r\n var filter = filter || function(voyageBulk){\r\n return true;\r\n };\r\n\r\n content = content || _content;\r\n if(content.length === 0){\r\n return null;\r\n }\r\n\r\n var firstContent = _.chain(content)\r\n .filter(filter)\r\n .min(function (voyageBulk) {\r\n\r\n return moment(voyageBulk.getDate(), g_timeStampFormat).valueOf()\r\n }).\r\n value();\r\n\r\n\r\n return firstContent !== Infinity ? firstContent : null;\r\n\r\n };\r\n\r\n var getFirstContentIgnoreStartRob = function (content) {\r\n var filter = function(voyageBulk){\r\n return !voyageBulk.isStartRobAction();\r\n };\r\n return getFirstContent(content, filter);\r\n\r\n };\r\n\r\n\r\n\r\n var getLatestContentByContainerId = function(containerId){\r\n\r\n var filteredContent = [];\r\n if(!containerId || containerId === 'undefined'){\r\n filteredContent = _.filter(_content, function(voyageBulk){\r\n return voyageBulk.getContainerId() === undefined;\r\n });\r\n\r\n }\r\n else{\r\n filteredContent = _.filter(_content, function(voyageBulk){\r\n return voyageBulk.getContainerId() == containerId;\r\n });\r\n }\r\n return getLatestContent(filteredContent);\r\n };\r\n\r\n var getContentOnDate = function(date){\r\n return _.filter(_content, function(voyagebulk){\r\n return moment(voyagebulk.getDate(), g_timeStampFormat).isSame(date);\r\n })\r\n };\r\n\r\n var getSeqNoOnDate = function(date){\r\n var onDate = getContentOnDate(date);\r\n\r\n if(onDate.length === 0){\r\n return 1;\r\n }\r\n return _.max(onDate, function(voyageBulk){\r\n return voyageBulk.getSeqNo();\r\n }) + 1;\r\n };\r\n\r\n var addContent = function(voyageBulk){\r\n\r\n _content.unshift(voyageBulk);\r\n recalcRob();\r\n };\r\n\r\n var getContentById = function(voyageBulkId){\r\n return _.find(_content, function(voyageBulk) {\r\n return voyageBulk.getVoyageBulkId() == voyageBulkId;\r\n });\r\n };\r\n\r\n var getQtyRob = function(){\r\n var filter = function(cargoItem){\r\n return cargoItem.getQtyRob() !== undefined;\r\n };\r\n var lastAction = getLast(filter);\r\n return lastAction ? lastAction.getQtyRob() : 0;\r\n };\r\n\r\n var removeContent = function(voyageBulk){\r\n if(typeof voyageBulk === 'object'){\r\n voyageBulk = voyageBulk.getVoyageBulkId();\r\n }\r\n\r\n _content = _.without(_content, getContentById(voyageBulk));\r\n recalcRob();\r\n };\r\n\r\n var clearTank = function(){\r\n _content = [];\r\n recalcRob()\r\n };\r\n\r\n var getTankColour = function(){\r\n var colour = DEFAULT_COLOUR;\r\n var lastAction = getLastActionRigOrClean();\r\n if (lastAction) {\r\n colour = lastAction.getTankColour();\r\n }\r\n return colour;\r\n };\r\n\r\n var parse = function(bulkTank){\r\n _content = [];\r\n setBulkTankId(bulkTank.bulkTankId);\r\n setName(bulkTank.tankName);\r\n setType(bulkTank.tankType);\r\n setShape(bulkTank.tankShape);\r\n setCapacity(bulkTank.tankCapacity);\r\n setRadius(bulkTank.tankRadius);\r\n setXPos(bulkTank.positionX);\r\n setYPos(bulkTank.positionY);\r\n setContentDesc(bulkTank.contentDesc);\r\n setConsumableSeqNo(bulkTank.consumableSeqNo);\r\n setValueUnit(bulkTank.valueUnit);\r\n setAvailableForDelivery(bulkTank.availableForDelivery);\r\n setBulkTankPumpSystemName(bulkTank.bulkTankPumpSystemName);\r\n setPumpSystemColorCode(bulkTank.pumpSystemColorCode);\r\n\r\n _.each(bulkTank.content, function(voyageBulk){\r\n _content.push(VRC.VoyageBulk(voyageBulk));\r\n });\r\n\r\n };\r\n\r\n var toJson = function () {\r\n var json = {\r\n \"bulkTankId\": getBulkTankId(),\r\n \"tankName\": getName(),\r\n \"tankType\": getType(),\r\n \"tankShape\": getShape(),\r\n \"tankCapacity\": getCapacity(),\r\n \"tankRadius\": getRadius(),\r\n \"positionX\": getXPos(),\r\n \"positionY\": getYPos(),\r\n \"contentDesc\": getContentDesc(),\r\n \"consumableSeqNo\": getConsumableSeqNo(),\r\n \"valueUnit\": getValueUnit(),\r\n \"tankColour\" : getTankColour(),\r\n \"isSpecialTank\" : isSpecialTank(),\r\n \"availableForDelivery\" : getAvailableForDelivery(),\r\n \"bulkTankPumpSystemName\" : getBulkTankPumpSystemName(),\r\n \"pumpSystemColorCode\" : getPumpSystemColorCode()\r\n };\r\n\r\n json.content = [];\r\n\r\n $.each(getContent(), function(ii, voyageBulk){\r\n json.content.push(voyageBulk.toJson());\r\n });\r\n\r\n return json;\r\n };\r\n\r\n var getLastTankClean = function(){\r\n var filter = function(cargoItem){\r\n return cargoItem.isTankClean();\r\n };\r\n return getLast(filter);\r\n };\r\n\r\n\r\n var getLastAction = function(){\r\n var filter = function(cargoItem){\r\n return cargoItem.isCalcAction();\r\n };\r\n\r\n var last = getLast(filter);\r\n\r\n if(last === -Infinity){\r\n last = undefined;\r\n }\r\n\r\n return last;\r\n };\r\n\r\n var getLastActionRigOrClean = function(){\r\n\r\n var filter = function(cargoItem){\r\n return cargoItem.isCalcAction();\r\n };\r\n\r\n var action;\r\n var calcActions = _.filter(_content, filter);\r\n var magicNumber = 10000000000; //Hack, we want to sort the following Date, then all server ids, then the timestamp of the ad-hoc bulk.\r\n\r\n if(!_.isEmpty(calcActions)){\r\n\r\n action = _.chain(calcActions)\r\n .sortBy(function(voyageBulk) {\r\n var calcId = voyageBulk.getCalcId() < 0 ? magicNumber + voyageBulk.getCalcId() : voyageBulk.getCalcId();\r\n\r\n return moment(voyageBulk.getDate(), g_timeStampFormat).valueOf() + '_' + calcId;\r\n })\r\n .reverse()\r\n .find(function (action) {\r\n var remarks = action.getRemarks();\r\n return action.getAction() === g_actions.tankClean \r\n // #54169 added a check for \"Cleaned\" in the remarks, needed in new voyages as the tank cleaning is not carried over.\r\n || (action.getAction() === g_actions.start_rob && remarks && remarks.indexOf('Cleaned ') > -1)\r\n || isRig(action.getOriginId()) \r\n || isRig(action.getDestinationId());\r\n }).value();\r\n }\r\n return action;\r\n };\r\n\r\n function isRig(portId) {\r\n var port = VRC.MasterDataService.getPort(portId);\r\n return VRC.MasterDataService.isRig(port);\r\n }\r\n\r\n //Todo, this is really ugly..\r\n var getLast = function(filter){\r\n var lastAction;\r\n var calcActions = _.filter(_content, filter);\r\n var magicNumber = 10000000000; //Hack, we want to sort the following Date, then all server ids, then the timestamp of the ad-hoc bulk.\r\n if(!_.isEmpty(calcActions)){\r\n lastAction = _.reduce(calcActions ,function(voyageBulk1, voyageBulk2){\r\n var calcId = voyageBulk1.getCalcId() < 0 ? magicNumber + voyageBulk1.getCalcId() : voyageBulk1.getCalcId();\r\n var calcId2 = voyageBulk2.getCalcId() < 0 ? magicNumber + voyageBulk2.getCalcId() : voyageBulk2.getCalcId();\r\n var comparableId = moment(voyageBulk1.getDate(), g_timeStampFormat).valueOf() + '_' + calcId;\r\n var str2 = moment(voyageBulk2.getDate(), g_timeStampFormat).valueOf() + '_' + calcId2;\r\n return comparableId>str2?voyageBulk1:voyageBulk2;\r\n });\r\n }\r\n\r\n return lastAction;\r\n };\r\n\r\n var hasStartRob = function(){\r\n return _.some(_content, function(voyageBulk){\r\n return voyageBulk.isStartRobAction();\r\n });\r\n };\r\n\r\n\r\n\r\n var getLoadActions = function(){\r\n\r\n return _.filter(_content, function(content){\r\n return content.isCalcAction();\r\n })\r\n };\r\n\r\n var getRobActions = function(){\r\n return _.filter(_content, function(content){\r\n return content.isRob();\r\n })\r\n };\r\n\r\n var isSpecialTank = function(){\r\n return getBulkTankId() < 0;\r\n };\r\n\r\n\r\n\r\n\r\n var fillTank = function(contentArray){\r\n _content = _.map(contentArray, function(contentJson){ return VRC.VoyageBulk(contentJson) });\r\n\r\n recalcRob();\r\n };\r\n\r\n\r\n var _bulkTypeSeqNoMapping = {\r\n 1 : 230, //Fuel\r\n 2 : 244, // LNG\r\n 3 : 237, //POTWATER\r\n 4 : 231, //DRILLWATER\r\n 5 : 223, //Lubeoil\r\n 6 : 222 //UREA\r\n };\r\n\r\n\r\n\r\n var getOffloadableContent = function(){\r\n var lastTankClean;\r\n var lastTankCleanVoyageBulk = getLastTankClean();\r\n if(lastTankCleanVoyageBulk){\r\n lastTankClean = moment(lastTankCleanVoyageBulk.getDate(), g_timeStampFormat);\r\n }\r\n\r\n var lastAction = getLastAction();\r\n\r\n var lastRegisteredRob = lastAction ? lastAction.getQtyRob() : 0;\r\n\r\n var filteredAndGrouped =\r\n _.chain(_content)\r\n .filter(function(cargoItem){\r\n\r\n if(!lastTankClean){\r\n return true;\r\n }\r\n return moment(cargoItem.getDate(), g_timeStampFormat).isAfter(lastTankClean);\r\n })\r\n .sortBy(function(content){\r\n\r\n return moment(content.getDate(), g_timeStampFormat).toISOString();\r\n })\r\n .groupBy(function(content){\r\n return content.getContainerId()\r\n })\r\n .value();\r\n\r\n\r\n var sum = _.map(filteredAndGrouped, function(voyageBulkList, containerId) {\r\n var bulkTypeId = voyageBulkList[0].getBulkTypeId();\r\n if(isConsumable() && containerId === \"undefined\"){\r\n bulkTypeId = _bulkTypeSeqNoMapping[getConsumableSeqNo()];\r\n }\r\n return {\r\n containerId: containerId,\r\n bulkTankId : getBulkTankId(),\r\n qtyRob : lastRegisteredRob,\r\n displayName : voyageBulkList[0].getDestinationName(),\r\n valueUnit : voyageBulkList[0].getValueUnit(),\r\n itemDescription : voyageBulkList[0].getItemDescription(),\r\n bulkTypeId : bulkTypeId,\r\n valueQty : _(voyageBulkList).reduce(function (memo, voyageBulk) {\r\n if(voyageBulk.getAction() === 'rob'){\r\n return voyageBulk.getQtyRob();\r\n }\r\n else{\r\n return memo + voyageBulk.getCalcQty();\r\n }\r\n\r\n }, 0)\r\n }\r\n });\r\n sum = _.filter(sum, function(item){ return item.valueQty > 0 })\r\n\r\n return sum;\r\n };\r\n\r\n var recalcRob = function(){\r\n var sortedContent = getContent().reverse();\r\n\r\n _.reduce(sortedContent, function(memo, voyageBulm){\r\n var calced = voyageBulm.getCalcQty();\r\n calced = calced || 0;\r\n var sum = memo + calced;\r\n\r\n if(voyageBulm.isTankClean() || voyageBulm.isTankCleanStarted()){\r\n sum = 0;\r\n }\r\n else if(voyageBulm.isRob() || voyageBulm.isRobAdjustment()){\r\n sum = voyageBulm.getValueQty()\r\n }\r\n voyageBulm.setQtyRob(sum);\r\n return sum;\r\n }, 0);\r\n };\r\n\r\n var getContent = function () {\r\n return _(_content).chain().sortBy(function (voyageBulk) {\r\n return voyageBulk.getCalcId();\r\n }).sortBy(function (voyageBulk) {\r\n\r\n return moment(voyageBulk.getDate(), g_timeStampFormat).valueOf();\r\n }).reverse().value();\r\n\r\n\r\n\r\n };\r\n\r\n var getStartDateTime = function () {\r\n var currentVoyage = VRC.CurrentVoyage.getCurrentVoyage();\r\n var dateTime = currentVoyage.getFromDateTime() || '';\r\n if (dateTime.trim() === '') { //There is no dateTime for current voyage\r\n var firstContent = getFirstContent();\r\n if (firstContent === null) { //There is no other events set to now\r\n dateTime = moment().format(g_timeStampFormat);\r\n } else { //Set one minute before the first registered event on this tank.\r\n dateTime = moment(firstContent.getDate(), g_timeStampFormat).subtract(1, 'minute').format(g_timeStampFormat);\r\n }\r\n }\r\n return dateTime;\r\n };\r\n\r\n var createStartRob = function(qty, bulkType){\r\n var dateTime = getStartDateTime();\r\n\r\n bulkType = bulkType || getType();\r\n\r\n var newRob = VRC.VoyageBulk({});\r\n newRob.setAction(g_actions.start_rob);\r\n newRob.setDate(dateTime);\r\n newRob.setQtyRob(qty || 0);\r\n newRob.setValueQty(qty || 0);\r\n\r\n addContent(newRob);\r\n };\r\n\r\n\r\n\r\n\r\n init(bulkTank);\r\n\r\n return {\r\n createStartRob : createStartRob,\r\n getContent : getContent,\r\n isConsumable : isConsumable,\r\n isFuelConsumable : isFuelConsumable,\r\n isFuel : isFuel,\r\n isLng : isLng,\r\n toJson : toJson,\r\n setBulkTankId : setBulkTankId,\r\n getBulkTankId : getBulkTankId,\r\n getName : getName,\r\n setName : setName,\r\n getRadius : getRadius,\r\n setRadius : setRadius,\r\n getShape : getShape,\r\n setShape : setShape,\r\n getType : getType,\r\n setType : setType,\r\n getValueUnit : getValueUnit,\r\n setValueUnit : setValueUnit,\r\n getXPos : getXPos,\r\n setXPos : setXPos,\r\n setYPos : setYPos,\r\n getYpos : getYPos,\r\n getConsumableSeqNo : getConsumableSeqNo,\r\n setConsumableSeqNo : setConsumableSeqNo,\r\n parse : parse,\r\n getLatestContent : getLatestContent,\r\n getLatestContentByContainerId : getLatestContentByContainerId,\r\n addContent : addContent,\r\n removeContent : removeContent,\r\n clearTank : clearTank,\r\n fillTank : fillTank,\r\n getOffloadableContent : getOffloadableContent,\r\n getLastTankClean :getLastTankClean,\r\n getRobActions : getRobActions,\r\n getLastAction : getLastAction,\r\n getContentById : getContentById,\r\n getTankColour: getTankColour,\r\n getQtyRob : getQtyRob,\r\n isSpecialTank : isSpecialTank,\r\n recalcRob : recalcRob,\r\n hasStartRob : hasStartRob,\r\n getFirstContent : getFirstContent,\r\n getFirstContentIgnoreStartRob : getFirstContentIgnoreStartRob,\r\n getAvailableForDelivery : getAvailableForDelivery,\r\n setAvailableForDelivery : setAvailableForDelivery,\r\n }\r\n});\r\n","/**\r\n * BulkTankManager to manage the bulk tanks.\r\n * Finds of which are fuel/consumbles.\r\n * Handles import/export of bulk tanks with voyage bulk.\r\n *\r\n *\r\n */\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkTankManager = (function () {\r\n\tvar _bulkTanksIndex = {};\r\n\tvar _bulkTanks = [];\r\n\tvar _consumable = [];\r\n\r\n\tvar createBulkTankObjects = function (bulkTanks) {\r\n\t\t_bulkTanks = [];\r\n\t\t_consumable = [];\r\n\t\t_.each(bulkTanks, function (bulkTank) {\r\n\r\n\t\t\tvar bulkTankObject = VRC.BulkTank(bulkTank);\r\n\t\t\t_bulkTanks.push(bulkTankObject);\r\n\r\n\t\t\tif (bulkTankObject.isConsumable()) {\r\n\t\t\t\t_consumable.push(bulkTankObject);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tvar getConsumable = function () {\r\n\t\treturn _consumable;\r\n\t};\r\n\r\n\tvar getFuelTanks = function () {\r\n\t\tvar fuelTanks = getConsumable();\r\n\t\tfuelTanks = fuelTanks.filter(function (bulkTank) {\r\n\t\t\treturn bulkTank.isFuelConsumable();\r\n\t\t});\r\n\r\n\t\treturn fuelTanks;\r\n\t};\r\n\r\n\tvar clearTanks = function () {\r\n\r\n\t\t_.each(_bulkTanks, function (bulkTank) {\r\n\t\t\tbulkTank.clearTank();\r\n\t\t})\r\n\t};\r\n\r\n\tvar importBulkData = function (flattenContent) {\r\n\r\n\t\tvar groupedContent = _.groupBy(flattenContent, function (e) {\r\n\t\t\treturn e.bulkTankId\r\n\t\t});\r\n\t\t$.each(groupedContent, function (bulkTankId, contentArray) {\r\n\t\t\tvar bulkTank = getBulkTankById(bulkTankId);\r\n\t\t\tbulkTank.fillTank(contentArray);\r\n\r\n\t\t});\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Adds tankId to list.\r\n\t * @param robNumber\r\n\t * @param tankId\r\n\t */\r\n\tvar setBulkTankId = function (robNumber, tankId) {\r\n\t\t_bulkTanksIndex[robNumber - 1] = tankId;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets tankId fom list.\r\n\t * @return bulktank id.\r\n\t * @param robNumber\r\n\t */\r\n\tvar getBulkTankId = function (robNumber) {\r\n\t\treturn _bulkTanksIndex[robNumber - 1];\r\n\t};\r\n\r\n\t/**\r\n\t * Returns array of id for consumable tanks\r\n\t * @return array with ids\r\n\t */\r\n\tvar getBulkTanks = function () {\r\n\t\treturn _bulkTanks;\r\n\t};\r\n\r\n\tvar getBulkTankById = function (bulkTankId) {\r\n\t\tbulkTankId = parseInt(bulkTankId);\r\n\t\treturn _.find(_bulkTanks, function (bulkTank) {\r\n\t\t\treturn bulkTank.getBulkTankId() === bulkTankId;\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Get all actions of type and summarizes the quantiy for each unit of measure.\r\n\t * @param type load/offload\r\n\t * @param fromDate accepts moment and string format\r\n\t * @param toDate accepts moment and string format\r\n\t * @returns an object with key value {unit : value} e.g {m3 : 1400, kg : 123}\r\n\t */\r\n\tvar getBulkContentSumInDateInterval = function (type, fromDate, toDate) {\r\n\t\tvar bulkInDateRange = getBulkContentInInterval(type, fromDate, toDate);\r\n\r\n\t\tvar indexUnits = _.chain(bulkInDateRange)\r\n\t\t\t.groupBy(function (bulk) {\r\n\t\t\t\treturn bulk.getValueUnit()\r\n\t\t\t}).map(function(group, key){\r\n\r\n\t\t\t\tvar summarizedQty = _.reduce(group, function (sum, bulkAction) {\r\n\t\t\t\t\treturn sum + bulkAction.getValueQty();\r\n\t\t\t\t}, 0);\r\n\r\n\t\t\t\treturn {value: summarizedQty, unit : key};\r\n\t\t\t}).indexBy('unit').value();\r\n\r\n\t\t_.each(indexUnits, function(valueObject, unit){\r\n\t\t\tindexUnits[unit] = valueObject.value;\r\n\t\t});\r\n\r\n\t\treturn indexUnits;\r\n\r\n\r\n\t};\r\n\r\n\tvar getBulkContentInInterval = function (type, fromDate, toDate) {\r\n\r\n\t\tif (!moment.isMoment(fromDate)) {\r\n\t\t\tfromDate = moment(fromDate, g_timeStampFormat);\r\n\t\t}\r\n\r\n\t\tif(toDate && !moment.isMoment(toDate)){\r\n\t\t\t\ttoDate = moment(toDate, g_timeStampFormat);\r\n\t\t}\r\n\r\n\r\n\t\tvar filter = function (content) {\r\n\t\t\tif (content.getAction() !== type) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar date = moment(content.getDate(), g_timeStampFormat);\r\n\t\t\tif(toDate){\r\n\t\t\t\treturn date.isBetween(fromDate, toDate, null, '[)');\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn date.isSame(fromDate) || date.isAfter(fromDate);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn getAllContent(filter)\r\n\t};\r\n\r\n\tvar getAllContent = function (filter) {\r\n\r\n\t\tvar content = _.chain(_bulkTanks).map(function (bulkTank) {\r\n\t\t\treturn bulkTank.getContent()\r\n\t\t}).flatten().value();\r\n\t\tif (filter) {\r\n\t\t\tcontent = _.filter(content, filter);\r\n\t\t}\r\n\t\treturn content;\r\n\r\n\t};\r\n\r\n\tvar findLoadedCargoItems = function () {\r\n\t\tvar loadedCargo = {};\r\n\t\tvar deviationTank = VRC.SpecialBulkTanks.getDeviationTank();\r\n\r\n\t\tvar allTanks = _bulkTanks.concat([deviationTank]);\r\n\r\n\t\t_.each(allTanks, function (bulkTank) {\r\n\t\t\tvar bulkTankCargo = bulkTank.getContent();\r\n\t\t\t_.each(bulkTankCargo, function (voyageBulk) {\r\n\t\t\t\tvar containerId = voyageBulk.getContainerId();\r\n\t\t\t\tvar cargoItemId = voyageBulk.getCargoItemId();\r\n\r\n\t\t\t\tif (containerId\r\n\t\t\t\t\t&&\r\n\t\t\t\t\t(\r\n\t\t\t\t\t\t(voyageBulk.getAction() === g_actions.load)\r\n\t\t\t\t\t\t||\r\n\t\t\t\t\t\t(voyageBulk.getAction() === g_actions.deviation && bulkTank.isSpecialTank())\r\n\t\t\t\t\t)\r\n\t\t\t\t) {\r\n\r\n\t\t\t\t\tif (cargoItemId) {\r\n\t\t\t\t\t\tif (loadedCargo[containerId]) {\r\n\t\t\t\t\t\t\tloadedCargo[containerId] = loadedCargo[containerId] += voyageBulk.getValueQty();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tloadedCargo[containerId] = voyageBulk.getValueQty();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else { //Ad - hoc\r\n\t\t\t\t\t\tloadedCargo[containerId] = Infinity;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn loadedCargo;\r\n\t};\r\n\r\n\tvar getOffloadEvents = function (portId) {\r\n\r\n\t\treturn _.chain(_bulkTanks)\r\n\t\t\t.map(function (bulkTank) {\r\n\t\t\t\treturn bulkTank.getContent()\r\n\t\t\t})\r\n\t\t\t.flatten()\r\n\t\t\t.filter(function (item) {\r\n\t\t\t\treturn item.isOffloadAction() && item.getOriginId() == portId\r\n\t\t\t})\r\n\t\t\t.map(function (item) {\r\n\t\t\t\treturn item.toJson()\r\n\t\t\t}).value();\r\n\t};\r\n\r\n\tvar toJson = function () {\r\n\t\tvar bulkTanks = [];\r\n\t\t$.each(getBulkTanks(), function (bulkTankId, bulkTank) {\r\n\t\t\tbulkTanks.push(bulkTank.toJson());\r\n\t\t});\r\n\r\n\t\treturn bulkTanks;\r\n\t};\r\n\r\n\tvar getBulkTanksNameAndId = function (ignoreId) {\r\n\t\tvar bulkTanks = [];\r\n\t\t_.each(getBulkTanks(), function (bulkTank) {\r\n\t\t\tvar id = bulkTank.getBulkTankId();\r\n\t\t\tif (id !== ignoreId) {\r\n\t\t\t\tbulkTanks.push({id: id, name: bulkTank.getName()});\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn _.sortBy(bulkTanks, function (bulkTank) {\r\n\t\t\treturn bulkTank.name;\r\n\t\t});\r\n\t};\r\n\r\n\tvar isInitialised = function () {\r\n\t\treturn _bulkTanks.length > 0;\r\n\t};\r\n\r\n\treturn {\r\n\r\n\t\tsetBulkTankId: setBulkTankId,\r\n\t\tgetBulkTankId: getBulkTankId,\r\n\t\tgetBulkTanks: getBulkTanks,\r\n\t\tgetConsumable: getConsumable,\r\n\t\tgetFuelTanks: getFuelTanks,\r\n\t\tgetBulkTankById: getBulkTankById,\r\n\t\tfindLoadedCargoItems: findLoadedCargoItems,\r\n\t\tclearTanks: clearTanks,\r\n\t\timportBulkData: importBulkData,\r\n\t\ttoJson: toJson,\r\n\t\tisInitialised: isInitialised,\r\n\t\tcreateBulkTankObjects: createBulkTankObjects,\r\n\t\tgetOffloadEvents: getOffloadEvents,\r\n\t\tgetBulkTanksNameAndId: getBulkTanksNameAndId,\r\n\t\tgetAllContent: getAllContent,\r\n\t\tgetBulkContentInInterval: getBulkContentInInterval,\r\n\t\tgetBulkContentSumInDateInterval: getBulkContentSumInDateInterval\r\n\t}\r\n})();\r\n\r\n\r\n","/**\r\n * Handles the change in port for the offload/loading area.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkToolbarView = (function(){\r\n\r\n var _queries = {\r\n container : '#bulk-toolbar'\r\n };\r\n\r\n var init = function(){\r\n render();\r\n };\r\n\r\n var attachEvents = function($html){\r\n attachFetchManifest($html);\r\n attachChange($html);\r\n };\r\n\r\n var attachFetchManifest = function($html){\r\n var $btn = $html.find('.bulk-toolbar__fetch');\r\n\r\n $btn.unbind('click').click(function(e){\r\n var port = getSelectedPort($html);\r\n loadBulkCargoRequest(port);\r\n });\r\n };\r\n\r\n var getLoadingHeader = function(){\r\n return $('.bulk-loading-area').find('h3:first-of-type');\r\n };\r\n\r\n var getOffloadingHeader = function(){\r\n return $('.bulk-offloading-area').find('h3:first-of-type');\r\n };\r\n\r\n var setHeaders = function($selectBox){\r\n $selectBox = $selectBox || getSelectBox();\r\n var name = $selectBox.children('option:selected').text();\r\n\r\n var $loadingHeader = getLoadingHeader();\r\n var $offloadHeader = getOffloadingHeader();\r\n\r\n $loadingHeader.text('Loading area: ' + name);\r\n $offloadHeader.text('Offloading area: ' + name);\r\n };\r\n\r\n var attachChange = function($html){\r\n\r\n var $selectBox = getSelectBox($html);\r\n\r\n $selectBox.unbind('change').change(function(){\r\n\r\n VRC.BulkCargoRequestManager.clear();\r\n VRC.BulkLoadingAreaView.render({});\r\n VRC.BulkOffloadAraeView.init();\r\n setHeaders();\r\n });\r\n\r\n $selectBox.selectize(VRC.Utils.Selectize.getConfig());\r\n\r\n };\r\n\r\n var loadBulkCargoRequest = function(portId){\r\n\r\n VRC.BulkLoadingAreaView.showLoading();\r\n\r\n var loadBulkCargoRequest = VRC.BulkCargoRequestManager.loadOnline(portId);\r\n loadBulkCargoRequest.done(function(bulkRequests){\r\n VRC.BulkLoadingAreaView.init(bulkRequests);\r\n setHeaders();\r\n });\r\n };\r\n\r\n var getSelectBox = function($html){\r\n $html = $html || $(_queries.container);\r\n return $html.find('.bulk-toolbar__port-selector');\r\n };\r\n\r\n var getSelectedPort = function($html){\r\n $html = $html || $(_queries.container);\r\n var $selectBox = getSelectBox($html);\r\n var value = $selectBox.children('option:selected').val();\r\n\r\n return parseInt(value);\r\n };\r\n\r\n var render = function(){\r\n var $container = $(_queries.container);\r\n\r\n var $html = $(WELL.Handlebars.VRC.bulk_toolbar(VRC.MasterDataService.getGroupedPorts()));\r\n\r\n attachEvents($html);\r\n\r\n $container.html($html);\r\n setHeaders();\r\n };\r\n\r\n return {\r\n init : init,\r\n getSelectedPort : getSelectedPort\r\n }\r\n})();\r\n","/**\r\n * Util for the Bulk Tank view.\r\n * Used for calculating the size of each bulk tank.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.BulkViewUtil = (function () {\r\n\tvar calculateSize = function (marginPercent, numberOfColumns) {\r\n\t\treturn (100 - (marginPercent * 2 * numberOfColumns)) / numberOfColumns;\r\n\t};\r\n\r\n\treturn {\r\n\t\tcalculateSize: calculateSize\r\n\t}\r\n})();\r\n","/**\r\n * Keeps track for \"Special Voayage Bulk\", meaning deviations that are not connected to a bulk tank.\r\n * We create a virtual bulk tank to keep the same logic.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.SpecialBulkTanks = (function () {\r\n\r\n\tvar _bulkTanks = [];\r\n\r\n\tvar DEVIATION_ID = -10;\r\n\r\n\tvar initDeviationTank = function () {\r\n\t\t_bulkTanks.push(VRC.BulkTank({\r\n\t\t\tbulkTankId: DEVIATION_ID,\r\n\t\t\ttankName: \"Deviations\",\r\n\t\t\ttankType: 'All deviations from loading actions. Offload deviations is located on each tank.'\r\n\t\t}));\r\n\t};\r\n\r\n\tvar init = function (deviations) {\r\n\t\tinitDeviationTank(deviations);\r\n\t};\r\n\r\n\tvar getBulkTankById = function (bulkTankId) {\r\n\t\treturn _.find(_bulkTanks, function (bulkTank) {\r\n\t\t\treturn bulkTank.getBulkTankId() === bulkTankId;\r\n\t\t});\r\n\t};\r\n\r\n\tvar getDeviationTank = function () {\r\n\t\treturn getBulkTankById(DEVIATION_ID);\r\n\t};\r\n\r\n\tvar toJson = function () {\r\n\t\tvar deviationTank = getDeviationTank();\r\n\t\tvar deviationJson = deviationTank.toJson();\r\n\r\n\t\treturn deviationJson;\r\n\r\n\t};\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t\tgetDeviationTank: getDeviationTank,\r\n\t\tgetBulkTankById: getBulkTankById,\r\n\t\ttoJson: toJson\r\n\t}\r\n})();\r\n","/**\r\n * Modal for fetching all Tank Cleanings. Avaible from the sub menu.\r\n */\r\n\r\nvar VRC = VRC || {};\r\n\r\nVRC.TankCleanModal = (function(){\r\n var $el;\r\n\r\n var _template = WELL.Handlebars.VRC.tankclean_modal;\r\n var _loadingTemplate = WELL.Handlebars.VRC.progress_modal;\r\n var _title = 'Tank Cleanings';\r\n\r\n var fetchData = function(fromDate, toDate){\r\n return VRC.CommunicationService.fetchData({}, 'get_tank_cleanings', {version : GetVersionNumber(), fromDate : fromDate, toDate : toDate})\r\n };\r\n\r\n var showLoading = function(){\r\n var $content = $el.find('.modal-content');\r\n $content.html(_loadingTemplate({ title : _title}));\r\n };\r\n\r\n var showMsg = function(errorMsg, type){\r\n var $alert = $el.find('.alert');\r\n $alert.addClass(type);\r\n $alert.text(errorMsg);\r\n $alert.removeClass('hidden');\r\n };\r\n\r\n var showTankCleanings = function (tankCleanings, fromDate, toDate) {\r\n var $content = $el.find('.modal-content');\r\n if (tankCleanings.length > 0) {\r\n\r\n _.map(tankCleanings, function (tankClean) {\r\n var port = VRC.MasterDataService.getPort(tankClean.originId);\r\n var cleanType = VRC.MasterDataService.getBulkCleanType(tankClean.actionObject);\r\n if (port) {\r\n tankClean.originName = port.name;\r\n }\r\n if (cleanType) {\r\n tankClean.cleanTypeName = cleanType.name;\r\n }\r\n\r\n });\r\n\r\n var bulkTanks = _.groupBy(tankCleanings, function (bulkTank) {\r\n return bulkTank.tankName + \" - \" + bulkTank.tankType;\r\n });\r\n }\r\n\r\n var context = {\r\n title: _title,\r\n bulkTanks: bulkTanks,\r\n fromDate: fromDate,\r\n toDate: toDate\r\n };\r\n\r\n $content.html(_template(context));\r\n if (tankCleanings.length === 0) {\r\n showMsg('There are no submitted tank cleanings between ' +fromDate+ ' and ' + toDate, 'alert-info');\r\n }\r\n };\r\n\r\n var render = function (fromDate, toDate) {\r\n showLoading();\r\n\r\n var fromDate = fromDate || moment().subtract(2, 'months').format(g_timeStampFormat);\r\n var toDate = toDate || moment().format(g_timeStampFormat);\r\n\r\n var getTankCleanings = fetchData(fromDate, toDate);\r\n\r\n getTankCleanings.done(function (object, tankCleanings) {\r\n showTankCleanings(tankCleanings, fromDate, toDate);\r\n attachEvents();\r\n });\r\n\r\n getTankCleanings.fail(function (msg) {\r\n showMsg(msg, 'alert-danger');\r\n });\r\n };\r\n\r\n var open = function(){\r\n $el = $('#bulk_modal');\r\n render();\r\n $el.modal('show', {backdrop: 'static'});\r\n\r\n };\r\n\r\n var attachEvents = function(){\r\n $el.find('.tankclean-modal__fetch-btn').click(function(){\r\n var fromDate = $el.find('.tankclean-modal__from-date').val();\r\n var toDate = $el.find('.tankclean-modal__to-date').val();\r\n\r\n if(fromDate && toDate){\r\n render(fromDate, toDate);\r\n }\r\n });\r\n };\r\n\r\n return {\r\n render : open\r\n }\r\n})();","/**\r\n * Model for a Voyage Bulk\r\n */\r\nvar VRC = VRC || {};\r\n\r\nVRC.VoyageBulk = (function (voyageBulk) {\r\n\r\n\tvar _cargoItemId;\r\n\tvar _containerId;\r\n\tvar _voyageBulkId;\r\n\tvar _bulkTankId;\r\n\tvar _bulkTypeName;\r\n\tvar _bulkTypeId;\r\n\tvar _itemDescription;\r\n\tvar _valueQty;\r\n\tvar _valueType;\r\n\tvar _qtyRob;\r\n\tvar _sg;\r\n\tvar _dgInfo;\r\n\tvar _remarks;\r\n\tvar _action;\r\n\tvar _date;\r\n\tvar _companyId;\r\n\tvar _companyName;\r\n\tvar _originId;\r\n\tvar _originName;\r\n\tvar _destinationId;\r\n\tvar _destinationName;\r\n\tvar _tankColour;\r\n\tvar _itemGroupName;\r\n\tvar _itemGroupId;\r\n\tvar _itemId;\r\n\tvar _displayPort;\r\n\tvar _actionObject;\r\n\tvar _cleanTypeName;\r\n\r\n\tvar init = function (voyageBulk) {\r\n\t\tvoyageBulk = voyageBulk || {};\r\n\t\tparse(voyageBulk);\r\n\t};\r\n\r\n\tvar getNewId = function () {\r\n\t\tvar now = moment();\r\n\t\treturn 'bulk_' + Math.floor(Math.random() * 1000) + '_' + now.valueOf();\r\n\t};\r\n\r\n\tvar getItemId = function () {\r\n\t\treturn _itemId;\r\n\t};\r\n\r\n\tvar setItemId = function (itemId) {\r\n\t\titemId = VRC.Utils.Number.parseInt(itemId);\r\n\t\t_itemId = itemId;\r\n\t};\r\n\r\n\tvar getVoyageBulkId = function () {\r\n\t\treturn _voyageBulkId;\r\n\t};\r\n\r\n\tvar setVoyageBulkId = function (voyageBulkId) {\r\n\t\t_voyageBulkId = voyageBulkId;\r\n\t};\r\n\r\n\tvar getBulkTankId = function () {\r\n\t\treturn _bulkTankId;\r\n\t};\r\n\r\n\tvar setBulkTankId = function (bulkTankId) {\r\n\t\tbulkTankId = VRC.Utils.Number.parseInt(bulkTankId);\r\n\t\t_bulkTankId = bulkTankId;\r\n\t};\r\n\r\n\tvar getBulkTypeId = function () {\r\n\t\treturn _bulkTypeId;\r\n\t};\r\n\r\n\tvar setBulkTypeId = function (bulkTypeId) {\r\n\t\tbulkTypeId = VRC.Utils.Number.parseInt(bulkTypeId);\r\n\t\t_bulkTypeId = bulkTypeId;\r\n\r\n\t\tsetBulkTypeName();\r\n\t};\r\n\r\n\tvar getItemDescription = function () {\r\n\t\treturn _itemDescription;\r\n\t};\r\n\r\n\tvar setItemDescription = function (definition) {\r\n\t\t_itemDescription = definition;\r\n\t};\r\n\r\n\tvar getValueQty = function () {\r\n\r\n\t\treturn _valueQty;\r\n\t};\r\n\r\n\tvar setValueQty = function (qty) {\r\n\r\n\t\tqty = VRC.Utils.Number.parseFloat(qty);\r\n\t\t_valueQty = qty;\r\n\t};\r\n\r\n\tvar getQtyRob = function () {\r\n\t\treturn _qtyRob;\r\n\t};\r\n\r\n\tvar setQtyRob = function (qtyRob) {\r\n\r\n\t\tqtyRob = VRC.Utils.Number.parseFloat(qtyRob);\r\n\r\n\t\t_qtyRob = qtyRob\r\n\t};\r\n\r\n\tvar getValueUnit = function () {\r\n\t\treturn _valueType;\r\n\t};\r\n\r\n\tvar setValueUnit = function (unit) {\r\n\t\t_valueType = unit;\r\n\t};\r\n\r\n\tvar getSg = function () {\r\n\r\n\t\treturn _sg;\r\n\t};\r\n\r\n\tvar setSg = function (sg) {\r\n\t\tsg = VRC.Utils.Number.parseFloat(sg);\r\n\r\n\t\t_sg = sg;\r\n\t};\r\n\r\n\tvar getDgInfo = function () {\r\n\t\treturn _dgInfo;\r\n\t};\r\n\r\n\tvar setDgInfo = function (dangerous) {\r\n\t\t_dgInfo = dangerous;\r\n\t};\r\n\r\n\tvar getRemarks = function () {\r\n\t\treturn _remarks;\r\n\t};\r\n\r\n\tvar setRemarks = function (remarks) {\r\n\r\n\t\t_remarks = remarks;\r\n\t};\r\n\r\n\tvar getAction = function () {\r\n\t\treturn _action;\r\n\t};\r\n\r\n\tvar setAction = function (action) {\r\n\t\t_action = action;\r\n\t};\r\n\r\n\tvar getDate = function () {\r\n\t\treturn _date;\r\n\t};\r\n\r\n\tvar setDate = function (date) {\r\n\t\t//We are forgiving with the format in.\r\n\t\tif (moment(date, g_timeStampFormat, true).isValid()) {\r\n\r\n\t\t\t_date = moment(date, g_timeStampFormat).format(g_timeStampFormat);\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\t_date = moment(date).format(g_timeStampFormat);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getDisplayPort = function () {\r\n\t\treturn _displayPort;\r\n\t};\r\n\r\n\tvar setDisplayPort = function (displayPort) {\r\n\t\tif (isTankClean()) {\r\n\t\t\tdisplayPort = \"Cleaned Tank\";\r\n\t\t}\r\n\r\n\t\tif (!displayPort) {\r\n\t\t\tdisplayPort = VRC.MasterDataService.getDisplayPort(getDestinationId(), getOriginId());\r\n\t\t}\r\n\t\t_displayPort = displayPort;\r\n\t};\r\n\r\n\tvar getCompanyId = function () {\r\n\r\n\t\treturn _companyId;\r\n\t};\r\n\r\n\tvar setCompanyId = function (company) {\r\n\t\tcompany = VRC.Utils.Number.parseInt(company);\r\n\t\t_companyId = company;\r\n\t\tsetCompanyName();\r\n\t};\r\n\tvar getCompanyName = function () {\r\n\t\treturn _companyName;\r\n\t};\r\n\r\n\tvar setCompanyName = function (companyName) {\r\n\t\tif (!companyName) {\r\n\t\t\tvar company = VRC.MasterDataService.getCompany(getCompanyId());\r\n\t\t\tif (company) {\r\n\t\t\t\tcompanyName = company.name;\r\n\t\t\t}\r\n\t\t}\r\n\t\t_companyName = companyName;\r\n\t};\r\n\r\n\tvar getBulkTypeName = function () {\r\n\t\treturn _bulkTypeName;\r\n\t};\r\n\r\n\tvar setBulkTypeName = function (bulkTypeName) {\r\n\t\tif (!bulkTypeName) {\r\n\t\t\tvar bulkType = VRC.MasterDataService.getBulkType(getBulkTypeId());\r\n\t\t\tif (bulkType) {\r\n\t\t\t\tbulkTypeName = bulkType.name;\r\n\t\t\t}\r\n\t\t}\r\n\t\t_bulkTypeName = bulkTypeName;\r\n\t};\r\n\r\n\tvar getOriginId = function () {\r\n\t\treturn _originId;\r\n\t};\r\n\r\n\tvar setOriginId = function (origin) {\r\n\t\t_originId = VRC.Utils.Number.parseInt(origin);\r\n\t\tif(_originId) {\r\n\t\t\tsetOriginName();\r\n\t\t} else if (isNaN(_originId) && origin) {\r\n\t\t\t//If the origin has chars in it save it as a string. (Probably a vessel)\r\n\t\t\t_originId = origin;\r\n\t\t\tsetOriginName();\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tvar getOriginName = function () {\r\n\t\treturn _originName;\r\n\t};\r\n\r\n\tvar setOriginName = function (originName) {\r\n\r\n\t\tif (!originName) {\r\n\t\t\tvar originId = getOriginId();\r\n\t\t\tif (isNaN(VRC.Utils.Number.parseInt(originId))) {\r\n\t\t\t\t// Set the origin as a vessel ID prefixed with 'vessel-'\r\n\t\t\t\tvar origin = VRC.MasterDataService.getVessel(originId);\r\n\t\t\t\tif (origin) {\r\n\t\t\t\t\toriginName = origin.name;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvar origin = VRC.MasterDataService.getPort(originId);\r\n\t\t\t\tif (origin) {\r\n\t\t\t\t\toriginName = origin.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t_originName = originName;\r\n\t};\r\n\r\n\tvar getDestinationId = function () {\r\n\t\treturn _destinationId;\r\n\t};\r\n\r\n\tvar setDestinationId = function (destination) {\r\n\t\tdestination = VRC.Utils.Number.parseInt(destination);\r\n\t\t_destinationId = destination;\r\n\t\tsetDestinationName();\r\n\t};\r\n\r\n\tvar getDestinationName = function () {\r\n\t\treturn _destinationName;\r\n\t};\r\n\r\n\tvar setDestinationName = function (destinationName) {\r\n\t\tif (!destinationName) {\r\n\t\t\tvar destination = VRC.MasterDataService.getPort(getDestinationId());\r\n\t\t\tif (destination) {\r\n\t\t\t\tdestinationName = destination.name;\r\n\t\t\t}\r\n\t\t}\r\n\t\t_destinationName = destinationName;\r\n\t};\r\n\r\n\tvar getTankColour = function () {\r\n\t\treturn _tankColour;\r\n\t};\r\n\r\n\tvar setTankColour = function (tankColour) {\r\n\t\t// #54169 added a check for \"Cleaned\" in the remarks, needed in new voyages as the tank cleaning is not carried over.\r\n\t\tvar remarks = getRemarks();\r\n\t\tif (isTankClean() || (remarks && remarks.indexOf('Cleaned ') > -1)) {\r\n\t\t\ttankColour = \"#ffffff\";\r\n\t\t}\r\n\r\n\t\tif (!tankColour) {\r\n\t\t\ttankColour = VRC.MasterDataService.getColour(getDestinationId(), getOriginId());\r\n\t\t}\r\n\t\t_tankColour = tankColour;\r\n\t};\r\n\r\n\tvar getCargoItemId = function () {\r\n\r\n\t\treturn _cargoItemId;\r\n\t};\r\n\r\n\tvar setCargoItemId = function (cargoId) {\r\n\t\tcargoId = VRC.Utils.Number.parseInt(cargoId);\r\n\t\t_cargoItemId = cargoId;\r\n\t};\r\n\r\n\tvar getContainerId = function () {\r\n\t\treturn _containerId;\r\n\t};\r\n\r\n\tvar setContainerId = function (containerId) {\r\n\t\tcontainerId = VRC.Utils.Number.parseInt(containerId);\r\n\t\t_containerId = containerId;\r\n\t};\r\n\r\n\tvar getBulkTank = function () {\r\n\t\tvar bulkTankID = getBulkTankId();\r\n\t\treturn VRC.BulkTankManager.getBulkTankById(bulkTankID);\r\n\t};\r\n\r\n\tvar getItemGroupName = function () {\r\n\t\treturn _itemGroupName;\r\n\t};\r\n\r\n\tvar setItemGroupName = function (itemGroupName) {\r\n\t\t_itemGroupName = itemGroupName;\r\n\t};\r\n\r\n\tvar isLoadAction = function () {\r\n\t\treturn getAction() === g_actions.load || getAction() === g_actions.transferFrom;\r\n\t};\r\n\r\n\tvar isStartRobAction = function () {\r\n\t\treturn getAction() === g_actions.start_rob;\r\n\t};\r\n\r\n\tvar isOffloadAction = function () {\r\n\t\treturn getAction() === g_actions.offload;\r\n\t};\r\n\r\n\tvar isRob = function () {\r\n\t\treturn getAction() === g_actions.rob;\r\n\t};\r\n\r\n\tvar isRobAdjustment = function () {\r\n\r\n\t\treturn getAction() === g_actions.rob_adjustment;\r\n\t};\r\n\r\n\tvar isCalcAction = function () {\r\n\t\tvar calcActions = [g_actions.load, g_actions.offload, g_actions.discharge, g_actions.deviation, g_actions.tankCleanStarted, g_actions.tankClean, g_actions.start_rob, g_actions.dump, g_actions.transferFrom, g_actions.transferTo];\r\n\t\treturn calcActions.indexOf(getAction()) !== -1;\r\n\t};\r\n\r\n\tvar isTankCleanStarted = function () {\r\n\t\treturn getAction() === g_actions.tankCleanStarted;\r\n\t};\r\n\r\n\tvar isTankClean = function () {\r\n\t\treturn getAction() === g_actions.tankClean;\r\n\t};\r\n\r\n\tvar createNewId = function () {\r\n\t\tsetVoyageBulkId(getNewId())\r\n\t};\r\n\r\n\tvar getItemGroupId = function () {\r\n\t\treturn _itemGroupId;\r\n\t};\r\n\r\n\tvar setItemGroupId = function (itemGroupId) {\r\n\t\t_itemGroupId = itemGroupId;\r\n\t};\r\n\r\n\tvar getActionObject = function () {\r\n\t\treturn _actionObject;\r\n\t};\r\n\r\n\tvar setActionObject = function (actionObject) {\r\n\t\t_actionObject = actionObject;\r\n\t};\r\n\r\n\tvar setCleanTypeName = function () {\r\n\t\tvar cleanType = VRC.MasterDataService.getBulkCleanType(getActionObject());\r\n\t\tif (cleanType && getAction() === \"tank_clean\") {\r\n\t\t\t_cleanTypeName = cleanType.name;\r\n\t\t}\r\n\t};\r\n\r\n\tvar getCleanTypeName = function () {\r\n\t\treturn _cleanTypeName;\r\n\t};\r\n\r\n\tvar getCalcQty = function () {\r\n\t\tif (isLoadAction() || isStartRobAction()) {\r\n\t\t\treturn getValueQty();\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn getValueQty() * -1;\r\n\t\t}\r\n\t};\r\n\r\n\tvar getCalcId = function () {\r\n\t\tvar id = getVoyageBulkId();\r\n\t\tif (typeof id === 'string') {\r\n\t\t\tvar prefix = 'bulk_';\r\n\t\t\tvar isAdhoc = id.slice(0, prefix.length) === prefix;\r\n\t\t\tif (isAdhoc) {\r\n\t\t\t\tvar index = id.indexOf('_', 5) + 1;\r\n\t\t\t\tid = parseInt(id.slice(index));\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tid = id * -1;\r\n\t\t}\r\n\r\n\t\treturn parseInt(id);\r\n\r\n\t};\r\n\r\n\tvar update = function (json) {\r\n\r\n\t\tparse($.extend(toJson(), json));\r\n\r\n\t};\r\n\r\n\tvar parse = function (voyageBulk) {\r\n\t\tif (voyageBulk.voyageBulkId) {\r\n\t\t\tsetVoyageBulkId(voyageBulk.voyageBulkId);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcreateNewId();\r\n\t\t}\r\n\r\n\t\tsetBulkTankId(voyageBulk.bulkTankId);\r\n\t\tsetBulkTypeId(voyageBulk.bulkTypeId);\r\n\t\tsetItemDescription(voyageBulk.itemDescription);\r\n\t\tsetItemGroupName(voyageBulk.itemGroupName);\r\n\t\tsetItemId(voyageBulk.itemId);\r\n\t\tsetValueQty(voyageBulk.valueQty);\r\n\t\tsetQtyRob(voyageBulk.qtyRob);\r\n\t\tsetValueUnit(voyageBulk.valueUnit);\r\n\t\tsetSg(voyageBulk.sg);\r\n\t\tsetDgInfo(voyageBulk.dgInfo);\r\n\t\tsetRemarks(voyageBulk.remarks);\r\n\t\tsetAction(voyageBulk.action);\r\n\t\tsetDate(voyageBulk.date);\r\n\t\tsetCompanyId(voyageBulk.companyId);\r\n\t\tsetOriginId(voyageBulk.originId);\r\n\t\tsetDestinationId(voyageBulk.destinationId);\r\n\t\tsetTankColour(voyageBulk.tankColor);\r\n\t\tsetCargoItemId(voyageBulk.cargoItemId);\r\n\t\tsetDisplayPort();\r\n\t\tsetContainerId(voyageBulk.containerId);\r\n\t\tsetItemGroupId(voyageBulk.itemGroupId);\r\n\t\tsetActionObject(voyageBulk.actionObject);\r\n\t\tsetCleanTypeName();\r\n\t};\r\n\r\n\tvar parseFromBulkRequest = function (bulkRequest, tank, qty, qtyRob, date, remarks, type) {\r\n\r\n\t\tsetRemarks(remarks);\r\n\t\tsetAction(g_actions.load);\r\n\t\tsetDate(date);\r\n\t\tsetValueQty(qty);\r\n\t\tsetQtyRob(qtyRob);\r\n\t\tsetValueUnit(type);\r\n\t\tsetBulkTankId(tank ? tank.getBulkTankId() : undefined);\r\n\t\tsetBulkTypeId(bulkRequest.getBulkTypeId());\r\n\t\tsetItemDescription(bulkRequest.getItemDescription());\r\n\t\tsetSg(bulkRequest.getSg());\r\n\t\tsetDgInfo(bulkRequest.getDangerous());\r\n\t\tsetCompanyId(bulkRequest.getCompanyId());\r\n\t\tsetOriginId(bulkRequest.getOriginId());\r\n\t\tsetDestinationId(bulkRequest.getDestinationId());\r\n\t\tsetTankColour(bulkRequest.getPortColourCode());\r\n\t\tsetCargoItemId(bulkRequest.getCargoItemId());\r\n\t\tsetContainerId(bulkRequest.getContainerId());\r\n\t\tsetItemGroupName(bulkRequest.getItemGroupName());\r\n\t\tsetItemGroupId(bulkRequest.getItemGroupId());\r\n\t\tsetItemId(bulkRequest.getItemId());\r\n\t\tsetDisplayPort(bulkRequest.getDisplayPort());\r\n\t\tsetActionObject(voyageBulk.actionObject);\r\n\t\tsetCleanTypeName();\r\n\t};\r\n\r\n\tvar toJson = function () {\r\n\t\treturn {\r\n\t\t\tvoyageBulkId: getVoyageBulkId(),\r\n\t\t\tbulkTankId: getBulkTankId(),\r\n\t\t\tbulkTypeId: getBulkTypeId(),\r\n\t\t\tbulkTypeName: getBulkTypeName(),\r\n\t\t\titemDescription: getItemDescription(),\r\n\t\t\tvalueQty: getValueQty(),\r\n\t\t\tqtyRob: getQtyRob(),\r\n\t\t\tvalueUnit: getValueUnit(),\r\n\t\t\tsg: getSg(),\r\n\t\t\tdgInfo: getDgInfo(),\r\n\t\t\tremarks: getRemarks(),\r\n\t\t\taction: getAction(),\r\n\t\t\tdate: getDate(),\r\n\t\t\tcompanyId: getCompanyId(),\r\n\t\t\tcompanyName: getCompanyName(),\r\n\t\t\toriginId: getOriginId(),\r\n\t\t\toriginName: getOriginName(),\r\n\t\t\tdestinationId: getDestinationId(),\r\n\t\t\tdestinationName: getDestinationName(),\r\n\t\t\ttankColor: getTankColour(),\r\n\t\t\tcargoItemId: getCargoItemId(),\r\n\t\t\tcontainerId: getContainerId(),\r\n\t\t\titemGroupName: getItemGroupName(),\r\n\t\t\titemGroupId: getItemGroupId(),\r\n\t\t\titemId: getItemId(),\r\n\t\t\tdisplayPort: getDisplayPort(),\r\n\t\t\tactionObject: getActionObject(),\r\n\t\t\tcleanTypeName: getCleanTypeName()\r\n\t\t}\r\n\t};\r\n\r\n\tinit(voyageBulk);\r\n\r\n\treturn {\r\n\t\tgetAction: getAction,\r\n\t\tsetAction: setAction,\r\n\t\tgetBulkTankId: getBulkTankId,\r\n\t\tsetBulkTankId: setBulkTankId,\r\n\t\tgetCompany: getCompanyId,\r\n\t\tsetCompany: setCompanyId,\r\n\t\tgetContainerId: getContainerId,\r\n\t\tsetContainerId: setContainerId,\r\n\t\tgetDangerous: getDgInfo,\r\n\t\tsetDangerous: setDgInfo,\r\n\t\tgetDate: getDate,\r\n\t\tsetDate: setDate,\r\n\t\tgetItemDescription: getItemDescription,\r\n\t\tsetItemDescription: setItemDescription,\r\n\t\tgetDestinationId: getDestinationId,\r\n\t\tsetDestinationId: setDestinationId,\r\n\t\tgetDestinationName: getDestinationName,\r\n\t\tsetDestinationName: setDestinationName,\r\n\t\tgetVoyageBulkId: getVoyageBulkId,\r\n\t\tsetVoyageBulkId: setVoyageBulkId,\r\n\t\tgetValueQty: getValueQty,\r\n\t\tsetValueQty: setValueQty,\r\n\t\tgetQtyRob: getQtyRob,\r\n\t\tsetQtyRob: setQtyRob,\r\n\t\tgetRemarks: getRemarks,\r\n\t\tsetRemarks: setRemarks,\r\n\t\tgetOriginId: getOriginId,\r\n\t\tsetOriginId: setOriginId,\r\n\t\tgetOriginName: getOriginName,\r\n\t\tsetOriginName: setOriginName,\r\n\t\tgetSg: getSg,\r\n\t\tsetSg: setSg,\r\n\t\tgetBulkTypeId: getBulkTypeId,\r\n\t\tsetBulkTypeId: setBulkTypeId,\r\n\t\tsetBulkTypeName: setBulkTypeName,\r\n\t\tgetValueUnit: getValueUnit,\r\n\t\tsetValueUnit: setValueUnit,\r\n\t\tgetCargoItemId: getCargoItemId,\r\n\t\tsetCargoItemId: setCargoItemId,\r\n\t\tgetItemGroupName: getItemGroupName,\r\n\t\tsetItemGroupName: setItemGroupName,\r\n\t\tgetItemGroupId: getItemGroupId,\r\n\t\tsetItemGroupId: setItemGroupId,\r\n\t\ttoJson: toJson,\r\n\t\tparse: parse,\r\n\t\tisLoadAction: isLoadAction,\r\n\t\tisOffloadAction: isOffloadAction,\r\n\t\tisTankClean: isTankClean,\r\n\t\tisTankCleanStarted: isTankCleanStarted,\r\n\t\tparseFromBulkRequest: parseFromBulkRequest,\r\n\t\tisCalcAction: isCalcAction,\r\n\t\tcreateNewId: createNewId,\r\n\t\tisRob: isRob,\r\n\t\tisStartRobAction: isStartRobAction,\r\n\t\tgetTankColour: getTankColour,\r\n\t\tsetTankColour: setTankColour,\r\n\t\tgetDisplayPort: getDisplayPort,\r\n\t\tsetDisplayPort: setDisplayPort,\r\n\t\tgetCalcQty: getCalcQty,\r\n\t\tupdate: update,\r\n\t\tgetCalcId: getCalcId,\r\n\t\tisRobAdjustment: isRobAdjustment,\r\n\t\tgetactionObject: getActionObject,\r\n\t\tsetactionObject: setActionObject,\r\n\t\tgetCleanTypeName: getCleanTypeName\r\n\t}\r\n});\r\n","/*\r\n* Deck.js\r\n*\r\n* Deck object class and associated functions for handling deck objects\r\n*/\r\n\r\n// Droppable options for decks. Updates containing div to a container object\r\n\r\n\r\nvar SetWrapperHeight = function () {\r\n\tvar xMeter = GetCurrentDeckLength();\r\n\tvar xPixel = $(\".wrapper\").width();\r\n\tvar pixelPrMeter = xPixel / xMeter;\r\n\r\n\tvar yPixel = pixelPrMeter * GetDeckAreaHeight();\r\n\r\n\t$(\".wrapper\").css({minHeight: (yPixel + 10) + \"px\"});\r\n};\r\n\r\n\r\n/*\r\n * Initialises all the decks to be displayed\r\n */\r\nfunction InitialiseDecks(p_json_decks) {\r\n // Add the ship's decks\r\n\tg_deck_list = {};\r\n $.each( p_json_decks, function( p_i, p_obj ) {\r\n\r\n var l_new_deck = new deck(p_obj);\r\n\t\tg_deck_list[l_new_deck.id] = l_new_deck;\r\n\t\tg_current_deck = g_deck_list[l_new_deck.id];\r\n\t l_new_deck.InitialiseVisual( G_CONTAINING_DIV );\r\n\r\n\r\n\tvar l_overlay_content = '';\r\n\tvar l_vertical_line = g_deck_list[l_new_deck.id]['vertical_line_range'];\r\n\tif(l_vertical_line){\r\n\t\tl_vertical_line = parseFloat(l_vertical_line);\r\n\t}\r\n\tif(l_vertical_line && l_vertical_line >= 0 ) {\r\n\t\tfor( var l_i=l_vertical_line; l_i < l_new_deck.length; l_i += l_vertical_line) {\r\n\r\n\t\t\tvar width = (100 / l_new_deck.length) * l_vertical_line;\r\n\r\n\t\t\tl_overlay_content = l_overlay_content + '
' +\r\n\t\t\t\t'' + (l_i).toFixed(0) + '' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'
';\r\n\t\t\t//
' + l_i.toFixed(1) + '
\r\n\t\t}\r\n\t}\r\n\telse if(p_obj.deck_lines) {\r\n\t var currentPresentage = 0;\r\n\t var currentLength = 0;\r\n\t var deck_lines = JSON.parse(p_obj.deck_lines);\r\n\r\n\t for(var i=0; i < deck_lines.length; i++) {\r\n var l_vertical_line = deck_lines[i][1];\r\n\r\n\t\tvar presentageWidth = (100 / l_new_deck.length) * l_vertical_line;\r\n\r\n\t\tif(currentPresentage + presentageWidth > 100){\r\n\t\t\tpresentageWidth = 100 - currentPresentage;\r\n\t\t\tcurrentLength = g_current_deck.length;\r\n\r\n\t\t}\r\n\t\telse{\r\n\t\t\tcurrentLength = currentLength + l_vertical_line;\r\n\t\t}\r\n\r\n\t\t l_overlay_content = l_overlay_content + '
' +\r\n\t\t\t\t '' + (currentLength).toFixed(1) + '' +\r\n\t\t\t\t ' ' + deck_lines[i][0] + '' +\r\n\t\t\t '
';\r\n\r\n\t\t currentPresentage = currentPresentage + presentageWidth;\r\n\t }\r\n\t}\r\n\tvar l_overlay = '
' + l_overlay_content + '
';\r\n\t$('#' + l_new_deck.id).append( l_overlay );\r\n\r\n\r\n\t\tvar deckInteractable = interact(\"#deck\").draggable({})\r\n\t\t\t.on('tap', function (event) { //Setting this as draggable fixes a weird bug in Interact where tap, doubletap stopped working.\r\n\t\t\t\tif($(event.target).hasClass('deckstate_container')){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tVRC.ContainerPopoverView.hide();\r\n\t\t\t\tif(g_selected_container){\r\n\t\t\t\t\tvar $containerDiv = $(g_selected_container.divID);\r\n\t\t\t\t\t$containerDiv.removeClass('highlighted');\r\n\t\t\t\t}})\r\n\r\n\t\t\t.on('doubletap', function(event){\r\n\r\n\t\t\t\tif($(event.target).hasClass('deckstate_container') || $(event.target).closest('.deckstate_container').length > 0 || ($(event.target).closest('.popover-content').length > 0)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar l_relativeX = event.pageX - $('#deck').offset().left;\r\n\t\t\t\tvar l_relativeY = event.pageY - $('#deck').offset().top;\r\n\r\n\t\t\t\tvar clickXPos = GetLengthPosFromPixel(l_relativeX);\r\n\t\t\t\tvar clickYPos = GetWidthPosFromPixel(l_relativeY);\r\n\t\t\t\tvar deckId;\r\n\t\t\t\tif(clickXPos <= GetCurrentDeckLength() && clickYPos <= GetCurrentDeckWidth()){\r\n\t\t\t\t\tdeckId = l_new_deck.id;\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\tdeckId = 'transit_deck';\r\n\t\t\t\t}\r\n\t\t\t\tg_dbl_container_pos = [clickXPos, clickYPos, deckId];\r\n\r\n\t\t\t\tOpenContainerDialog();\r\n\r\n\t\t\t\tVRC.ContainerEditModal.show();\r\n\t\t});\r\n\r\n\t\tdeckInteractable.styleCursor(false);\r\n\r\n\r\n\tAddDeckConstraints(l_new_deck, p_obj.constraints );\r\n\r\n });\r\n\r\n $('#deck').append('
');\r\n\r\n\r\n var l_transit_in = new deck( {id:'transit_area', type: 'loadout', length: 35, width: 15, vertical_line_range: 0} );\r\n l_transit_in.InitialiseVisual( G_CONTAINING_DIV );\r\n var l_transit_out = new deck( {id:'outgoing_area', type: 'offload', length: 15, width: 15, vertical_line_range:0} );\r\n l_transit_out.InitialiseVisual( G_CONTAINING_DIV );\r\n\r\n // Add text to transit areas\r\n $(l_transit_in.divID).html('
LOADING AREA
');\r\n $(l_transit_out.divID).html('
OFFLOADING AREA
');\r\n\r\n\tvar $deck_middle_area = $('#deck__middle_area');\r\n\tif($deck_middle_area.length === 0){\r\n\t\t$('#deckWrapper').after(WELL.Handlebars.VRC.deck_middle_area({}));\r\n\t}\r\n\telse{\r\n\t\t$deck_middle_area.replaceWith(WELL.Handlebars.VRC.deck_middle_area({}));\r\n\t}\r\n\r\n\tinteract(\".deckarea\").dropzone({\r\n\t\tondrop: function (event) {\r\n\t\t\tvar dropZone = event.target;\r\n\t\t\tvar draggedItem = event.relatedTarget;\r\n\r\n\t\t\tvar l_this_id = $(dropZone).attr('id');\r\n\t\t\tvar l_draggable_id = $(draggedItem).attr('id');\r\n\r\n\t\t\tif (g_container_list[l_draggable_id] === undefined || l_this_id === undefined) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tg_container_list[l_draggable_id].deckID = l_this_id;\r\n\t\t\tif (l_this_id == 'outgoing_area') {\r\n\t\t\t\tg_container_list[l_draggable_id].colour = G_CONTAINER_COLOURS['OUTGOING'];\r\n\t\t\t\t$(g_container_list[l_draggable_id].divID).css('background-color', G_CONTAINER_COLOURS['OUTGOING']);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tg_container_list[l_draggable_id].colour = SetContainerColour(g_container_list[l_draggable_id]);\r\n\t\t\t\t$(g_container_list[l_draggable_id].divID).css('background-color', g_container_list[l_draggable_id].colour);\r\n\t\t\t}\r\n\t\t\tUpdateColorMap();\r\n\t\t}\r\n\t}\r\n\r\n\t);\r\n\tVRC.DeckStateActionsView.init();\r\n\r\n\r\n\t$(\".wrapper\").on('dragstart', function (event) {\r\n\t\tevent.preventDefault();\r\n\t});\r\n\r\n\tSetWrapperHeight();\r\n\r\n\t$(window).bind('resizeEnd', function() {\r\n\t\tSetWrapperHeight();\r\n\t});\r\n}\r\n\r\n$(window).resize(function() {\r\n\tif(this.resizeTO) clearTimeout(this.resizeTO);\r\n\tthis.resizeTO = setTimeout(function() {\r\n\t\t$(this).trigger('resizeEnd');\r\n\t}, 1000);\r\n});\r\n/*\r\n * Adds deck constraints that are not movable areas\r\n */\r\nfunction AddDeckConstraints(deck, constraints) {\r\n\r\n\tvar $deck = $('#' + deck.id);\r\n\tvar deckOverlay = $('
');\r\n\t$.each(constraints, function (key, constraint) {\r\n\t\tvar newConstraint = {};\r\n\t\tnewConstraint.width = CalculatePresentageOfTotal(GetCurrentDeckLength(), constraint.width);\r\n\t\tnewConstraint.height = CalculatePresentageOfTotal(GetDeckAreaHeight(), constraint.height);\r\n\t\tnewConstraint.x = CalculatePresentageOfTotal(GetCurrentDeckLength(), constraint.x);\r\n\t\tnewConstraint.y = CalculatePresentageOfTotal(GetDeckAreaHeight(), constraint.y);\r\n\t\tnewConstraint.shape = constraint.shape;\r\n\t\tnewConstraint.image = constraint.image;\r\n\t\tnewConstraint.type = constraint.type;\r\n\t\tnewConstraint.name = constraint.name;\r\n\r\n\t\t$deck.append(WELL.Handlebars.VRC.constraint(newConstraint));\r\n\t});\r\n}\r\n\r\n\r\n\r\n/*\r\n* Visual initialisation of the deck object\r\n*/\r\ndeck.prototype.InitialiseVisual = function ( p_containingID ) {\r\n\tif( $(this.id).length ) {\r\n\t$(this.divID).remove(); // remove container first if visual representation already exists\r\n\t}\r\n\r\n\tif(this.divID === '#transit_area' || this.divID === '#outgoing_area'){\r\n\t\tif(g_current_deck !== undefined){\r\n\t\t\tvar height = (g_current_deck.width / g_current_deck.length) * 100;\r\n\t\t}\r\n\t}\r\n\telse{\r\n\t\tvar height = (this.width / this.length) * 100;\r\n\t}\r\n\r\n\tvar l_attributes = 'id=\"' + this.id + '\" class=\"deckarea\" style=\"padding-top:' + height + '%;\"';\r\n\tvar l_div = '
';\r\n\t$( p_containingID ).append( l_div );\r\n\r\n\t// store the position\r\n\tthis.position.x = $('#' + this.id ).position().left;\r\n\tthis.position.y = $('#' + this.id ).position().top;\r\n}\r\n\r\n/*\r\n* Constructor for deck object\r\n*/\r\nfunction deck( p_params ) {\r\n this.id = p_params.id;\r\n this.type = p_params.type;\r\n\r\n this.divID = '#' + p_params.id;\r\n\r\n this.length = p_params.length;\r\n this.width = p_params.width;\r\n\r\n this.vertical_line_range = p_params.vertical_line_range === undefined ? 0 : p_params.vertical_line_range;\r\n this.deck_lines = p_params.deck_lines === undefined ? \"\" : p_params.deck_lines;\r\n\r\n this.constraints = p_params.constraints;\r\n\r\n this.position = {};\r\n this.position.x;\r\n this.position.y;\r\n}\r\n\r\n\r\nfunction CalculatePresentageOfDeckLength(value, includePresentage){\r\n\r\n\treturn CalculatePresentageOfTotal(GetCurrentDeckLength(), value, includePresentage);\r\n}\r\n\r\nfunction CalculatePresentageOfDeckWidth(value, includePresentage){\r\n\treturn CalculatePresentageOfTotal(GetDeckAreaHeight(), value, includePresentage);\r\n}\r\n\r\nfunction GetCurrentDeckLength() {\r\n\tvar length = 0;\r\n\tif(g_current_deck){\r\n\t\tlength = g_current_deck.length\r\n\t}\r\n\treturn length;\r\n}\r\n\r\nfunction GetCurrentDeckWidth() {\r\n\treturn g_current_deck.width;\r\n}\r\n\r\nfunction GetDeckAreaHeight() {\r\n\tvar width = 0;\r\n\tif(g_current_deck){\r\n\t\tvar margin = 5;\r\n\t\tvar heightMargin = 1 + (margin / $(\"#\"+g_current_deck.id).width());\r\n\t\twidth = (g_current_deck.width * 2) * heightMargin;\r\n\t}\r\n\treturn width;\r\n}\r\n\r\nvar GetXPostitionInPresentage = function(x){\r\n\treturn (x / $(\"#deck\").outerWidth() * 100)+'%';\r\n};\r\n\r\nvar GetYPostitionInPresentage = function(y){\r\n\treturn (y / $(\"#deck\").outerHeight() * 100)+'%';\r\n};\r\n\r\nvar GetLengthPosFromPixel= function(x){\r\n return (x / $(\"#deck\").outerWidth() * GetCurrentDeckLength());\r\n};\r\n\r\nvar GetWidthPosFromPixel= function(y){\r\n return (y / $(\"#deck\").outerHeight() * GetCurrentDeckWidth())*2;\r\n};\r\n","/*\r\n * Deckstate.js\r\n *\r\n * Initialisation of deck page state.\r\n * Loads deck and containers for vessel / rig\r\n *\r\n */\r\n\r\n/*\r\n * Initialises the deck planning section\r\n */\r\nfunction InitialiseDeckPlanning () {\r\n\r\n\tInitialiseDialogs(G_PAGE['DECK_PAGE']);\r\n\r\n\tPopulateContainerTypeList();\r\n\r\n\tSetManifestLocations();\r\n\r\n\tSetDefaultContainerDataList();\r\n\r\n\tLoadLocalDeckState();\r\n\r\n\tSetInitialManifestLocation();\r\n\r\n\tfor (var l_key in g_container_list) {\r\n\t\tg_container_list[l_key].InitialiseVisual(G_CONTAINING_DIV);\r\n\t}\r\n\r\n\t// Check what status of ctrl key is\r\n\t$(document).keydown(function (p_e) {\r\n if (p_e.keyCode == 17) {\r\n g_ctrl_key_down = true;\r\n }\r\n\t});\r\n\t$(document).keyup(function (p_e) {\r\n if (p_e.keyCode == 17) {\r\n g_ctrl_key_down = false;\r\n }\r\n\t});\r\n\r\n\t$('#container_default_type').change(function () {\r\n\t\tvar params = ($(this).val()).split(';');\r\n\t\t$('#container_tag').val(params[0]);\r\n\t\t$('#container_length').val(params[1]);\r\n\t\t$('#container_width').val(params[2]);\r\n\t\tif (params[3] !== undefined && $('#container_type').val(params[3]) !== undefined) {\r\n\t\t\t$('#container_type').val(params[3]);\r\n\t\t}\r\n\t});\r\n\r\n\tUpdateAllDeckTotals();\r\n\r\n\tSetInputNumbersOnly('#container_width');\r\n\tSetInputNumbersOnly('#container_length');\r\n\tSetInputNumbersOnly('#container_weight');\r\n\r\n\t$('#AutoSaveDeckBox').val('');\r\n\r\n\tif (g_autoupdate_deck === true) {\r\n\t\t$(\"#AutoSaveDeckBox\").prop('checked', true);\r\n\t}\r\n\telse {\r\n\t\t$(\"#AutoSaveDeckBox\").prop('checked', false);\r\n\t}\r\n\tSetAutoSaveDeck();\r\n\r\n}\r\n\r\n/*\r\n * On leaving page\r\n */\r\nfunction OnLeavingDeckPage () {\r\n\tSaveLocalState();\r\n\tDestroyDialogs(g_current_page);\r\n}\r\n\r\n/******************************************************************************************\r\n * Dropdown list population\r\n *******************************************************************************************/\r\n\r\n/*\r\n * Populates container list based on edit mode\r\n */\r\nfunction PopulateContainerTypeList () {\r\n\t$('#container_type').html('');\r\n\t$.each(g_master_data.GetList('container_type_list'), function (p_index, p_value) {\r\n\t\t$('#container_type').append($(\"');\r\n\r\n\tfor (var key in cnt_type_list) {\r\n\t\t$('#container_default_type').append('');\r\n\t}\r\n}\r\n\r\n/******************************************************************************************\r\n * Edit Modes\r\n *******************************************************************************************/\r\n\r\n/*\r\n * Loads deck state again\r\n */\r\nfunction LoadLocalDeckState () {\r\n\tClearAllContainers(false);\r\n\tRemoveDecks();\r\n\r\n\tLoadLocalState();\r\n\r\n\t// Load deck data\r\n\tg_deck_scale = g_data_list['deck_scale_value'];\r\n\tInitialiseDecks(g_localsave_object.GetLocalStorageItem(G_LS_NAMES['DECK_DATA']));\r\n\r\n\t// Load containers\r\n\tvar l_temp_list = g_localsave_object.GetLocalStorageItem(G_LS_NAMES['DECK_CONTAINER_DATA']);\r\n\r\n\tvar l_counter = 0;\r\n\r\n\tfor (var l_key in l_temp_list) {\r\n\t\tg_container_list[l_key] = new container(l_temp_list[l_key], {'new': false});\r\n\t\tg_container_list[l_key].InitialiseVisual(G_CONTAINING_DIV);\r\n\r\n\t}\r\n\tUpdateColorMap();\r\n\tUpdateAllDeckTotals();\r\n\tVRC.ErrorHandleService.showMessage('Succesfully loaded decks and (' + l_counter + ') containers from local storage', G_MSG_TYPE_SUCCESS);\r\n}\r\n\r\nvar UpdateColorMap = function () {\r\n\r\n\tvar l_colour_list = {};\r\n\r\n\tvar l_port_list = g_master_data.GetList('port_list');\r\n\r\n\t$.each(g_container_list, function (key, container) {\r\n\t\tvar containerColor = {};\r\n\t\tvar suffix = \"\";\r\n\r\n\t\tif (container.deckID !== \"outgoing_area\") {\r\n\t\t\tfor (var ii = 0; ii < l_port_list.length; ii++) {\r\n\t\t\t\tvar port = l_port_list[ii];\r\n\t\t\t\tif (port.id == container.destination && port.type == 'rig') {\r\n\t\t\t\t\tcontainerColor.destination = port.name + suffix;\r\n\t\t\t\t}\r\n\t\t\t\telse if (port.id == container.origin && port.type == 'rig') {\r\n\t\t\t\t\tcontainerColor.origin = port.name + suffix;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (containerColor.destination) {\r\n\t\t\t\tl_colour_list[containerColor.destination] = container.colour;\r\n\t\t\t}\r\n\t\t\telse if (containerColor.origin) {\r\n\t\t\t\tl_colour_list[containerColor.origin] = container.colour;\r\n\t\t\t}\r\n\t\t\t;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcontainer.colour = \"#FF5349\";\r\n\t\t\tl_colour_list[\"Offloading Area\"] = container.colour;\r\n\t\t}\r\n\t});\r\n var $colour_codes = $('#colour_codes');\r\n\t$colour_codes.html('');\r\n\r\n\tfor (var l_key in l_colour_list) {\r\n\t\t$colour_codes.append('
' + l_key + '
');\r\n\t}\r\n};\r\n\r\n/*******************************************************************************\r\n Functions for clearing / resetting containers\r\n ********************************************************************************/\r\n\r\n/*\r\n * Clears the vessel/port deck from containers and places them in the transit area\r\n */\r\nfunction ClearVesselDeck () {\r\n\tvar l_i = 5;\r\n\tvar increment = 0.2;\r\n\tfor (var l_key in g_container_list) {\r\n\t\tvar l_old_container = g_container_list[l_key];\r\n\t\tif (l_old_container.deckID != 'transit_area' && l_old_container.deckID != 'outgoing_area' && l_old_container.type != 'constraint') {\r\n\r\n if (l_old_container.properties.roundtrip || l_old_container.properties.storage) {\r\n continue;\r\n }\r\n\r\n\t\t\tl_old_container.deckID = 'outgoing_area';\r\n\r\n\t\t\tl_old_container.position.x = ((GetCurrentDeckLength() / 100) * (62 + increment));\r\n\t\t\tl_old_container.position.y = ((GetDeckAreaHeight() + increment) - GetCurrentDeckWidth());\r\n\t\t\tl_old_container.colour = G_CONTAINER_COLOURS['OUTGOING'];\r\n\t\t\tg_container_list[l_key] = l_old_container;\r\n\t\t\tg_container_list[l_key].UpdateContainerVisual();\r\n\t\t\tl_i += 10;\r\n\t\t\tincrement += 0.2;\r\n\t\t}\r\n\t}\r\n\tUpdateAllDeckTotals();\r\n\tUpdateColorMap();\r\n}\r\n\r\n/*\r\n * Lets user confirm whether deck should be cleared for containers\r\n */\r\nfunction ConfirmClearDeck () {\r\n\tvar msg = 'This will remove all containers from deck. Confinue?';\r\n\tvar onConfirm = function () {\r\n\t\tClearVesselDeck();\r\n\t\tVRC.ErrorHandleService.showMessage('Deck cleared of containers, except for roundtrip containers', G_MSG_TYPE_NORMAL);\r\n\t};\r\n\tVRC.ConfirmationModal.show({msg: msg, onConfirm: onConfirm});\r\n\r\n}\r\n\r\n/*\r\n * Lets user confirm whether all containers should be removed\r\n */\r\nfunction ConfirmClearAllContainers () {\r\n\r\n\tvar msg = 'This will remove all containers. Confinue?';\r\n\r\n\tvar onConfirm = function () {\r\n\t\tClearAllContainers();\r\n\t\tVRC.ErrorHandleService.showMessage('All containers removed', G_MSG_TYPE_NORMAL);\r\n\t};\r\n\tVRC.ConfirmationModal.show({msg: msg, onConfirm: onConfirm});\r\n}\r\n\r\n/*\r\n * Clears ALL containers from page. Local storage is not affected\r\n */\r\nfunction ClearAllContainers (update) {\r\n\tif (update === undefined) {\r\n\t\tupdate = true;\r\n\t}\r\n\t$('.deckstate_container').remove();\r\n\tg_container_list = {};\r\n\tif (update) {\r\n\t\tUpdateAllDeckTotals();\r\n\t\tUpdateColorMap();\r\n\t}\r\n}\r\n\r\n/*\r\n * Removes all decks from page and list\r\n */\r\nfunction RemoveDecks () {\r\n\tfor (var l_key in g_deck_list) {\r\n\t\t$('#' + g_deck_list[l_key].id).remove();\r\n\t}\r\n\r\n\t$('#transit_area').remove();\r\n\t$('#outgoing_area').remove();\r\n}\r\n\r\nfunction ConfirmClearOutgoingContainers () {\r\n\tvar msg = 'This will remove all containers from outgoing area. Confinue?';\r\n\tvar onConfirm = function () {\r\n\t\tRemoveOutgoingContainers();\r\n\t\tVRC.ErrorHandleService.showMessage('All outgoing containers removed', G_MSG_TYPE_NORMAL);\r\n\t};\r\n\tVRC.ConfirmationModal.show({msg: msg, onConfirm: onConfirm});\r\n}\r\n\r\n/*\r\n * Removes containers in the outgoing area\r\n */\r\nfunction RemoveOutgoingContainers () {\r\n\tfor (var l_key in g_container_list) {\r\n\t\tif (g_container_list[l_key].deckID == 'outgoing_area') {\r\n\t\t\t$('#' + g_container_list[l_key].id).remove();\r\n\t\t\tdelete g_container_list[l_key];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * Puts all containers on transit area that are not already\r\n * on the vessel's deck and updates containers to roundtrip\r\n */\r\nfunction PopulateTransitContainers (p_data) {\r\n\tvar l_counter = 0;\r\n\r\n\tvar containers = p_data.WELS_container_data;\r\n\r\n\tvar transitContainers = _.filter(containers, function (container) {\r\n\r\n\t\treturn $('#' + container.id).length === 0 && g_container_list[container.prev_id] === undefined;\r\n\t});\r\n\r\n\tvar blocks = _.map(transitContainers, function (c) {\r\n\t\tc.h = parseFloat(c.features.width);\r\n\t\tc.w = parseFloat(c.features.length);\r\n\t\treturn c;\r\n\t});\r\n\r\n\tblocks.sort(function (a, b) {\r\n\t\treturn (b.w > a.w);\r\n\t});\r\n\r\n\tvar packer = new GrowingPacker(GetCurrentDeckLength(), GetCurrentDeckWidth());\r\n\tpacker.fit(blocks);\r\n\r\n\tfor (var n = 0; n < blocks.length; n++) {\r\n\t\tvar block = blocks[n];\r\n\r\n\t\tif (block.fit) {\r\n\t\t\tblock.deckID = 'transit_area';\r\n\t\t\tblock.position.x = block.fit.x;\r\n\t\t\tblock.position.y = block.fit.y + GetCurrentDeckWidth() + 1;\r\n\r\n\t\t\tg_container_list[block.id] = new container(block, {'new': false});\r\n\t\t\tg_container_list[block.id].InitialiseVisual(G_CONTAINING_DIV);\r\n\t\t}\r\n\t}\r\n\r\n\t$.each(containers, function () {\r\n\t\tif ($('#' + this.id).length == 0) {\r\n\r\n\t\t\tif (g_container_list[this.prev_id] !== undefined) {\r\n\t\t\t\tSetContainerAsRoundtrip(this);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tl_counter++;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tg_container_list[this.id].features.length = this.features.length;\r\n\t\t\tg_container_list[this.id].features.width = this.features.width;\r\n\t\t\tg_container_list[this.id].features.weight = this.features.weight;\r\n\t\t\tg_container_list[this.id].dg_info = this.dg_info;\r\n\t\t\tg_container_list[this.id].dg_class = this.dg_class;\r\n\t\t\tg_container_list[this.id].remarks = this.remarks;\r\n\t\t\tg_container_list[this.id].properties = this.properties;\r\n\t\t\tg_container_list[this.id].origin = this.origin;\r\n\t\t\tg_container_list[this.id].destination = this.destination;\r\n\t\t\tg_container_list[this.id].type = this.type;\r\n\t\t\tg_container_list[this.id].tag = this.tag;\r\n\t\t\tg_container_list[this.id].UpdateContainerVisual();\r\n\t\t}\r\n\t});\r\n\r\n\treturn l_counter;\r\n}\r\n\r\n/*\r\n * Container from manifest already exists on deck and is actually going as roundtrip.\r\n * Just replace key values from old container with new\r\n */\r\nfunction SetContainerAsRoundtrip (p_roundtrip_container) {\r\n\tvar old_container_data = g_container_list[p_roundtrip_container.prev_id];\r\n\r\n\tp_roundtrip_container.position = old_container_data.position;\r\n\tp_roundtrip_container.features.rotation = old_container_data.features.rotation;\r\n\tp_roundtrip_container.deckID = old_container_data.deckID;\r\n\r\n\tg_container_list[p_roundtrip_container.id] = new container(p_roundtrip_container, {'new': false});\r\n\tg_container_list[p_roundtrip_container.id].InitialiseVisual(G_CONTAINING_DIV);\r\n\r\n\tg_container_list[p_roundtrip_container.prev_id].DeleteContainerVisual();\r\n\tdelete g_container_list[p_roundtrip_container.prev_id];\r\n}\r\n\r\n/*\r\n * Search containers and highlight\r\n */\r\nfunction HighlightContainers (clearSearch) {\r\n\t$('.deckstate_container').toggleClass('highlighted', false);\r\n\r\n\tif (clearSearch == 'clear') {\r\n\t\t$('#container_search_input').val('');\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar searchStr = $('#container_search_input').val();\r\n\tsearchStr = searchStr.toLowerCase();\r\n\tvar regExString = RegExp(searchStr, 'g');\r\n\t$('.deckstate_container').each(function () {\r\n\t\tif (this.innerText.toLowerCase().match(regExString)) {\r\n\t\t\t$(this).toggleClass('highlighted', true);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/*******************************************************************************\r\n Functions for creating / adding containers to local\r\n storage or divs\r\n ********************************************************************************/\r\n\r\n/*\r\n * Reads values from container and sets those values into form\r\n */\r\nfunction SetContainerData (p_id) {\r\n\r\n\t$('#container_id').attr(\"disabled\", true);\r\n\r\n\t// if id is null or undefined, we are creating a new container\r\n\tif (p_id === undefined) {\r\n\t\t$(\"#container_type\").val('container');\r\n\t\t$('#container_tag').attr('disabled', false);\r\n\r\n\t\t$('#container_count').attr('disabled', false);\r\n\t\t$('#container_count').val(1);\r\n\r\n\t\t// Set container data based on selected port\r\n\t\tvar l_port_id = $('#port_selection option:selected').val();\r\n\t\t$('#container_origin').val(l_port_id);\r\n\t\tvar l_port_list = g_master_data.GetList('port_list');\r\n\t\tfor (l_key in l_port_list) {\r\n\t\t\tif (l_port_list[l_key].id == l_port_id && l_port_list[l_key].type == 'rig') {\r\n\t\t\t\t$('#container_backload').prop('checked', true);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\telse {\r\n\t\t$('#container_count').val(1);\r\n\t\t$('#container_count').attr('disabled', true);\r\n\t}\r\n\r\n\t$('#container_id').val(g_container_list[p_id].id);\r\n\t$('#container_tag').val(g_container_list[p_id].tag);\r\n\r\n\tif (g_container_list[p_id].id.indexOf('container_') > -1) {\r\n\t\t$('#container_tag').attr('disabled', false);\r\n\t}\r\n\telse {\r\n\t\t$('#container_tag').attr('disabled', true);\r\n\t}\r\n\r\n\t$('#container_remarks').val(g_container_list[p_id].remarks);\r\n\t$('#container_type').val(g_container_list[p_id].type);\r\n\r\n\t$('#container_origin')[0].selectize.setValue(g_container_list[p_id].origin);\r\n\t$('#container_destination')[0].selectize.setValue(g_container_list[p_id].destination);\r\n\r\n\t$('#container_length').val(g_container_list[p_id].features.length);\r\n\t$('#container_width').val(g_container_list[p_id].features.width);\r\n\t$('#container_weight').val(g_container_list[p_id].features.weight);\r\n\r\n\t$('#container_priority').prop('checked', g_container_list[p_id].properties.priority);\r\n\t$('#container_dangerous').prop('checked', g_container_list[p_id].properties.dangerous);\r\n\t$('#container_roundtrip').prop('checked', g_container_list[p_id].properties.roundtrip);\r\n\t$('#container_backload').prop('checked', g_container_list[p_id].properties.backload);\r\n\t$('#container_storage').prop('checked', g_container_list[p_id].properties.storage);\r\n\t$('#container_transfer').prop('checked', g_container_list[p_id].properties.transfer);\r\n}\r\n\r\n/*\r\n * Creates a new container or updates a pre-existing one\r\n */\r\nfunction CreateNewContainer () {\r\n\tvar l_id = $('#container_id').val();\r\n\r\n\tvar l_count = $('#container_count').val();\r\n\tif (isNaN(l_count) || l_count < 1) {\r\n\t\tl_count = 1;\r\n\t}\r\n\tif (l_count > 10) {\r\n\t\tvar msg = 'You cannot create more than 10 containers at once.';\r\n\t\tVRC.ConfirmationModal.show({msg: msg, type: 'alert'});\r\n\t\treturn;\r\n\t}\r\n\tvar prev_pos = null;\r\n\tvar prev_deck_id = null;\r\n\tfor (var i = 0; i < l_count; i++) {\r\n\t\tvar created_id = CreateOrUpdateContainer(l_id);\r\n\r\n\t\tif (created_id) {\r\n\t\t\tif (prev_pos) {\r\n\t\t\t\tg_container_list[created_id].deckID = prev_deck_id;\r\n\t\t\t\tg_container_list[created_id].ChangePosition(prev_pos.x + 0.1, prev_pos.y + 0.1);\r\n\t\t\t}\r\n\t\t\tprev_pos = g_container_list[created_id].position;\r\n\t\t\tprev_deck_id = g_container_list[created_id].deckID;\r\n\t\t}\r\n\t}\r\n\r\n\tCloseContainerDialog();\r\n\r\n if (l_id === undefined || l_id === null) {\r\n VRC.ErrorHandleService.showMessage('New ad-hoc container created', G_MSG_TYPE_NORMAL);\r\n } else {\r\n VRC.ErrorHandleService.showMessage('Container viewed/updated', G_MSG_TYPE_NORMAL);\r\n }\r\n\r\n\tUpdateAllDeckTotals();\r\n\tUpdateColorMap();\r\n}\r\n\r\n/*\r\n * Creates a new container or updates an existing one\r\n */\r\nfunction CreateOrUpdateContainer (p_id) {\r\n\tvar l_update = true;\r\n\r\n\tif (p_id === undefined || p_id == '') {\r\n\t\tl_update = false;\r\n\t}\r\n\r\n\tvar containerVal = $('#container_weight').val();\r\n\tif (containerVal) {\r\n\t\tcontainerVal = containerVal.replace(',', '.');\r\n\t}\r\n\r\n\tvar l_container_data = {\r\n\t\t'tag': $('#container_tag').val(),\r\n\t\t'remarks': $('#container_remarks').val(),\r\n\t\t'origin': $('#container_origin option:selected').val(),\r\n\t\t'destination': $('#container_destination option:selected').val(),\r\n\t\t'type': $('#container_type option:selected').val(),\r\n\t\t'features': {\r\n\t\t\t'length': $('#container_length').val(),\r\n\t\t\t'width': $('#container_width').val(),\r\n\t\t\t'weight': containerVal,\r\n\t\t},\r\n\t\t'properties': {\r\n\t\t\t'backload': $('#container_backload').is(':checked'),\r\n\t\t\t'roundtrip': $('#container_roundtrip').is(':checked'),\r\n\t\t\t'dangerous': $('#container_dangerous').is(':checked'),\r\n\t\t\t'storage': $('#container_storage').is(':checked'),\r\n\t\t\t'priority': $('#container_priority').is(':checked'),\r\n\t\t\t'transfer': $('#container_transfer').is(':checked')\r\n\t\t},\r\n\t\t'position': {\r\n\t\t\t'x': 0,\r\n\t\t\t'y': 0\r\n\t\t}\r\n\t};\r\n\r\n\tl_container_data.colour = SetContainerColour(l_container_data);\r\n\r\n\tif (l_update) {\r\n\r\n\t\tvar l_old_container = g_container_list[p_id];\r\n\t\tl_old_container.tag = l_container_data.tag;\r\n\t\tl_old_container.type = l_container_data.type;\r\n\t\tl_old_container.remarks = l_container_data.remarks;\r\n\t\tl_old_container.origin = l_container_data.origin;\r\n\t\tl_old_container.destination = l_container_data.destination;\r\n\t\tl_old_container.features.length = l_container_data.features.length;\r\n\t\tl_old_container.features.width = l_container_data.features.width;\r\n\t\tl_old_container.features.weight = l_container_data.features.weight;\r\n\t\tl_old_container.properties.backload = l_container_data.properties.backload;\r\n\t\tl_old_container.properties.roundtrip = l_container_data.properties.roundtrip;\r\n\t\tl_old_container.properties.storage = l_container_data.properties.storage;\r\n\t\tl_old_container.properties.dangerous = l_container_data.properties.dangerous;\r\n\t\tl_old_container.properties.priority = l_container_data.properties.priority;\r\n\t\tl_old_container.properties.transfer = l_container_data.properties.transfer;\r\n\t\tl_old_container.colour = l_container_data.colour;\r\n\r\n\t\tl_old_container.UpdateContainerVisual();\r\n\t\tg_container_list[p_id] = l_old_container;\r\n\r\n\t\treturn null;\r\n\t}\r\n\telse {\r\n\t\tif (g_dbl_container_pos.length > 0) {\r\n\t\t\tl_container_data.position.x = g_dbl_container_pos[0];\r\n\t\t\tl_container_data.position.y = g_dbl_container_pos[1];\r\n\t\t\tl_container_data.deckID = g_dbl_container_pos[2];\r\n\t\t\tg_dbl_container_pos = [];\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar transitAreaPosition = $('#transit_area').position();\r\n\t\t\tl_container_data.position.x = 0;\r\n\t\t\tl_container_data.position.y = (GetDeckAreaHeight() - GetCurrentDeckWidth());\r\n\t\t\tl_container_data.deckID = 'transit_area';\r\n\r\n\t\t}\r\n\t\tl_container_data.features.rotation = 0;\r\n\r\n\t\tvar l_new_container = new container(l_container_data, {'new': true});\r\n\r\n\t\tl_new_container.InitialiseVisual(G_CONTAINING_DIV);\r\n\t\tg_container_list[l_new_container.id] = l_new_container;\r\n\r\n\t\treturn g_container_list[l_new_container.id].id;\r\n\t}\r\n}\r\n\r\n/*\r\n * Sets colour on container based on origin/destination\r\n */\r\nfunction SetContainerColour (p_container_data) {\r\n\r\n\tif (p_container_data.origin != null) {\r\n\t\tvar l_port_list = g_master_data.GetList('port_list');\r\n\t\tvar l_origin = null;\r\n\t\tvar l_destination = null;\r\n\t\tfor (var i in l_port_list) {\r\n\t\t\tif (l_port_list[i].id == p_container_data.origin) {\r\n\t\t\t\tl_origin = l_port_list[i];\r\n\t\t\t}\r\n\t\t\tif (l_port_list[i].id == p_container_data.destination) {\r\n\t\t\t\tl_destination = l_port_list[i];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (l_destination && l_destination.type == 'rig') {\r\n\t\treturn l_destination.colour;\r\n\t}\r\n\telse if (l_origin && l_origin.type == 'rig') {\r\n\t\treturn l_origin.colour;\r\n\t}\r\n\r\n\treturn G_CONTAINER_COLOURS['DECK'];\r\n}\r\n\r\n/*\r\n * Fetches last state from database for the deck(s)\r\n */\r\nfunction FetchDeckStateFromDB () {\r\n\tvar isCurrentPage = (g_current_page === G_PAGE.DECK_PAGE);\r\n\tvar onSuccess;\r\n\tvar deferred = $.Deferred();\r\n\r\n\tif (isCurrentPage) {\r\n\t\tonSuccess = function (object, data) {\r\n\t\t\tParseContainersAndDisplay(object, data);\r\n\t\t\tdeferred.resolve(object, data);\r\n\t\t};\r\n\t}\telse {\r\n\t\t onSuccess = function (object, data) {\r\n\t\t\tParseContainers(data.WELS_container_list);\r\n\t\t\tdeferred.resolve(object, data);\r\n\t\t};\r\n\t}\r\n\tg_remote_object.FetchDeckStateFromDB(g_container_list, onSuccess);\r\n\treturn deferred.promise();\r\n}\r\n\r\n/*\r\n * Parses containers and shows them\r\n */\r\nfunction ParseContainersAndDisplay (p_owner, p_data) {\r\n\r\n\t$.each(p_data.WELS_container_list, function () {\r\n\t\tg_container_list[this.id] = new container(this, {'new': false});\r\n\t\tg_container_list[this.id].InitialiseVisual(G_CONTAINING_DIV);\r\n\t});\r\n\tg_localsave_object.SetLocalStorageItem(G_LS_NAMES['DECK_CONTAINER_DATA'], p_data.WELS_container_list);\r\n\tUpdateColorMap();\r\n\tUpdateAllDeckTotals();\r\n}\r\n\r\n/*\r\n * Parses containers\r\n */\r\nfunction ParseContainers (containerList) {\r\n\r\n\t$.each(containerList, function () {\r\n\t\tg_localsave_object.SetLocalStorageItem(G_LS_NAMES['DECK_CONTAINER_DATA'], containerList);\r\n\t});\r\n}\r\n\r\n/*\r\n * Fetches transit containers for a given vessel / port\r\n */\r\nfunction FetchTransitContainers () {\r\n\r\n\treturn g_remote_object.FetchTransitContainers();\r\n\r\n}\r\n\r\n/*\r\n * Confirms whether we want to fetch new transit containers\r\n */\r\nfunction ConfirmFetchTransitContainers () {\r\n\tvar msg = 'This will fetch containers from selected port. Continue?';\r\n\tVRC.ContainerPopoverView.hide();\r\n\tvar onConfirm = function () {\r\n\t\tvar fetchTransit = FetchTransitContainers();\r\n\t\tfetchTransit.done(function () {\r\n\t\t\t// VRC.ConfirmationModal.hide();\r\n\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tVRC.FindMatchingContainerModal.show()\r\n\t\t\t}, 500);\r\n\r\n\t\t})\r\n\t};\r\n\tVRC.ConfirmationModal.show({msg: msg, onConfirm: onConfirm});\r\n};\r\n\r\n/*******************************************************************************\r\n * Functions for Tools popup\r\n *******************************************************************************/\r\n/*\r\n * Opens up the tools popup\r\n */\r\nfunction OpenToolsPopup () {\r\n\tg_remote_object.FetchHTMLFromServer(g_container_list, ParseContainerSyncList, 'info', 'tools_sync');\r\n}\r\n\r\nfunction ParseContainerSyncList (p_owner, p_data) {\r\n\t$(\"#deck_tools_popup\").html(p_data);\r\n\t$(\"#deck_tools_popup\").dialog('open');\r\n}\r\n\r\n/*\r\n * Android Specific function. Placeholder for now?\r\n */\r\nfunction TakeDeckPicture () {\r\n\tAndroid.takePicture(\"deck_state\", g_data_list[\"id\"], g_data_list[\"operator\"], \"\");\r\n}\r\n\r\nfunction DisplayCaptureImageButton (display) {\r\n\tif (display) {\r\n\t\t$('#deck_capture_image').css('display', 'inline');\r\n\t}\r\n\telse {\r\n\t\t$('#deck_capture_image').css('display', 'block');\r\n\t}\r\n}\r\n/*\r\n * Calculates totals for containers that are currently on deck\r\n */\r\nfunction CalculateDeckTotals (deckId) {\r\n\r\n\tvar total_mt = 0;\r\n\r\n\tvar count_container_mt = 0;\r\n\tvar count_container_total = 0;\r\n\r\n\t_.each(g_container_list, function (container) {\r\n\t\tvar containerDeckId = container.deckID;\r\n\r\n\t\tif (containerDeckId !== null && containerDeckId == deckId) {\r\n\r\n\t\t\tcount_container_total++;\r\n\t\t\ttry {\r\n\t\t\t\tvar mt = isNaN(parseFloat(container.features.weight, 2)) ? 0 : parseFloat(container.features.weight, 2);\r\n\t\t\t\tif (mt > 0) {\r\n\t\t\t\t\ttotal_mt += mt;\r\n\t\t\t\t\tcount_container_mt++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tconsole.error('Tried to parse' + container.features.weight);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn {\r\n\r\n\t\tmt: total_mt,\r\n\t\tmt_count: count_container_mt,\r\n\t\tmt_missing_count: count_container_total - count_container_mt,\r\n\t\ttotal_count: count_container_total\r\n\r\n\t};\r\n}\r\n\r\n/*\r\n * Updates the visual display of container data\r\n */\r\nfunction UpdateAllDeckTotals () {\r\n\tvar $wrapper = $('.container__actions__mt');\r\n\tif (g_current_deck) {\r\n\t\tUpdateDeckTotals(g_current_deck.id, $wrapper, 'on deck');\r\n\t\tvar $deckMiddleArea = $(\"#deck__middle_area\");\r\n\t\tUpdateDeckTotals('transit_area', $deckMiddleArea, 'in loading area');\r\n\t}\r\n\r\n}\r\n\r\nfunction UpdateDeckTotals (deckId, $wrapper, deckNameWithPreposition) {\r\n\tvar result = CalculateDeckTotals(deckId);\r\n\r\n\tvar $mt_total = $wrapper.find('.mt_total');\r\n\tvar $mt_containers = $wrapper.find('.mt_containers');\r\n\tvar prefUnits = VRC.MasterDataService.getValueUnitPreferences();\r\n\r\n\t$mt_total.text('Estimated total weight ' + deckNameWithPreposition + ': ' + result.mt.toFixed(2) + ' ' + prefUnits.weight);\r\n\r\n\tif (result.mt_missing_count > 0) {\r\n\t\tresult.containertext = 'container';\r\n\t\tif (result.mt_missing_count > 1) {\r\n\t\t\tresult.containertext = result.containertext + 's';\r\n\t\t}\r\n\t\t$mt_containers.html(WELL.Handlebars.VRC.missing_container_alert(result));\r\n\t\t$wrapper.find('.missing_containers_btn').click(function (e) {\r\n\r\n\t\t\tVRC.ContainerService.highligthContainersWithoutWeight(deckId)\r\n\t\t});\r\n\t}\r\n\telse if (result.total_count > 0) {\r\n\t\t$mt_containers.html(WELL.Handlebars.VRC.no_missing_container_alert(result));\r\n\t}\r\n\telse {\r\n\t\t$mt_containers.html(WELL.Handlebars.VRC.no_container_alert({text: 'No containers ' + deckNameWithPreposition}));\r\n\t}\r\n\r\n};\r\n\r\nfunction UpdateTransitAreaTotals () {\r\n\tvar result = CalculateDeckTotals('transit_area');\r\n\tvar $mt_total = $('#mt_total');\r\n\tvar $mt_containers = $('#mt_containers');\r\n}\r\n\r\n/*\r\n * Sets whether deck should autosave every 2 minutes\r\n */\r\nfunction SetAutoSaveDeck () {\r\n\r\n\tvar is_checked = $('#AutoSaveDeckBox').is(\":checked\");\r\n\tif (is_checked) {\r\n\t\tif (g_autosave_interval_id != null) {\r\n\t\t\tclearInterval(g_autosave_interval_id);\r\n\t\t}\r\n\t\tg_autosave_interval_id = setInterval(AutoSaveDeck, 1000 * 60 * 2);\r\n\t\tg_autoupdate_deck = true;\r\n\t}\r\n\telse {\r\n\t\tclearInterval(g_autosave_interval_id);\r\n\t\tg_autoupdate_deck = false;\r\n\t}\r\n}\r\n\r\n/*\r\n * Updates deck if any container has moved since previous autosave\r\n */\r\nfunction AutoSaveDeck () {\r\n\t// only save if anything has moved\r\n\tif (!g_container_is_dirty) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tSaveLocalState();\r\n\tg_remote_object.SubmitAllData('update_deck', function () {\r\n\t\tUpdateAllDeckTotals();\r\n\t});\r\n\r\n\tg_container_is_dirty = false;\r\n}\r\n\r\n","/**\r\n * Copyright (c) 2011, 2012, 2013 Jake Gordon and contributors\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in all\r\n copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n SOFTWARE.\r\n */\r\n\r\n/**\r\n * Is used to try to place deckstate containers in the transit area.\r\n *\r\n */\r\n\r\nGrowingPacker = function (w, h) {\r\n\tthis.init(w, h);\r\n};\r\n\r\nGrowingPacker.prototype = {\r\n\r\n\tinit: function (w, h) {\r\n\t\tthis.root = {x: 0, y: 0, w: w, h: h};\r\n\t},\r\n\r\n\tfit: function (blocks) {\r\n\t\tvar n, node, block, len = blocks.length;\r\n\t\tvar w = len > 0 ? blocks[0].w : 0;\r\n\t\tvar h = len > 0 ? blocks[0].h : 0;\r\n\r\n\t\tfor (n = 0; n < len; n++) {\r\n\t\t\tblock = blocks[n];\r\n\t\t\tif (node = this.findNode(this.root, block.w, block.h)) {\r\n\t\t\t\tblock.fit = this.splitNode(node, block.w, block.h);\r\n\t\t\t} else {\r\n\t\t\t\tblock.fit = this.growNode(block.w, block.h);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tfindNode: function (root, w, h) {\r\n if (root.used) {\r\n return this.findNode(root.right, w, h) || this.findNode(root.down, w, h);\r\n } else if ((w <= root.w) && (h <= root.h)) {\r\n return root;\r\n } else {\r\n return null;\r\n }\r\n\t},\r\n\r\n\tsplitNode: function (node, w, h) {\r\n\t\tnode.used = true;\r\n\t\tnode.down = {x: node.x, y: node.y + h, w: node.w, h: node.h - h};\r\n\t\tnode.right = {x: node.x + w, y: node.y, w: node.w - w, h: h};\r\n\t\treturn node;\r\n\t},\r\n\r\n\tgrowNode: function (w, h) {\r\n\t\tvar canGrowDown = (w <= this.root.w);\r\n\t\tvar canGrowRight = false;\r\n\r\n\t\tvar shouldGrowRight = canGrowRight && (this.root.h >= (this.root.w + w)); // attempt to keep square-ish by growing right when height is much greater than width\r\n\t\tvar shouldGrowDown = canGrowDown && (this.root.w >= (this.root.h + h)); // attempt to keep square-ish by growing down when width is much greater than height\r\n\r\n if (shouldGrowRight) {\r\n return this.growRight(w, h);\r\n } else if (shouldGrowDown) {\r\n return this.growDown(w, h);\r\n } else if (canGrowRight) {\r\n return this.growRight(w, h);\r\n } else if (canGrowDown) {\r\n return this.growDown(w, h);\r\n } else {\r\n return null;\r\n } // need to ensure sensible root starting size to avoid this happening\r\n\t},\r\n\r\n\tgrowRight: function (w, h) {\r\n\t\tthis.root = {\r\n\t\t\tused: true,\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\tw: this.root.w + w,\r\n\t\t\th: this.root.h,\r\n\t\t\tdown: this.root,\r\n\t\t\tright: {x: this.root.w, y: 0, w: w, h: this.root.h}\r\n\t\t};\r\n if (node = this.findNode(this.root, w, h)) {\r\n return this.splitNode(node, w, h);\r\n } else {\r\n return null;\r\n }\r\n\t},\r\n\r\n\tgrowDown: function (w, h) {\r\n\t\tthis.root = {\r\n\t\t\tused: true,\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\tw: this.root.w,\r\n\t\t\th: this.root.h + h,\r\n\t\t\tdown: {x: 0, y: this.root.h, w: this.root.w, h: h},\r\n\t\t\tright: this.root\r\n\t\t};\r\n if (node = this.findNode(this.root, w, h)) {\r\n return this.splitNode(node, w, h);\r\n } else\r\n return null;\r\n\t}\r\n\r\n}","/*\r\n * HomeState.js\r\n *\r\n * Initialisation of Home page\r\n *\r\n */\r\n\r\n/*\r\n * Initialises the home page section\r\n */\r\nfunction InitialiseHomePage () {\r\n\tg_remote_object.FetchHTMLFromServer('', ParseHomeData, 'info', 'home');\r\n}\r\n\r\nfunction ParseHomeData (p_owner, p_data) {\r\n\tVRC.CurrentVoyage.init();\r\n\r\n\t$(\"#home_voyage_info\").html(p_data);\r\n}","/*\r\n* MasterData.js\r\n*\r\n* Handles all storing and manipulations with master data\r\n*/\r\n\r\n/*\r\n* Constructor for master data object\r\n*/\r\nfunction MasterData() {\r\n this.master_data = {}; // lists of all master data\r\n}\r\n\r\n/*\r\n* Saves master data to local storage\r\n*/\r\nMasterData.prototype.SaveMasterData = function() {\r\n var l_list = { };\r\n $.each( this.master_data, function(p_key, p_list) {\r\n l_list[p_key] = p_list;\r\n });\r\n g_localsave_object.SetLocalStorageItem( G_LS_NAMES['MASTER_DATA'], l_list );\r\n l_list = null;\r\n\r\n};\r\n\r\n/*\r\n* Loads master data from local storage\r\n*/\r\nMasterData.prototype.LoadMasterData = function() {\r\n var l_list = {};\r\n $.each( g_localsave_object.GetLocalStorageItem( G_LS_NAMES['MASTER_DATA'] ), function( p_key, p_list ) {\r\n\tl_list[p_key] = p_list;\r\n });\r\n this.master_data = l_list;\r\n l_list = null;\r\n VRC.PortManager.init();\r\n};\r\n\r\nMasterData.prototype.GetList = function( p_list_name ) {\r\n if( this.master_data[p_list_name] === undefined )\r\n return null;\r\n \r\n return this.master_data[p_list_name];\r\n};\r\n\r\n/*\r\n* Callback function for parsing data from server\r\n*/\r\nMasterData.prototype.ParseMasterData = function( p_owner, p_data ) {\r\n if( p_data == null || p_data.master_data === undefined ) {\r\n return;\r\n } \r\n\r\n $.each( p_data.master_data, function( p_index, p_list ) {\r\n p_owner.master_data[p_index] = p_list;\r\n });\r\n\r\n VRC.MasterDataService.init(p_owner);\r\n p_owner.SaveMasterData();\r\n\r\n};","\r\n/*\r\n* Initialises the dialog popups\r\n*/\r\n\r\nfunction InitialiseDialogs( page_type ) {\r\n if( page_type == G_PAGE['MAIN_PAGE'] ) {\r\n InitialiseMainDialogs();\r\n }\r\n else if( page_type == G_PAGE['DECK_PAGE'] ) {\r\n InitialiseDeckDialogs();\r\n }\r\n InitialiseApexPopupDialog();\r\n}\r\n\r\nfunction InitialiseMainDialogs() {\r\n\r\n \r\n $(\"#settings_dialog\").dialog( { \r\n autoOpen: false,\r\n modal: true, \r\n\tcloseOnEscape: false,\r\n\tminWidth: 600,\r\n\tminHeight: 400,\r\n\ttitle: 'Settings',\r\n\tdialogClass: \"dialogClass\"\r\n });\r\n \r\n $(\"#submit_dialog\").dialog( { \r\n autoOpen: false,\r\n modal: true, \r\n\tcloseOnEscape: false,\r\n\tminWidth: 300,\r\n\tminHeight: 200,\r\n\ttitle: 'Submit',\r\n\tdialogClass: \"dialogClass\"\r\n });\r\n \r\n\r\n \r\n $('#login_operator_selection').change(function() {\r\n \t\r\n });\r\n \r\n $('#login_type_selection').change(function() {\r\n\tSetAvailableDropdownList($('#login_type_selection').val(), $('#login_id_selection'));\r\n });\r\n}\r\n\r\nfunction InitialiseApexPopupDialog() {\r\n $(\"#apex_popup\").dialog( { \r\n autoOpen: false,\r\n modal: true, \r\n\tcloseOnEscape: false,\r\n\twidth: window.screen.width - 250,\r\n\theight: window.screen.height - 200,\r\n\ttitle: 'WELS Info',\r\n\tresizable: true,\r\n\tdialogClass: \"dialogClass\",\r\n\tbeforeClose: function(event, ui) { $('#apex_popup').html('');}\r\n });\r\n}\r\n\r\nfunction InitialiseDeckDialogs() {\r\n\r\n \r\n\r\n $(\"#popup_dialog\").dialog( {\r\n autoOpen: false\r\n });\r\n \r\n $(\"#create_dialog\").dialog( { \r\n autoOpen: false,\r\n modal: true, \r\n\tminWidth: 600,\r\n\tminHeight: 400,\r\n\tdraggable: true,\r\n\tresizable: false,\r\n\tposition: 'left',\r\n\ttitle: 'Create New Container',\r\n dialogClass: \"dialogClass\",\r\n\tclose: function(event,ui) { ClearContainerData() }\r\n });\r\n \r\n $(\"#deck_tools_popup\").dialog( { \r\n autoOpen: false,\r\n modal: true, \r\n\tcloseOnEscape: false,\r\n\tminWidth: 800,\r\n\tminHeight: 400,\r\n\tdialogClass: \"dialogClass\",\r\n\ttitle: 'View and Sync Containers'\r\n });\r\n}\r\n\r\n/*\r\n* Destroy dialogs for deck\r\n*/\r\nfunction DestroyDialogs(page) {\r\n if(page == G_PAGE['DECK_PAGE']) {\r\n $(\"#popup_dialog\").dialog(\"destroy\").remove();\r\n $(\"#deck_tools_popup\").dialog(\"destroy\").remove();\r\n $(\"#create_dialog\").dialog(\"destroy\").remove();\r\n }\r\n else if(page == G_PAGE['BULK_PAGE']) {\r\n $(\"#bulk_tank_dialog\").dialog(\"destroy\").remove();\r\n $(\"#bulk_popup\").dialog(\"destroy\").remove();\r\n }\r\n}\r\n\r\n/*\r\n* Dialog for bulk tank data \r\n*/\r\nfunction InitialiseBulkDialogs() {\r\n\r\n $(\"#bulk_tank_dialog\").dialog( { \r\n autoOpen: false,\r\n modal: true, \r\n\tcloseOnEscape: false,\r\n\tminWidth: 1000,\r\n\tminHeight: 500,\r\n\tdialogClass: \"dialogClass\",\r\n\ttitle: 'Bulk Tank Details'\r\n });\r\n \r\n $(\"#bulk_popup\").dialog( { \r\n autoOpen: false,\r\n modal: true, \r\n\tcloseOnEscape: false,\r\n\twidth: window.screen.width - 250,\r\n\theight: window.screen.height - 200,\r\n\ttitle: 'Tank Cleaning',\r\n\tresizable: true,\r\n\tdialogClass: \"dialogClass\",\r\n\tbeforeClose: function(event, ui) { $('#bulk_popup').html('');}\r\n });\r\n \r\n}\r\n\r\n /*******************************************************************************\r\n Functions for login dialog\r\n********************************************************************************/\r\n\r\n/*\r\n* Shows log in dialog\r\n*/\r\nfunction LoginDialog(p_master_object, p_data) {\r\n VRC.LoadingModal.hide();\r\n g_master_data.ParseMasterData(p_master_object, p_data);\r\n //$('#login_dialog').dialog('open');\r\n \r\n var l_operator_value = localStorage['login_operator_param']; \r\n var l_value = localStorage['login_user_param'];\r\n \r\n if( l_value !== undefined && l_value !== null && $('#login_type_selection option[value=\"' + l_value + '\"]').length > 0 ) {\r\n $('#login_type_selection').val( l_value );\r\n $('#login_type_selection').attr('disabled', true);\r\n }\r\n else {\r\n $('#login_type_selection').val( l_value );\r\n\t $('#login_type_selection').attr('disabled', false);\r\n }\r\n \r\n \r\n if( l_operator_value !== undefined && l_operator_value !== null) {\r\n $('#login_operator_selection').val( l_operator_value );\r\n\t$('#login_operator_selection').attr('disabled', true);\r\n\tSetAvailableDropdownList(l_value, $('#login_id_selection'));\r\n }\r\n else {\r\n $('#login_operator_selection').val( l_operator_value );\r\n\t$('#login_operator_selection').attr('disabled', false); \r\n }\r\n\r\n VRC.Authentication.init();\r\n}\r\n\r\n/*\r\n* Sets dropdown list for logging as rig or vessel\r\n*/\r\nfunction SetAvailableDropdownList(p_type, $p_dropdown_list) {\r\n $p_dropdown_list.html('');\r\n var l_list;\r\n if(p_type == 'vessel') {\r\n l_list = g_master_data.GetList('vessel_list');\r\n }\r\n else {\r\n l_list = g_master_data.GetList('port_list');\r\n }\r\n for(var l_key in l_list) {\r\n if( l_list[l_key].type === undefined || l_list[l_key].type == p_type) {\r\n $p_dropdown_list.append( $(\"