| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 | 
							- BemsWebApplication.Formula = function (params, viewInfo) {
 
-     "use strict";
 
-     var FACILITY_TYPE_DEPTH = 2,
 
-         FACILITY_DEPTH = 3,
 
-         FORMULA_DEPTH = 4;
 
-     var FNameForSearch = ko.observable(),
 
-         PNameForSearch = ko.observable();
 
-     var eq = BWA.DataUtil.constructEqualFilter;
 
-     // hcLee 2016 01 15 확장
 
-     var deferredForSearch = new $.Deferred();
 
-     // hcLee 2016 01 15 확장
 
-     var works = ko.observableArray();
 
-     var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType'),
 
-         facilityDataSource = BemsWebApplication.db.createDataSource('CmFacility', true),
 
-         formulaBaseDataSource = BemsWebApplication.db.createDataSource('BemsFormulaBase'),
 
-         formulaDataSource = BemsWebApplication.db.createDataSource('BemsFormula'),
 
-         tableDataSource = BemsWebApplication.db.createDataSource('BemsFormulaTable'),
 
-         parameterDataSource = BWA.DataUtil.createDataSource({
 
-             dataSourceOptions: {
 
-                 select: [
 
-                     'SiteId', 'FacilityTypeId', 'FacilityCode', 'FormulaId',
 
-                     'ParameterId', 'ParameterFacilityCode', 'ParameterPropertyId',
 
-                     'CmFacility/Name', 'BemsMonitoringPoint/Name',
 
-                     'BemsMonitoringPoint/CmFacility/Name'
 
-                 ],
 
-                 expand: ['CmFacility', 'BemsMonitoringPoint', 'BemsMonitoringPoint/CmFacility'],
 
-                 extendOptions: {
 
-                     forceOriginalField: true,
 
-                     alterNames: {
 
-                         'CmFacility/Name': 'FacilityName',
 
-                         'BemsMonitoringPoint/Name': 'PointName',
 
-                     }
 
-                 }
 
-             }
 
-         }, 'BemsFormulaParameter'),
 
-         formulaDataViewModel = new BWA.BemsFormulaViewModel(),
 
-         factory = BemsWebApplication.Factory.PointLocationMapping,
 
-         viewModel,
 
-         formulaPointPopup = null,
 
-         gridView,
 
-         popupVisible = ko.observable(false),
 
-         parameters = ko.observableArray(),
 
-         facilityParameters = ko.observableArray(),
 
-         selectedTreeItemData = ko.observable(null),
 
-         selectedTreeItem = ko.observable(null), // 2015 11 12 hcLee 추가 기존 TreeItem -> TreeItemData 로 변경 하고 (위) 이거 추가함
 
- //        selectedPoints = ko.observableArray(),
 
-         pointDataSource = factory.getDataSource(),
 
- /*
 
-          pointDataSource = BWA.DataUtil.createDataSource({
 
-         dataSourceOptions: {
 
-             select: [
 
-                 'SiteId', 'FacilityTypeId', 'FacilityCode', 'PropertyId',
 
-                 'BuildingId', 'FloorId', 'ZoneId',
 
-                 'ValueType',
 
-                 //'IsAccumulated',
 
-                 'Name', 'Description',
 
-                 'CmFacility/Name', 'BemsServiceType/Name', 'BemsFacilityType/Name', 'BemsFuelType/Name'
 
-             ],
 
-             expand: ['CmFacility', 'BemsServiceType', 'BemsFacilityType', 'BemsFuelType'],
 
-             extendOptions: {
 
-                 forceOriginalField: true
 
-                 //alterNames: {
 
-                 //    'CmFacility/Name': 'FacilityName',
 
-                 //}
 
-             },
 
-             filter: [
 
-                 ['SiteId', '=', BWA.UserInfo.SiteId()],
 
-                 'and',
 
-                 ['FacilityTypeId', '<', 100]
 
-             ]},    }, 'BemsMonitoringPoint'),
 
- */
 
-         pointDataGridOptions = utils.datagrid.defaultOptions({
 
-             // 중요 !!! hcLee 2016 01 15
 
-             //dxDataSource: pointDataSource,
 
-             dataSource: works,
 
-             /*
 
-                         filter: [
 
-                         //    ['SiteId', '=', BWA.UserInfo.SiteId()]
 
-                             eq('FacilityCode', 1002),
 
-                         ],
 
-                         */
 
-             datagridId: 'pointDataGrid',
 
-             dbId: 'BemsMonitoringPoint',
 
-             width: '100%',
 
-             height: 720,
 
-             //selection: {
 
-             //    mode: 'multiple'
 
-             //},
 
-             columns: factory.getColumns([
 
-                 { dataField: 'CmFacility/Name', width: '30%' },
 
-                 { dataField: 'Name', width: '55%' },
 
-                 { dataField: 'ValueType', width: '15%' }
 
-             ]),
 
-             wordWrapEnabled: true,
 
-             rowPrepared: function (rowElement, rowInfo) {
 
-                 if (rowInfo.rowType != 'data') {
 
-                     return;
 
-                 }
 
-                 rowElement
 
-                     .addClass('draggablePointRow')
 
-                     .data('data', rowInfo.data)
 
-                     .data('keyValue', rowInfo.key);
 
-             },
 
-             contentReadyAction: function (e) {
 
-                 e.element.find('.draggablePointRow').draggable({
 
-                     cursor: 'point',
 
-                     appendTo: '#mainContents',
 
-                     cursorAt: { right: 0, bottom: 0 },
 
-                     helper: function (e) {
 
-                         var div = $('<div>', {
 
-                             'overflow': 'auto'
 
-                         });
 
-                         div.text('test');
 
-                         return div;
 
-                     },
 
-                     start: function (event, ui) {
 
-                         var $originalRow = $(this);
 
-                         var $originalRowCells = $originalRow.children();
 
-                         var key = $originalRow.data('keyValue');
 
-                         var data = $originalRow.data('data');
 
-                         ui.helper
 
-                             .data('keyValue', key)
 
-                             .data('data', data)
 
-                         //.text('{0} [{1}]'.formati(data.FacilityName(), data.Name()))
 
-                         .text('{0} [{1}]'.formati(data['CmFacility/Name'](), data.Name()))
 
-                             .addClass('drag-helper');
 
-                         //console.log(ui.helper);
 
-                         //var $originalRowCells = $originalRow.children(),
 
-                         //    $clonedRowCells = $clonedRow.children();
 
-                         //$('<div>').text($clonedRowCells.get(1).text());
 
-                         ////var $originalRowCells = $originalRow.children(),
 
-                         ////    $clonedRowCells = $clonedRow.children();
 
-                         ////for (var i = 0; i < $originalRowCells.length; i++)
 
-                         ////    $($clonedRowCells.get(i)).width($($originalRowCells.get(i)).width());
 
-                         //$clonedRow
 
-                         //    .width($originalRow.width())
 
-                         //    .addClass('drag-helper');
 
-                         //console.log(ui.helper.offset());
 
-                         //var offset = ui.helper.offset();
 
-                         //ui.helper.appendTo($('#mainContents'));
 
-                         //ui.position.top = offset.top;
 
-                         //ui.position.left = offset.left;
 
-                         //console.log('after');
 
-                         //console.log(ui.helper.offset());
 
-                         ////ui.helper.offset(offset);
 
-                         //ui.helper.css({
 
-                         //    left: offset.left,
 
-                         //    top: offset.top
 
-                         //});
 
-                         //console.log(ui.helper.offset());
 
-                     }
 
-                 });
 
-             },
 
-             handleDataGridRowClick: function () {
 
-                 formulaPointPopup.handleDataGridRowClick.apply(this, arguments);
 
-             },
 
-             //    : function (id, dataGrid, clickRow, popupVisible) {
 
-             //    viewModel.formulaPointPopup.show();
 
-             //}
 
-         }),
 
-         parameterDataGridOptions = utils.datagrid.defaultOptions({
 
-             dataSource: parameters,
 
-             datagridId: 'parameterDataGrid',
 
-             width: '100%',
 
-             height: 320,
 
-             pager: {
 
-                 showPageSizeSelector: false,
 
-                 allowedPageSizes: []
 
-             },
 
-             //selection: {
 
-             //    mode: 'multiple'
 
-             //},
 
-             columns: [
 
-                 { dataField: 'ParameterId', caption: $G('variable'), width: '10%' },
 
-                 //{ dataField: 'ParameterFacilityCode/CmFacility/Name', width: '30%' },
 
- //                { dataField: 'FacilityName', caption: $G('facilityName'), width: '45%' },
 
-                 { dataField: 'BemsMonitoringPoint/CmFacility/Name', caption: $G('facilityName'), width: '45%' },
 
-                 { dataField: 'PointName', caption: $G('pointName'), width: '45%' },
 
-             ],
 
-             wordWrapEnabled: true,
 
-             rowPrepared: function (rowElement, rowInfo) {
 
-                 if (rowInfo.rowType != 'data') {
 
-                     return;
 
-                 }
 
-                 rowElement
 
-                     .addClass('droppableParameterRow')
 
-                     .data('keyValue', rowInfo.key)
 
-                     .data('data', rowInfo.data);
 
-             },
 
-             contentReadyAction: function (e) {
 
-                 e.element.find('.droppableParameterRow').droppable({
 
-                     drop: function (event, ui) {
 
-                         var draggingRowKey = ui.draggable.data('keyValue');
 
-                         var draggingRowData = ui.draggable.data('data');
 
-                         var targetRowKey = $(this).data('keyValue');
 
-                         var draggingIndex = null,
 
-                             targetIndex = null;
 
-                         console.log(draggingRowKey);
 
-                         console.log(targetRowKey);
 
-                         var paramter = _.find(parameters(), function (x) {
 
-                             return x.ParameterId === targetRowKey.ParameterId;
 
-                         });
 
-                         paramter.FacilityKey = draggingRowKey;
 
-                         //paramter.FacilityName = draggingRowData.FacilityName();
 
-                         //hcLee 2016 03 02
 
-                         paramter['BemsMonitoringPoint/CmFacility/Name'] = draggingRowData['CmFacility/Name']();
 
-                         paramter.PointName = draggingRowData.Name();
 
-                         paramter.ParameterFacilityCode = draggingRowData.FacilityCode();
 
-                         paramter.ParameterPropertyId = draggingRowData.PropertyId();
 
-                         $('#parameterDataGrid').dxDataGrid('instance').refresh();
 
-                         console.log($('#parameterDataGrid').dxDataGrid('instance').option('hoverStateEnabled'));
 
-                     }
 
-                 });
 
-             },
 
-             handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
 
-             },
 
-         }),
 
