BemsWebApplication.Floor = function(params, viewInfo) { "use strict"; var FloorInfo = ko.observableArray(); var CmFloorDataSource = BemsWebApplication.db.createDataSource('CmFloor'); var RowName,RowBuilidngId; var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true); var buildings = ko.observableArray(); var searchBuildings = ko.observableArray(); var buildingDeferred = new $.Deferred(); var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmFloor', { dataSourceOptions: { select: ['SiteId', 'FloorId', 'BuildingId', 'Name', 'CmBuilding/Name'], expand: ["CmBuilding"], extendOptions: { forceOriginalField: true, } }, columns: [ { dataField: 'FloorId', caption: $G('number'), width: '20%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '20%', alignment: 'center' }, { dataField: 'Name', caption: $G('floorName'), width: '60%', alignment: 'center' }, //utils.datagrid.columnIsUse( '15%' ) ], // 2019.04.17 엑셀 출력 기능 추가 ~~~ "export": { enabled: true, fileName: '층 정보 목록' }, onExporting: function (e) { e.component.columnOption("FloorId", "visible", false); }, onExported: function (e) { e.component.columnOption("FloorId", "visible", true); }, // ~~~ 2019.04.17 엑셀 출력 기능 추가 paging: { pageSize: 18, enabled: true }, pager:{visible: true}, popupWidth: 480, promiseDataInSearchView: buildingDeferred.promise(), searchViewItems: [{ id: 'BuildingId', ignoreValue: 0, defaultValue: 0, dataSource: searchBuildings }, { id: 'Name' }], handleViewShowing: function() { buildingDataSource.load().done(function(result) { buildings(result); searchBuildings([{ BuildingId: 0, Name: $G('selectAll') }].concat(result)); buildingDeferred.resolve(); }); }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); viewModel.isNewInPopup(false); // hcLee 2016 02 16 키필드가 콤보로 제공될때 등록시만 보이고 수정시에는 안보기에 하기 위하여 꼭 필요 !!! var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.BuildingName = $KoSet(dataModel.BuildingName, data['CmBuilding/Name']); RowName = data.Name; RowBuilidngId = data.BuildingId; popupVisible(true); }, // 이름 중복 방지 handlePopupShowing: function () { CmFloorDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); CmFloorDataSource.load().done(function (result) { FloorInfo(result); }); }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { var dfd = $.Deferred(); var isDuplicated = false; for (var i = 0; i < FloorInfo().length; i++) { if (dataModel.Name() == FloorInfo()[i].Name() && dataModel.BuildingId() == FloorInfo()[i].BuildingId()) { isDuplicated = true; break; } } if (!BWA.DataUtil.isValidInputValue(dataModel.Name()) || !BWA.DataUtil.isValidInputValue(dataModel.BuildingId())) return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)'); else { if (isDuplicated) return dfd.resolve(false, '이미 동일 정보가 존재합니다.'); else return dfd.resolve(true); } }, beforeUpdateDataViewModel: function () { var isDuplicated = false; for (var i = 0; i < FloorInfo().length; i++) { if (viewModel.dataModel.Name() == FloorInfo()[i].Name() && viewModel.dataModel.BuildingId() == FloorInfo()[i].BuildingId() && (RowName() != FloorInfo()[i].Name() || RowBuilidngId() != FloorInfo()[i].BuildingId())) { isDuplicated = true; break; } } 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; } } }); viewModel.buildingDataSource = buildings; viewModel.searchBuildings = searchBuildings; viewModel.dataModel.BuildingName = ko.observable(); // viewModel.handleSelectBoxChangeBuilding = handleSelectBoxBuilding; return viewModel; };