BemsWebApplication.UserGroup = function (params, viewInfo) { "use strict"; var CmUserGroupDataSource = BemsWebApplication.db.createDataSource('CmUserGroup', true); var UserGroupInfo = ko.observableArray(); var RowName; // Permission Index var PI_SEARCH = 0, PI_MODIFICATION = 1, PI_BUSINESS_FIELD = 2; var userGroupDataSource = BWA.db.createDataSource('CmUserGroup'), userGroupPermissionDataSource = BWA.db.createDataSource('CmUserGroupPermission'), userGroupPermissionDataArray = ko.observableArray(), popupVisible = ko.observable(false), selectedUserGroup = ko.observable(null), viewModel, //gridView, sidemenuHashSet; //var datagrid = $('#EnergySavingControlDataGridViewInSearchView').dxDataGrid('instance'); //var gridView = $('#gridContainer2').dxDataGrid('instance'); var headerCheckBoxValues = [ko.observable(false), ko.observable(false), ko.observable(false)]; var headerTemplate = function (header, info) { var dataGrid = $('#gridContainer2').dxDataGrid('instance'); var checkbox = $('
'); checkbox.appendTo(header); checkbox.dxCheckBox({ value: headerCheckBoxValues[info.columnIndex - 2], //value: e.value, valueChangeAction: function (e) { headerCheckBoxValues[info.columnIndex - 2](e.value); //gridView.refresh(); /* var rows = utils.datagrid.getItems(gridView); _.each(rows, function (data, i) { data.checkboxes[info.columnIndex - 2].dxCheckBox({ value: e.value }); }); */ for (var i = 0; i < 100; i++) { var cell = dataGrid.getCellElement(i, info.columnIndex); //var c = cell.children; //var c1 = cell.children[0]; //cell.children.item.dxCheckBox({ // value: e.value //}); //var checkbox = $('
'); //checkbox.appendTo(cell); /*cell.dxCheckBox({ value: e.value });*/ //var chechk = cell.getElementByClassName('checkbox'); //cell.checkboxes[info.columnIndex - 2].dxCheckBox({ //value: e.value //}); } } }); $('
') .css('display', 'inline-block') .html(info.column.caption) .appendTo(header); }; //gridView = $('#gridContainer2').dxDataGrid('instance'); // var dataGrid = $('#gridContainer').dxDataGrid('instance'); var menuDataGridOptions = utils.datagrid.defaultOptions({ dataSource: userGroupPermissionDataArray, width: '100%', //height: 706, height: 690, columns: [ { dataField: 'MenuPath', caption: $G('menuPath'), width: '35%', sortOrder: 'asc' }, { dataField: 'Name', caption: $G('name'), width: '25%' }, { dataField: 'MenuPermission', caption: $G('searchPermission'), width: '13%', alignment: 'center', allowSorting: false }, { dataField: 'MenuPermission', caption: $G('modificationPermission'), width: '13%', alignment: 'center', allowSorting: false }, { dataField: 'MenuPermission', caption: $G('dependBusinessField'), width: '14%', alignment: 'center', allowSorting: false } ], // hcLee 2015 11 09 paging: { enabled: false, pageSize: 17 }, pager: { //allowedPageSizes: true, showPageSizeSelector: true, allowedPageSizes: [17, 20], visible: false }, customizeColumns: function (columns) { _.each(columns, function (element, i) { switch (i) { case 2: case 3: case 4: element.headerCellTemplate = headerTemplate; break; } }); }, selection: { mode: 'none' }, /* contentReadyAction: function(e) { //gridView = e.component; //datagrid.filter(null); },*/ cellPrepared: function (cellElement, cellInfo) { switch (cellInfo.columnIndex) { case 2: case 3: case 4: (function (element, info) { if (info.rowType == 'data') { var index = info.columnIndex - 2; var checker = (1 << index); var checked = (info.value & checker); $(cellElement).text(''); // var check = ko.observable(checked > 0 ? true : false); var checkbox = $('
'); checkbox.appendTo(element); checkbox.dxCheckBox({ value: checked > 0 ? true : false, valueChangeAction: function (e) { var p = info.data.MenuPermission; if (e.value) { //if (p() & checker) { p(p() | checker); } else { p(p() & ~checker); } } }); //var dataChecks = info.data.checks = info.data.checks || []; var dataCheckBoxes = info.data.checkboxes = info.data.checkboxes || []; //dataChecks[index] = check; dataCheckBoxes[index] = checkbox; } })(cellElement, cellInfo); break; } }, }); var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmUserGroup', { height: 690, popupWidth: 480, columns: [ { dataField: 'Number', caption: $G('number'), width: '20%', allowSorting: false }, { dataField: 'Name', caption: $G('permissionName'), width: '80%' } ], /* searchViewItems: [ { id: 'MenuPath' }, { id: 'Name' } ],*/ //pager: { // //allowedPageSizes: false, // visible: true //}, NoSearchView: true, // 2019.07.25 kgpark 검색버튼 삭제 handleViewShown: function () { sidemenuHashSet = $SideMenu.getSidemenuHashSet(); $SearchView.setPopupVisibleObservable(null); //$SearchView.visibleObservable(true); // hcLee 2016 02 01 $("#gridContainer").dxDataGrid({ paging: { pageSize: 19, enabled: true } }); $("#gridContainer2").dxDataGrid({ paging: { pageSize: 16, enabled: true }, pager: { allowedPageSizes: false, visible: true } }); }, // 2016 02 13 hcLee 추가 (등록팝업후 그냥 닫기 하고 수정팝업하면 나오는 쿼리에러 해결함) handlePopupShowing2: function (selectedId) { var data = selectedUserGroup(); selectedId.SiteId = data.SiteId(); selectedId.UserGroupId = data.UserGroupId(); selectedId.Name = data.Name(); }, /* handleAfterLoadingModelByKey: function(data, dataViewModel, isNewInPopup) { },*/ /* handlePopupShowing: function(that) { },*/ handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; var data = clickRow.data; RowName = data.Name; selectedUserGroup(data); userGroupPermissionDataSource.filter([ eq('SiteId', data.SiteId()), and, eq('UserGroupId', data.UserGroupId()), ]); userGroupPermissionDataSource.load().done(function (dbPermissions) { userGroupPermissionDataArray(_.map(dbPermissions, function (p) { var menu = sidemenuHashSet[p.MenuId()]; if (_.has(menu, 'Name')) { p.Name = ko.observable(menu.Name); p.MenuPath = ko.observable(menu.MenuPath); return p; } })); //gridView.refresh(); //dataGrid.refresh(); $('#gridContainer2').dxDataGrid('instance').refresh(); }); //var data = clickRow.data; }, handleSaveInPopup: function (dataViewModel, popupVisible) { dataViewModel.UserGroupId(0); var postData = dataViewModel.toJS(); postData.UserGroupPermissions = $SideMenu.getSidemenusForPermission(); var isDuplicated = false; for (var i = 0; i < UserGroupInfo().length; i++) { if (viewModel.dataModel.Name() == UserGroupInfo()[i].Name()) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('이미 동일 이름이 존재합니다.', 'error'); return 0; } else return BWA.api.post('CmUserGroup/Insert', postData); } }, // 이름 중복 방지 handlePopupShowing: function (that) { CmUserGroupDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); CmUserGroupDataSource.load().done(function (result) { UserGroupInfo(result); }); }, beforeUpdateDataViewModel: function () { var isDuplicated = false; for (var i = 0; i < UserGroupInfo().length; i++) { if (viewModel.dataModel.Name() == UserGroupInfo()[i].Name() && RowName() != UserGroupInfo()[i].Name()) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('이미 동일 이름이 존재합니다.', 'error'); return 0; } else return 2; } } }); function handleSave() { var selectedData = selectedUserGroup(); //var rows = utils.datagrid.getItems(gridView); var rows = utils.datagrid.getItems($('#gridContainer2').dxDataGrid('instance')); var postData = []; var itemKeys = BWA.db.CmUserGroupPermission.key(); var toJS = BWA.DataUtil.convertViewModelToJS; itemKeys.push('MenuPermission'); _.each(rows, function (item, i) { item = toJS(_.pick(item, itemKeys)); postData.push(item); }); BWA.api.post('CmUserGroup/UpdatePermission', postData).done(function () { utils.toast.show($G('successDatabaseProcessMsg')); }); } function handleEdit() { // var data = selectedUserGroup(); // var dataModel = viewModel.dataModel; // dataModel.Name = $KoSet(dataModel.Name, data['Name']); //viewModel.popupVisible(false); viewModel.popupVisible(true); //viewModel.popupVisible(true); } function handleHeaderCheckboxValueFunc(index) { return function (check) { //var rows = utils.datagrid.getItems(gridView); var rows = utils.datagrid.getItems($('#gridContainer2').dxDataGrid('instance')); _.each(rows, function (data, i) { data.checkboxes[index].dxCheckBox({ value: check }); }); }; } for (var i = PI_SEARCH ; i <= PI_BUSINESS_FIELD ; i++) { headerCheckBoxValues[i].subscribe(handleHeaderCheckboxValueFunc(i)) } viewModel.popupVisible.subscribe(function (visible) { }); viewModel.menuDataGridOptions = menuDataGridOptions; viewModel.handleSave = handleSave; viewModel.handleEdit = handleEdit; viewModel.selectedUserGroup = selectedUserGroup; //viewModel.handleSearchInSearchView = handleSearchInSearchView; // hcLee 2016 02 13 viewModel.handleSearchInSearchView2 = function (filter) { var filterA = []; _.each(filter, function (x) { filterA.push(x); }); userGroupPermissionDataSource.filter(filterA); userGroupPermissionDataSource.load().done(function (result) { //userGroupPermissionDataArray.load().done(function (result) { userGroupPermissionDataArray(result); }); }; return viewModel; };