-         tableDataGridOptions = utils.datagrid.defaultOptions({
 
-             dxDataSource: tableDataSource,
 
-             datagridId: 'tableDataGrid',
 
-             dbId: 'BemsFormulaTable',
 
-             width: '100%',
 
-             height: 240,
 
-             pager: {
 
-                 showPageSizeSelector: false,
 
-                 allowedPageSizes: []
 
-             },
 
-             //selection: {
 
-             //    mode: 'multiple'
 
-             //},
 
-             columns: [
 
-                 { dataField: 'FunctionName', caption: $G('functionName'), width: '20%' },
 
-                 { dataField: 'Description', caption: $G('description'), width: '80%' },
 
-             ],
 
-             wordWrapEnabled: true,
 
-             handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
 
-             }
 
-         });
 
-     formulaDataViewModel.Name = ko.observable();
 
-     // hcLee 2016 01 15 확장
 
-     function handleViewShowing() {
 
-         deferredForSearch.resolve();
 
-         handleSearchInSearchView();
 
-     }
 
-     // hcLee 2016 01 15 확장
 
-     function handleSearchInSearchView(filter) {
 
-         var filterA = [];
 
-         filterA.push(['SiteId', '=', BWA.UserInfo.SiteId()]);
 
-         filterA.push(['FacilityTypeId', '<', 100]);
 
-         _.each(filter, function (x) {
 
-             filterA.push(x);
 
-         });
 
-         pointDataSource.filter(filterA);
 
-         pointDataSource.load().done(function (result) {
 
-             works(result);
 
-         });
 
-     }
 
