BemsWebApplication.Company = function( params, viewInfo ) { "use strict"; var CompanyInfo = ko.observableArray(); var CmCompanyDataSource = BemsWebApplication.db.createDataSource('CmCompany'); var RowName, RowCompanyId; var companyTypeDataSource = BemsWebApplication.db.createDataSource( 'CmCompanyType', true ); var companyTypes = ko.observableArray(); var searchCompanyTypes = ko.observableArray(); var companyTypeDeferred = new $.Deferred(); var viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'CmCompany', { dataSourceOptions: { select: [ 'SiteId', 'CompanyTypeId', 'CompanyId', 'Name', 'RepresentativeName', 'PhoneNo', 'IsUse', 'CmCompanyType/Name' ], expand: ["CmCompanyType"], extendOptions: { forceOriginalField: true } }, columns: [ { dataField: 'CompanyId', caption: '번호', width: '10%', alignment: 'center' , sortOrder: 'desc'}, { dataField: 'CmCompanyType/Name', caption: $G('companyType'), width: '15%', alignment: 'center' }, { dataField: 'Name', caption: $G( 'companyName' ), width: '35%', alignment: 'center' }, { dataField: 'RepresentativeName', caption: $G( 'companyRepresentativeName' ), width: '15%', alignment: 'center' }, { dataField: 'PhoneNo', caption: $G( 'companyPhoneNo' ), width: '15%', alignment: 'center' }, utils.datagrid.columnIsUse( '10%' ) ], searchViewItems: [{ id: 'CompanyTypeId', ignoreValue: 0, defaultValue: 0, dataSource: searchCompanyTypes }, { id: 'Name' }], promiseDataInSearchView: companyTypeDeferred.promise(), handleViewShowing: function (that) { //2015 11 12 hcLee 필터추가 companyTypeDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['IsUse', '=', true] ]); companyTypeDataSource.load().done( function( result ) { companyTypes( result ); searchCompanyTypes( [ { CompanyTypeId: 0, Name: $G('selectAll') } ].concat( result ) ); companyTypeDeferred.resolve(); }); }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); viewModel.isNewInPopup(false); // hcLee 2016 02 16 키필드가 콤보로 제공될때 등록시만 보이고 수정시에는 안보기에 하기 위하여 꼭 필요 !!! var data = clickRow.data; RowName = data.Name; RowCompanyId = data.CompanyTypeId; popupVisible(true); }, // 이름 중복 방지 handlePopupShowing: function () { CmCompanyDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); CmCompanyDataSource.load().done(function (result) { CompanyInfo(result); }); }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { var dfd = $.Deferred(); var isDuplicated = false; for (var i = 0; i < CompanyInfo().length; i++) { if (dataModel.Name() == CompanyInfo()[i].Name() && dataModel.CompanyTypeId() == CompanyInfo()[i].CompanyTypeId()) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(dataModel.Name())) 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 < CompanyInfo().length; i++) { if (viewModel.dataModel.Name() == CompanyInfo()[i].Name() && viewModel.dataModel.CompanyTypeId() == CompanyInfo()[i].CompanyTypeId() && (RowName() != CompanyInfo()[i].Name() || RowCompanyId() != CompanyInfo()[i].CompanyTypeId())) { 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; } } }); var handleSelectBoxCompanyType = function( e ) { viewModel.dataModel.CompanyTypeId(e.value); }; viewModel.companyTypeDataSource = companyTypes; viewModel.searchCompanyTypes = searchCompanyTypes; viewModel.handleSelectBoxCompanyType = handleSelectBoxCompanyType; return viewModel; };