123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- $(function () {
- 'use strict';
- var FfacilityClassForSearch = ko.observableArray();
- var FfacilityCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');
- var FfacilityClass = ko.observableArray();
- BWA.Popup.Facility = BWA.Popup.Facility || {};
- BWA.Popup.Facility.create = window.$FacilitySearchPopup = function (viewModel, selectedFacilityData, options) {
- options = options || {};
- options.datagridId = options.datagridId || 'facilityDataGridForSearch';
- var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass'),
- buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true),
- floorDataSource = BemsWebApplication.db.createDataSource('CmFloor'),
- zoneDataSource = BemsWebApplication.db.createDataSource('CmZone'),
- defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId'),
- defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),
- defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId'),
- deferredForSearch = new $.Deferred();
- var onSelectedFacilities = options.onSelectedFacilities, isMultipleSelect = options.isMultipleSelect;
- var facilityClassesForSearch = [ko.observableArray(), ko.observableArray(), ko.observableArray()],
- facilityClassValuesForSearch = [ko.observable(), ko.observable(), ko.observable()],
- buildingsForSearch = ko.observableArray(),
- floorsForSearch = ko.observableArray(),
- buildingIdForSearch = ko.observable(),
- floorIdForSearch = ko.observable();
- var dataViewModel = new BemsWebApplication.CmFacilityViewModel(),
- initialized = false,
- gridView,
- popupVisible = ko.observable(false),
- facilityOptions = BemsWebApplication.Factory.Facility,
- dataSource = BWA.DataUtil.createDataSource({
- dataSourceOptions: facilityOptions.getDataSourceForDataGrid()
- }, 'CmFacility');
- var dataGridOptions = utils.datagrid.defaultOptions({
- dxDataSource: dataSource,
- selectedSourceItem: dataViewModel,
- datagridId: options.datagridId,
- dbId: 'CmFacility',
- handleDataGridRowClick: function () {
- },
- columns: facilityOptions.getColumns([
- /* hcLee 2016 03 14
- { dataField: 'ClassName', width: '25%' },
- { dataField: 'Name', width: '30%' },
- { dataField: 'ManufactureModel', width: '15%' },
- { dataField: 'Location', width: '30%' } */
- {
- dataField: 'FirstClassId', width: '12%', caption: '시설(대)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'SecondClassId', width: '12%', caption: '시설(중)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'ThirdClassId', width: '12%', caption: '시설(소)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- { dataField: 'Name', width: '55%' },
- { dataField: 'ManufactureModel', width: '15%', visible: false },
- { dataField: 'CmFloor/Name', width: '9%' }
- ]),
- wordWrapEnabled: true,
- cellPrepared: BemsWebApplication.Factory.Facility.cellPrepared,
- //searchPanelPlaceHolder: '시설 검색',
- });
- if (isMultipleSelect) {
- dataGridOptions.selection = { mode: 'multiple', allowSelectAll: true };
- dataGridOptions.handleDataGridRowClick = function () { };
- }
- else {
- dataGridOptions.handleDataGridRowClick = function (id, dataGrid, clickRow) {
- var data = clickRow.data;
- if (!_.isUndefined(selectedFacilityData)) {
- selectedFacilityData({
- SiteId: data.SiteId(),
- FacilityCode: data.FacilityCode(),
- Name: data.Name(),
- FirstClassId: data.FirstClassId(),
- SecondClassId: data.SecondClassId(),
- ThirdClassId: data.ThirdClassId(),
- });
- }
- if (!_.isUndefined(onSelectedFacilities)) {
- onSelectedFacilities([BWA.DataUtil.convertViewModelToJS(data)]);
- }
- popupVisible(false);
- }
- }
- function initializeSearchClasses(onlyThird) {
- if (onlyThird === undefined || onlyThird === false) {
- facilityClassesForSearch[1](defaultSearchClassArray.slice(0));
- facilityClassValuesForSearch[1](0);
- }
- facilityClassesForSearch[2](defaultSearchClassArray.slice(0));
- facilityClassValuesForSearch[2](0);
- }
- var handleFirstClassChangedValueInSearchView = function (e) {
- if (e.value === 0) {
- initializeSearchClasses();
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClassesForSearch[1], defaultSearchClassArray);
- };
- var handleSecondClassChangedValueInSearchView = function (e) {
- if (e.value === 0) {
- initializeSearchClasses(true);
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClassesForSearch[2], defaultSearchClassArray);
- };
- var handleBuildingInSearchView = function (e) {
- if (e.value === 0) {
- floorsForSearch(defaultSearchFloorArray.slice(0));
- floorIdForSearch(0);
- return 0;
- }
- BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floorsForSearch, defaultSearchFloorArray);
- }
- function handlePopupShowing() {
- FfacilityCodeClassDataSource.filter([
- ['SiteId', '=', BWA.UserInfo.SiteId()]
- ]);
- $.when(
- FfacilityCodeClassDataSource.load()
- ).done(function (Result) {
- FfacilityClass = ko.observableArray();
- var cnt = 0;
- for (var i = 0; i < Result.length; i++) {
- FfacilityClass.push(Result[i]);
- }
- FfacilityClassForSearch($SearchView.createArrayOfSelectBox('FacilityClassId', FfacilityClass()));
- });
- facilityClassDataSource.filter([
- ['SiteId', '=', BWA.UserInfo.SiteId()],
- 'and',
- ['ParentFacilityClassId', '=', null]
- ]);
- $.when(facilityClassDataSource.load(), buildingDataSource.load()).done(function (result1, result2) {
- // hcLee 2016 02 01
- //facilityClassValuesForSearch[0](0);
- //facilityClassValuesForSearch[1](0);
- //facilityClassValuesForSearch[2](0);
- // hcLee 2016 02 01
- //if (initialized === false) {
- facilityClassesForSearch[0]($SearchView.createArrayOfSelectBox('FacilityClassId', result1[0]));
- initializeSearchClasses();
- buildingsForSearch($SearchView.createArrayOfSelectBox('BuildingId', result2[0]));
- floorsForSearch($SearchView.createArrayOfSelectBox('FloorId', undefined));
- // }
- deferredForSearch.resolve();
- });
- }
- function handlePopupShown() {
- if (initialized === false) {
- gridView = $('#facilityDataGridForSearch').dxDataGrid('instance');
- $("#facilityDataGridForSearch").dxDataGrid({
- paging: {
- pageSize: 14
- }
- });
- initialized = true;
- }
- searchView.show();
- gridView.clearSelection();
- }
- function handlePopupButtonSelect() {
- var array = utils.datagrid.getSelectedRowsData(options.datagridId);
- if (!_.isUndefined(onSelectedFacilities)) {
- onSelectedFacilities(array);
- }
- if (!_.isUndefined(selectedFacilityData)) {
- selectedFacilityData(array);
- }
- popupVisible(false);
- }
- function handlePopupButtonClose() {
- popupVisible(false);
- }
- var toolbarItems = [
- { location: 'before', text: '찾기' },
- { location: 'after', widget: 'button', options: { text: $G('select'), icon: 'save', visible: isMultipleSelect, clickAction: handlePopupButtonSelect } },
- { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } }
- ];
- var popupOptions = {
- width: '950px',
- height: '600px',
- visible: popupVisible,
- closeOnOutsideClick: true,
- showingAction: handlePopupShowing,
- shownAction: handlePopupShown,
- animation: window.utils.popup.createAnimation(),
- paging: { pageSize: 14 }
- };
- var searchView = BWA.Popup.SearchView.create({
- parentPopupId: 'popupSearchFacility',
- parentPopupVisible: popupVisible,
- promiseDataForSearch: deferredForSearch,
- searchItems: [
- { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: facilityClassValuesForSearch[0], dataSource: facilityClassesForSearch[0], handleChangedValue: handleFirstClassChangedValueInSearchView },
- { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: facilityClassValuesForSearch[1], dataSource: facilityClassesForSearch[1], handleChangedValue: handleSecondClassChangedValueInSearchView },
- { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: facilityClassValuesForSearch[2], dataSource: facilityClassesForSearch[2] },
- { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: buildingIdForSearch, dataSource: buildingsForSearch, handleChangedValue: handleBuildingInSearchView },
- { id: 'FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'BuildingId', value: floorIdForSearch, dataSource: floorsForSearch },
- { id: 'Name' }
- ],
- handleInitializeUpdate: function () {
- },
- handleSearch: function (filter, searchItems) {
- var eq = BWA.DataUtil.constructEqualFilter;
- var and = BWA.DataUtil.andFilter;
- filter = [
- eq('SiteId', BWA.UserInfo.SiteId())
- ].concat(filter)
- gridView.filter(filter);
- // console.log(filter);
- }
- });
- return {
- dataModel: dataViewModel,
- dataSource: dataSource,
- popupOptions: popupOptions,
- searchView: searchView,
- toolbarItems: toolbarItems,
- dataGridOptions: dataGridOptions,
- show: function (callbackOnSelectedFacilities) {
- if (_.isFunction(callbackOnSelectedFacilities)) {
- onSelectedFacilities = callbackOnSelectedFacilities;
- }
- popupVisible(true);
- }
- };
- };
- // 팝업에서 사용될 때, 선택된 시설 목록을 삭제하는 기능
- BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc = function (koGridView, koDataArray) {
- return function handleDeleteSelectedFacilities() {
- var rows = koGridView().getSelectedRowsData();
- if (_.isEmpty(rows)) {
- utils.toast.show('선택된 시설이 없습니다.', 'error');
- return;
- }
- _.each(rows, function (row) {
- var array = koDataArray();
- var length = array.length;
- var id = row.FacilityCode();
- for (var i = 0 ; i < length ; i++) {
- if (id === array[i].FacilityCode()) {
- array.splice(i, 1);
- break;
- }
- }
- });
- koGridView().refresh();
- }
- };
- BWA.Popup.Facility.getReadOnlyDataGridOptions = function (dataSource, koVisible) {
- FfacilityCodeClassDataSource.filter([
- ['SiteId', '=', BWA.UserInfo.SiteId()]
- ]);
- $.when(
- FfacilityCodeClassDataSource.load()
- ).done(function (Result) {
- FfacilityClass = ko.observableArray();
- var cnt = 0;
- for (var i = 0; i < Result.length; i++) {
- FfacilityClass.push(Result[i]);
- }
- FfacilityClassForSearch($SearchView.createArrayOfSelectBox('FacilityClassId', FfacilityClass()));
- });
- var facilityColumns = BWA.Factory.Facility.getColumns([
- {
- dataField: 'FirstClassId', width: '15%', caption: '시설(대)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'SecondClassId', width: '15%', caption: '시설(중)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'ThirdClassId', width: '15%', caption: '시설(소)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- { dataField: 'FacilityCode', width: '30%', visible: false },
- { dataField: 'Name', width: '55%' }
- ]);
- return utils.datagrid.defaultOptions({
- width: 675,
- visible: koVisible,
- pager: {
- showPageSizeSelector: false,
- allowedPageSizes: [],
- visible: true
- },
- dataSource: dataSource,
- columns: facilityColumns
- })
- };
- BWA.Popup.Facility.getModifiableDataGridOptions = function (dataSource, koVisible, koGridView) {
- var facilityColumns = BWA.Factory.Facility.getColumns([
- {
- dataField: 'FirstClassId', width: '15%', caption: '시설(대)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'SecondClassId', width: '15%', caption: '시설(중)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'ThirdClassId', width: '15%', caption: '시설(소)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < FfacilityClassForSearch().length; i++) {
- if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return FfacilityClassForSearch()[i].Name();
- }
- }
- }
- },
- { dataField: 'FacilityCode', width: '30%', visible: false },
- { dataField: 'Name', width: '55%' }
- ]);
- return utils.datagrid.defaultOptions({
- width: 675,
- visible: koVisible,
- pager: {
- showPageSizeSelector: false,
- allowedPageSizes: [],
- visible: true
- },
- dataSource: dataSource,
- selection: { mode: 'multiple', allowSelectAll: true },
- columns: facilityColumns,
- contentReadyAction: function (e) {
- koGridView(e.component);
- },
- })
- };
- });
|