BemsWebApplication.AlarmGroupUser = function (params, viewInfo) { "use strict"; var enroll_btn = false; var row_btn = false; var up_btn = false; var pop_init = false; //권한설정 var hasnotModificationPermission = ko.observable(true); var visiblePopup = ko.observable(false); var temp_AlarmGroupId = 0; var temp_UserId = ko.observableArray(); var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var dataSource = ko.observableArray(); var BemsAlarmGroupDataSource = BemsWebApplication.db.createDataSource('BemsAlarmGroup', true); var AlarmGroup = ko.observableArray(); var AlarmGroup_temp = ko.observableArray(); var AlarmGroup_temp1 = ko.observableArray(); var User = ko.observableArray(); var Usertemp = ko.observableArray(); var Usertemp2 = ko.observableArray(); var endpointSelector = ""; var gridData = new Array(); var temp_key, temp_user_id; if (BemsWebApplication.config.mode == "production") { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production; } else { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local; } var AlarmdataGrid = utils.datagrid.defaultOptions({ dataSource: dataSource, selection: { mode: 'single' }, columns: [ { dataField: 'AlarmGroupId', caption: '알람 그룹 ID', width: '16%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'AlarmGroupName', caption: '알람 그룹 이름', width: '16%', alignment: 'center' }, { dataField: 'UserId', caption: '사용자 ID', width: '16%', alignment: 'center' }, { dataField: 'UserName', caption: '사용자 이름', width: '16%', alignment: 'center' }, { dataField: 'MobilePhoneNo', caption: 'PhoneNo', width: '17%', alignment: 'center' }, { dataField: 'Email', caption: 'Email', width: '17%', alignment: 'center' }, ] }); var UserDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.CmUser, select: [ 'UserId', 'Name', 'DepartmentId', 'MobilePhoneNo', 'Email' ], filter: [eq('SiteId', BWA.UserInfo.SiteId()), 'and', [eq('EmploymentStatus', 1)] ], }, }, 'CmUser'); var DepartmentDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.CmDepartment, select: [ 'DepartmentId', 'Name' ], filter: [eq('SiteId', BWA.UserInfo.SiteId())], }, }, 'CmDepartment'); function AddSelectPoint() { var store = new DevExpress.data.ODataStore({ url: endpointSelector + "/BemsAlarmGroupUser", key: ["SiteId", "AlarmGroupId", "UserId"], keyType: { SiteId: "Int32", AlarmGroupId: "Int32", UserId: "String" } }); var temp_group = gridData; var alarmgroupId = $("#Alarm_Group").dxSelectBox('instance').option('value'); for (var i = 0; i < temp_group.length; i++) { if (alarmgroupId == temp_group[i].AlarmGroupId) { utils.toast.show("존재하고 있는 그룹입니다."); return; } } var keys = $("#Alarm_User").dxDataGrid('instance').getSelectedRowKeys(); if (alarmgroupId == null || keys == null) { utils.toast.show("필수 데이터가 부족합니다."); return; } for (var i = 0; i < keys.length; i++) { var num = 0; var insertData = { SiteId: BWA.UserInfo.SiteId(), AlarmGroupId: alarmgroupId, UserId: keys[i].UserId }; store.insert(insertData) .done(function (values, key) { if (keys.length - 1 == num) { utils.toast.show("저장되었습니다."); visiblePopup(false); } num++; }) .fail(function (error) { utils.toast.show(error); }); } } function UpdateGridData() { var store = new DevExpress.data.ODataStore({ url: endpointSelector + "/BemsAlarmGroupUser", key: ["SiteId", "AlarmGroupId", "UserId"], keyType: { SiteId: "Int32", AlarmGroupId: "Int32", UserId: "String" } }); var keys1 = temp_user_id; //이전 var alarmgroupId = $("#Alarm_Group").dxSelectBox('instance').option('value'); var keys = $("#Alarm_User").dxDataGrid('instance').getSelectedRowKeys(); //현재 if (keys.length == 0) { utils.toast.show("최소한 1명의 사용자가 등록되야합니다."); return; } var num1 = keys1.length; for (var i = 0; i < keys1.length; i++) { var removeData = { SiteId: BWA.UserInfo.SiteId(), AlarmGroupId: temp_AlarmGroupId, UserId: keys1[i] }; store.remove(removeData) .done(function (values, key) { num1--; if (num1 == 0) { var num = keys.length; for (i = 0; i < keys.length; i++) { var insertData = { SiteId: BWA.UserInfo.SiteId(), AlarmGroupId: alarmgroupId, UserId: keys[i].UserId }; store.insert(insertData) .done(function (values, key) { num--; if (num == 0) { utils.toast.show("수정되었습니다."); visiblePopup(false); } }) .fail(function (error) { utils.toast.show(error); }); } } }) .fail(function (error) { utils.toast.show(error); }); } } function DeleteGridData() { var store = new DevExpress.data.ODataStore({ url: endpointSelector + "/BemsAlarmGroupUser", key: ["SiteId", "AlarmGroupId", "UserId"], keyType: { SiteId: "Int32", AlarmGroupId: "Int32", UserId: "String" } }); var keys = $("#Alarm_User").dxDataGrid('instance').getSelectedRowKeys(); for (var i = 0; i < keys.length; i++) { var num = 0; var removeData = { SiteId: BWA.UserInfo.SiteId(), AlarmGroupId: temp_AlarmGroupId, UserId: keys[i].UserId }; store.remove(removeData) .done(function (values, key) { if (keys.length - 1 == num) { utils.toast.show("삭제되었습니다."); visiblePopup(false); } num++; }) .fail(function (error) { utils.toast.show(error); }); } } function GetGridData(AlarmGroup_temp) { gridData = new Array(); var dataSource1 = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsAlarmGroupUser", }, requireTotalCount: true, pageSize: 9999, }); dataSource1.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); dataSource1.load() .done(function (result) { var index = 0; for (var i = 0; i < result.length; i++) { var setData = { "Index": 0, "AlarmGroupId": 0, "AlarmGroupName": "", }; var exit = false; if (AlarmGroup_temp.length != 0) { for (var j = 0; j < AlarmGroup_temp.length; j++) { if (result[i].AlarmGroupId == AlarmGroup_temp[j].AlarmGroupId()) { for (var k = 0; k < gridData.length; k++) { if (gridData[k].AlarmGroupId == AlarmGroup_temp[j].AlarmGroupId()) { exit = true; break; } else exit = false; } if (exit == false) { index++; setData.Index = index; setData.AlarmGroupId = AlarmGroup_temp[j].AlarmGroupId(); setData.AlarmGroupName = AlarmGroup_temp[j].Name(); gridData.push(setData); break; } } } } $("#dataGrid").dxDataGrid("instance").option('dataSource', gridData); $("#dataGrid").dxDataGrid("instance").refresh(); } }) .fail(function (error) { utils.toast.show(error); }); } var dataGrid = utils.datagrid.defaultOptions({ selection: { mode: 'single' }, paging: { pageSize: 19, enabled: false }, onRowClick: function (row) { var data = row.data; var j = 0; row_btn = true; temp_AlarmGroupId = data.AlarmGroupId; var dataSource1 = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsAlarmGroupUser", }, requireTotalCount: true, pageSize: 9999, }); dataSource1.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], "and", ["AlarmGroupId", "=", temp_AlarmGroupId] ]); dataSource1.load() .done(function (result) { temp_UserId = new Array(); temp_key = new Array(); temp_user_id = new Array(); var j = 0, t = 0; for (var i = 0; i < result.length; i++) { temp_UserId[j] = result[j].UserId; j++ } for (var k = 0; k < Usertemp2.length ; k++) { for (var h = 0; h < temp_UserId.length ; h++) { if (Usertemp2[k].UserId == temp_UserId[h]) { temp_key[t] = k; temp_user_id[t] = Usertemp2[k].UserId; t++; break; } } } visiblePopup(true); }) .fail(function (error) { utils.toast.show(error); }); }, columns: [ { dataField: 'Index', caption: '번호', width: '30%', alignment: 'center' }, { dataField: 'AlarmGroupId', caption: '그룹 ID', width: '30%', alignment: 'center', visible: false }, { dataField: 'AlarmGroupName', caption: '알람 그룹 이름', width: '70%', alignment: 'center' } ] }) function updateButtonClicked() { UpdateGridData(); setTimeout(function () { GetGridData(AlarmGroup_temp1); }, 100); } function delButtonClicked() { DeleteGridData(); setTimeout(function () { GetGridData(AlarmGroup_temp1); }, 100); } function selectSaveButtonClicked() { AddSelectPoint(); setTimeout(function () { GetGridData(AlarmGroup_temp1); }, 100); } function selectButtonClicked() { enroll_btn = true; visiblePopup(true); } var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'BemsAlarmGroupUser', { popupWidth: 800, NoSearchView: true, // 2019.07.25 kgpark 검색버튼 삭제 handleViewShowing: function () { //권한설정 hasnotModificationPermission(!BWA.UserInfo.hasPermissionOfModification(viewInfo.viewName)); BemsAlarmGroupDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], ]); BemsAlarmGroupDataSource.load().done(function (result) { //그룹 정보 가져오기 User = ko.observableArray(); AlarmGroup = result; $("#Alarm_Group").dxSelectBox({ placeholder: "알람 그룹", dataSource: AlarmGroup, displayExpr: 'Name', valueExpr: 'AlarmGroupId', }); AlarmGroup_temp1 = result; GetGridData(result); UserDataSource.load().done(function (userResult) { //사용자 정보 Usertemp = userResult; DepartmentDataSource.load().done(function (departmentResult) { Usertemp2 = new Array(); for (var i = 0; i < Usertemp.length; i++) { for (var j = 0; j < departmentResult.length; j++) { if (Usertemp[i].DepartmentId() == departmentResult[j].DepartmentId()) { var temp = { "UserId": "", "Name": "", "Department": "", "MobilePhoneNo": "", "Email": "" }; temp.UserId = Usertemp[i].UserId(); temp.Name = Usertemp[i].Name(); temp.Department = departmentResult[j].Name(); temp.MobilePhoneNo = Usertemp[i].MobilePhoneNo(); if (temp.MobilePhoneNo == null) temp.MobilePhoneNo = ""; temp.Email = Usertemp[i].Email(); if (temp.Email == null) temp.Email = ""; User.push(temp); Usertemp2.push(temp) break; } } } }); }); }); }, handleViewShown: function () { $("#dataGrid").dxDataGrid({ paging: { pageSize: 18 } }); } }); viewModel.updateButtonClicked = updateButtonClicked; viewModel.delButtonClicked = delButtonClicked; viewModel.selectSaveButtonClicked = selectSaveButtonClicked; viewModel.selectButtonClicked = selectButtonClicked; viewModel.dataGrid = dataGrid; viewModel.popupOptions = { width: 1000, height: 700, visible: visiblePopup, dragEnabled: true, shading: true, closeOnOutsideClick: true, shadingColor: 'transparent', showTitle: true, title: "항목 선택", showCloseButton: true, onShowing: function () { $("#Alarm_User").dxDataGrid({ dataSource: User, selection: { mode: 'multiple', allowSelectAll: true }, columns: [ { dataField: 'UserId', caption: '사용자 ID', width: '18%', alignment: 'center' }, { dataField: 'Name', caption: '사용자 이름', width: '16%', alignment: 'center' }, { dataField: 'Department', caption: '부서', width: '18%', alignment: 'center' }, { dataField: 'MobilePhoneNo', caption: '핸드폰 번호', width: '20%', alignment: 'center' }, { dataField: 'Email', caption: 'Email', width: '28%', alignment: 'center' } ], //scrolling: { // mode: 'standard' //} paging: { pageSize: 12, enabled: true }, pager: { }, }); }, onShown: function (t, tt) { $("#Alarm_Group").dxSelectBox({ placeholder: "알람 그룹", dataSource: AlarmGroup, displayExpr: 'Name', valueExpr: 'AlarmGroupId', disabled: false }); if (enroll_btn) { $("#Alarm_Group").dxSelectBox('instance').option('value', null); $("#Alarm_User").dxDataGrid('instance').clearSelection(); $("#updateSaveBtn").dxButton({ visible: false }); $("#delBtn").dxButton({ visible: false }); $("#selectSaveBtn").dxButton({ visible: true }); enroll_btn = false; } if (row_btn) { $("#updateSaveBtn").dxButton({ visible: true }); $("#delBtn").dxButton({ visible: true }); $("#selectSaveBtn").dxButton({ visible: false }); $("#Alarm_Group").dxSelectBox('instance').option('value', temp_AlarmGroupId); $("#Alarm_Group").dxSelectBox('instance').option('dataSource', AlarmGroup); $("#Alarm_Group").dxSelectBox('instance').option('disabled', true); if (temp_key != null) { var key = temp_key; key.join(","); var aa = "[" + key + "]"; $("#Alarm_User").dxDataGrid('instance').selectRowsByIndexes(key); } row_btn = false; } }, onHidden: function () { }, hasnotModificationPermission: hasnotModificationPermission //권한설정 } return viewModel; };