-     function refreshList() {
 
-     }
 
-     function handleClickTreeItem(element, data) {
 
-         // 2015 11 16  hcLee 추가
 
-         selectedTreeItem(data);
 
-         var depth = data.depth;
 
-         if (depth !== FORMULA_DEPTH) return;
 
-         var parent = data.parentData;
 
-         var data = data.data;
 
-         selectedTreeItemData(data);
 
-         var siteId = BWA.UserInfo.SiteId();
 
-         var filter = [
 
-             eq('SiteId', siteId),
 
-             'and',
 
-             eq('FacilityTypeId', data.FacilityTypeId()),
 
-             'and',
 
-             eq('FormulaId', data.FormulaId()),
 
-             'and',
 
-             eq('FacilityCode', parent.data.FacilityCode()),
 
-         ];
 
-         formulaDataViewModel.SiteId(siteId);
 
-         formulaDataViewModel.FacilityTypeId(data.FacilityTypeId());
 
-         formulaDataViewModel.FacilityCode(parent.data.FacilityCode()); // parent 값을 가져올 수 있도록 treewidget를 수정 하자.
 
-         formulaDataViewModel.FormulaId(data.FormulaId());
 
-         formulaDataViewModel.Name(data.Name);
 
-         formulaDataSource.filter(filter);
 
-         formulaDataSource.load().done(function (result) {
 
-             if (_.isEmpty(result)) {
 
-                 //                BWA.DataUtil.resetViewModel(formulaDataViewModel);
 
-                 formulaDataViewModel.Formula('');
 
-                 parameters([]);
 
-                 return;
 
-             }
 
-             formulaDataViewModel.fromJS(result[0].toJS());
 
-             formulaDataViewModel.Name(data.Name());
 
-             parameterDataSource.filter([
 
-                 eq('SiteId', siteId),
 
-                 'and',
 
-                 eq('FacilityTypeId', data.FacilityTypeId()),
 
-                 'and',
 
-                 //eq('FacilityCode', parent.data.FacilityCode()),
 
-                 eq('FacilityCode', formulaDataViewModel.FacilityCode()),
 
-                 'and',
 
-                 eq('FormulaId', data.FormulaId())
 
-             ]);
 
-             parameterDataSource.load().done(function (paramterArray) {
 
-                 //                if (_.isEmpty(paramterArray) === false) {
 
-                 parameters(paramterArray);
 
-                 //              }
 
-             });
 
-         });
 
-     }
 
