BWA.AlarmInfo = { Alarm_Image_Change: ko.observable(false) }; $(function () { 'use strict'; var AlarmPopupVisible = ko.observable(false); BWA.AlarmPopup = { AlarmPopupOptions: { visible: AlarmPopupVisible, width: '1400px', height: '850px', // cyim 2017.05.30 : 테스트 결과 Devextreme 버그임. px 로 지정하면 초기 출력시 정확하게 가운데에 있지만, auto 설정시 화면아래에 위치하게 됨 contentTemplate: "content", showTitle: true, title: "알람정보", dragEnabled: false, closeOnOutsideClick: false, shadingColor: 'rgba(0,0,0,0.0)', shownAction: handlePopupShown, animation: window.utils.popup.createAnimation() }, AlarmPopupOpen: function() { AlarmPopupVisible(true); }, AlarmPopupCheckOptions: { visible: false, width: '400px', height: '400px', // cyim 2017.05.30 : 테스트 결과 Devextreme 버그임. px 로 지정하면 초기 출력시 정확하게 가운데에 있지만, auto 설정시 화면아래에 위치하게 됨 contentTemplate: "content", showTitle: true, title: "조치방법", dragEnabled: false, closeOnOutsideClick: false, shadingColor: 'rgba(0,0,0,0.0)', //shownAction: handlePopupShown, animation: window.utils.popup.createAnimation() }, } // 알람 정보 저장 var DataArrayInfo = []; // 팝업 생성되면서 실행 function handlePopupShown() { // dxLoadPanel 패널 $("#LoadPanel").dxLoadPanel({ message: '전체 알람 해제중...', showIndicator: true, visible: false }); $("#Button_StopAlarm").dxButton({ text: "전체 알람 해제", onClick: function () { var num = DataArrayInfo.length; if (num == 0) { // 에러 발생 utils.toast.show('해제 할 알람 정보가 없습니다.', 'error'); return; } DevExpress.ui.dialog.confirm("전체 알람 해제 하시겠습니까?", "전체 알람 해제").done(function (dialogResult) { if (dialogResult) { // 전체 알람 해제 버튼 비활성화 $("#Button_StopAlarm").dxButton('instance').option('disabled', true); // dxLoadPanel 패널 시작 $("#LoadPanel").dxLoadPanel('instance').option('visible', true); // 알람 버튼 색 컬러 변경 정지 BWA.AlarmInfo.Alarm_Image_Change = false; var index = 0; for (var i = 0; i < num; i++) { BWA.db.BemsAlarmLog.update({ SiteId: DataArrayInfo[i].SiteId(), FacilityTypeId: DataArrayInfo[i].FacilityTypeId(), FacilityCode: DataArrayInfo[i].FacilityCode(), PropertyId: DataArrayInfo[i].PropertyId(), FormulaId: DataArrayInfo[i].FormulaId(), CreatedDateTime: DataArrayInfo[i].CreatedDateTime() }, { Conform: true // 확인함 }).done(function () { index++; if (num == index) { // 데이터 갱신 DataArrayInfo = []; $("#gridContainer_alarm").dxDataGrid("instance").option("dataSource", DataArrayInfo); // 전체 알람 해제 버튼 활성화 $("#Button_StopAlarm").dxButton('instance').option('disabled', false); // dxLoadPanel 패널 종료 $("#LoadPanel").dxLoadPanel('instance').option('visible', false); } }).fail(function () { index++; if (num == index) { // 전체 알람 해제 버튼 활성화 $("#Button_StopAlarm").dxButton('instance').option('disabled', false); // dxLoadPanel 패널 종료 $("#LoadPanel").dxLoadPanel('instance').option('visible', false); // 에러 발생 utils.toast.show('전체 알람 해제시 에러가 발생하였습니다.', 'error'); } }); } } }); } }); // 그리드 세팅 $("#gridContainer_alarm").dxDataGrid({ rowAlternationEnabled: true, paging: { pageSize: 21 }, columns: [ { dataField: 'CreatedDateTime', caption: '날짜', width: '12%', alignment: 'center', dataType: 'date', format: 'yyyy-MM-dd HH:mm:ss', sortOrder: 'asc', }, { dataField: 'Type', caption: '타입', width: '5%', alignment: 'center' }, { dataField: 'FacilityName', caption: '설비명칭', width: '20%', alignment: 'center' }, { dataField: 'PropertyName', caption: '관제점(분석요소)', width: '20%', alignment: 'center' }, { dataField: 'CurrentValue', caption: '값', width: '8%', alignment: 'center' }, { dataField: 'UpperLimit', caption: '기준상한(이상)', width: '9%', alignment: 'center' }, { dataField: 'LowerLimit', caption: '기준하한(이하)', width: '9%', alignment: 'center' }, { dataField: 'SMSResult', caption: 'SMS 결과', width: '6%', alignment: 'center' }, { dataField: 'EmailResult', caption: 'Email 결과', width: '6%', alignment: 'center' }, { dataField: 'Check', caption: '조치방법', width: '5%', alignment: 'center' }, // 아래 visible 속성을 true를 준 이유는 조치방법 확인을 클릭했을때, SiteId 등의 값을 읽어오지 못해서다 { dataField: 'SiteId', visible: true }, { dataField: 'FacilityTypeId', visible: true }, { dataField: 'FacilityCode', visible: true }, { dataField: 'PropertyId', visible: true }, { dataField: 'FormulaId', visible: true }, ], //dataSource: setDataSource, onCellClick: function (object) { if (object.columnIndex == 9) { var DataArrayInfo = object.values; var SiteId = DataArrayInfo[10]; var FacilityTypeId = DataArrayInfo[11]; var FacilityCode = DataArrayInfo[12]; var PropertyId = DataArrayInfo[13]; var FormulaId = DataArrayInfo[14]; // 조치 방법 $("#PopupAlarmCheck").dxPopup('instance').option('visible', true); var BemsAlarmSettingDataSource = BemsWebApplication.db.createDataSource('BemsAlarmSetting'); BemsAlarmSettingDataSource.filter([ ['SiteId', '=', parseInt(SiteId)], 'and', ['FacilityTypeId', '=', parseInt(FacilityTypeId)], 'and', ['FacilityCode', '=', parseInt(FacilityCode)], 'and', ['PropertyId', '=', parseInt(PropertyId)], 'and', ['FormulaId', '=', parseInt(FormulaId)] ]); BemsAlarmSettingDataSource.load().done(function (result) { _.each(result, function (x) { $("#TextArea_Check").dxTextArea({ disabled: true, value: x.Content }); }); }) } }, }); var BemsAlarmLogDataSource = BemsWebApplication.DataUtil.createDataSource({ dataSourceOptions: { select: [ 'CreatedDateTime', 'BemsAlarmSetting/FacilityName', 'BemsAlarmSetting/PointName', 'CurrentValue', 'BemsAlarmSetting/UpperLimit', 'BemsAlarmSetting/LowerLimit', 'SMSResult', 'EmailResult', 'SiteId', 'FacilityTypeId', 'FacilityCode', 'PropertyId', 'FormulaId' ], expand: ['BemsAlarmSetting'], extendOptions: { forceOriginalField: true, alterNames: { 'BemsAlarmSetting/FacilityName': 'FacilityName', 'BemsAlarmSetting/PointName': 'PointName', 'BemsAlarmSetting/UpperLimit': 'UpperLimit', 'BemsAlarmSetting/LowerLimit': 'LowerLimit' } }, filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['Conform', '=', false] ] } }, 'BemsAlarmLog'); BemsAlarmLogDataSource.load().done(function (result) { if(result.length == 0) { // 알람 버튼 색 컬러 변경 정지 BWA.AlarmInfo.Alarm_Image_Change = false; } DataArrayInfo = []; // 초기화 _.each(result, function (x) { var temp = ''; if (x.FormulaId() != 0) { temp = '성능분석'; } else { if (x.FacilityTypeId() == 99) { temp = '가상시설'; } else { temp = '일반시설'; } } DataArrayInfo.push({ CreatedDateTime: x.CreatedDateTime, Type: temp, FacilityName: x.FacilityName, PropertyName: x.PointName, CurrentValue: x.CurrentValue, UpperLimit: x.UpperLimit, LowerLimit: x.LowerLimit, SMSResult: x.SMSResult, EmailResult: x.EmailResult, Check: "확인", SiteId: x.SiteId, FacilityTypeId: x.FacilityTypeId, FacilityCode: x.FacilityCode, PropertyId: x.PropertyId, FormulaId: x.FormulaId }); }); $("#gridContainer_alarm").dxDataGrid("instance").option("dataSource", DataArrayInfo); }) //var setDataSource = new Array(); //var setData = { // "CreatedDateTime": "2018-05-03 14:00:00", "Type": "", "FacilityName": "", "PropertyName": "", "CurrentValue": 0, "UpperLimit": 0, "LowerLimit": 0, "Chekck": "", // "SiteId": 0, "FacilityTypeId": 0, "FacilityCode": 0, "PropertyId": 0, "FormulaId": 0 //}; //setData.CreatedDateTime = "2018-05-03 14:00:00"; //setData.Type = "성능분석"; //setData.FacilityName = "공조기_AHU - 101"; //setData.PropertyName = "난방ATF"; //setData.CurrentValue = 10; //setData.UpperLimit = 10; //setData.LowerLimit = 5; //setData.Chekck = "확인"; //setDataSource.push(setData); } });