$(function () { 'use strict'; BWA.Popup = BWA.Popup || {}; BWA.Popup.PointSearch = { create: function (viewModel, callbackClickAdd) { var BUILDING_DEPTH = 1, FLOOR_DEPTH = 2, ZONE_DEPTH = 3; var dataViewModel = new BemsWebApplication.BemsMonitoringPointViewModel(), popupVisible = ko.observable(false), gridViewFilter = ko.observable([]), factory = BemsWebApplication.Factory.PointLocationMapping, gridView = null, searchView = null, initialized = false, dataSource = factory.getDataSourceWithLocation(), //buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true), buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', [('SiteId', '=', BWA.UserInfo.SiteId())]), floorDataSource = BemsWebApplication.db.createDataSource('CmFloor', [('SiteId', '=', BWA.UserInfo.SiteId())]), zoneDataSource = BemsWebApplication.db.createDataSource('CmZone', [('SiteId', '=', BWA.UserInfo.SiteId())]), buildingIdForSearch = ko.observable(0), floorIdForSearch = ko.observable(0), zoneIdForSearch = ko.observable(0), dataGridOptions = utils.datagrid.defaultOptions({ //dxDataSource: dataSource, dxDataSource: BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BWA.odata.MonitoringPoint, map: function (item) { return BWA.db.createViewModelWithMultipleFK(item); // Ex class설정? hcLee 2016 01 22 }, filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['FacilityTypeId', '<', 100] ] } }), //}, 'BemsMonitoringPoint'), // datagridId: datagridId, dbId: 'BemsMonitoringPoint', height: 610, selection: { mode: 'multiple' }, //columns: factory.defaultColumns, columns: [ { dataField: 'FacilityName', caption: $G('facilityName'), width: '30%', alignment: 'center' }, { dataField: 'Name', caption: $G('pointName'), width: '35%', alignment: 'center' }, { dataField: 'ValueType', caption: $G('valueType'), width: '10%', alignment: 'center', allowFilter: false, customizeText: function (cellInfo) { return $G.pointValueType(cellInfo.value); } }, { dataField: 'Location', caption: $G('location'), width: '35%', alignment: 'center' }, ], //cellPrepared: factory.cellPreparedFunc, // hcLee 2016 01 22 MonitoringPointEx에서 처리되므로 Factory.PointLocationMapping는 사용하면 안됨. wordWrapEnabled: true, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { } } ); function handlePopupShowing(e) { } function refreshList() { gridView.filter(gridViewFilter()); } function handlePopupButtonAddPoiint() { var rows = gridView.getSelectedRowsData(); var promise = callbackClickAdd(rows); if (_.isNull(promise)) return; promise.then(function () { refreshList(); }); gridView.clearSelection(); } function handlePopupButtonClose() { popupVisible(false); } function setLocation(siteId, buildingId, floorId, zoneId) { var eq = BWA.DataUtil.constructEqualFilter; var neq = BWA.DataUtil.constructNotEqualFilter; gridViewFilter([ eq('SiteId', siteId), 'and', [ neq('BuildingId', buildingId === null ? 0 : buildingId), 'or', neq('FloorId', floorId === null ? 0 : floorId), 'or', neq('ZoneId', zoneId === null ? 0 : zoneId) ] ]); if (_.isNull(gridView) === false) { refreshList(); } } function handleClickTreeItem(element, data) { var eq = BWA.DataUtil.constructEqualFilter; var depth = data.depth; data = data.data; switch (depth) { case BUILDING_DEPTH: // building buildingIdForSearch(data.BuildingId()); floorIdForSearch(0); zoneIdForSearch(0); break; case FLOOR_DEPTH: // floor buildingIdForSearch(data.BuildingId()); floorIdForSearch(data.FloorId()); zoneIdForSearch(0); break; case ZONE_DEPTH: // zone buildingIdForSearch(data.BuildingId()); floorIdForSearch(data.FloorId()); zoneIdForSearch(data.ZoneId()); break; } } function handlePopupShown() { if (initialized === false) { gridView = $('#gridPointContainer').dxDataGrid('instance'); initialized = true; } refreshList(); searchView.show(); } var toolbarItems = [ { location: 'before', text: $G('point') }, { location: 'after', widget: 'button', options: { text: $G('add'), icon: 'plus', clickAction: handlePopupButtonAddPoiint } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } } ]; var popupOptions = { width: '900px', height: 'auto', visible: popupVisible, closeOnOutsideClick: false, shading: false, showingAction: handlePopupShowing, shownAction: handlePopupShown, animation: utils.popup.createAnimation() }; searchView = BWA.Popup.SearchView.create({ parentPopupId: 'popupSearchPoint', parentPopupVisible: popupVisible, searchItems: [ { id: 'Location' }, { id: 'FacilityName' }, { id: 'Name' } ], handleInitializeUpdate: function () { $('#locationTreeViewInSearchViewPopup').cwTreeView({ // width: '40%', // height: '480px', onClickTreeItem: handleClickTreeItem, delegateDataSource: BWA.DataUtil.getLocationDataSourceDelegateForTreeView( buildingDataSource, floorDataSource, zoneDataSource ) }); }, handleSearch: function (filter, searchItems) { filter = [['SiteId', '=', BWA.UserInfo.SiteId()]].concat(filter) var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; if (searchItems.Location.check()) { filter = filter.concat([ eq('BuildingId', buildingIdForSearch()), and, eq('FloorId', floorIdForSearch()), and, eq('ZoneId', zoneIdForSearch()) ]); } gridView.filter(filter); console.log(filter); } }); return { dataModel: dataViewModel, dataSource: dataSource, popupOptions: popupOptions, toolbarItems: toolbarItems, dataGridOptions: dataGridOptions, setLocation: setLocation, searchView: searchView, show: function () { popupVisible(true); } }; } }; });