-     function handleViewShown() {
 
-         // 트리노드 선택 후 다른 화면으로 이동 한 경우,
 
-         // 다시 현재 화면으로 들어왔을 때 이전에 선택되어 있던 트리노드가
 
-         // 계속 선택된 상태로 표시되는 현상을 막기 위한 코드
 
-         if (facilityDataSource._items.length != 0) {
 
-             var data = selectedTreeItem();
 
-             if (data != null) $('#formulaTreeView').cwTreeView('reload', selectedTreeItem().parentData);
 
-         }
 
-         var eq = BWA.DataUtil.constructEqualFilter;
 
-         $('#formulaTreeView').cwTreeView({
 
-             width: '40%',
 
-             height: 'auto',
 
-             onClickTreeItem: handleClickTreeItem,
 
-             delegateDataSource: function (data, alterObj) {
 
-                 var id = data.id;
 
-                 var depth = data.depth;
 
-                 var promise = null;
 
-                 switch (depth) {
 
-                     case 0:
 
-                         var typeDeferred = new $.Deferred();
 
-                         promise = typeDeferred.promise();
 
-                         alterObj.IsFunction = false;
 
-                         typeDeferred.resolve([
 
-                             { Id: 99, Name: '등록설비' },
 
-                             { Id: 100, Name: '시스템' }
 
-                         ]);
 
-                         break;
 
-                     case 1:
 
-                         var filter;
 
-                         switch (data.data.Id) {
 
-                             case 99: filter = [['FacilityTypeId', '<', 99]]; break;
 
-                             case 100: filter = [['FacilityTypeId', '>', 99]]; break;
 
-                         }
 
-                         facilityTypeDataSource.filter(filter);
 
-                         promise = facilityTypeDataSource.load();
 
-                         break;
 
-                     case 2:
 
-                         facilityDataSource.filter([
 
-                             eq('SiteId', BWA.UserInfo.SiteId()),
 
-                             'and',
 
-                             eq('FacilityTypeId', data.data.FacilityTypeId())
 
-                         ]);
 
-                         promise = facilityDataSource.load();
 
-                         break;
 
-                     case 3:
 
-                         formulaBaseDataSource.filter([
 
-                             eq('FacilityTypeId', data.data.FacilityTypeId())
 
-                         ]);
 
-                         promise = formulaBaseDataSource.load();
 
-                         break;
 
-                 }
 
-                 return promise;
 
-             },
 
-         });
 
-     }
 
-     function hanleRemoveSelectedParameter() {
 
-         var gridView = $('#parameterDataGrid').dxDataGrid('instance');
 
-         var rows = gridView.getSelectedRowsData();
 
-         console.log(rows);
 
-     }
 
