<%@ Page Title="" Language="C#" MasterPageFile="~/MachineDeviceManagement/DeviceManagementBase.master" AutoEventWireup="true" CodeFile="AddMachineGroup.aspx.cs" Inherits="AddMachineGroup" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> <link href="<%=GetFileUrlWithVersion("../css/tabcontrol.css")%>" rel="stylesheet" /> <link href="<%=GetFileUrlWithVersion("../css/jquery.datetimepicker.css")%>" rel="stylesheet" /> <style type="text/css"> ::-ms-clear, ::-ms-reveal { display: none; } .edit-content table td textarea { height: 100px; } .edit-content table td select { height: 22px; width: 204px; } .a { text-decoration: none; color: #2140fb; } .categoryname { cursor: default; font-size: 20px; font-weight: bold; padding-top: 5px; } .plus:before { font-size: 10px; font-weight: normal; font-family: 'CalciteWebCoreIcons', 'Fontawesome'; content: '\e620'; margin-right: 5px; } .minus:before { font-size: 10px; font-weight: normal; font-family: 'CalciteWebCoreIcons', 'Fontawesome'; content: '\e621'; margin-right: 5px; } .dialogspanbtn { font-size: 14px; font-weight: normal; font-family: 'CalciteWebCoreIcons', 'Fontawesome'; cursor: pointer; background: rgb(249, 189, 117); padding: 2px; } .dialogedit:before { content: '\e61b'; } .dialogok:before { content: '\e605'; } .dialogcancel:before { content: '\e600'; } .dialogbtn { height: 24px; cursor: pointer; background: rgb(249, 189, 117); padding: 2px; } .machinetd { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .popus-close { float: right; margin-right: 6px; cursor: pointer; } .popus-close:before { content: '\e600'; } textarea { resize: none; } .divtab { overflow: auto; } .label { width: 184px; } .assetcontent table { border-collapse: collapse; width: 100%; } .assetcontent table td.label { width: 184px; text-align: right; padding-right: 10px; line-height: 24px; height: 24px; vertical-align: top; } .assetcontent table td input, .assetcontent table td textarea { border: 1px solid #a9a9a9; width: 200px; height: 18px; padding: 1px; } .assetcontent table td input[type="checkbox"] { border: none; width: 13px; } .assetcontent table td textarea { height: 100px; } .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; } #divcontent { margin: 8px; } .dialogflatbtn { background-color: rgb(235, 235, 235); border: none; padding-top: 5px; padding-bottom: 5px; cursor: pointer; width: 80px; } .dialogflatbtn:hover { background: rgb(225, 225, 225); } </style> <script src="<%=GetFileUrlWithVersion("../Maintenance/js/inputdatactr.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("../js/jquery.datetimepicker.full.js")%>"></script> <script src="<%=GetFileUrlWithVersion("../js/controls.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("../js/assetselector.js")%>" type="text/javascript"></script> <script type="text/javascript"> var IsDealer = <%=IsDealer ?"true":"false"%>; var IsAdmin =<%=IsAdmin ?"true":"false"%>; var IsSupperAdmin =<%=IsSupperAdmin ?"true":"false"%>; var isAllowed = false; var machineGroupID = "<%=MachineID %>"; var allMachineGroups; var indexInEdit; var onsitejobsiteid; var contactids; var MachineAttributes = []; var machines = []; var makes = []; var models = []; var machinetypes = []; var editableSelectMake; var editableSelectModel; var noneditwidth = 200; var editablewidth = 180; //动态加载机器列表 var displayCountPerPage = 30;//每页显示的机器条数 var currentShownIndex = -1;//当前显示的机器索引 var engineHoursBeforeChange = undefined; var _selectedRental = null; var needRefreshDataOnCancel = false;//由于在Next和Previous时直接保存机器信息,在点Cancel时也需要刷新数据 var loadingCount = 0; var customertimezone; var customerdatetime; 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_AG_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_AG_QUERY', 'Query')); }); } function init(cid, machineList, index) { allMachineGroups = machineList indexInEdit = index; if (allMachineGroups) { OnEdit(); } else { machineGroupID = undefined; if (grid_dtsm != null) { grid_dtsm.setData([]); } OnAdd(); } } function OnAdd() { machineGroupID = undefined; $('#dialog_groupname').val(''); $('#dialog_description').val(''); $('#dialog_groupcode').val(''); $("#btnPrevious").hide(); $("#btnNext").hide(); $('#selectedmachinelist input[type="checkbox"]').prop('checked', false); $('#dialog_groupname').focus(); } function OnEdit() { var group = allMachineGroups[indexInEdit]; if (!group) { return; } machineGroupID = group.Id; $('#dialog_groupname').val(group.Name); $('#dialog_description').val(group.Description); $('#dialog_groupcode').val(group.Code); grid_dtsm.setData([]); $('#selectedmachinelist input[type="checkbox"]').prop('checked', false); if (allMachineGroups.length <= 1) { $("#btnPrevious").hide(); $("#btnNext").hide(); } else { $("#btnPrevious").show(); $("#btnNext").show(); } // 加载用户信息 queryGroupMachines(); } function OnNext() { OnSave(0, gotoNext); } function gotoNext() { if (++indexInEdit > allMachineGroups.length - 1) indexInEdit = 0; OnEdit(); window.parent.changeGridSelectIndex(indexInEdit); } function OnPrevious() { OnSave(0, gotoPrevious); } function gotoPrevious() { if (--indexInEdit < 0) indexInEdit = allMachineGroups.length - 1; OnEdit(); window.parent.changeGridSelectIndex(indexInEdit); } function OnSave(exit, callback) { var item = { 'Name': $.trim($('#dialog_groupname').val()), 'Description': $.trim($('#dialog_description').val()), 'Code': $.trim($('#dialog_groupcode').val()) }; var alerttitle; if (machineGroupID) { item.Id = machineGroupID; alerttitle = GetTextByKey("P_AG_EDITASSETGROUP", "Edit Asset Group"); } else { item.Id = ""; alerttitle = GetTextByKey("P_AG_ADDASSETGROUP", "Add Asset Group"); } if (!item.Name || item.Name.length == 0) { showAlert(GetTextByKey("P_AG_GROUPNAMECANNOTBEEMPTY", 'Group Name cannot be empty.'), alerttitle); $('#dialog_groupname').focus(); return; } if (allMachineGroups != null) { for (var i = 0; i < allMachineGroups.length; i++) { var group = allMachineGroups[i] if (group.Name === item.Name && group.Id !== item.Id) { showAlert(GetTextByKey("P_AG_NAMEALREADYEXISTS", 'Group Name already exists.'), alerttitle); return; } } } item.Assets = []; var tempsource = grid_dtsm.source; if (tempsource) { for (var i = 0; i < tempsource.length; i++) { var mid = tempsource[i].ID; if (mid) { item.Assets.push(mid); } } } showloading(true); var param = JSON.stringify(item); param = htmlencode(param); devicerequest("SaveAssetGroup", param, function (data) { showloading(false); if (data.substring(0, 6) === 'Failed') { showAlert(data, alerttitle); } else { needRefreshDataOnCancel = true; machineGroupID = data; if (callback) { //showAlert("Saved successfully.", 'Save Asset'); if (allMachineGroups != null) { allMachineGroups.setItem(indexInEdit, item); } callback(item); } else { if (exit == 0) showAlert(GetTextByKey("P_AG_SAVSUCCESSFULLY", "Saved successfully."), GetTextByKey("P_AG_SAVASSETGROUP", 'Save Asset Group')); else if (exit == 1) OnExit(exit); } } }, function (err) { showloading(false); showAlert(GetTextByKey("P_AG_FAILEDTOSAVEASSETGROUP", 'Failed to save Asset Group.'), GetTextByKey("P_AG_SAVASSETGROUP", 'Save Asset Group')); }); } /************************** Machine********************************/ /*************************************************************************/ //var _selectedMachines = []; function queryGroupMachines() { devicerequest('GetAssetsByGroup', machineGroupID, function (data) { var grpMachines = data || []; //_selectedMachines = grpMachines; showSelectedMachine(grpMachines); $('#dialog_groupname').focus(); }, function (err) { showAlert(GetTextByKey("P_AG_FAILEDLOADASSETS", 'Failed to load Asset(s).'), GetTextByKey("P_AG_EDITASSETGROUP", 'Edit Asset Group')); }); } function showSelectedMachine(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; rows.push(r); } grid_dtsm.setData(rows); } function OnDelete(item) { showConfirm(GetTextByKey("P_AG_REMOVETHISASSET", "Are you sure you want to remove this asset:{0}?").replace('{0}', item.Name), GetTextByKey("P_AG_EDITGROUPASSETS", 'Edit Group Assets'), function () { var tmp = grid_dtsm.source; if (tmp != null) { for (var j = 0; j < tmp.length; j++) { if (item.ID === tmp[j].ID) { tmp.splice(j, 1); break; } } } grid_dtsm.setData(tmp); }); } function OnGroupsDelete() { showConfirm(GetTextByKey("P_AG_REMOVESELECTEDASSETS", 'Are you sure you want to remove these selected assets?'), GetTextByKey("P_AG_EDITGROUPASSETS", 'Edit Group Assets'), function () { var tmp = grid_dtsm.source; if (tmp != null) { for (var j = tmp.length - 1; j >= 0; j--) { var l = tmp[j]; if (l.selected) { tmp.splice(j, 1); } } } grid_dtsm.setData(tmp); }); } function OnGroupsAdd() { showmaskbg(true); dialogAssets.exceptSource = grid_dtsm.source.map(function (s) { return s.ID; }); dialogAssets.showSelector(); } var grid_dtsm; function InitGridSelectedMachines() { grid_dtsm = createGridView('#selectedmachinelist'); var list_columns = [ { name: 'VIN', caption: GetTextByKey("P_AG_VIN", "VIN"), valueIndex: 'VIN', css: { 'width': 170, 'text-align': 'left' } }, { name: 'Name', caption: GetTextByKey("P_AG_NAME", "Name"), valueIndex: 'Name', css: { 'width': 170, 'text-align': 'left' } }, { name: 'TypeName', caption: GetTextByKey("P_AG_TYPE", "Type"), valueIndex: 'TypeName', css: { 'width': 170, 'text-align': 'left' } } ]; var columns = [ { // checkbox name: 'check', key: 'selected', width: 45, align: 'center', sortable: false, allcheck: true, type: 3 } ]; // 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 = col.name === 'TypeName'; col.styleFilter = function (item) { if (item.Highlight) return { 'background-color': 'yellow' }; } columns.push(col); } columns.push({ name: 'delete', width: 30, type: GridView.ColumnTypes.Icon, align: 'center', sortable: false, resizable: false, text: 'times', events: { onclick: function () { OnDelete(this); } }, classFilter: function (e) { return "icon-col"; }, attrs: { 'title': GetTextByKey("P_AG_DELETE", 'Delete') } }); grid_dtsm.multiSelect = true; grid_dtsm.columns = columns; grid_dtsm.init(); } /**************************End Machine********************************/ /*****************************************************************************/ function OnExit(type) { if (type === 0) { if (needRefreshDataOnCancel) { type = 1; needRefreshDataOnCancel = false; } } window.parent.CloseDialog(type); } var dialogAssets; $(function () { InitGridSelectedMachines(); dialogAssets = new $assetselector('dialog_machines'); dialogAssets.allowhidden = false; dialogAssets.onDialogClosed = function () { showmaskbg(false); }; dialogAssets.onOK = function (source) { var items = []; for (var i = 0; i < source.length; i++) { var it = source[i]; if (it.Selected) { items.push({ ID: it.Id, VIN: it.VIN, Name: it.Name, TypeName: it.TypeName }); } } showmaskbg(false); grid_dtsm.setData(grid_dtsm.source.concat(items)); }; window.parent.Opened(); }); </script> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <div id="dialog_machinegroup"> <div id="mask_bg1" style="display: none;"> <div class="loading c-spin"></div> </div> <div id="div_content"> <div class="function_title"> <span class="sbutton iconsave" onclick="OnSave(0);" data-lgid="P_AG_SAVE">Save</span> <span class="sbutton iconsave" onclick="OnSave(1);" data-lgid="P_AG_SAVE1">Save and Exit</span> <span class="sbutton iconexit" onclick="OnExit(0);" data-lgid="P_AG_SAVE2">Exit Without Saving</span> <%--<span class="sbutton iconprevious" id="btnNext" onclick="OnPrevious();">Previous</span>--%> <%--<span class="sbutton iconnext" id="btnPrevious" onclick="OnNext();">Next</span>--%> </div> <div class="clear"></div> <div id="divcontent" class="assetcontent"> <table class="group_table"> <tr> <td class="label" data-lgid="P_AG_GROUPNAME_COLON">Group Name:</td> <td> <input type="text" id="dialog_groupname" maxlength="200" tabindex="1" style="width: 300px;" /> </td> </tr> <tr> <td class="label" style="width: 50px; text-align: right;" data-lgid="P_AG_CODE_COLON">Code:</td> <td> <input type="text" id="dialog_groupcode" maxlength="50" tabindex="1" style="width: 300px;" /> </td> </tr> <tr> <td class="label" data-lgid="P_AG_DESCRIPTION_COLON">Description:</td> <td> <textarea id="dialog_description" maxlength="1000" tabindex="2" style="width: 300px"></textarea></td> </tr> </table> <div class="dialog-subheader"> <span data-lgid="P_AG_GROUPASSETS">Group Assets</span> <span class="sbutton icondelete" onclick="OnGroupsDelete()" style="float: right" data-lgid="P_AG_DELETE">Delete</span> <span class="sbutton iconadd" onclick="OnGroupsAdd()" style="float: right" data-lgid="P_AG_ADD">Add</span> </div> <table id="tab_groupmachine" class="group_table" style="margin-top: 6px"> <tbody> <tr> <td style="width: 380px;"> <div id="selectedmachinelist" style="height: 484px; border-bottom: 1px solid #aaa;"></div> </td> </tr> </tbody> </table> </div> </div> <div id="mask_bg" style="display: none;"> <div class="loading c-spin"></div> </div> </div> </asp:Content>