$(function() { BemsWebApplication.FacilityCheckItem = { setupMultiViewInPopup: function(workTypeId, templateId, datagridId, viewModel, selectedFacility, multiViewDataSource) { "use strict"; var refreshList = function() { var datagrid = $(['#', datagridId].join('')).dxDataGrid('instance'); datagrid.refresh(); } var dataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { select: [ 'SiteId', 'CheckItemId', 'FacilityCode', 'WorkTypeId', 'CycleUnitId', 'Name', 'IsYesNoResult', 'IsUse', 'FmsWorkCodeCycleUnit/Name', 'FmsWorkCodeType/Name' ], expand: ['FmsWorkCodeCycleUnit', 'FmsWorkCodeType'] }, }, 'FmsFacilityCheckItem'); var cycleUnitDataSource = null; var dataGridOptions = utils.datagrid.defaultOptions({ dxDataSource: dataSource, datagridId: datagridId, dbId: 'FmsFacilityCheckItem', height: 480, columns: [ { dataField: 'FmsWorkCodeCycleUnit_Name', caption: $G( 'checkCycleUnit' ), width: '25%', alignment: 'center' }, { dataField: 'Name', caption: $G( 'itemName' ), width: '55%', alignment: 'center' }, { dataField: 'IsYesNoResult', caption: $G('resultType'), width: '20%', alignment: 'center', customizeText: function(cellInfo) { return cellInfo.value ? $G('yesOrNo') : $G('directInput'); } } ], wordWrapEnabled: true, handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) { //dataGrid.clearSelection(); var data = clickRow.data; var v = viewModel.checkItemMultiView.dataModel; BWA.DataUtil.copyViewModel(data, v); var code = $Code.FacilityCheckItemResultType; v.ResultTypeId(v.IsYesNoResult() ? code.YES_OR_NO : code.DIRECT_INPUT); var mv = viewModel.checkItemMultiView; mv.handleRefreshList(refreshList); var p = mv.popupOptions; p.isNewData(false); p.visible(true); } }); selectedFacility.subscribe(function(item) { if (_.has(item, 'SiteId') === false || _.has(item, 'FacilityCode') === false) { return; } var eq = BWA.DataUtil.constructEqualFilter; $(['#', datagridId].join('')).dxDataGrid('instance').filter([ eq('SiteId', item.SiteId()), 'and', eq('FacilityCode', item.FacilityCode()), 'and', eq('WorkTypeId', workTypeId) ]); }); multiViewDataSource.push({ viewModel: viewModel, dataGridOptions: dataGridOptions, template: templateId, handleButtonInsert: function() { var p = viewModel.checkItemMultiView.popupOptions; var v = viewModel.checkItemMultiView.dataModel; BWA.DataUtil.resetViewModel(v); v.WorkTypeId(workTypeId); v.FacilityCode(selectedFacility().FacilityCode()); v.CycleUnitId(1); v.ResultTypeId(0); p.isNewData(true); p.visible(true); viewModel.checkItemMultiView.handleRefreshList(refreshList); }, handleButtonDelete: function() { var p = viewModel.checkItemMultiView.popupOptions; p.workTypeId(workType); }, }); if (_.has(viewModel,'checkItemMultiView') === false) { var dataModel = new BWA.FmsFacilityCheckItemViewModel(); cycleUnitDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeCycleUnit'); cycleUnitDataSource.load().done(function (result) { viewModel.checkItemMultiView.cycleUnitDataSource(result); }); dataModel.ResultTypeId = ko.observable(); dataModel.ResultTypeId.subscribe(function(value) { if (value === $Code.FacilityCheckItemResultType.YES_OR_NO) { dataModel.IsYesNoResult(true); } else { dataModel.IsYesNoResult(false); } }); viewModel.checkItemMultiView = { dataModel: dataModel, handleRefreshList: ko.observable(), cycleUnitDataSource: ko.observableArray(), resultTypeDataSource: $G.FacilityCheckItemResultType, toolbarItems: [ { location: 'before', text: $G('detailInfo') }, { location: 'after',widget: 'button', options: { text: $G('save'), icon: 'save', clickAction: function () { viewModel.checkItemMultiView.handleSave(); } } }, { location: 'after', widget: 'button', options: { text: $G('delete'), icon: 'remove', type: 'danger', clickAction: function() { viewModel.checkItemMultiView.handleDelete(); } } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: function () { viewModel.checkItemMultiView.popupOptions.visible(false); } } } ], popupOptions: { width: '520px', height: 'auto', animation: utils.popup.createAnimation(), closeOnOutsideClick: false, visible: ko.observable(false), //showingAction: handlePopupShowing, isNewData: ko.observable(false), workTypeId: ko.observable(), }, handleSave: function () { var mv = viewModel.checkItemMultiView; var p = mv.popupOptions; var v = mv.dataModel; var handleDone = function(successMsg) { return function() { mv.handleRefreshList()(); p.visible(false); utils.toast.show($G(successMsg)); }; }; if (p.isNewData()) { BemsWebApplication.db.FmsFacilityCheckItem.insert(v.toJS()).done(handleDone('successDatabaseInsertionMsg')); } else { var keys = BWA.db.extractKeysObject('FmsFacilityCheckItem', v); BemsWebApplication.db.FmsFacilityCheckItem.update(keys, v.toJS()).done(handleDone('successDatabaseEditMsg')); } }, handleDelete: function () { var mv = viewModel.checkItemMultiView; var p = mv.popupOptions; var v = mv.dataModel; var keys = BWA.db.extractKeysObject('FmsFacilityCheckItem', v); BemsWebApplication.db.FmsFacilityCheckItem.remove(keys).done(function() { mv.handleRefreshList()(); p.visible(false); utils.toast.show($G('successDatabaseDeleteMsg')); }); } }; } } }; });