2024-03-26 15:56:31 +08:00

885 lines
40 KiB
Plaintext

<%@ Page Title="" Language="C#" MasterPageFile="~/MachineDeviceManagement/DeviceManagementBase.master" AutoEventWireup="true" CodeFile="ManageGPSDevices.aspx.cs" Inherits="ManageGPSDevices" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<style type="text/css">
::-ms-clear, ::-ms-reveal {
display: none;
}
.selectinput {
width: 150px;
margin-right: 10px;
}
#dialogdatatb td {
padding-top: 30px;
}
.a {
text-decoration: none;
color: #2140fb;
}
</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("../fic/js/utility.js")%>" type="text/javascript"></script>
<script type="text/javascript">
var IsSuperAdmin =<%=IsSuperAdmin ?"true":"false"%>;
var IsAdmin =<%=IsAdmin ?"true":"false"%>;
var IsDealer = <%=IsDealer ?"true":"false"%>;
var contractors = [];
function devicerequest(method, param, callback, error) {
_network.request("MachineDeviceManagement/ManageGPSDevices.aspx", -1, method, param, callback, error || function (e) {
showmaskbg(false, true);
showAlert(GetTextByKey('P_MD_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_MD_QUERY', 'Query'));
});
}
function OnExportInImport() {
var d = JSON.stringify(errordata);
var data = new FormData();
data.append('type', 'set');
data.append('ClientData', d);
$.ajax({
url: "../ExportToFile.aspx",
type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
data: data,
success: function (data) {
if (data && data != "")
window.open("../ExportToFile.aspx?type=devicesexcel&key=" + data);
},
error: function (err) {
}
});
}
function CloseDialog(type) {
$('#dialog_gpsdevice1').hideDialog();
if (type == 1) {
OnRefresh();
}
else {
showmaskbg(false);
}
}
function ShowDeviceDialog(type) {
//showmaskbg(true);
$('#dialog_gpsdevice1')
.attr('act', type)
.showDialogRight();
}
function OnAdd() {
gpsDeviceID = undefined;
gpsdata = undefined;
var cid = $('#sel_contractor').val();
ShowDeviceDialog('add');
execIframeFunc("init", [cid], "iframe_gpsdevice");
}
var gpsDeviceID;
var gpsdata;
function OnEdit(type) {
var gps = grid_dt.source[grid_dt.selectedIndex];
if (!gps) {
gpsDeviceID = undefined;
return;
}
gpsdata = gps;
gpsDeviceID = gps.Id;
var cid = $('#sel_contractor').val();
ShowDeviceDialog('edit');
execIframeFunc("init", [cid, gps, type], "iframe_gpsdevice");
}
function OnDblClick(e) {
OnEdit(0);
}
function OnRefresh() {
showloading(true);
var cid = $('#sel_contractor').val();
var searchtxt = "";
searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
devicerequest("GetGPSDevices", JSON.stringify([cid, searchtxt]), function (data) {
showDevices(data);
showloading(false);
}, function (err) {
showloading(false);
});
}
var errordata;
function showDevices(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
if (r.PairedAsset) {
r.MachineID = r.PairedAsset.Id;
r.VIN = r.PairedAsset.VIN;
r.Name = r.PairedAsset.Name;
r.Year = r.PairedAsset.Year;
r.Make = r.PairedAsset.MakeName;
r.Model = r.PairedAsset.ModelName;
r.MachineType = r.PairedAsset.TypeName;
r.EngineHours = r.PairedAsset.EngineHours;
r.EngineHoursDate = r.PairedAsset.EngineHoursDate;
r.EngineHoursDateStr = r.PairedAsset.EngineHoursDateStr;
}
else {
r.MachineID = "";
r.VIN = "";
r.Name = "";
r.Year = "";
r.Make = "";
r.Model = "";
r.MachineType = "";
r.EngineHours = "";
r.EngineHoursDate = "";
r.EngineHoursDateStr = "";
}
for (var j in r) {
if (j === "Status")
r[j] = { DisplayValue: r["Status"] === 1 ? GetTextByKey("P_MD_ACTIVE", "Active") : GetTextByKey("P_MD_INACTIVE", "Inactive"), Value: r[j] };
else if (j === "AddDate")
r[j] = { DisplayValue: r["AddDateStr"], Value: r[j] };
else if (j === "InvoiceDate")
r[j] = { DisplayValue: r["InvoiceDateStr"], Value: r[j] || "" };
else if (j === "ServiceStartDate")
r[j] = { DisplayValue: r["ServiceStartDateStr"], Value: r[j] || "" };
else if (j === "EngineHoursDate")
r[j] = { DisplayValue: r["EngineHoursDateStr"], Value: r[j] || "" };
else if (j === "EngineHours")
r[j] = r[j] === 0 ? "" : r[j];
else if (j === "Year")
r[j] = r[j] === 0 ? "" : r[j];
else if (j === "Name")
r[j] = r[j] === "0" ? "" : r[j];
else if (j == "FIInstalltion") {
r[j] = { DisplayValue: r[j] == 1 ? GetTextByKey("P_UTILITY_YES", "Yes") : GetTextByKey("P_UTILITY_NO", "No"), Value: r[j] };
}
}
if (r.VIN == null) {
r.VIN = "";
}
rows.push(r);
}
grid_dt.setData(rows);
}
var grid_dt;
function InitGridData() {
grid_dt = createGridView('#devicelist');
var list_columns = [
{ name: 'SN', caption: GetTextByKey("P_MD_SN", "Air ID or SN"), valueIndex: 'SerialNumber', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'AlternativeSerialNumber', caption: GetTextByKey("P_MD_ESN", "ESN"), valueIndex: 'AlternativeSerialNumber', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'DeviceType', caption: GetTextByKey("P_MD_DEVICETYPE", "Device Type"), valueIndex: 'DeviceType', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'Source', caption: GetTextByKey("P_MD_SOURCE", "Source"), valueIndex: 'SourceName', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'Status', caption: GetTextByKey("P_MD_STATUS", "Status"), valueIndex: 'Status', allowFilter: true, css: { 'width': 80, 'text-align': 'left' } },
{ name: 'AddDate', caption: GetTextByKey("P_MD_ADDDATE", "Add Date"), valueIndex: 'AddDate', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
{ name: 'FIInstalltion', caption: GetTextByKey("P_MD_FIINSTALL", "FI Install"), valueIndex: 'FIInstalltion', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
{ name: 'Installer', caption: GetTextByKey("P_MD_INSTALLER", "Installer"), valueIndex: 'Installer', allowFilter: true, css: { 'width': 100, 'text-align': 'left' } },
{ name: 'Notes', caption: GetTextByKey("P_MD_NOTES", "Notes"), valueIndex: 'Notes', css: { 'width': 200, 'text-align': 'left' } },
{ name: 'ServiceStartDate', caption: GetTextByKey("P_MD_SERVICESTATDATE", "Service Start Date"), valueIndex: 'ServiceStartDate', allowFilter: true, css: { 'width': 110, 'text-align': 'left' } },
{ name: 'VIN', caption: GetTextByKey("P_MD_ASSETVINSN", "Asset VIN/SN"), valueIndex: 'VIN', allowFilter: true, css: { 'width': 200, 'text-align': 'left' } },
{ name: 'Name', caption: GetTextByKey("P_MD_ASSETNAME", "Asset Name"), valueIndex: 'Name', allowFilter: true, css: { 'width': 200, 'text-align': 'left' } },
{ name: 'Year', caption: GetTextByKey("P_MD_YEAR", "Year"), valueIndex: 'Year', allowFilter: true, css: { 'width': 80, 'text-align': 'left' } },
{ name: 'Make', caption: GetTextByKey("P_MD_MAKE", "Make"), valueIndex: 'Make', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'Model', caption: GetTextByKey("P_MD_MODEL", "Model"), valueIndex: 'Model', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'MachineType', caption: GetTextByKey("P_MD_TYPE", "Type"), valueIndex: 'MachineType', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'EngineHours', caption: GetTextByKey("P_MD_ENGINEHOURS", "Engine Hours"), valueIndex: 'EngineHours', css: { 'width': 90, 'text-align': 'left' } },
{ name: 'EngineHoursDate', caption: GetTextByKey("P_MD_ENGINEHOURSDATE", "Engine Hours Date"), valueIndex: 'EngineHoursDate', css: { 'width': 120, 'text-align': 'left' } },
{ name: 'InvoiceDate', caption: GetTextByKey("P_MD_INVOICEDATE", "Invoice Date"), valueIndex: 'InvoiceDate', css: { 'width': 100, 'text-align': 'left' } },
{ name: 'InvoiceNumber', caption: GetTextByKey("P_MD_INVOICENUMBER", "Invoice #"), valueIndex: 'InvoiceNumber', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'SalesOrderNumber', caption: GetTextByKey("P_MD_SALESORDER", "Sales Order #"), valueIndex: 'SalesOrderNumber', allowFilter: true, css: { 'width': 120, 'text-align': 'left' } },
{ name: 'Edit', caption: "", css: { 'width': 30, 'text-align': 'center' } },
{ name: 'ONotes', caption: "", css: { 'width': 30, 'text-align': 'center' } },
{ name: 'ChangeContractor', caption: "", css: { 'width': 30, 'text-align': 'center' } }
];
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;
if (col.name === "Edit") {
col.sortable = false;
col.resizable = false;
col.type = GridView.ColumnTypes.Icon;
col.text = "edit";
col.events = {
onclick: function () {
OnEdit(0);
}
};
col.classFilter = function (e) {
return "icon-col";
}
col.attrs = { 'title': GetTextByKey("P_MD_EDIT", 'Edit') };
}
else if (col.name === "ONotes") {
col.sortable = false;
col.resizable = false;
col.type = GridView.ColumnTypes.Icon;
col.text = "comment";
col.events = {
onclick: function () {
OnEdit(1);
}
};
col.classFilter = function (e) {
return "icon-col";
}
col.attrs = { 'title': GetTextByKey("P_MD_NOTES", 'Notes') };
}
else if (col.name === "ChangeContractor") {
if (!IsDealer)
continue;
col.sortable = false;
col.resizable = false;
col.type = GridView.ColumnTypes.Icon;
col.text = "exchange";
col.events = {
onclick: function () {
OnChangeContractor(1);
}
};
col.classFilter = function (e) {
return "icon-col";
}
col.attrs = { 'title': GetTextByKey("P_MD_CHANGECONTRACTOR", 'Change Contractor') };
}
else if (col.name === "FIInstalltion" || col.name === "Installer" || col.name === "SalesOrderNumber") {
if (!IsSuperAdmin)
continue;
}
columns.push(col);
}
grid_dt.multiSelect = false;
grid_dt.columns = columns;
grid_dt.init();
grid_dt.onRowDblClicked = function () { OnEdit(0) };
grid_dt.onSelectedRowChanged = function (rowindex) {
var rowdata = grid_dt.source[rowindex];
if (rowdata) {
gpsDeviceID = rowdata.Id;
}
}
}
function OnChangeContractor() {
var gps = grid_dt.source[grid_dt.selectedIndex];
if (!gps) {
gpsDeviceID = undefined;
return;
}
var sel_con = $("#dialog_contractor").empty();
//sel_con.append($('<option></option>').val("-1").text(" "));
for (var i = 0; i < contractors.length; i++) {
var kv = contractors[i];
if ($('#sel_contractor').val() != kv.Key) {
op_search = $('<option></option>').val(kv.Key).text(kv.Value);
sel_con.append(op_search);
}
}
$("#txtChangeConNotes").val("");
//$("#dialog_contractor").val("");
showmaskbg(true);
$('#dialog_changecon').data("gps", gps)
.css({
'top': (document.documentElement.clientHeight - $('#dialog_changecon').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_changecon').width()) / 2
}).showDialogfixed();
}
function ChangeContractor() {
var gps = $('#dialog_changecon').data("gps");
if (!gps)
return;
var ps = [];
ps.push(gps.Id);
ps.push($("#dialog_contractor").val());
ps.push(htmlencode($("#txtChangeConNotes").val()));
devicerequest('ChangeGPSContractor', JSON.stringify(ps), function (data) {
if (data !== "OK") {
showAlert(data, GetTextByKey("P_MD_ERROR", 'Error'));
return;
}
$('#dialog_changecon').hideDialog();
OnRefresh();
});
}
//admin用户 获取所有contractor
function getContractors() {
devicerequest('GetContractors', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_MD_ERROR", 'Error'));
return;
}
if (data && data.length > 0) {
var sel_search = $('#sel_contractor').empty();
var sel_con = $("#dialog_contractor").empty();
sel_con.append($('<option></option>').val("-1").text(" "));
for (var i = 0; i < data.length; i++) {
var kv = data[i];
var op_search = $('<option></option>').val(kv.Key).text(kv.Value);
sel_search.append(op_search);
op_search = $('<option></option>').val(kv.Key).text(kv.Value);
sel_con.append(op_search);
}
contractors = data;
}
else
contractors = [];
var contractorid = htmlencode($.trim($('#sel_contractor').val()));
if (contractorid || contractorid == "")
$("#btnAdd").hide();
OnRefresh();
});
}
//普通用户 获取可操作的contractor
function GetContractorsByUser() {
devicerequest('GetContractorsByUser', '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_MD_ERROR", 'Error'));
return;
}
if (data && data.length > 0) {
var sel_search = $('#sel_contractor').empty();
for (var i = 0; i < data.length; i++) {
var kv = data[i];
var op_search = $('<option></option>').val(kv.Key).text(kv.Value);
sel_search.append(op_search);
}
contractors = data;
}
else
contractors = [];
var contractorid = htmlencode($.trim($('#sel_contractor').val()));
if (contractorid || contractorid == "")
$("#btnAdd").hide();
OnRefresh();
});
}
$(function () {
setPageTitle(GetTextByKey("P_MANAGEDEVICES", "Manage Devices"), true);
//$("#iframe_gpsdevice").attr("src", "AddDevice.aspx");
InitGridData();
$('#dialog_gpsdevice').dialog(function () {
showmaskbg(false);
});
$('#dialog_changecon').dialog(function () {
showmaskbg(false);
});
if (IsDealer == true) {
$('#span_contractor').css('display', '');
if (IsAdmin)
getContractors();
else {
GetContractorsByUser();
}
}
else {
OnRefresh();
}
$('#dialog_import').dialog(function () {
showmaskbg(false);
});
$('#dialog_import_result').dialog(function () {
showmaskbg(false);
});
$("#sel_contractor").change(function () {
OnRefresh();
});
$('#searchinputtxt').keydown(searchEnter);
$(window).resize(function () {
$("#devicelist").css("height", $(window).height() - $("#devicelist").offset().top - 4);
grid_dt && grid_dt.resize();
}).resize();
if (!canExport) {
$('#spExport').hide();
}
});
function searchEnter(e) {
if (e.keyCode == 13 || e.keyCode == 9) {
OnRefresh();
}
}
function OnExport() {
var cid = $('#sel_contractor').val();
var searchtxt = "";
searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
var p = [cid, searchtxt];
var param = htmlencode(JSON.stringify(p));
window.open("../ExportToFile.aspx?type=managedevices&param=" + param);
}
function getcolumnsdata() {
var columnsdata = [];
columnsdata.push({ Id: "Source", Name: GetTextByKey("P_MD_SOURCE", "Source"), Width: 120, Key: 'SourceName' });
columnsdata.push({ Id: "SN", Name: GetTextByKey("P_MD_SN", "SN"), Width: 120, Key: 'SerialNumber' });
columnsdata.push({ Id: "ESN", Name: GetTextByKey("P_MD_ESN", "ESN"), Width: 120, Key: 'AlternativeSerialNumber' });
columnsdata.push({ Id: "DeviceType", Name: GetTextByKey("P_MD_DEVICETYPE", "Device Type"), Width: 120, Key: 'DeviceType' });
columnsdata.push({ Id: "Status", Name: GetTextByKey("P_MD_STATUS", "Status"), Width: 50, Key: 'Status' });
columnsdata.push({ Id: "InvoiceDate", Name: GetTextByKey("P_MD_INVOICEDATE", "Invoice Date"), Width: 120, Key: 'InvoiceDate' });
columnsdata.push({ Id: "InvoiceNumber", Name: GetTextByKey("P_MD_INVOICENUMBER", "Invoice #"), Width: 120, Key: 'InvoiceNumber' });
if (IsSuperAdmin) {
columnsdata.push({ Id: "SalesOrderNumber", Name: GetTextByKey("P_MD_SALESORDER", "Sales Order #"), Width: 120, Key: 'SalesOrderNumber' });
}
columnsdata.push({ Id: "ServiceStartDate", Name: GetTextByKey("P_MD_SERVICESTATDATE", "Service Start Date"), Width: 120, Key: 'ServiceStartDate' });
columnsdata.push({ Id: "VIN/SN", Name: GetTextByKey("P_MA_VINSN", "VIN/SN"), Width: 120, Key: 'VIN' });
columnsdata.push({ Id: "TamperAlerts", Name: GetTextByKey("P_MD_TAMPERALERTS", "Tamper Alerts"), Width: 120, Key: 'Tamper' });
columnsdata.push({ Id: "Utilization", Name: GetTextByKey("P_MD_UTILIZATION", "Utilization"), Width: 120, Key: 'Utilization' });
if (IsSuperAdmin) {
columnsdata.push({ Id: "FIInstallation", Name: GetTextByKey("P_MD_FIINSTALLATION", "FI Installation"), Width: 120, Key: 'FIInstalltion' });
columnsdata.push({ Id: "Installer", Name: GetTextByKey("P_MD_INSTALLER", "Installer"), Width: 120, Key: 'Installer' });
}
columnsdata.push({ Id: "Notes", Name: GetTextByKey("P_MD_NOTES", "Notes"), Width: 120, Key: 'Notes' });
return columnsdata;
}
function CreateSelect(excelcolumns, colid, colname) {
var sel = $('<select style="width:180px;" name="sel_import"></select>').data('id', colid);
sel.append('<option></option>');
if (excelcolumns && excelcolumns.length > 0) {
for (var i = 0; i < excelcolumns.length; i++) {
var op = $('<option></option>').text(excelcolumns[i]).val(excelcolumns[i]);
sel.append(op);
}
sel.val(colname);
}
return sel;
}
function CreateImportColumns(excelcolumns) {
var tb = $('#tb_import');
tb.empty();
var columnsdata = getcolumnsdata();
for (var i = 0; i < columnsdata.length; i++) {
var col = columnsdata[i];
var tr = $('<tr></tr>');
tb.append(tr);
var td = $('<td class="label" style="width:150px;">' + col.Name + '</td>');
if (i < 2) {
var sp = $('<span style="color:red;">*</span>');
td.append(sp);
}
tr.append(td);
td = $('<td></td>');
tr.append(td);
var sel = CreateSelect(excelcolumns, col.Id, col.Name);
td.append(sel);
}
}
var grid_import_result = null;
function CreateImportResultGrid(data, t) {
if (grid_import_result == null) {
grid_import_result = new GridView('#div_import_grid');
}
if (t == 0 && data.length == 0) {
$('#btnOk').hide();
}
var columnsdata = getcolumnsdata();
var columns = [];
if (t == 0) {
columns.push({
type: 3,
key: 'checked',
allcheck: true,
width: 45,
align: 'center'
});
}
var styleFilter = function (item) {
if ($.nullOrEmpty(item.SourceName) || $.nullOrEmpty(item.SerialNumber)) {
return { 'color': 'red' };
}
if ((item.Source == 'NimbeLink' || item.Source == 'DigitalMatter') && $.nullOrEmpty(item.DeviceType)) {
return { 'color': 'red' };
}
};
for (var i = 0; i < columnsdata.length; i++) {
var col = {};
col.name = columnsdata[i].Id;
col.caption = columnsdata[i].Name;
col.visible = true;
col.sortable = false;
col.width = columnsdata[i].Width;
col.key = columnsdata[i].Key;
col.allowFilter = false;
if (t == 0) {
col.styleFilter = styleFilter;
}
columns.push(col);
}
grid_import_result.multiSelect = false;
grid_import_result.columns = columns;
grid_import_result.init();
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
r.checked = true;
if (r.PairedAsset) {
r.VIN = r.PairedAsset.VIN;
}
for (var j in r) {
if (j === "Status")
r[j] = { DisplayValue: r["Status"] === 1 ? GetTextByKey('P_MD_ACTIVE', "Active") : GetTextByKey('P_MD_INACTIVE', "Inactive"), Value: r[j] };
else if (j === "InvoiceDate")
r[j] = { DisplayValue: r["InvoiceDateStr"], Value: r[j] };
else if (j === "ServiceStartDate")
r[j] = { DisplayValue: r["ServiceStartDateStr"], Value: r[j] };
else if (j == "Tamper") {
r[j] = { DisplayValue: r[j] == 1 ? GetTextByKey("P_UTILITY_YES", "Yes") : GetTextByKey("P_UTILITY_NO", "No"), Value: r[j] };
}
else if (j == "FIInstalltion") {
r[j] = { DisplayValue: r[j] == 1 ? GetTextByKey("P_UTILITY_YES", "Yes") : GetTextByKey("P_UTILITY_NO", "No"), Value: r[j] };
}
else if (j == "Utilization") {
r[j] = { DisplayValue: r[j] == 1 ? GetTextByKey("P_UTILITY_YES", "Yes") : GetTextByKey("P_UTILITY_NO", "No"), Value: r[j] };
}
}
rows.push(r);
}
grid_import_result.setData(rows);
grid_import_result.reload(true);
}
var fildata;
function OnImport() {
var file = $('<input type="file" style="display: none;" accept=".xlsx" />');
file.change(function () {
fildata = this.files[0];
var formData = new FormData();
formData.append("iconFile", fildata);
formData.append("MethodName", "GetImportDevicesColumns");
formData.append("ClientData", '');
showloading(true);
$.ajax({
url: 'ManageGPSDevices.aspx',
type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
data: formData,
async: true,
success: function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_JS_IMPORT", 'Import'));
showloading(false);
} else {
CreateImportColumns(data);
$('#dialog_import')
.attr('act', 'add')
.css({
'top': (document.documentElement.clientHeight - $('#dialog_import').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_import').width()) / 2
})
.showDialogfixed();
}
},
error: function (err) {
showloading(false);
showAlert(err.statusText, GetTextByKey("P_JS_IMPORT", 'Import'));
}
});
}).click();
}
var importing = false;
var importCount = 0;
function OnImportDevices(t) {
if (!fildata)
return;
if (importing)
return;
importing = true;
var item = [];
var sels = $("select[name='sel_import']");
var tmp = '';
for (var i = 0; i < sels.length; i++) {
var sel = sels[i];
var id = $(sel).data('id');
var value = $(sel).val();
switch (id) {
case "Source":
if ($.nullOrEmpty(value)) {
tmp += GetTextByKey("P_MD_SOURCE", "Source");
}
break;
case "SN":
if ($.nullOrEmpty(value)) {
if (tmp.length > 0) {
tmp += ('/' + GetTextByKey("P_MD_SN", "SN"));
}
else {
tmp += GetTextByKey("P_MD_SN", "SN");
}
}
break;
}
var kv = { Key: id, Value: value };
item.push(kv);
}
if (tmp.length > 0) {
var s = GetTextByKey("P_MA_NOTBEEMPTY", "{0} cannot be empty.").replace('{0}', tmp);
showAlert(s, GetTextByKey("P_JS_IMPORT", 'Import'));
importing = false;
return;
}
var selected = [];
if (t == 1) {
for (var i in grid_import_result.source) {
selected.push(grid_import_result.source[i].checked);
}
grid_import_result.setData([]);
}
$('#dialog_import_result').hideDialog();
var param = JSON.stringify(item);
param = htmlencode(param);
var contractorid = htmlencode($.trim($('#sel_contractor').val()));
var formData = new FormData();
formData.append("iconFile", fildata);
formData.append("MethodName", "ImportDevices");
formData.append("ContractorID", contractorid);
formData.append("Get", t == 1 ? false : true);
if (t == 1) {
formData.append("SelectedData", selected.join(','));
}
formData.append("ClientData", param);
showloading(true);
$.ajax({
url: 'ManageGPSDevices.aspx',
type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
data: formData,
async: true,
success: function (data) {
importing = false;
try {
var d = JSON.parse(data);
$('#dialog_import').hideDialog();
errordata = [];
if (d.Count != -1) {
grid_import_result.setData([]);
$('#sp_import_result').show();
$('#sp_import_f').show();
$('#btnClose').show();
$('#btnOk').hide();
$('#btnCancel').hide();
var str = d.Count + GetTextByKey("P_MD_DEVICESIMPORTEDSUCCESSFULLY", ' Device(s) imported successfully.');
if (d.Datas.length > 0 || (d.Count == 0 && d.Datas.length == 0)) {
importCount = d.Count;
if (d.Datas.length > 0) {
errordata = $.cloneObject(d.Datas);
$('#div_import_export').show();
}
else {
$('#div_import_export').hide();
}
$('#sp_import_result').text(str);
$('#sp_import_f').text(d.Datas.length + " Failed.");
$('#dialog_import_result')
.css({
'top': (document.documentElement.clientHeight - $('#dialog_import_result').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_import_result').width()) / 2
})
.showDialogfixed();
CreateImportResultGrid(d.Datas, t);
}
else {
showAlert(str, GetTextByKey("P_JS_IMPORT", 'Import'), null, function () {
if (d.Count > 0) {
window.location.reload();
}
});
showloading(false);
}
}
else {
$('#dialog_import_result')
.css({
'top': (document.documentElement.clientHeight - $('#dialog_import_result').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_import_result').width()) / 2
})
.showDialogfixed();
$('#sp_import_result').hide();
$('#div_import_export').hide();
$('#sp_import_f').show();
$('#btnClose').hide();
$('#btnOk').show();
$('#btnCancel').show();
CreateImportResultGrid(d.Datas, t);
$('#sp_import_f').text(GetTextByKey("P_WO_COUNT", 'Count') + ": " + d.Datas.length);
}
}
catch (e) {
showAlert(data, GetTextByKey("P_JS_IMPORT", 'Import'));
showloading(false);
}
},
error: function (err) {
importing = false;
showloading(false);
showAlert(err.statusText, GetTextByKey("P_JS_IMPORT", 'Import'));
}
});
}
function EndImportDevices() {
$('#dialog_import_result').hideDialog();
if (importCount > 0) {
window.location.reload();
}
showloading(false);
}
</script>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div id="recordcontent" style="padding: 0px; margin: 0px;">
<div class="page_title" data-lgid="P_MANAGEDEVICES">Manage Devices</div>
<div class="search_bar">
<input type="password" autocomplete="new-password" style="display: none" />
<span id="span_contractor" style="display: none;">
<span data-lgid="P_MD_CONTRACTOR_COLON">Contractor:</span>
<select id="sel_contractor"></select></span>
<input type="text" id="searchinputtxt" autocomplete="off" />
<input class="search" type="button" onclick="OnRefresh();" value="Search" data-lgid="P_MD_SEARCH" style="margin-left: 5px;" />
</div>
<div class="function_title">
<span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_MD_ADD">Add</span>
<span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_MD_REFRESH">Refresh</span>
<span id="spExport" class="sbutton iconexport" onclick="OnExport();" data-lgid="P_UTILITY_EXPORTTOEXCEL">Export to Excel</span>
<span class="sbutton iconimport" onclick="OnImport();" data-lgid="P_JS_IMPORT">Import</span>
</div>
<div class="clear"></div>
<div id="devicelist"></div>
</div>
<div id="mask_bg" style="display: none;">
<div class="loading c-spin"></div>
</div>
<div class="dialog" id="dialog_gpsdevice1" style="display: none; height: 100%; border-bottom: 0; border-top: 0; z-index: 2">
<iframe id="iframe_gpsdevice" style="width: 100%; height: 100%; display: block; border: none" src="AddDevice.aspx"></iframe>
<div class="maskbg" style="display: none"></div>
</div>
<div class="dialog" id="dialog_changecon" style="display: none; width: 360px;">
<div class="dialog-title"><span class="title" data-lgid="P_MD_CHANGECONTRACTOR">Change Contractor</span><em class="dialog-close"></em></div>
<div class="dialog-content">
<table style="line-height: 25px; width: 100%;">
<tr>
<td class="label" data-lgid="P_MD_CONTRACTOR_COLON">Contractor:</td>
<td>
<select id="dialog_contractor" tabindex="1" style="width: 204px;"></select></td>
</tr>
<tr>
<td class="label" data-lgid="P_MD_NOTES_COLON">Notes:</td>
<td>
<textarea id="txtChangeConNotes" style="display: block; width: 240px; box-sizing: border-box; margin-top: 5px; height: 80px"></textarea></td>
</tr>
</table>
</div>
<div class="dialog-func">
<input type="button" value="Cancel" class="dialog-close" tabindex="5" data-lgid="P_MD_CANCEL" />
<input type="button" onclick="ChangeContractor();" value="OK" tabindex="4" data-lgid="P_MD_OK" />
<div class="clear"></div>
</div>
</div>
<div class="dialog" id="dialog_import" style="display: none;">
<div class="dialog-title"><span class="title" data-lgid="P_MD_IMPORTDEVICEFIELDMAPPING"></span><em class="dialog-close"></em></div>
<div class="machine_filter" style="margin: 9px 6px 7px; display: none;">
<span class="sbutton iconimport" onclick="OnImport()" data-lgid="P_JS_IMPORT">Add</span>
</div>
<div class="dialog-content adjust-content" style="overflow: auto;">
<table id="tb_import" class="table_holder">
</table>
</div>
<div class="dialog-func">
<input type="button" value="Close" data-lgid="P_JS_CANCEL" class="dialog-close" tabindex="28" />
<input type="button" onclick="OnImportDevices(0);" value="OK" tabindex="27" />
<div class="clear"></div>
</div>
</div>
<div class="dialog" id="dialog_import_result" style="display: none;">
<div class="dialog-title"><span class="title" data-lgid="P_JS_IMPORT"></span></div>
<div id="div_import_export" class="machine_filter" style="margin: 9px 6px 7px; display: none;">
<span class="sbutton iconexport" onclick="OnExportInImport()" data-lgid="P_UTILITY_EXPORTTOEXCEL">Export to Excel</span>
</div>
<div style="margin: 9px 6px 7px; padding-left: 20px">
<div id="sp_import_result" style="font-weight: bold;"></div>
</div>
<div id="sp_import_f" style="margin: 9px 6px 7px; padding-left: 20px; font-weight: bold;">Failed</div>
<div id="div_import_grid" style="padding-left: 20px; padding-right: 20px; height: 400px; width: 700px">
</div>
<div class="dialog-func">
<input id="btnCancel" type="button" value="Close" data-lgid="P_JS_CANCEL" class="dialog-close" tabindex="28" />
<input id="btnOk" type="button" onclick="OnImportDevices(1);" data-lgid="P_JS_IMPORT" tabindex="27" />
<input id="btnClose" type="button" onclick="EndImportDevices();" data-lgid="P_FR_CLOSE" tabindex="27" />
<div class="clear"></div>
</div>
</div>
</asp:Content>