-     function getParametersFromFormula() {
 
-         var regex = /\b[A-Z]\b/g;
 
-         var match;
 
-         //        var ps = parameters();
 
-         var list = [];
 
-         while (match = regex.exec(formulaDataViewModel.Formula())) {
 
-             var variable = match[0];
 
-             if (_.some(list, function (x) {
 
-                 return x.ParameterId() === variable;
 
-             })) continue;
 
-             list.push({
 
-                 'ParameterId': ko.observable(variable)
 
-             });
 
-         }
 
-         return list;
 
-     }
 
-     function formulaValueChangeAction(e) {
 
-         var savedParameters = parameters();
 
-         var formulaParameters = getParametersFromFormula();
 
-         console.log(savedParameters);
 
-         console.log(formulaParameters);
 
-         _.each(formulaParameters, function (p) {
 
-             if (_.some(savedParameters, function (x) {
 
-                 return x.ParameterId() === p.ParameterId();
 
-             })) return;
 
-             parameters.push(p);
 
-         });
 
-         for (var i = 0 ; i < savedParameters.length ; i++) {
 
-             var p = savedParameters[i];
 
-             if (_.some(formulaParameters, function (x) {
 
-                 console.log(x.ParameterId() + ' !== ' + p.ParameterId());
 
-                 return x.ParameterId() === p.ParameterId();
 
-             })) {
 
-                 continue;
 
-             }
 
-             parameters.splice(i, 1);
 
-             i--;
 
-         }
 
-     }
 
-     function saveFormula() {
 
-         var formula = formulaDataViewModel.toJS();
 
-         if (_.some(parameters(), function (x) {
 
-             // 아래 코드에서 오류발생하여 변경 
 
-             //return _.isUndefined(x.ParameterFacilityCode) || _.isUndefined(x.ParameterFacilityCode());
 
-             return _.isUndefined(x.ParameterFacilityCode);
 
-         })) {
 
-             utils.toast.show('관제점이 할당되지 않은 파라미터가 존재합니다.', 'error');
 
-             return;
 
-         }
 
-         formula.Paramters = _.map(parameters(), function (x) {
 
-             x = BWA.DataUtil.convertHybridViewModelToJS(x);
 
-             x.SiteId = formula.SiteId;
 
-             x.FacilityTypeId = formula.FacilityTypeId;
 
-             x.FacilityCode = formula.FacilityCode;
 
-             x.FormulaId = formula.FormulaId;
 
-             return _.pick(x, 'SiteId', 'FacilityTypeId', 'FacilityCode',
 
-                 'FormulaId', 'ParameterId',
 
-                 'ParameterFacilityCode', 'ParameterPropertyId');
 
-         });
 
-         var promise = BWA.api.post('BemsFormula/PostBemsFormula', formula);
 
-         promise.done(function () {
 
-             utils.toast.show($G('successDatabaseProcessMsg'));
 
-         });
 
-     }
 
-     FNameForSearch("");
 
-     PNameForSearch("");
 
-     var searchViewOptions = {
 
-         searchViewItems: [
 
-             { id: 'CmFacility/Name', value: FNameForSearch },
 
-             { id: 'Name', value: PNameForSearch },
 
-         ],
 
-         promiseDataInSearchView: deferredForSearch.promise()
 
-     };
 
-     viewModel = {
 
-         //        viewShown: handleViewShown,
 
-         refreshList: refreshList,
 
-         saveFormula: saveFormula,
 
-         pointDataGridOptions: pointDataGridOptions,
 
-         parameterDataGridOptions: parameterDataGridOptions,
 
-         tableDataGridOptions: tableDataGridOptions,
 
-         formulaDataViewModel: formulaDataViewModel,
 
-         formulaValueChangeAction: formulaValueChangeAction,
 
-         hanleRemoveSelectedParameter: hanleRemoveSelectedParameter,
 
-         // hcLee 2016 01 15 확장
 
-         viewShowing: handleViewShowing,
 
-     };
 
-     formulaPointPopup = viewModel.formulaPointPopup = BWA.Popup.FormulaPointPopup.create(viewModel);
 
-     // hcLee 2016 01 15 확장
 
-     //return $.extend(BWA.CommonView.create(params, viewInfo, viewModel.options, null, handleViewShown), viewModel);
 
-     return $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView), viewModel);
 
- };
 
 
  |