$(function () {
"use strict";
BWA.Chart = BWA.Chart || {};
BWA.Chart.getLastYearSameWeekDate = function (dateStart, dateEnd, weekday) {
var data = {
startDate: dateStart,
endDate: dateEnd
};
for (var i = 0; i < 7; i++) {
if (moment(data.startDate).toDate().getDay() == weekday)
return data;
data.startDate = moment(data.startDate).subtract(-1, 'days');
data.endDate = moment(data.endDate).subtract(-1, 'days');
}
return data;
}
BWA.Chart.getCustermTimeArgumentAxisString = function (codeTimeType, date) { // $Code.TimeType
switch (codeTimeType) {
case $Code.TimeType.QUARTERMIN:
var year = date.getFullYear();
var mon = (date.getMonth() + 1);
var day = date.getDate();
var hour = date.getHours()
var min = date.getMinutes();
if (mon < 10)
mon = "0" + mon;
if (day < 10)
day = "0" + day;
if (hour < 10)
hour = "0" + hour;
if (min < 10)
min = "0" + min;
return year + "-" + mon + "-" + day + " " + hour + ":" + min;
break;
case $Code.TimeType.NONE:
var year = date.getFullYear();
var mon = (date.getMonth() + 1);
var day = date.getDate();
if (mon < 10)
mon = "0" + mon;
if (day < 10)
day = "0" + day;
return year + "-" + mon + "-" + day;
break;
case $Code.TimeType.HOUR:
return date.getDate() + "일 : " + date.getHours() + "시";
break;
case $Code.TimeType.DAY:
return date.getMonth() + 1 + "월 : " + date.getDate() + "일";
break;
case $Code.TimeType.MONTH:
return date.getFullYear() + "년 : " + (date.getMonth() + 1) + "월";
break;
}
return date.toLocaleDateString('ja-JP');
};
BWA.Chart.getTimeLineArgumentAxis = function (momentDateTime, codeTimeType, MS, ME) { // $Code.TimeType
var argumentAxis = null;
var dateType = '';
switch (codeTimeType) {
case $Code.TimeType.MIN:
dateType = 'day';
argumentAxis = {
argumentType: 'datetime',
title: $G('hour'),
label: {
alignment: 'center',
format: 'HH'
},
tickInterval: { hours: 1 },
};
break;
case $Code.TimeType.QUARTERMIN:
dateType = 'day';
argumentAxis = {
argumentType: 'datetime',
title: $G('hour'),
label: {
alignment: 'center',
format: 'HH'
},
tickInterval: { hours: 1 },
};
break;
case $Code.TimeType.HOUR:
dateType = 'day';
argumentAxis = {
argumentType: 'string',
title: $G('hour'),
label: {
alignment: 'center',
format: 'HH:mm'
},
tickInterval: { hours: 1 },
};
if (!_.isNull(MS) && !_.isNull(ME)) {
argumentAxis.min = moment(MS).add(-1, 'hours').toDate();
argumentAxis.max = moment(ME).add(1, 'hours').toDate();
}
break;
case $Code.TimeType.DAY:
dateType = 'month';
argumentAxis = {
argumentType: 'string',
title: $G('day'),
label: {
alignment: 'center',
format: 'MM-dd'
},
tickInterval: { days: 1 },
};
if (!_.isNull(MS) && !_.isNull(ME)) {
argumentAxis.min = moment(MS).add(-1, 'days').toDate();
argumentAxis.max = moment(ME).add(1, 'days').toDate();
}
break;
case $Code.TimeType.MONTH:
dateType = 'year';
argumentAxis = {
argumentType: 'string',
title: $G('month'),
label: {
alignment: 'center',
format: 'MM'
},
tickInterval: { months: 1 },
};
if (!_.isNull(MS) && !_.isNull(ME)) {
argumentAxis.min = moment(MS).add(-1, 'months').toDate();
argumentAxis.max = moment(ME).add(1, 'months').toDate();
}
break;
}
if (!_.isNull(momentDateTime)) {
argumentAxis.min = moment(momentDateTime.startOf(dateType).toDate()).add(-1, 'hours').toDate();
argumentAxis.max = moment(momentDateTime.endOf(dateType).toDate()).add(1, 'hours').toDate();
}
argumentAxis.valueMarginsEnabled = false;
return argumentAxis;
};
BWA.Chart.mapWithConvertingDateTime = function (array, timetype) {
return _.map(array, function (x) {
if (timetype)
if (!_.isNull(timetype))
x.DateTime = BWA.Chart.getCustermTimeArgumentAxisString(timetype, moment(x.DateTime).toDate());
else
x.DateTime = moment(x.DateTime).toDate();
return x;
});
};
BWA.Chart.mapNewWithConvertingDateTime = function (array, timetype) {
return _.map(array, function (x) {
return {
DateTime: (!_.isNull(timetype)) ? BWA.Chart.getCustermTimeArgumentAxisString(timetype, moment(x.DateTime).toDate()) : moment(x.DateTime).toDate(),
Value: x.Value
};
return x;
});
};
BWA.Chart.getRelationDataArrayOnDateTime = function (dataArray1, dataArray2, fieldName1, fieldName2) {
var dataArray = [];
var minLength = Math.min(dataArray1.length, dataArray2.length)
var index1 = 0;
var index2 = 0;
for (var i = 0 ; i < minLength ; i++) {
var l = dataArray1[index1];
var r = dataArray2[index2];
if (l.DateTime === r.DateTime) {
var obj = {};
obj[fieldName1] = l.Value;
obj[fieldName2] = r.Value;
dataArray.push(obj);
index1++;
index2++;
}
else if (l.DateTime > r.DateTime) {
index2++;
}
else if (l.DateTime < r.DateTime) {
index1++;
}
}
return dataArray;
}
// hcLee 2015 04 23
BWA.Chart.getRelationDataArrayOnDateTime2 = function (dataArray1, dataArray2, dataArray3, fieldName1, fieldName2, fieldName3) {
var dataArray = [];
var minLength = Math.min(dataArray1.length, dataArray2.length);
minLength = Math.min(minLength, dataArray3.length);
var index1 = 0;
var index2 = 0;
var index3 = 0;
for (var i = 0 ; i < minLength ; i++) {
var l = dataArray1[index1];
var r = dataArray2[index2];
var m = dataArray3[index3];
if (l.DateTime === r.DateTime) {
var obj = {};
obj[fieldName1] = l.Value;
obj[fieldName2] = r.Value;
dataArray.push(obj);
index1++;
index2++;
}
else if (l.DateTime > r.DateTime) {
index2++;
}
else if (l.DateTime < r.DateTime) {
index1++;
}
}
return dataArray;
}
// hcLee 2018 02 27
BWA.Chart.getRelationDataArrayOnDateTimeNew = function (dataArray1, dataArray2, fieldName1, fieldName2) {
var dataArray = [];
var minLength = Math.min(dataArray1.length, dataArray2.length)
var index1 = 0;
var index2 = 0;
for (var i = 0 ; i < minLength ; i++) {
var l = dataArray1[index1];
var r = dataArray2[index2];
if (l.DateTime === r.DateTime) {
var obj = {};
obj[fieldName1] = l.lv1;
obj[fieldName2] = r.rv1;
dataArray.push(obj);
index1++;
index2++;
}
else if (l.DateTime > r.DateTime) {
index2++;
}
else if (l.DateTime < r.DateTime) {
index1++;
}
}
return dataArray;
}
BWA.Chart.Instance = function (id, chartType) {
id = '#' + id;
return function (options) {
$(id)[chartType](options);
return function () {
return $(id)[chartType]('instance');
}
}
}
});
$(function () {
'use strict';
BemsWebApplication.Factory.FA = function (FA_fType, params, viewInfo) {
var initialized = false,
shouldReload = false,
datagrid = null,
currentTabIndex = ko.observable(0),
facilityViewModel = new BWA.CmFacilityViewModel(),
dataSource;
var m_Facility;
var facilityDataSource = BWA.db.createDataSource('CmFacility'),
facilitiesForSearch = ko.observableArray(),
facilityCodeForSearch = ko.observable(0),
deferredForSearch = new $.Deferred();
var visiblePopup = ko.observable(false);
var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId());
// cyim 2016.08.22 : 성능분석 그래프의 경우 시간 데이타만 표시되어야 한다
var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForHourOnly, null, false);
// !!!! 중요 hcLee
var charts = BWA.UserInfo.GetCharts(FA_fType);
var multiViewOptions = {
viewIndex: currentTabIndex,
viewCount: parseInt(charts.length / 6) + 1,
PageChanged: function () {
if (currentTabIndex() == 1) {
makePageChart(1);
}
if (currentTabIndex() == 2) {
makePageChart(2);
}
handleSearchInSearchView();
},
};
var divs = [];
function makePageChart(p) {
// TYPE 1~5먼저 처리
if (p == 0 && charts.length < 5)
switch (charts.length) {
case 1:
document.getElementById("f_detail_chart").style.height = "700px";
makeChart('clearfix', 0, 'margin-left: 1.1%; width: 66.25%; height: 700px; margin-top:28px;');
break;
case 2:
document.getElementById("f_detail_chart").style.height = "700px";
makeChart('clearfix', 0, 'margin-left: 1.1%; width: 66.25%; height: 340px; margin-top:28px;');
makeChart('clearfix', 1, 'margin-left: 1.1%; width: 66.25%; height: 340px; margin-top:18px;');
break;
case 3:
document.getElementById("f_detail_chart").style.height = "700px";
makeChart('clearfix', 0, 'margin-left: 1.1%; width: 66.25%; height: 340px; margin-top:28px;');
makeChart('clearfix', 1, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:18px;');
makeChart('clearfix', 2, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:18px;');
break;
case 4:
makeChart('clearfix', 0, 'margin-left: 1.1%; width: 66.25%; height: 340px; margin-top:28px;');
// 필요
document.getElementById('clearfix').insertAdjacentHTML('beforeend', "
");
makeChart('clearfix', 1, 'width: 32.5%; height: 340px; margin-top:18px;');
makeChart('clearfix', 2, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:18px;');
makeChart('clearfix', 3, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:18px;');
break;
}
if (p == 0 && charts.length >= 5) {
makeChart('clearfix', 0, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:28px;');
makeChart('clearfix', 1, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:28px;');
document.getElementById('clearfix').insertAdjacentHTML('beforeend', "");
makeChart('clearfix', 2, 'width: 32.5%; height: 340px; margin-top:18px;');
makeChart('clearfix', 3, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:18px;');
makeChart('clearfix', 4, 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:18px;');
}
if (p >= 1) {
var chartpage = 'subCharts_' + p;
var itemIndex = 0;
for (var c = p * 6 - 1; c < charts.length; c++) {
if (c >= charts.length) return;
if (c >= p * 6 + 5) return;
var divid = 'divchart_' + charts[c].ChartId();
var chartId = 'chart_' + charts[c].ChartId();
var style = 'margin-left: 1.1%; width: 32.5%; height: 340px;';
if (itemIndex == 0) style = 'width: 32.5%; height: 340px;';
if (itemIndex == 3) style = 'width: 32.5%; height: 340px; margin-top:18px;';
if (itemIndex == 3)
document.getElementById('clearfix').insertAdjacentHTML('beforeend', "");
if (itemIndex > 3) style = 'margin-left: 1.1%; width: 32.5%; height: 340px; margin-top:18px;';
makeChart(chartpage, c, style);
itemIndex++;
}
}
}
function makeChart(pid, index, style) {
var divid = 'divchart_' + charts[index].ChartId();
if (document.getElementById(divid) == null)
document.getElementById(pid).insertAdjacentHTML('beforeend',
"" +
"
" +
(charts[index].Title()) +
"
" +
"
");
}
function makeChartView(p) {
var div = [];
if (p == 0) {
div.push({
id: 'f_detail'
});
for (var c = 0; c < charts.length; c++) {
if (c >= charts.length) return div;
if (c >= 5) return div;
div.push({ id: 'divchart_' + charts[c].ChartId(), chartId: 'chart_' + charts[c].ChartId() });
}
}
else {
for (var c = p * 6 - 1; c < charts.length; c++) {
if (c >= charts.length) return div;
if (c >= p * 6 + 5) return div;
div.push({ id: 'divchart_' + charts[c].ChartId(), chartId: 'chart_' + charts[c].ChartId() });
}
}
return div;
}
for (var p = 0; p < multiViewOptions.viewCount; p++) {
divs.push(makeChartView(p));
}
var chartLayout = new BWA.ChartLayout({
divs: divs,
multiViewOptions: multiViewOptions,
});
var m = moment();
// 추가 2015 04 20 hcLee ->
var CODE = $Code,
FuelType = CODE.FuelType,
FT = CODE.FacilityType,
FC = CODE.FacilityCode,
F = CODE.Formula,
TIT = CODE.TimeIntervalType;
function handleViewShown() {
if (initialized === false) {
makePageChart(0);
initialized = true;
timeBoxForSearch.setDefaultDate();
var eq = BWA.DataUtil.constructEqualFilter;
facilityDataSource.filter([eq('SiteId', BWA.UserInfo.SiteId()), 'and', eq('FacilityTypeId', FA_fType)]);
$.when(facilityDataSource.load()).done(function (facilities) {
facilitiesForSearch(facilities);
if (_.isEmpty(facilities) === false) {
var f = facilities[0]; // 첫번째 설비 그려주기 위해
handleSelectedFacilityInSearchView(f);
handleSearchInSearchView();
//2018 03 06 hcLee
var datagrid = $('#FA_DataGridViewInSearchView').dxDataGrid('instance');
if (_.has(datagrid, 'selectRows')) {
datagrid.selectRows(f);
}
}
});
}
else {
handleSearchInSearchView();
}
}
if (shouldReload) {
}
function handleViewHidden() {
var paging = BWA.ChartLayout.Paging;
paging.sideOverlayVisible(false);
$SearchView.visibleObservable(false); // hcLee 2015 03 23
visiblePopup(false);
}
function handleViewShowing() {
}
function refreshList() {
}
var searchViewOptions = {
searchViewItems: [
{ id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch },
],
promiseDataInSearchView: deferredForSearch.promise()
};
function handleSelectedFacilityInSearchView(facility) {
m_Facility = facility;
return;
}
function ChartProcess(chartInfo, DataArray, valueAx, seriesF) {
var chartid = '#chart_' + chartInfo.ChartId();
$(chartid).dxChart({
dataSource: DataArray,
palette: chartInfo.Palette(),
legend: {
visible: true,
verticalAlignment: 'top',
horizontalAlignment: 'center'
},
commonAxisSettings: {
title: {
valueMarginsEnabled: true,
margin: 20,
font: {
color: "black",
size: 18,
weight: 600,
family: "Nanum Gothic",
},
},
axisDivisionFactor: 50,
grid: {
visible: false,
}
},
commonSeriesSettings: {
argumentField: "DateTime",
selectionStyle: {
hatching: {
direction: "left"
}
}
},
valueAxis: valueAx,
series: seriesF,
crosshair: {
enabled: true,
width: 1,
horizontalLine: {
color: '#452d11',
dashStyle: 'dash',
visible: false
},
verticalLine: {
color: '#452d11',
dashStyle: 'dash',
visible: true
},
label: {
visible: true,
backgroundColor: "#452d11",
font: {
color: "white",
size: 12,
weight: 600,
}
}
},
tooltip: {
enabled: true,
color: "#3e1717",
format: 'fixedPoint',
precision: 2,
font: {
color: "white",
size: 12,
weight: 600,
},
argumentFormat: 'shortDate',
customizeText: function () {
return {
text: [this.argumentText, ': ', this.valueText].join('')
};
}
},
});
}
function ChartProcess2(chartInfo, DataArray, valueAx) {
var chartid = '#chart_' + chartInfo.ChartId();
var argAxis = {
title: {
text: chartInfo.XAxTitle(),
}
};
if (chartInfo.UseXAxMinMax())
$.extend(argAxis, {
max: chartInfo.XAxMax(),
min: chartInfo.XAxMin(),
});
$(chartid).dxChart({
dataSource: DataArray,
palette: chartInfo.Palette(),
legend: {
visible: false,
verticalAlignment: 'top',
horizontalAlignment: 'center'
},
argumentAxis: argAxis,
valueAxis: valueAx,
series: {
type: chartInfo.XSType(),
valueField: 'lv1',
argumentField: 'xv', //
label: {
visible: false,
//customizeText: function() {
// return this.argumentField + this.valueText;
//}
},
point: { size: 8 }
},
crosshair: {
enabled: true,
width: 1,
horizontalLine: {
color: '#452d11',
dashStyle: 'dash',
visible: false
},
verticalLine: {
color: '#452d11',
dashStyle: 'dash',
visible: true
},
label: {
visible: true,
backgroundColor: "#452d11",
font: {
color: "white",
size: 12,
weight: 600,
}
}
},
tooltip: {
enabled: true,
color: "#3e1717",
format: 'fixedPoint',
precision: 2,
font: {
color: "white",
size: 12,
weight: 600,
},
//argumentFormat: 'shortDate',
customizeText: function () {
return {
text: [this.argumentText, ': ', this.valueText].join('')
};
}
},
});
}
function FormulaProcessLeft(timeIntervalType, date, formulaList) {
var deferred = new $.Deferred();
var promises = [];
var f = m_Facility.toJS();
var DataArray = [];
var p;
_.each(formulaList, function (fid) {
if (fid == null) fid = 0;
if (fid >= 1000)
p = formulaGet.apiGet({
FacilityTypeId: 103,
FacilityCode: f.FacilityCode, // FacilityTypeId가 100보다 크면 의미가 없다. 정상
FormulaId: fid - 1000 + 1,
TimeIntervalType: timeIntervalType,
StartDate: date.startDate,
EndDate: date.endDate
});
else
p = formulaGet.apiGet({
FacilityTypeId: f.FacilityTypeId,
FacilityCode: f.FacilityCode,
FormulaId: fid,
TimeIntervalType: timeIntervalType,
StartDate: date.startDate,
EndDate: date.endDate
});
promises.push(p);
});
$.when.apply(this, promises)
.done(function (data1, data2, data3, data4) {
if (formulaList.length == 1) {
_.each(data1, function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
lv1: x.Value
});
});
deferred.resolve(DataArray);
return DataArray;
}
if (data1 != undefined)
_.each(data1[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
lv1: x.Value
});
});
if (data2 != undefined)
_.each(data2[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
lv2: x.Value
});
});
if (data3 != undefined)
_.each(data3[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
lv3: x.Value
});
});
if (data4 != undefined)
_.each(data4[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
lv4: x.Value
});
});
deferred.resolve(DataArray);
return DataArray;
})
.fail(function (error) {
//alert(error);
//visiblePopup(false);
});
return deferred.promise();
}
function FormulaProcessRight(timeIntervalType, date, formulaList) {
var deferred = new $.Deferred();
var promises = [];
var f = m_Facility.toJS();
var DataArray = [];
var p;
_.each(formulaList, function (fid) {
if (fid == null) fid = 0;
if (fid >= 1000)
p = formulaGet.apiGet({
FacilityTypeId: 103,
FacilityCode: f.FacilityCode, // FacilityTypeId가 100보다 크면 의미가 없다. 정상
FormulaId: fid - 1000 + 1,
TimeIntervalType: timeIntervalType,
StartDate: date.startDate,
EndDate: date.endDate
});
else
p = formulaGet.apiGet({
FacilityTypeId: f.FacilityTypeId,
FacilityCode: f.FacilityCode,
FormulaId: fid,
TimeIntervalType: timeIntervalType,
StartDate: date.startDate,
EndDate: date.endDate
});
promises.push(p);
});
$.when.apply(this, promises)
.done(function (data1, data2, data3, data4) {
if (formulaList.length == 1) {
_.each(data1, function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
rv1: x.Value
});
});
deferred.resolve(DataArray);
return DataArray;
}
if (data1 != undefined)
_.each(data1[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
rv1: x.Value
});
});
if (data2 != undefined)
_.each(data2[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
rv2: x.Value
});
});
if (data3 != undefined)
_.each(data3[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
rv3: x.Value
});
});
if (data4 != undefined)
_.each(data4[0], function (x) {
DataArray.push({
DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
rv4: x.Value
});
});
deferred.resolve(DataArray);
return DataArray;
})
.fail(function (error) {
//alert(error);
//visiblePopup(false);
});
return deferred.promise();
}
// 최종적으로 차트별로 이함수를 불러줘야 한다.
function DrawChart(chartInfo, timeIntervalType, date) {
if (chartInfo == null) return;
if (chartInfo.UseX()) return DrawChart2(chartInfo, timeIntervalType, date);
var promises = [];
var f = m_Facility.toJS();
// L, R Y축 설정
var valueAx = [];
if (chartInfo.LAxTitle() != null) {
var va = {
name: 'left',
//2018 04 23 hcLee 추가
grid: {
visible: true
},
title: {
text: chartInfo.LAxTitle(),
},
};
if (chartInfo.UseLAxMinMax())
$.extend(va, {
type: 'continuous',
valueType: 'numeric',
minValueMargin: 0,
maxValueMargin: 0,
max: chartInfo.LAxMax(),
min: chartInfo.LAxMin(),
tickInterval: (chartInfo.LAxMax() - chartInfo.LAxMin()) / 5,
valueMarginsEnabled: true,
});
// 2018 03 12 hcLee 추가
if (chartInfo.UseLCTLine())
$.extend(va, {
constantLines: [{
label: {
text: chartInfo.LCTLineTitle(),
},
width: 2,
value: chartInfo.LCTLineValue(),
dashStyle: 'dash'
}],
});
valueAx.push(va);
}
if (chartInfo.RAxTitle() != null) {
var va = {
name: 'right',
//2018 04 23 hcLee 추가
grid: {
visible: true
},
title: {
text: chartInfo.RAxTitle(),
},
position: 'right',
label: {
visible: true,
},
};
if (chartInfo.UseRAxMinMax())
$.extend(va, {
type: 'continuous',
valueType: 'numeric',
minValueMargin: 0,
maxValueMargin: 0,
max: chartInfo.RAxMax(),
min: chartInfo.RAxMin(),
tickInterval: (chartInfo.RAxMax() - chartInfo.RAxMin()) / 5,
valueMarginsEnabled: true,
});
// 2018 03 12 hcLee 추가
if (chartInfo.UseRCTLine())
$.extend(va, {
constantLines: [{
label: {
font: {
color: 'red',
},
horizontalAlignment: 'right',
text: chartInfo.RCTLineTitle(),
},
width: 2,
value: chartInfo.RCTLineValue(),
dashStyle: 'dash',
color: 'red' // hcLee 2018 03 28 오른쪽 기준선
}],
});
valueAx.push(va);
}
// L, R series 설정
var series = [];
if (chartInfo.LSFmId1() > 0)
series.push(
{
name: chartInfo.LSName1(),
type: chartInfo.LSType1(),
valueField: 'lv1',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
if (chartInfo.LSFmId2() > 0)
series.push(
{
name: chartInfo.LSName2(),
type: chartInfo.LSType2(),
valueField: 'lv2',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
if (chartInfo.LSFmId3() > 0)
series.push(
{
name: chartInfo.LSName3(),
type: chartInfo.LSType3(),
valueField: 'lv3',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
if (chartInfo.LSFmId4() > 0)
series.push(
{
name: chartInfo.LSName4(),
type: chartInfo.LSType4(),
valueField: 'lv4',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
if (chartInfo.RSFmId1() > 0)
series.push(
{
name: chartInfo.RSName1(),
type: chartInfo.RSType1(),
axis: 'right',
valueField: 'rv1',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
if (chartInfo.RSFmId2() > 0)
series.push(
{
name: chartInfo.RSName2(),
type: chartInfo.RSType2(),
axis: 'right',
valueField: 'rv2',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
if (chartInfo.RSFmId3() > 0)
series.push(
{
name: chartInfo.RSName3(),
type: chartInfo.RSType3(),
axis: 'right',
valueField: 'rv3',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
if (chartInfo.RSFmId4() > 0)
series.push(
{
name: chartInfo.RSName4(),
type: chartInfo.RSType4(),
axis: 'right',
valueField: 'rv4',
argumentField: 'DateTime',
label: {
visible: false,
},
point: { size: 3 }
});
var DataArray = [];
promises.push(FormulaProcessLeft(timeIntervalType, date, [chartInfo.LSFmId1(), chartInfo.LSFmId2(), chartInfo.LSFmId3(), chartInfo.LSFmId4()]));
promises.push(FormulaProcessRight(timeIntervalType, date, [chartInfo.RSFmId1(), chartInfo.RSFmId2(), chartInfo.RSFmId3(), chartInfo.RSFmId4()]));
$.when.apply(this, promises)
.done(function (dataL, dataR) {
_.each(dataL, function (x) {
DataArray.push(x);
});
_.each(dataR, function (x) {
DataArray.push(x);
});
ChartProcess(chartInfo, DataArray, valueAx, series);
})
.fail(function (error) {
//alert(error);
//visiblePopup(false);
});
}
// X가 시계열이 아닌 경우 별도 처리, 이 경우는 LY만 존재 하고 시리즈 또한 LY용 1개, X축 시리즈 1개 만 존재 한다.
function DrawChart2(chartInfo, timeIntervalType, date) {
if (chartInfo == null) return;
var promises = [];
var f = m_Facility.toJS();
// L, Y축 설정
var valueAx = [];
if (chartInfo.LAxTitle() != null) {
var va = {
name: 'left',
grid: {
visible: true
},
title: {
text: chartInfo.LAxTitle(),
},
};
if (chartInfo.UseLAxMinMax())
$.extend(va, {
type: 'continuous',
valueType: 'numeric',
minValueMargin: 0,
maxValueMargin: 0,
max: chartInfo.LAxMax(),
min: chartInfo.LAxMin(),
tickInterval: (chartInfo.LAxMax() - chartInfo.LAxMin()) / 5,
valueMarginsEnabled: true,
});
// 2018 03 12 hcLee 추가
if (chartInfo.UseLCTLine())
$.extend(va, {
constantLines: [{
label: {
text: chartInfo.LCTLineTitle(),
},
width: 2,
value: chartInfo.LCTLineValue(),
dashStyle: 'dash'
}],
});
valueAx.push(va);
}
var DataArray = [];
promises.push(FormulaProcessLeft(timeIntervalType, date, [chartInfo.LSFmId1(), 0, 0, 0]));
promises.push(FormulaProcessRight(timeIntervalType, date, [chartInfo.XSFmId(), 0, 0, 0]));
$.when.apply(this, promises)
.done(function (dataL, dataX) {
_.each(dataL, function (x) {
DataArray.push(x);
});
_.each(dataX, function (x) {
DataArray.push(x);
});
var dataArray = BWA.Chart.getRelationDataArrayOnDateTimeNew(dataL, dataX, 'lv1', 'xv');
ChartProcess2(chartInfo, dataArray, valueAx);
})
.fail(function (error) {
//alert(error);
//visiblePopup(false);
});
}
function handleSearchInSearchView(filter, searchViewItems, viewModel) {
if (m_Facility == null) return;
var f = m_Facility.toJS();
facilityViewModel.fromJS(f);
var timeIntervalType = timeBoxForSearch.type();
var date = timeBoxForSearch.getDate();
// 2018 03 06 hcLee 테스트코드
if (currentTabIndex() == 0) {
for (var c = 0; c < 5; c++) {
if (c >= charts.length) return;
DrawChart(charts[c], timeIntervalType, date);
}
}
else {
for (var c = currentTabIndex() * 6 - 1; c < charts.length; c++) {
if (c >= charts.length) return;
if (c >= currentTabIndex() * 6 + 5) return;
DrawChart(charts[c], timeIntervalType, date);
}
}
return;
}
var viewModel = $.extend(BWA.CommonView.create(
params, viewInfo, searchViewOptions, ko.observable(null),
handleViewShown, null, handleSearchInSearchView, undefined,
chartLayout), {
viewHidden: handleViewHidden, // hcLee 2015 06 03
refreshList: refreshList,
viewShowing: handleViewShowing,
scrolling: { mode: 'infinite' },
FA_DataGridOptions: {
dataSource: facilitiesForSearch,
columns: [
{ dataField: 'Name', caption: $G('facilityName'), width: '100%', alignment: 'left' }
],
filterRow: {
visible: true,
showOperationChooser: false
},
selection: {
mode: 'single'
},
rowClick: function (clickRow) {
handleSelectedFacilityInSearchView(clickRow.data);
},
paging: {
pageSize: 11,
enabled: true
}
},
contentReadyAction: function (e) {
datagrid = e.component;
},
});
viewModel.timeBoxForSearch = timeBoxForSearch;
viewModel.currentTabIndex = currentTabIndex;
viewModel.multiViewItems = [
{
facility: facilityViewModel,
template: 'mainCharts'
},
];
for (var p = 1; p < multiViewOptions.viewCount; p++) {
viewModel.multiViewItems.push({ template: 'subCharts_' + p });
}
$HourGlassPopup(viewModel, visiblePopup);
return viewModel;
}
});