<%@ Page Title="" Language="C#" MasterPageFile="~/AssetView/AssetViewBase.master" AutoEventWireup="true" CodeFile="SingleAssetView.aspx.cs" Inherits="SingleAssetView" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> <style type="text/css"> ::-ms-clear, ::-ms-reveal { display: none; } .edit-content table { border-collapse: collapse; width: 100%; } .edit-content table td.label { width: 200px; text-align: right; padding-right: 10px; line-height: 24px; height: 24px; vertical-align: top; } .edit-content table td input, .edit-content table td textarea { border: 1px solid #a9a9a9; width: 320px; height: 18px; padding: 1px; } .edit-content table td input[type="checkbox"] { border: none; } .edit-content table td textarea { height: 100px; resize: none; /*max-width: 200px;*/ } .a { text-decoration: none; color: #2140fb; } .subtitle { margin: 20px 40px 5px 0px; font-size: 16px; color: gray; } .subtitle span { margin-left: 10px; } .subtitle hr { background-color: #d8d8d8; border: none; height: 1px; } .machinetd { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .div-wsp { /*position: fixed; top: 300px; left: 0; right: 0; bottom: 0;*/ border-top: 1px solid #000; margin-left: 1px; } .iframe-wsp { border: none; width: 100%; height: 100%; } .div-timeline { border-top: 1px solid #a9a9a9; padding-top: 4px; } .iframe-timeline { border: none; width: 100%; height: 100px; } .sizer { position: relative; width: 270px; z-index: 1; } .titlePane { background-color: #444444; color: #FFFFFF; line-height: 24px; padding-left: 6px; border-radius: 5px 5px 0px 0px; -webkit-border-radius: 5px 5px 0px 0px; cursor: default; } .titleButton { position: absolute; top: 2px; cursor: pointer; } .titleButton:before { padding-right: 8px; font-family: 'FontAwesome'; } .titleButton.prev { right: 64px; background-position: -29px 0; width: 9px; height: 17px; } .titleButton.next { right: 46px; background-position: -16px 0; width: 9px; height: 17px; } .titleButton.close { right: 3px; background-position: 0 0; width: 12px; height: 17px; font-size: 15px; } .assetlable { font-weight: bold; } .assetblanklines { height: 12px; } .dialogbtn { height: 24px; cursor: pointer; background: rgb(249, 189, 117); padding: 2px; } .adjust-content table td.label { width: 130px; text-align: right; padding-right: 10px; line-height: 24px; height: 24px; vertical-align: top; } .adjust-content table td input { width: 200px; } .adjust-content table td select { width: 204px; } .function-title { float: left; font-weight: bold; margin: 6px 0 0 26px; font-size: 13px; } .function-bar { height: 30px; line-height: 30px; /*text-align: right;*/ float: right; } #text-date { width: 100px; } .iconworkorder:before { font-family: FontAwesome; content: '\f732'; font-size: 2.0em; font-weight: bold; color: #0079c1; } .iconmaintenancerecord:before { font-family: FontAwesome; content: '\f073'; font-size: 2.0em; font-weight: bold; color: #0079c1; } .icondirection:before { content: '\f5eb'; font-family: FontAwesome; font-size: 2.4em; font-weight: bold; color: #0079c1; } .iconmail:before { font-family: FontAwesome; content: '\f0e0'; font-size: 2.4em; font-weight: bold; color: #0079c1; } .iconweather:before { font-family: FontAwesome; content: '\f746'; font-size: 2.4em; font-weight: bold; color: #0079c1; } .iconasset:before { font-family: FontAwesome; content: '\f7d2'; font-size: 2.0em; font-weight: bold; color: #0079c1; } .iconmapworkorder:before { font-family: FontAwesome; content: '\f732'; font-size: 2.4em; font-weight: bold; color: #0079c1; } .iconlochis:before { font-family: FontAwesome; content: '\f1da'; font-size: 2.4em; font-weight: bold; color: #0079c1; } .iconmapmanagealerts:before { font-family: FontAwesome; content: '\f071'; font-size: 2.4em; font-weight: bold; color: #0079c1; } .iconmapfuelrecord:before { font-family: FontAwesome; content: '\f52f'; font-size: 2.4em; font-weight: bold; color: #0079c1; } .iconatta:before { font-family: FontAwesome; content: '\f0c6'; font-size: 2.4em; font-weight: bold; color: #0079c1; } .div_titlte { width: 100%; background: <%=MenuBackgroundColor%>; position: relative; text-align: center; line-height: 24px; font-weight: bold; } .assetsummaryplus:before { font-size: 12px; font-weight: normal; font-family: 'CalciteWebCoreIcons', 'Fontawesome'; content: '\e620'; margin-right: 5px; color: #0079c1; } .td_pm { vertical-align: top; white-space: nowrap; font-weight: bold; } .divicon { /*position: absolute;*/ width: 40px; background-color: #EFEFEF; text-align: center; line-height: 35px; padding: 5px 5px; float: left; margin-left: 22px; } .divattp { width: 300px; margin-right: 10px; float: left; position: relative; } .divatt { width: 120px; height: 120px; margin-top: 5px; margin-bottom: 5px; margin-right: 10px; cursor: pointer; border: 1px solid #b0b0b0; border-radius: 2px; box-shadow: rgba(0, 0, 0, 0.4); text-align: center; float: left; position: relative; } .picture { max-height: 100%; max-width: 100%; margin: auto; position: absolute; top: 0; bottom: 0; left: 0; right: 0; } </style> <link href="<%=GetFileUrlWithVersion("../css/jquery.datetimepicker.css")%>" rel="stylesheet" /> <script src="<%=GetFileUrlWithVersion("../Maintenance/js/inputdatactr.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("../js/jquery.datetimepicker.full.js")%>"></script> <script src="<%=GetFileUrlWithVersion("../js/editableselect.js")%>"></script> <script src="<%=GetFileUrlWithVersion("../js/vue.min.js")%>"></script> <script src="<%=GetFileUrlWithVersion("js/adj_odometer.js")%>"></script> <script src="<%=GetFileUrlWithVersion("js/adj_enginehours.js")%>"></script> <script src="<%=GetFileUrlWithVersion("js/assetpm.js")%>"></script> <script src="<%=GetFileUrlWithVersion("../js/echarts.min.js")%>"></script> <script type="text/javascript"> _network.root = '<%=Page.ResolveUrl("~/")%>'; var currentdate = "<%=CurrentDate %>"; var IsSupperAdmin =<%=IsSupperAdmin ?"true":"false"%>; var isAllowed = false; var IsDealer = <%=IsDealer ?"true":"false"%>; var CanEditPM = <%=CanEditPM ?"true":"false"%>; var canEditAsset = <%=CanEditAsset ?"true":"false"%>; var canViewWorkOrder = <%=CanViewWorkOrder ?"true":"false"%>; var canViewMR = <%=CanViewMR ?"true":"false"%>; var canViewAlertsManagement = <%=CanViewAlertsManagement ?"true":"false"%>; var canViewFuelRecords = <%=CanViewFuelRecords ?"true":"false"%>; var enableSmartWitness = <%=EnableSmartWitness?"true":"false"%>; var canViewInspection = <%=CanViewInspection?"true":"false"%>; var canViewPM = <%=CanViewPM?"true":"false"%>; function resizeBoard(width, height) { $('#div_wsp').css({ width: width, height: height }) } var contractorid = undefined; var assetid = undefined; var vin = undefined; var rentalsdata = []; var machines; var vm; function assetrequest(method, param, callback, error) { _network.request("AssetView/SingleAssetView.aspx", -1, method, param, callback, error || function (e) { console.log(e); showmaskbg(false, true); showAlert(GetTextByKey("P_MV_PAGEERROR", 'An unknown error occurred. Please refresh page.'), GetTextByKey("P_MV_QUERY", 'Query')); }); } function assetrequest1(method, param, callback, error) { _network.request("MachineDeviceManagement/AddMachine.aspx", -1, method, param, callback, error || function (e) { console.log(e); showmaskbg(false, true); showAlert(GetTextByKey("P_MV_PAGEERROR", 'An unknown error occurred. Please refresh page.'), GetTextByKey("P_MV_QUERY", 'Query')); }); } function devicerequest(method, param, callback, error) { _network.request("MachineDeviceManagement/ManageMachines.aspx", -1, method, param, callback, error || function (e) { console.log(e); showmaskbg(false, true); showAlert(GetTextByKey("P_MV_PAGEERROR", 'An unknown error occurred. Please refresh page.'), GetTextByKey("P_MV_QUERY", 'Query')); }); } function showConfirm1(msg, title, fok, fcancel) { $('#addodomask').show(); $('#addenginehoursmask').show(); _dialog.showConfirm(msg, title, function (e) { $('#addodomask').hide(); $('#addenginehoursmask').hide(); if (typeof fok === 'function') { fok(e); } }, function () { $('#addodomask').hide(); $('#addenginehoursmask').hide(); }); } function loadAsset(cid, aid, avin, type) {//type 0.mapview 1.manageasset if (type === 1) { $('#div_icon').hide(); $('#div_assetcontent').css('padding-left', 0); } $('#dialog_addodometer').hideDialog(); $('#addodomask').hide(); $('#dialog_addenginehours').hideDialog(); $('#addenginehoursmask').hide(); _dialog.close($(".popupmsg")); $("#assetspeeddiv").hide(); $("#assetfuelleveldiv").hide(); contractorid = cid; assetid = aid; vin = avin; GetUserPermission(); getCustomerTimeZone(); if (assetid) { $('#div_icon').empty(); $('#dialog_assetattachments').hideDialog(); loadAssetInfo(); loadMapView(); loadWorkspace(); $('#div_timeline').hide(); timelineLoaded = false; assetrequest('IsCalampPrimaryLocation', contractorid + String.fromCharCode(170) + assetid, function (data) { if (data == '1') { var dt = new Date(currentdate); var text_date = $('#text-date'); var m = dt.getMonth() + 1; var d = dt.getDate(); text_date.val((m < 10 ? '0' : '') + m + '/' + (d < 10 ? '0' : '') + d + '/' + dt.getFullYear()); $('#iftimeline').attr('src', 'AssetTimeline.aspx?id=' + assetid + '&cid=' + contractorid).on('load', function () { setTimeout(function () { timelineLoaded = true; OnRefresh(); }); }); $('#div_timeline').show(); } }); } } function refresh() { if (!IsSupperAdmin) GetUserPermission(); if (assetid) { loadAssetInfo(); loadMapView(); loadWorkspace(); } } function loadMapView() { if ($("#ifmapview").prop("src")) execIframeFunc("reloaddata", [assetid, vin], "ifmapview"); else $("#ifmapview").prop("src", "AssetMapView.aspx?machineid=" + assetid + "&vin=" + vin); } var workspaceConfig = undefined; function loadWorkspace() { //加了个resetPivot(pivots)方法,传进来[{iid:'...',vals:['..']},...]的对象就行 var wspivots = [{ "iid": "BDFAE7E6-9E1F-4BE5-8B98-3BCF227C5DB7", "vals": [vin] }]; //var wspivots = [{ "iid": "e64de7da-539e-471f-afd7-80e5bd298167", "vals": [assetid] }]; if (!$("#ifwsp").attr("src")) { assetrequest("GetAssetDetailWorkspaceConfig", "", function (data) { if (typeof (data) === "string") { return; } workspaceConfig = data; var p = generatewspparam(); $("#ifwsp").attr("src", "AssetSingleWorkspace.aspx?" + p); }); } else { execIframeFunc("resetPivot", [getwspparam()], "ifwsp"); } // src="AssetSingleWorkspace.aspx?iid=be9860fa-c718-41b6-8d48-b734ceca8fd0&wspivots=%22%5B%7B%5C%22iid%5C%22%3A%5C%22e64de7da-539e-471f-afd7-80e5bd298167%5C%22%2C%5C%22vals%5C%22%3A%5B%5C%2290%5C%22%5D%7D%5D%22&lgid=en-us" //IID=07336716-614E-4B6B-BF2A-4917A4D1370F&wspivots=[{"iid":"00000000-0000-0000-0000-00000000","vals":["1152600"]},{"iid":"3BD3EFB4-B134-1395-D6E5-E2D8CA762A3A","vals":["072919httest2"]}] } function generatewspparam() { var wspivots = []; var p = "iid="; if (workspaceConfig) { p += workspaceConfig.WorkspaceIID; var wspivots = getwspparam(); p += "&wspivots=" + encodeURIComponent(JSON.stringify(wspivots)) + "&lgid=en-us"; } return p; } function getwspparam() { var wspivots = []; if (workspaceConfig) { if (workspaceConfig.MachineIDPivotIID) { wspivots.push({ "iid": workspaceConfig.MachineIDPivotIID, "vals": ["" + assetid] }); } if (workspaceConfig.VINPivotIID) { wspivots.push({ "iid": workspaceConfig.VINPivotIID, "vals": [vin] }); } } return wspivots; } $(function () { initTime(); initTimeZone(); $('#dialog_addodometer').dialog(function () { showmaskbg(false); }); $('#dialog_addenginehours').dialog(function () { showmaskbg(false); }); $('#dialog_assetattachments').dialog(function () { showmaskbg(false); }); $('#dialogadd_odometerdate').datetimepicker({ timepicker: false, format: 'm/d/Y', enterLikeTab: false, onSelectDate: function (v, inp) { var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00'); inp.parent().data('val', [date]); } }); $('#dialogaddenginehours_date').datetimepicker({ timepicker: false, format: 'm/d/Y', enterLikeTab: false, onSelectDate: function (v, inp) { var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00'); inp.parent().data('val', [date]); } }); function resizeContent() { //$('#divcontent').css('height', $(window).height() - $('#divcontent').offset().top - 4); //$('.content_main').css('min-height', 0); } vm = new Vue({ el: '#assetinfo', data: { asset: { CurrentLocation: {}, CurrentHours: {}, CurrentIdleHours: {}, CurrentOdometer: {} } }, methods: { reload: function (data) { this.asset = data; } } }); window.onresize = resizeContent; resizeContent(); var dt = new Date(currentdate); var text_date = $('#text-date'); var m = dt.getMonth() + 1; var d = dt.getDate(); text_date.val((m < 10 ? '0' : '') + m + '/' + (d < 10 ? '0' : '') + d + '/' + dt.getFullYear()); //window.parent.OnTimelineLoaded(text_date[0]); text_date.datetimepicker({ timepicker: false, format: 'm/d/Y', enterLikeTab: false, onSelectDate: function (v, inp) { var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00'); inp.parent().data('val', [date]); } }); }); var timelineLoaded = false; function OnRefresh() { if (!timelineLoaded) { return; } var date = $('#text-date').val(); $('#iftimeline')[0].contentWindow.OnRefresh(date); } function OnClose() { window.parent.closePopupView(); } var assetdata; function loadAssetInfo() { showloading(true); $('#td_scheduledmaintenance').empty(); $('#td_rental').empty(); $('#td_alerts').empty(); $('#td_assetstatus').empty(); $('#td_utilization').empty(); $('#span_location').hide(); $('#span_currentoperator').hide(); $('#btnodometeradd').hide(); $('#btnenginehoursadd').hide(); assetdata = undefined; getNowFormatDate(); assetrequest("GetAssetDetailInfo", contractorid + String.fromCharCode(170) + assetid, function (data) { showloading(false); if (typeof (data) === "string") { return; } assetdata = data; if (!isNaN(assetdata.FuelLevel) && assetdata.FuelLevel > 0) { showFuelLevelChart(60, assetdata.FuelLevel); } if (!data.CurrentLocation) { $('#span_location').hide(); data.CurrentLocation = {}; } else { $('#span_location').show(); showLocationInfo(data); } if (data.CurrentOperator) $('#span_currentoperator').show(); else $('#span_currentoperator').hide(); if (!data.CurrentHours) data.CurrentHours = { 'IsEmpty': true }; else data.CurrentHours.IsEmpty = false; if (!data.CurrentIdleHours) data.CurrentIdleHours = {}; if (!data.CurrentOdometer) data.CurrentOdometer = { 'IsEmpty': true }; else data.CurrentOdometer.IsEmpty = false; vm.reload(data); createAssetIcon(data); GetAssetRental(); if (data.Description && data.Description !== "") { data.Description = replaceHtmlText(data.Description); $("#tddesc").html(data.Description); } else $("#tddesc").html(""); if ((IsSupperAdmin || isAllowed) && canAddReading() && canEditAsset) { if (data.OnRoad) { $('#btnodometeradd').show(); $('#btnenginehoursadd').hide(); } else { $('#btnodometeradd').hide(); $('#btnenginehoursadd').show(); } } }, function (err) { showloading(false); }); } function createScheduledMaintenanceTd() { $('#td_scheduledmaintenance').empty(); var ttd = $('#td_scheduledmaintenance'); var div = $('<div class="div_titlte">' + GetTextByKey("P_MV_SCHEDULEDMAINTENANCE", "Scheduled Maintenance") + '</div>'); var tab = $('<table style="width: 100%;"></table>'); ttd.append(div); ttd.append(tab); var tr = $('<tr></tr>'); tab.append(tr); var td = $('<td colspan="2" id="td_lastinspection" style="display: none;"></td>'); tr.append(td); var b = $('<b>' + GetTextByKey("P_MV_LASTINSPECTION_COLON", "Last Inspection:") + ' </b>'); td.append(b); b = $('<b><a href="#" id="a_lastinspection"></a></b>'); td.append(b); tr = $('<tr></tr>'); tab.append(tr); td = $('<td class="td_pm">' + GetTextByKey("P_MV_REVENTATIVEMAINTENANCEPLAN_COLON", "PM Plan: ") + '</td>'); tr.append(td); td = $('<td><span id="sppmplan"></span></td>'); tr.append(td); td = $('<td></td>'); tr.append(td); var span = $('<span id="btnaddplan" class="iconasset" style="cursor: pointer; margin-left: 8px;width:30px;" onclick="showPMSchedules();"></span>').attr('title', GetTextByKey("P_MV_EDITPLAN", "Edit Plan")); td.append(span); tr = $('<tr id="tr_nextservice" style="display: none;"></tr>'); tab.append(tr); td = $('<td class="td_pm" style="font-weight:unset;">' + GetTextByKey("P_MV_NEXTSERVICE_COLON", "Next Service: ") + '</td>'); tr.append(td); td = $('<td colspan="2" id="td_nextservice"></span></td>'); tr.append(td); tr = $('<tr></tr>'); tab.append(tr); td = $('<td colspan="3" id="td_maintenancerecord" style="display: none;"></td>'); tr.append(td); } function createRentalInfomationTd() { $('#td_rental').empty(); var ttd = $('#td_rental'); var div = $('<div class="div_titlte">' + GetTextByKey("P_MV_RENTALINFORMATION", "Rental Information") + '</div>'); var tab = $('<table style="width: 100%;"></table>'); ttd.append(div); ttd.append(tab); var tr = $('<tr></tr>'); tab.append(tr); var td = $('<td style="width: 80px;">' + GetTextByKey("P_MV_STARTDATE_COLON", "Start Date:") + '</td>'); tr.append(td); var span = $('<span style="margin-left: 5px;" id="rental_startdate"></span>'); td.append(span); tr = $('<tr></tr>'); tab.append(tr); td = $('<td style="width: 110px;" >' + GetTextByKey("P_MV_PROJECTRETURNDATE_COLON", "Proj Return Date:") + '</td>'); tr.append(td); var span = $('<span style="margin-left: 5px;" id="rental_projreturndate"></span>'); td.append(span); tr = $('<tr></tr>'); tab.append(tr); td = $('<td style="width: 110px;"> ' + GetTextByKey("P_MV_RENTALSTATUS_COLON", "Rental Status:") + '</td>'); tr.append(td); var span = $('<span style="margin-left: 5px;" id="rental_rentalstatus"></span>'); td.append(span); } function createGridTd(type) { var width = 400; var title = ""; if (type === "alerts") { width = 450; title = GetTextByKey("P_MV_ALERTLAST14DAYS", "Alerts Last 14 Days"); } else if (type === "assetstatus") { width = 400; title = GetTextByKey("P_MV_ASSETSTATUS", "Asset Status"); } else if (type === "utilization") { width = 500; title = GetTextByKey("P_MV_UTILIZATION", "Utilization"); } var td = $('#td_' + type); td.empty(); var div = $('<div class="div_titlte">' + title + '</div>'); //div.css('width', width); td.append(div); div = $('<div style="height: 150px;" id="div' + type + '"></div>'); //div.css('width', width); td.append(div); } function showFuelLevelChart(height, value) { // 基于准备好的dom,初始化echarts实例 var p = $("#assetfuelleveldiv"); p.empty().show(); p.append($("<div></div>").text(GetTextByKey("P_MV_FUEL", "Fuel"))); var bar = $("<div></div>").css("height", height).css("width", 30).css("border", "2px #0079c1 solid").css("position", "relative"); p.append(bar); var topbar = $("<div></div>").css("height", height * (1 - value / 100)); bar.append(topbar); var bottombar = $("<div></div>").css("height", height * (value / 100)); bar.append(bottombar); if (value > 40) bottombar.css("background-color", "#91c7ae"); else if (value > 25) bottombar.css("background-color", "#ffc000"); else bottombar.css("background-color", "#ff0000"); for (var i = 0; i < 10; i++) { var cell = $("<div></div>").css("height", height / 10).css("border-bottom", "1px #0079c1 solid") .css("width", "100%").css("position", "absolute").css("top", i * height / 10); bar.append(cell); } p.append($("<div></div>").text(value + "%")); } function showLocationInfo(asset) { var loc = asset.CurrentLocation; if (asset.OnRoad && (loc.Speed > 0 || (loc.Speed == 0 && asset.MoveStatus != 0))) { var speedtext = ""; if (loc.Speed == 0) { if (asset.MoveStatus == 2) speedtext = "Stopped On"; else if (asset.MoveStatus == 3) speedtext = "Stopped Off"; } showSpeedChart(loc.Speed, loc.PostedSpeedLimit, loc.SpeedUnits, speedtext); } } var speedChart; function showSpeedChart(speed, postspeed, units, speedtext) { var max = Math.max(speed, postspeed); max = (parseInt(max / 25) + 1) * 25; if (postspeed <= 0) postspeed = max; $("#assetspeeddiv").show(); // 基于准备好的dom,初始化echarts实例 if (!speedChart) speedChart = echarts.init(document.getElementById("assetspeeddiv")); option = { tooltip: { formatter: '{c} {b}' }, toolbox: { }, //backgroundColor: 'black', series: [ { name: units, type: 'gauge', max: max, detail: { //formatter: '{value}', formatter: function (value) { var v = value + " " + units if (speedtext != "") v += "\r\n\r\n" + speedtext return v; }, offsetCenter: speedtext != "" ? ["0", "60%"] : ["0", "40%"], fontSize: 10, color: speedtext != "" ? "black" : "auto" }, data: [{ value: speed.toFixed(0)/*, name: units*/ }], radius: "98%", axisLine: { show: true, lineStyle: { width: 10, //color: [[postspeed / max, '#91c7ae'], [1, '#c23531']] color: [[postspeed / max, '#91c7ae'], [1, '#ff0000']] } }, splitLine: { show: true, length: 12 }, axisTick: { splitNumber: 2 }, axisLabel: { show: true, fontSize: 9, //fontWeight: "bold", distance: 3, formatter: function (value) { return value.toFixed(0); }, }, title: { fontSize: 9, offsetCenter: ["0", -15] } } ] }; speedChart.setOption(option, true); } function canAddReading() { if (!assetdata) return false; if (assetdata.ShareStatus == 2) return false; if (!assetdata.TelematicsEnabled) return true; else { if (assetdata.OnRoad) return assetdata.CurrentOdometer.IsEmpty || assetdata.CurrentOdometer.DataSource.toLowerCase() == "calamp" || assetdata.CurrentOdometer.DataSource.toLowerCase() == "pedigree"; else return assetdata.CurrentHours.IsEmpty || assetdata.CurrentHours.DataSource.toLowerCase() == "calamp" || assetdata.CurrentHours.DataSource.toLowerCase() == "pedigree"; } } var PMAlertMessages = undefined; function GetPMInfo() { showloading(true); $('#sppmplan').text(""); //$('#pm_description').text(""); $("#btnPMMsgExp").hide(); assetrequest("GetPMInfo", contractorid + String.fromCharCode(170) + assetid, function (data) { showloading(false); if (typeof (data) === "string") { ; return; } var pmstr = GetTextByKey("P_MV_NOPLANASSIGNED", "No Plan Assigned."); if (data.ScheduleNames && data.ScheduleNames.length > 0) pmstr = data.ScheduleNames; $('#sppmplan').text(pmstr); SetDivIconHeight(); }, function (err) { showloading(false); }); } function showPMAlertMessages() { var pmdesc = "" if (PMAlertMessages && PMAlertMessages.length > 0) { var max = PMAlertMessages.length; if ($("#btnPMMsgExp").hasClass("iconchevronleft")) max = 3; for (var i = 0; i < PMAlertMessages.length && i < max; i++) { var msg = PMAlertMessages[i]; if (msg.indexOf("OVERDUE") == 0) pmdesc += "<font color='#FF0000'>" + msg + "</font><br/>"; else pmdesc += msg + "<br/>"; } $('#pm_description').html(pmdesc); } } function showPMAlertExpend() { var btn = $("#btnPMMsgExp"); if (btn.hasClass("iconchevrondown")) { btn.removeClass("iconchevrondown").addClass("iconchevronleft"); } else { btn.removeClass("iconchevronleft").addClass("iconchevrondown"); } showPMAlertMessages(); }; function GetAssetExtInfo(rentaldata) { showloading(true); assetrequest("GetAssetExtInfo", contractorid + String.fromCharCode(170) + assetid, function (data) { showloading(false); if (typeof (data) === "string") { return; } CreateScheduledMaintenance(data); if (rentaldata) { createRentalInfomationTd(); ShowAssetRental(rentaldata); } createGrid(data); SetDivIconHeight(); }, function (err) { showloading(false); }); } function GetAssetRental() { assetrequest("GetAssetRental", contractorid + String.fromCharCode(170) + assetid, function (data) { if (typeof (data) === "string") { return; } GetAssetExtInfo(data); }, function (err) { }); } function ShowAssetRental(rental) { $('#tab_rentalinformation').show(); $('#rental_startdate').text(rental.RentalDateStr); $('#rental_projreturndate').text(rental.ProjectReturnDateStr); if (rental.ProjectReturnDateStr !== "" && rental.ReturnDateStr === "") $('#rental_projreturndate').css('color', 'red'); else $('#rental_projreturndate').css('color', 'black'); $('#rental_rentalstatus').text(rental.RentalStatus); if (rental.RentalStatus.toLowerCase() === "overdue") $('#rental_rentalstatus').css('color', 'red'); else $('#rental_rentalstatus').css('color', 'black'); } function CreateScheduledMaintenance(data) { if (canViewPM) { createScheduledMaintenanceTd(); if (canViewInspection && data.InspectReportItem && data.InspectReportItem.Id !== "") { $('#td_lastinspection').show(); $('#a_lastinspection').text(data.InspectReportItem.CommitTimeStr); $('#a_lastinspection').click(function () { window.open("../Inspection/Report.aspx?rid=" + data.InspectReportItem.Id, "_blank"); }); } else { $('#td_lastinspection').hide(); $('#a_lastinspection').text(''); } if (canViewPM && data.PMPlanItems && data.PMPlanItems.length > 0) { var tr = $("#tr_nextservice"); tr.show(); var td = $('#td_nextservice'); td.empty(); for (var i = 0; i < data.PMPlanItems.length; i++) { var pmplan = data.PMPlanItems[i]; var label = $('<label></label>').text(pmplan.NextPlanDetail); if (pmplan.LastAlertUnAddressed) label.css('color', 'red'); td.append(label); td.append('<br />'); } } else { $('#tr_nextservice').hide(); $('#td_nextservice').empty(); } if (canViewPM && data.MaintenanceRecordItem && data.MaintenanceRecordItem.ID) { var item = data.MaintenanceRecordItem; var td = $('#td_maintenancerecord'); td.show(); td.empty(); var b = $('<lable>' + GetTextByKey("P_MV_LASTCOMPLETED_COLON", "Last Completed:") + ' </lable>'); td.append(b); var label = $('<label></label>').text(item.LastCompletedText); td.append(label).append('<br />'); } else { $('#td_maintenancerecord').hide(); $('#td_maintenancerecord').empty(); } GetPMInfo(); } } function createGrid(data) { if ((canViewInspection || canViewAlertsManagement) && data.AlertItems && data.AlertItems.length > 0) { createGridTd("alerts"); $('#divalerts').show(); InitAlertsGridData(); showAlertsList(data.AlertItems); } if (data.AssetStatusItems && data.AssetStatusItems.length > 0) { createGridTd("assetstatus"); InitAssetStatusGridData(); showAssetStatusList(data.AssetStatusItems); } } function OnEditAsset() { window.parent.OnEditAsset(contractorid, assetid); } function OnViewWorkOrder() { window.parent.OnViewWorkOrder(contractorid, assetid); } function OnViewMaintenanceRecord() { window.parent.OnViewMaintenanceRecord(contractorid, assetid); } function OnViewMaintenanceRecord() { window.parent.OnViewMaintenanceRecord(contractorid, assetid); } function doDirections(lat, lng) { window.parent.doDirections(lat, lng); } function doWeather(lat, lng) { window.parent.doWeather(lat, lng); } function openSendLocation(cid, assetid) { window.parent.openSendEmails(cid, assetid, 0); } function doLocationHistory(cid, assetid, name) { window.parent.doLocationHistory(cid, assetid, name); } function OnViewAlertsManagement(ctrid, assetid) { window.parent.OnViewAlertsManagement(ctrid, assetid); } function OnViewFuelRecords(ctrid, assetid) { window.parent.OnViewFuelRecords(ctrid, assetid); } function SetDivIconHeight() { var ah = $('#assetinfo').height(); if (ah) $('#div_icon').css('height', ah - 10); //var imgw = $('#td_img').width(); //if (imgw) // $('#div_img').css('width', imgw); } //************************Add Reading**************************************// function GetUserPermission() { devicerequest("GetUserPermission", contractorid, function (data) { if (typeof (data) === "string") { showAlert(data, 'Error'); return; } isAllowed = data; }, function (err) { }) } function initTime() { var c = $('#dialogadd_timehour'); for (var i = 0; i < 24; i++) { if (i < 10) c.append($("<option></option>").val("0" + i).text("0" + i)) else c.append($("<option></option>").val(i).text(i)) } c = $('#dialogadd_timeminute'); for (var i = 0; i < 60; i++) { if (i < 10) c.append($("<option></option>").val("0" + i).text("0" + i)) else c.append($("<option></option>").val(i).text(i)) } c = $('#dialogaddenginehours_timehour'); for (var i = 0; i < 24; i++) { if (i < 10) c.append($("<option></option>").val("0" + i).text("0" + i)) else c.append($("<option></option>").val(i).text(i)) } c = $('#dialogaddenginehours_timeminute'); for (var i = 0; i < 60; i++) { if (i < 10) c.append($("<option></option>").val("0" + i).text("0" + i)) else c.append($("<option></option>").val(i).text(i)) } } function initTimeZone() { devicerequest("GetTimeZones", "", function (data) { if (data) { var sel2 = $("#dialogadd_odometertimezone"); sel2.empty(); var sel3 = $("#dialogadd_enginehourstimezone"); sel3.empty(); if (data && data.length > 0) { for (var i = 0; i < data.length; i++) { sel2.append($("<option></option>").val(data[i].Key).text("(" + data[i].Value + ")" + data[i].Key).attr("offset", data[i].Tag1)); sel3.append($("<option></option>").val(data[i].Key).text("(" + data[i].Value + ")" + data[i].Key).attr("offset", data[i].Tag1)); } } sel2.val("UTC"); sel3.val("UTC"); } }, function (err) { }); } function getCustomerTimeZone() { assetrequest1("GetCustomerTimeZone", contractorid, function (data) { if (data) { customertimezone = data.Key; customerdatetime = data.Value; var datetime = customerdatetime.split(' '); var time = datetime[0]; var st = datetime[1].split(':'); var hours = st[0].length == 1 ? "0" + st[0] : st[0]; var minutes = st[1]; $("#dialogadd_odometertimezone").val(customertimezone); $('#dialogadd_odometerdate').val(time); $('#dialogadd_timehour').val(hours); $('#dialogadd_timeminute').val(minutes); $("#dialogadd_enginehourstimezone").val(customertimezone); $('#dialogaddenginehours_date').val(time); $('#dialogaddenginehours_timehour').val(hours); $('#dialogaddenginehours_timeminute').val(minutes); } }, function (err) { }); } function setIconBr(div_icon) { var br = '<br />'; //if (_this.type == 0) div_icon.append(br); } function createAssetIcon(asset) { var loc = asset.CurrentLocation; var div_icon = $('#div_icon'); div_icon.empty(); var span = $('<span class="icondirection" style="cursor: pointer;" onclick="doDirections(' + loc.Latitude + ',\'' + loc.Longitude + '\')" title="' + GetTextByKey("P_MV_DIRECTIONS", "Directions") + '"></span>'); div_icon.append(span); setIconBr(div_icon); if (loc.FromSmartWitness && enableSmartWitness) { span = $("<span class='iconvideo' style='cursor:pointer;' onclick='openRequestVideoDialog(" + asset.ID + ")' title='" + GetTextByKey("P_MV_VIDEOREQUEST", "Video Request") + "'></span>"); div_icon.append(span); setIconBr(div_icon); } span = $("<span class='iconmail' style='cursor:pointer;' onclick='openSendLocation(\"" + contractorid + "\"," + asset.ID + ")' title='" + GetTextByKey("P_MV_SENDLOCATION", "Send Location") + "'></span>"); div_icon.append(span); setIconBr(div_icon); //assetLocations[asset.ID] = loc; span = $('<span class="iconweather" style="cursor: pointer; " onclick="doWeather(' + loc.Latitude + ',\'' + loc.Longitude + '\')" title="' + GetTextByKey("P_MV_WEATHER", "Weather") + '"></span>'); div_icon.append(span); setIconBr(div_icon); if (canEditAsset) { span = $('<span class="iconasset" style="cursor: pointer; " onclick="OnEditAsset(\'' + contractorid + '\',\'' + asset.ID + '\')" title="' + GetTextByKey("P_MV_EDITASSET", "Edit Asset") + '"></span>'); div_icon.append(span); setIconBr(div_icon); } if (canViewWorkOrder) { span = $('<span class="iconmapworkorder" style="cursor: pointer; " onclick="OnViewWorkOrder(\'' + contractorid + '\',\'' + asset.ID + '\')" title="' + GetTextByKey("P_MV_WORKORDERS", "Work Orders") + '"></span>'); div_icon.append(span); setIconBr(div_icon); } if (canViewMR) { span = $('<span class="iconmaintenancerecord" style="cursor: pointer; " onclick="OnViewMaintenanceRecord(\'' + contractorid + '\',\'' + asset.ID + '\')" title="' + GetTextByKey("P_MV_MAINTENANCERECORD", "Maintenance Record") + '"></span>'); div_icon.append(span); setIconBr(div_icon); } span = $('<span class="iconlochis" style="cursor: pointer; " onclick="doLocationHistory(\'' + contractorid + '\',' + asset.ID + ', \'' + encodeURIComponent(asset.DisplayName).replace("'", "\\'") + '\')" title="' + GetTextByKey("P_MA_LOCATIONHISTORY", "Location History") + '" data-asset=' + asset + '></span>'); div_icon.append(span); setIconBr(div_icon); if (canViewAlertsManagement) { span = $('<span class="iconmapmanagealerts" style="cursor: pointer; " onclick="OnViewAlertsManagement(\'' + contractorid + '\',\'' + asset.ID + '\')" title="' + GetTextByKey("P_ALERTSMANAGEMENT", "Alerts Management") + '"></span>'); div_icon.append(span); setIconBr(div_icon); } if (canViewFuelRecords) { span = $('<span class="iconmapfuelrecord" style="cursor: pointer; " onclick="OnViewFuelRecords(\'' + contractorid + '\',\'' + asset.ID + '\')" title="' + GetTextByKey("P_FUELRECORDS", "Fuel Records") + '"></span>'); div_icon.append(span); setIconBr(div_icon); } if (asset.AttachmentCount > 0) { span = $('<span class="iconatta" style="cursor: pointer;" title="' + GetTextByKey("P_WO_ATTACHMENTS", "Attachments") + '"></span>'); span.click(asset.ID, function (e) { getAssetMapAttachments(e.data); }); div_icon.append(span); setIconBr(div_icon); } } var grid_alertsdt; function showAlertsList(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; for (var j in r) { if (j === "AlertLocalTime") r[j] = { DisplayValue: r["AlertLocalTimeStr"], Value: r[j] }; } var fr = { Values: r }; rows.push(fr); } grid_alertsdt.setData(rows); } function InitAlertsGridData() { grid_alertsdt = new GridView('#divalerts'); grid_alertsdt.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'AlertLocalDateStr', caption: GetTextByKey("P_MV_DATE", "Date"), valueIndex: 'AlertLocalDateStr', css: { 'width': 70, 'text-align': 'left' } }, { name: 'AlertLocalTimeStr', caption: GetTextByKey("P_MV_TIME", "Time"), valueIndex: 'AlertLocalTimeStr', css: { 'width': 75, 'text-align': 'left' } }, { name: 'Level', caption: GetTextByKey("P_MV_LEVEL", "Level"), valueIndex: 'Level', css: { 'width': 60, 'text-align': 'left' } }, { name: 'Description', caption: GetTextByKey("P_MV_DESCRIPTION", "Description"), valueIndex: 'Description', css: { 'width': 200, 'text-align': 'left' } } ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.key = list_columns[hd].valueIndex; col.allowFilter = list_columns[hd].allowFilter; columns.push(col); } grid_alertsdt.canMultiSelect = false; grid_alertsdt.columns = columns; grid_alertsdt.init(); grid_alertsdt.selectedrowchanged = function (rowindex) { var rowdata = grid_alertsdt.source[rowindex]; if (rowdata) { } } } var grid_assetstatusdt; function showAssetStatusList(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; for (var j in r) { if (j === "EventLocalTime") r[j] = { DisplayValue: r["EventLocalTimeStr"], Value: r[j] }; } var fr = { Values: r }; rows.push(fr); } grid_assetstatusdt.setData(rows); } function InitAssetStatusGridData() { grid_assetstatusdt = new GridView('#divassetstatus'); grid_assetstatusdt.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'EventLocalTime', caption: GetTextByKey("P_MV_DATE", "Date"), valueIndex: 'EventLocalTime', css: { 'width': 100, 'text-align': 'left' } }, { name: 'AttributeName', caption: GetTextByKey("P_MV_READING", "Reading"), valueIndex: 'AttributeName', css: { 'width': 120, 'text-align': 'left' } }, { name: 'Result', caption: GetTextByKey("P_MV_RESULT", "Result"), valueIndex: 'Result', css: { 'width': 150, 'text-align': 'left' } } ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.key = list_columns[hd].valueIndex; col.allowFilter = list_columns[hd].allowFilter; columns.push(col); } grid_assetstatusdt.canMultiSelect = false; grid_assetstatusdt.columns = columns; grid_assetstatusdt.init(); grid_assetstatusdt.selectedrowchanged = function (rowindex) { var rowdata = grid_assetstatusdt.source[rowindex]; if (rowdata) { } } } var grid_utilizationdt; function showUtilizationList(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; for (var j in r) { if (j === "AlertLocalTime") r[j] = { DisplayValue: r["AlertLocalTimeStr"], Value: r[j] }; } var fr = { Values: r }; rows.push(fr); } grid_utilizationdt.setData(rows); } function InitUtilizationGridData() { grid_utilizationdt = new GridView('#divutilization'); grid_utilizationdt.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'AlertLocalTime', caption: "", valueIndex: 'AlertLocalTime', css: { 'width': 70, 'text-align': 'left' } }, { name: 'TotalHours', caption: GetTextByKey("P_MV_TOTALHOURS", "Total Hours"), TotalHours: 'Level', css: { 'width': 80, 'text-align': 'left' } }, { name: 'WorkingHours', caption: GetTextByKey("P_MV_TOTALHOURS", "Working Hours"), TotalHours: 'WorkingHours', css: { 'width': 100, 'text-align': 'left' } }, { name: 'IdleHours', caption: GetTextByKey("P_MV_IDLEHOURS", "Idle Hours"), TotalHours: 'IdleHours', css: { 'width': 80, 'text-align': 'left' } }, { name: 'IdleHours', caption: GetTextByKey("P_MV_IDLEHOURS", "Idle %"), TotalHours: 'IdleHours', css: { 'width': 80, 'text-align': 'left' } } ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.key = list_columns[hd].valueIndex; col.allowFilter = list_columns[hd].allowFilter; columns.push(col); } grid_utilizationdt.canMultiSelect = false; grid_utilizationdt.columns = columns; grid_utilizationdt.init(); grid_utilizationdt.selectedrowchanged = function (rowindex) { var rowdata = grid_utilizationdt.source[rowindex]; if (rowdata) { } } } function getNowFormatDate() { assetrequest("GetNowFormatDate", '', function (data) { $("#refreshTimeDiv").text(GetTextByKey("P_MV_LASTREFRESHED", "Last Refreshed: ") + data); }, function (err) { }); } /** Assets Attachment **/ var imgTypes = [".jfif", ".jpg", ".jpeg", ".bmp", ".png", ".tiff", ".gif"]; var printTypes = ['.pdf', ".jfif", ".jpg", ".jpeg", ".bmp", ".png", ".tiff", ".gif"];//types to be loaded to print function getAssetMapAttachments(assetid) { showmaskbg(true); $('#dialog_assetattachments').css({ 'top': (document.documentElement.clientHeight - $('#dialog_assetattachments').height()) / 4, 'left': (document.documentElement.clientWidth - $('#dialog_assetattachments').width()) / 2 }).showDialogfixed(); var div_aatts = $("#divassetattachments").empty(); div_aatts.find(".attachmentsmask").show(); assetrequest("GetAssetMapAttachments", JSON.stringify([contractorid, assetid]), function (data) { div_aatts.find(".attachmentsmask").hide(); if (data && data.length > 0) { for (var i = 0; i < data.length; i++) { var att = data[i]; if (imgTypes.indexOf(att.FileType.toLowerCase()) >= 0) att.ThumbnailUrl = att.Url + "&thumb=1"; var div = createAttaDiv(att); if ($.inArray(att.FileType.toLowerCase(), printTypes) >= 0) { var sprint = $('<span class="attaprint"></span>').attr('title', GetTextByKey("P_WO_PRINT", 'Print')).click(att, function (e) { openPrintFrame(e.data.AttachmentType, e.data.AttachmentIdStr); }); div.append(sprint); } if (att.FileType.toLowerCase() != "url") { var sdownload = $('<span class="attadownload"></span>').attr('title', GetTextByKey("P_WO_DOWNLOAD", 'Download')).click(att, function (e) { openDownloadFrame(e.data.Url + "&d=1"); }); div.append(sdownload); } div_aatts.append(div); } } }, function () { div_aatts.find(".attachmentsmask").hide(); }); } function createAttaDiv(att, iswoatta) { var div = $('<div class="divatt"></div>').attr('title', att.Name); if (!att.FileType || att.FileType == "") att.FileType = ".jpg"; if (imgTypes.indexOf(att.FileType.toLowerCase()) >= 0) { var pic = $('<img class="picture"></img>').attr('src', att.ThumbnailUrl); pic.click(att, function (e) { window.open(e.data.Url, "_blank") }); div.append(pic); } else { var sdown = $('<img class="picture" />').click(att, function (e) { window.open(e.data.Url); }); setAttachemntIcon(att.FileType, sdown); div.append(sdown); } return div } function setAttachemntIcon(filetype, sdown) { if ([".doc", ".docx"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/word.jpg') } else if ([".xls", ".xlsx"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/excel.jpg') } else if ([".ppt", ".pptx"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/ppt.jpg') } else if ([".pdf", ".xps"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/pdf.jpg') } else if ([".mp4", ".mov", ".avi", ".mkv", ".3gp", ".ts", ".m2ts"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/vedio.jpg') } else if ([".zip", ".rar", ".7z"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/zip.jpg') } else if ([".msg"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/msg.jpg') } else if ([".xml"].indexOf(filetype) >= 0) { sdown.attr('src', '../img/icon/xml.jpg') } else { sdown.attr('src', '../img/icon/txt.jpg') } } /** End Assets Attachment **/ </script> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <div id="mask_bg" style="display: none;"> <div class="loading c-spin"></div> </div> <div> <div class="clear"></div> <div id="divcontent" style="overflow: auto; font-size: 13px;"> <div class="titlePane"> <span> </span> <%--<span class="iconprevious titleButton prev" id="btnNext" onclick="OnPrevious();"></span> <span class="iconnext titleButton next" id="btnPrevious" onclick="OnNext();"></span>--%> <span class="iconclose titleButton close" onclick="OnClose();"></span> </div> <div> <div id="div_icon" class="divicon"> </div> <div id="div_assetcontent" style="padding-left: 72px;"> <table style="width: 100%;" id="assetinfo"> <tr> <%--<td style="width: 30%; padding: 10px; border: 1px solid black; text-align:center;">--%> <td style="width: 30%; padding: 10px;"> <div id="div_img" style="border: 1px solid black; min-width: 320px; width: 100%; height: 250px; text-align: center; vertical-align: middle;"> <img v-bind:src="asset.AssetIconUrl" style="height: 248px; max-width: 100%; max-height: 100%;" /> </div> </td> <td style="width: 35%; vertical-align: top; min-width: 300px;"> <table> <tr> <td style="width: 60%; line-height: 20px;"> <b style="font-size: 16px;">{{asset.DisplayName}}</b> <br /> <label data-lgid="P_MA_ASSETTYPE_COLON">Asset Type:</label> <label>{{asset.TypeName}}</label> <br /> <b class="assetlable" data-lgid="P_MV_MAKE_COLON">Make:</b> <b>{{asset.MakeName}}</b> <b class="assetlable" data-lgid="P_MV_MODEL_COLON">Model:</b> <b>{{asset.ModelName}}</b> <br /> <label data-lgid="P_MV_VINSN_COLON">VIN/SN:</label> <label>{{asset.VIN}}</label> <br /> <label data-lgid="P_MV_YEAR_COLON">Year:</label> <label>{{asset.MakeYear>0?asset.MakeYear:""}}</label> <br /> <b data-lgid="P_MV_GROUPS_COLON">Group(s):</b> <label>{{asset.GroupNames}}</label> <br /> <br /> <span id="span_currentoperator" style="display: none;"> <label data-lgid="P_MV_CURRENTOPERATOR_COLON">Current Operator:</label> <label>{{asset.CurrentOperator}}</label> <br /> <br /> </span> <b data-lgid="P_MV_DESCRIPTION_COLON">Description:</b> <label id="tddesc"></label> </td> <td style="width: 40%; text-align: right; vertical-align: top;"> <br /> <b style="font-size: 14px;" data-lgid="P_MV_ODOMETER_COLON" v-bind:style="{display: asset.OnRoad?'': 'none'}">Odometer:</b> <b style="font-size: 14px;" data-lgid="P_MV_HOURS_COLON" v-bind:style="{display: asset.OnRoad?'none': ''}">Hours:</b> <b style="font-size: 14px;">{{asset.OnRoad?formatNumber(asset.CurrentOdometer.Corrected): formatNumber(asset.CurrentHours.Corrected)}} </b> <span id="btnodometeradd" class="assetsummaryplus" style="display: none; cursor: pointer;" onclick="openAddOdometer();"></span> <span id="btnenginehoursadd" class="assetsummaryplus" style="display: none; cursor: pointer;" onclick="openAddEnginHours();"></span> <br /> <label v-bind:style="{color: (asset.OnRoad?asset.CurrentOdometer.AsofTimeOverdue: asset.CurrentHours.AsofTimeOverdue)?'red': 'black'}">(as of {{asset.OnRoad?asset.CurrentOdometer.AsofTimeLocalStr: asset.CurrentHours.AsofTimeLocalStr}})</label> </td> </tr> </table> <table> <tr id="tr_alerts" style="display: none;"> <td><span title="Idle hours for last 14 calendar days." data-title-lgid="P_MV_IDLEHOURSFORLAST14CALENDARDAYS" data-lgid="P_MV_LDLEHOURS">ldle Hours:</span></td> <td>{{asset.CurrentIdleHours.Hours}}</td> </tr> </table> </td> <td style="width: 35%; vertical-align: top;"> <table style="width: 100%;"> <tr> <td style="vertical-align: top; position: relative;"> <iframe id="ifmapview" style="width: 100%; min-width: 320px; height: 260px; border: 1px;"></iframe> <div id="assetfuelleveldiv" style="position: absolute; top: 5px; right: 20px;"></div> <div id="assetspeeddiv" style="position: absolute; top: 105px; right: 10px; width: 130px; height: 135px; background-color: white;"></div> </td> </tr> </table> </td> </tr> <tr style="vertical-align: top; height: 150px;"> <td id="td_scheduledmaintenance" style="padding: 0px 10px;"></td> <td id="td_rental" style="padding: 0px 10px;"></td> <td id="td_locationinformation" style="padding: 0px 10px;"> <div class="div_titlte" data-lgid="P_MV_LOCATIONASSIGNMENTINFORMATION">Location Assignment Information</div> <b class="assetlable" style="width: 140px;" data-lgid="P_MV_LOCATION_COLON">Location:</b> <b>{{asset.CurrentLocation.Address}}</b> <br /> <span id="span_location" style="display: none;"> <label v-bind:style="{color: asset.CurrentLocation.AsofTimeOverdue?'red': 'black'}">(as of {{asset.CurrentLocation.AsofTimeLocalStr}} )</label> <br /> <br /> </span> <b id="refreshTimeDiv"></b> <br /> <br /> <b data-lgid="P_MV_JOBSITE_COLON">Jobsite:</b> <label>{{asset.CurrentJobSiteNames}}</label> </td> </tr> <tr style="vertical-align: top;"> <td id="td_alerts" style="padding: 0px 10px;"></td> <td id="td_assetstatus" style="padding: 0px 10px;"></td> <td id="td_utilization" style="padding: 0px 10px;"></td> </tr> </table> </div> </div> </div> </div> <div style="text-align: center; font-weight: 600; font-size: 16px; display: none;"> <table style="width: 100%;"> <tr> <td data-lgid="P_MV_TOTALHOURS_COLON">Total Hours:</td> <td></td> <td>|</td> <td data-lgid="P_MV_WORKINGHOURS_COLON">Working Hours:</td> <td></td> <td>|</td> <td data-lgid="P_MV_LDLEHOURS">Idle Hours:</td> <td></td> <td>|</td> </tr> </table> </div> <div id="div_timeline" class="div-timeline" style="display: none"> <div class="function-title" data-lgid="P_MV_TIMELINE">Timeline</div> <div class="function-bar"> <input id="text-date" type="text" /> <span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_MV_REFRESH">Refresh</span> </div> <div style="clear: both"></div> <iframe id="iftimeline" class="iframe-timeline"></iframe> </div> <div id="div_wsp" class="div-wsp"> <iframe id="ifwsp" class="iframe-wsp"></iframe> </div> <div class="dialog" id="dialog_addodometer" style="display: none; width: 600px;"> <div id="addodomask" class="maskbg" style="display: none; z-index: 1;"></div> <div class="dialog-title"><span class="title" data-lgid="P_MV_ADDODOMETER">Add Odometer</span><em class="dialog-close"></em></div> <div class="dialog-content adjust-content"> <table style="line-height: 25px; width: 100%;"> <tr> <td class="label" title="Odometer at time of reading" data-titlt-lgid="P_MV_ODOMETERATTIMEOFREADING" data-lgid="P_MV_ODOMETER_COLON">Odometer:</td> <td> <input type="text" id="dialogadd_odometer" maxlength="8" tabindex="151" /></td> </tr> <tr> <td class="label" data-lgid="P_MV_ODOMETERUOM_COLON">Odometer UOM:</td> <td> <select id="dialogadd_sel_odometeruom" tabindex="152" style="width: 204px; height: 22px;"> <option value="Mile" data-lgid="P_MV_MILE">Mile</option> <option value="Kilometre" data-lgid="P_MV_KILOMETER">Kilometer</option> </select></td> </tr> <tr> <td class="label" title="Time zone of asset reading" data-titlt-lgid="P_MV_TIMEZONEOFASSETREADING" data-lgid="P_MV_TIMEZON_COLON">Time Zone:</td> <td> <select id="dialogadd_odometertimezone" tabindex="153" /></td> </tr> <tr> <td class="label" title="Date of reading" data-titlt-lgid="P_MV_DATEOFREADING" data-lgid="P_MV_ODOMETERDATE_COLON">Odometer Date:</td> <td> <input type="text" id="dialogadd_odometerdate" maxlength="8" tabindex="154" /></td> </tr> <tr> <td class="label" title="Time of reading (military)" data-titlt-lgid="P_MV_TIMEOFREADINGMILITARY" data-lgid="P_MV_ODOMETERTIME_COLON">Odometer Time:</td> <td> <select id="dialogadd_timehour" style="width: 48px;" tabindex="155"></select><span style="font-weight: bold;"> : </span> <select id="dialogadd_timeminute" style="width: 48px;" tabindex="156"></select></td> </tr> <tr> <td class="label" data-lgid="P_MV_NOTES_COLON">Notes:</td> <td> <textarea id="dialogadd_notes" maxlength="1000" tabindex="157" style="width: 420px; height: 100px; margin-top: 3px;"></textarea></td> </tr> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_MV_CANCEL" class="dialog-close" tabindex="159" /> <input type="button" onclick="OnAddOdometer();" value="Submit" data-lgid="P_MV_SUBMIT" tabindex="158" /> <div class="clear"></div> </div> </div> <div class="dialog" id="dialog_addenginehours" style="display: none; width: 600px;"> <div id="addenginehoursmask" class="maskbg" style="display: none; z-index: 1;"></div> <div class="dialog-title"><span class="title" data-lgid="P_MV_ADDOENGINEHOURS">Add Engine Hours</span><em class="dialog-close"></em></div> <div class="dialog-content adjust-content"> <table style="line-height: 28px; width: 100%;"> <tr> <td class="label" title="Engine Hours at time of reading" data-title-lgid="P_MV_ENGINEHOURSATTIMEOFREADING" data-lgid="P_MV_ENGINEHOURS_COLON">Engine Hours:</td> <td> <input type="text" id="dialogaddgenginehours_enginehours" maxlength="8" tabindex="171" /></td> </tr> <tr> <td class="label" title="Time zone of asset reading" data-titlt-lgid="P_MV_TIMEZONEOFASSETREADING" data-lgid="P_MV_TIMEZON_COLON">Time Zone:</td> <td> <select id="dialogadd_enginehourstimezone" tabindex="172" /></td> </tr> <tr> <td class="label" title="Date of reading" data-titlt-lgid="P_MV_DATEOFREADING" data-lgid="P_MV_ENGINEHOURSDATE_COLON">Engine Hours Date:</td> <td> <input type="text" id="dialogaddenginehours_date" maxlength="8" tabindex="173" /></td> </tr> <tr> <td class="label" title="Time of reading (military)" data-titlt-lgid="P_MV_TIMEOFREADINGMILITARY" data-lgid="P_MV_ENGINEHOURSTIME_COLON">Engine Hours Time:</td> <td> <select id="dialogaddenginehours_timehour" style="width: 48px;" tabindex="174"></select><span style="font-weight: bold;"> : </span> <select id="dialogaddenginehours_timeminute" style="width: 48px;" tabindex="175"></select></td> </tr> <tr> <td class="label" data-lgid="P_MV_NOTES_COLON">Notes:</td> <td> <textarea id="dialogaddenginehours_Notes" maxlength="1000" tabindex="176" style="width: 420px; height: 100px; margin-top: 3px;"></textarea></td> </tr> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_MV_CANCEL" class="dialog-close" tabindex="178" /> <input type="button" onclick="OnAddEngineHours();" value="Submit" data-lgid="P_MV_SUBMIT" tabindex="177" /> <div class="clear"></div> </div> </div> <div class="dialog" id="dialog_pmschedulelist" style="display: none; width: 640px;"> <div id="pmschedulelistmask" class="maskbg" style="display: none; z-index: 1;"></div> <div class="dialog-title"><span class="title" data-lgid="P_MV_EDITPLAN">Edit Plan</span><em class="dialog-close"></em></div> <div class="dialog-content"> <div id="pmschedulelist" style="height: 300px;"></div> </div> <div class="dialog-func"> <input type="button" value="OK" data-lgid="P_MV_OK" class="dialog-close" tabindex="178" /> <%--<input type="button" onclick="OnAddEngineHours();" value="Submit" tabindex="177" />--%> <div class="clear"></div> </div> </div> <div class="dialog" id="dialog_pm" style="display: none; min-width: 540px; max-width: 720px; z-index: 2;"> <div class="dialog-title"><span class="title" data-lgid="P_MV_ADDASSETTOSCHEDULE">Add Asset To Schedule</span><em class="dialog-close"></em></div> <div class="dialog-content" style="line-height: 24px; padding-left: 20px; padding-right: 20px;"> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_MV_CANCEL" class="dialog-close" tabindex="201" /> <input type="button" id="btnSetPMSchedule" value="OK" data-lgid="P_MV_OK" tabindex="200" /> <div class="clear"></div> </div> </div> <div class="dialog" id="dialog_assetattachments" style="display: none; width: 600px;"> <div class="dialog-title"><span class="title" data-lgid="P_WO_ATTACHMENTS">Attachments</span><em class="dialog-close"></em></div> <div class="dialog-content"> <div id="divassetattachments" style="height: 320px; overflow-y: auto;"></div> </div> <div class="dialog-func"> <input type="button" value="Close" data-lgid="P_MV_CLOSE" class="dialog-close" tabindex="178" /> <div class="clear"></div> </div> <div id="attachmentsmask" class="maskbg" style="display: none;"></div> </div> </asp:Content>