| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411 | BemsWebApplication.Facility = function(params, viewInfo) {    "use strict";    var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');    var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true),        floorDataSource = BemsWebApplication.db.createDataSource('CmFloor'),        zoneDataSource = BemsWebApplication.db.createDataSource('CmZone')    ;    var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];    var buildings = ko.observableArray(),        floors = ko.observableArray(),        zones = ko.observableArray();    var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()],        searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()],        searchBuildings = ko.observableArray(),        searchFloors = ko.observableArray(),        searchBuildingId = ko.observable(),        searchFloorId = ko.observable();    var imagefileUrl = ko.observable(),        uploadedFileInfo = {},        dropZone = null;    var isMainContactor = true,        selectedUserData = ko.observable(),        selectedFacility = ko.observable(),        selectedFacilityDataInSearchParentPopup = ko.observable();    var searchDeferred = new $.Deferred();    var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId'),        defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),        defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId');    var tabsVisible = ko.observable(false),        currentTabIndex = ko.observable(0);    selectedFacilityDataInSearchParentPopup.subscribe(function(value) {        viewModel.dataModel.ParentFacilityCode(value.FacilityCode);        viewModel.dataModel.ParentFacilityName(value.Name);    });    selectedUserData.subscribe(function(value) {        if (isMainContactor) {            viewModel.dataModel.MainContactorUserId(value.UserId);            viewModel.dataModel.MainContactorUserName(value.Name);        }        else {            viewModel.dataModel.SubContactorUserId(value.UserId);            viewModel.dataModel.SubContactorUserName(value.Name);        }    });    var handleFirstClassChangedValueInSearchView = function(e) {        if (e.value === 0) {            initializeSearchClasses();            return;        }        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);    };    var handleSecondClassChangedValueInSearchView = function(e) {        if (e.value === 0) {            initializeSearchClasses(true);            return;        }        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);    };    var handleBuildingInSearchView = function(e) {        if (e.value === 0) {            searchFloors(defaultSearchFloorArray.slice(0));            searchFloorId(0);            return 0;        }        BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, searchFloors, defaultSearchFloorArray);    }    function initializeSearchClasses(onlyThird) {        if (onlyThird === undefined || onlyThird === false) {            searchFacilityClasses[1](defaultSearchClassArray.slice(0));            searchFacilityClassValues[1](0);        }        searchFacilityClasses[2](defaultSearchClassArray.slice(0));        searchFacilityClassValues[2](0);    }    function setupDropZone(isEditModeInPopup, dataViewModel) {        var timer = null;        isEditModeInPopup.subscribe(function(value) {            if (value) {                if (timer) {                    clearInterval(timer);                }                timer = setInterval(function() {                    if ($('#facilityDropZone').length) {                        if (_.isNull(dropZone)) {                            dropZone = BWA.DropZone.create({                                id: '#facilityDropZone',                                categoryId: $Code.FileCategory.FACILITY,                                uploadedFileInfo: uploadedFileInfo,                                handleRemoveBeforePromise: function() {                                    var keys = BWA.db.extractKeysObject('CmFacility', dataViewModel);                                    return BWA.db.CmFacility.update(keys, { FileId: null });                                },                                handleSuccess: function(fileInfo) {                                    dataViewModel.FileId(fileInfo.FileId);                                },                                handleRemovedFile: function() {                                    dataViewModel.FileId(null);                                },                            });                            uploadedFileInfo.SiteId = dataViewModel.SiteId();                            uploadedFileInfo.FileId = dataViewModel.FileId();                            if (uploadedFileInfo.FileId) {                                BWA.db.CmFile.byKey(uploadedFileInfo).done(function(data) {                                    dropZone.removeAllFiles();                                    dropZone.emit('addedfile', {                                        name: data.Name,                                        size: data.FileSize                                    });                                    //dropZone.options.maxFiles = 0; // 이게 있으면 삭제후 다시 업로드가 안 된다.                                });                            }                        }                    }                }, 100);            }            else {                if (timer) {                    clearInterval(timer);                    timer = null;                }                dropZone = null;            }        });    }    var facilityOptions = BemsWebApplication.Factory.Facility;    var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmFacility', {        dataSourceOptions: facilityOptions.getDataSourceForDataGrid(),        //dataSourceOptions: {        //    store: BemsWebApplication.odata.Facility,        //    select: [ 'SiteId' , 'FacilityCode' , 'ParentFacilityName', 'FirstClassName', 'SecondClassName', 'ThirdClassName', 'Name', 'Nickname',        //              'BuildingName', 'FloorName', 'ZoneName', 'ManufactureModel', 'MainContactorUserName', 'SubContactorUserName' ]        //},        columns: facilityOptions.getColumns([            { dataField: 'FacilityCode' },            { dataField: 'ClassName' },            { dataField: 'Name' },            { dataField: 'ManufactureModel' },            { dataField: 'MainContactorUserName' },            { dataField: 'SubContactorUserName' },            { dataField: 'Location' }        ]),        popupWidth: '740px',        wordWrapEnabled: true,        cellPrepared: BemsWebApplication.Factory.Facility.cellPrepared,        searchViewItems: [            { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },            { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },            { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },            { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: searchBuildingId, dataSource: searchBuildings, handleChangedValue: handleBuildingInSearchView },            { id: 'FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'BuildingId', value: searchFloorId, dataSource: searchFloors },            { id: 'Name' }        ],        promiseDataInSearchView: searchDeferred.promise(),        handleViewShowing: function() {            facilityClassDataSource.filter([                    ['SiteId', '=', BWA.UserInfo.SiteId()],                    'and',                    ['ParentFacilityClassId', '=', null]            ]);            $.when(facilityClassDataSource.load(), buildingDataSource.load()).done(function(result1, result2) {                facilityClasses[0](result1[0]);                searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(result1[0]));                initializeSearchClasses();                buildings(result2[0]);                searchBuildings(defaultSearchBuildingArray.slice(0).concat(result2[0]));                searchFloors(defaultSearchFloorArray.slice(0));                searchDeferred.resolve();            });        },        handleViewShown: function(dataViewModel, isEditModeInPopup) {            setupDropZone(isEditModeInPopup, dataViewModel);        },        handlePopupShowing: function(isNewInPopup) {            tabsVisible(isNewInPopup() == false);        },        handlePopupShown: function(isEditModeInPopup, isNewInPopup, dataViewModel) {            if (isNewInPopup === false) {                //viewModel.childFacilitiesMultiView.load();                            }            viewModel.searchViewPopup.show();        },        //handlePopupHiding: function() {        //    if (_.isNull(dropZone) === false) {        //        dropZone.dispose();        //    }        //},        //handleCancelInPopup: function() {        //    if (_.isNull(dropZone) === false) {        //        dropZone.dispose();        //    }        //},        handleSaveSuccess: function() {            if (_.isNull(dropZone) === false) {                dropZone.resetUploadedFileInfo();            }        },        handleAfterLoadingModelByKey: function(data, dataViewModel, isNewInPopup) {            if (isNewInPopup() == false) {                BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', dataViewModel.FirstClassId(), facilityClasses[1]).done(function() {                    BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', dataViewModel.SecondClassId(), facilityClasses[2]);                });                BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors).done(function() {                    BWA.DataUtil.setArrayDataSourceFilter(zoneDataSource, 'FloorId', dataViewModel.FloorId(), zones);                });                if (_.isNull(dataViewModel.FileId()) === false) {                    imagefileUrl('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId()));                }                else {                    imagefileUrl(undefined);                }                selectedFacility(dataViewModel);            }        },        handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) {            dataGrid.clearSelection();            var data = clickRow.data;            var dataModel = viewModel.dataModel;            dataModel.ParentFacilityName = $KoSet(dataModel.ParentFacilityName, data.ParentFacilityName);            dataModel.ClassName = $KoSet(dataModel.ClassName,                BWA.Factory.Facility.formatClassName(data.FirstClassName(), data.SecondClassName(), data.ThirdClassName()));            dataModel.BuildingName = $KoSet(dataModel.BuildingName, data.BuildingName);            dataModel.FloorName = $KoSet(dataModel.FloorName, data.FloorName);            dataModel.ZoneName = $KoSet(dataModel.ZoneName, data.ZoneName);            dataModel.MainContactorUserName = $KoSet(dataModel.MainContactorUserName, data.MainContactorUserName);            dataModel.SubContactorUserName = $KoSet(dataModel.SubContactorUserName, data.SubContactorUserName);            popupVisible(true);        }    });    //var handleSelectBoxCompany = function( e ) {    //    viewModel.dataModel.CompanyId(e.value);    //};    floorDataSource.filter('BuildingId', -1);    zoneDataSource.filter('FloorId', -1);    viewModel.handleSelectBoxChangeFirstClass = function(e) {        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[1]);        viewModel.dataModel.SecondClassId(null);        viewModel.dataModel.ThirdClassId(null);    }    viewModel.handleSelectBoxChangeSecondClass = function(e) {        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[2]);        viewModel.dataModel.ThirdClassId(null);    }    viewModel.handleSelectBoxChangeBuilding = function(e) {        BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floors);        viewModel.dataModel.FloorId(null);        viewModel.dataModel.ZoneId(null);    }    viewModel.handleSelectBoxChangeFloor = function(e) {        BWA.DataUtil.setArrayDataSourceFilter(zoneDataSource, 'FloorId', e.value, zones);        viewModel.dataModel.ZoneId(null);    }    viewModel.buttonSearchFacility = function() {        viewModel.facilitySearchPopup.show();    };    viewModel.buttonSearchMainContactorUser = function(e) {        isMainContactor = true;        viewModel.userSearchPopup.show();    }    viewModel.buttonSearchSubContactorUser = function(e) {        isMainContactor = false;        viewModel.userSearchPopup.show();    }    viewModel.tabsOptions = {        visible: tabsVisible,        selectedIndex: currentTabIndex,        dataSource: [            { text: '시설정보' },            { text: '작업이력' },            { text: '하위시설' },            { text: '점검항목' },            { text: '법정항목' },            { text: '운전일자항목' }        ]    };    //viewModel.companyDataSource = companies;    //viewModel.handleSelectBoxCompany = handleSelectBoxCompany;    viewModel.dataModel.ClassName = ko.observable();    viewModel.facilityClasses = facilityClasses;    viewModel.searchFacilityClasses = searchFacilityClasses;    viewModel.buildings = buildings;    viewModel.floors = floors;    viewModel.zones = zones;    viewModel.userSearchPopup = $UserSearchPopup(viewModel, selectedUserData);    viewModel.facilitySearchPopup = BWA.Popup.Facility.create(viewModel, selectedFacilityDataInSearchParentPopup);    var multiViewDataSource = [{        viewModel: viewModel,        imagefileUrl: imagefileUrl,        template: 'facility'    }];    //viewModel.childFacilitiesMultiView = BWA.Facility.createChildFacilitiesMultiViewInPopup(viewModel,selectedFacility);    BWA.Popup.WorkResult.setupMultiViewInPopup(viewModel, selectedFacility, multiViewDataSource);    BWA.Facility.setupMultiViewInPopup(viewModel, selectedFacility, multiViewDataSource);    BWA.FacilityCheckItem.setupMultiViewInPopup($Code.WorkType.REGULAR_CHECK, 'checkItems',        'checkItemDataGrid', viewModel, selectedFacility, multiViewDataSource);    BWA.FacilityCheckItem.setupMultiViewInPopup($Code.WorkType.LEGAL_CHECK, 'legalCheckItems',        'legalCheckItemDataGrid', viewModel, selectedFacility, multiViewDataSource);    //BWA.CheckGroupManagement.setupMultiViewInPopup(viewModel, selectedFacility, multiViewDataSource);    //BWA.LegalCheckGroupManagement.setupMultiViewInPopup(viewModel, selectedFacility, multiViewDataSource);    viewModel.searchViewPopup = BWA.Popup.SearchView.create({        parentPopupId: 'popupDetail',        parentPopupVisible: viewModel.popupVisible,        handleSearch: function(filter, searchItems) {        }    });    //    viewModel.searchViewPopup    viewModel.multiViewOptions = {        height: '560px',        selectedIndex: currentTabIndex,        dataSource: multiViewDataSource    };    return viewModel;};
 |