You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
5.9 KiB
173 lines
5.9 KiB
var ResultList = function (parent, id) {
|
|
this.Self = $(id);
|
|
this.Parent = parent;
|
|
|
|
this.ResultData = null;
|
|
this.DisableSwitch = false;
|
|
|
|
this.PlayTimer = null;
|
|
this.CurrentTimeList = null;
|
|
|
|
this.PrevButton = this.Self.find('.prev-btn:first');
|
|
this.NextButton = this.Self.find('.next-btn:first');
|
|
this.PlayButton = this.Self.find('.play-btn:first');
|
|
this.PauseButton = this.Self.find('.pause-btn:first');
|
|
|
|
this.Startup = function () {
|
|
this.EnableTimeList();
|
|
|
|
this.PrevButton.on('click', this.OnPreButtonClick.bind(this));
|
|
this.NextButton.on('click', this.OnNextButtonClick.bind(this));
|
|
this.PlayButton.on('click', this.OnPlayButtonClick.bind(this));
|
|
this.PauseButton.on('click', this.OnPauseButtonClick.bind(this));
|
|
|
|
this.Self.find('.clac-title a').on('click', this.OnTabHeaderClick.bind(this));
|
|
this.Self.find('.switch:first').on('click', this.OnSwitchChanged.bind(this));
|
|
};
|
|
|
|
this.Reset = function () {
|
|
this.Self.find('.switch:first').removeClass('switch-on');
|
|
this.Self.find('.backward-time-list:first').empty();
|
|
this.Self.find('.forward-time-list:first').empty();
|
|
this.ShowMask();
|
|
};
|
|
|
|
this.SetData = function (layerName, centerPoint, resultData) {
|
|
this.LayerName = layerName;
|
|
this.CenterPoint = centerPoint;
|
|
this.ResultData = resultData;
|
|
|
|
this.ResetTimeList(this.Self.find('.backward-time-list:first'), resultData.backward.points);
|
|
this.ResetTimeList(this.Self.find('.forward-time-list:first'), resultData.forward.points);
|
|
};
|
|
|
|
this.OnTabHeaderClick = function (event) {
|
|
// Toogle tab header
|
|
this.Self.find('.clac-title a').removeClass("active");
|
|
$(event.target).addClass("active");
|
|
|
|
// Toogle time list
|
|
var type = this.GetResultType();
|
|
this.Self.find('.backward-time-list').css('display', type === 'backward' ? '' : 'none');
|
|
this.Self.find('.forward-time-list').css('display', type === 'forward' ? '' : 'none');
|
|
|
|
// Load detail data
|
|
this.LoadDetailData();
|
|
this.SetCurrentTimeList();
|
|
};
|
|
|
|
this.OnSwitchChanged = function () {
|
|
this.Self.find('.switch:first').toggleClass('switch-on');
|
|
this.EnableTimeList();
|
|
this.SetCurrentTimeList();
|
|
};
|
|
|
|
this.SetCurrentTimeList = function () {
|
|
this.OnPauseButtonClick();
|
|
var type = this.GetResultType();
|
|
this.CurrentTimeList = this.Self.find('.{0}-time-list:first'.format(type));
|
|
};
|
|
|
|
this.ResetTimeList = function (list, points) {
|
|
list.empty();
|
|
|
|
points.forEach(function (point) {
|
|
var time = moment(point[2], "YYYYMMDD_HHmmss");
|
|
var label = "<li time='{0}'>{1}</li>".format(point[2], time.format("YYYY-MM-DD HH:mm"));
|
|
list.append(label);
|
|
});
|
|
|
|
list.find('li').on('click', this.OnTimeItemClick.bind(this));
|
|
};
|
|
|
|
this.OnTimeItemClick = function (event) {
|
|
$(event.target).parent().find('li').removeClass('active');
|
|
$(event.target).toggleClass('active');
|
|
this.LoadDetailData();
|
|
};
|
|
|
|
this.EnableTimeList = function () {
|
|
if (this.Self.find('.switch:first').hasClass('switch-on')) {
|
|
this.Self.find('.shadow:first').hide();
|
|
this.LoadDetailData();
|
|
} else {
|
|
this.ShowMask();
|
|
if (this.ResultData !== null)
|
|
this.Parent.Parent.Map.LoadAverageData(this.LayerName, this.CenterPoint, this.ResultData);
|
|
}
|
|
};
|
|
|
|
this.ResizeMask = function () {
|
|
var mask = this.Self.find('.shadow:first');
|
|
var slider = this.Self.find('.slider-list:first');
|
|
mask.height((this.DisableSwitch ? 36 : 0) + slider.height() + 95);
|
|
};
|
|
|
|
this.ShowMask = function () {
|
|
this.ResizeMask();
|
|
this.Self.find('.shadow:first').show();
|
|
};
|
|
|
|
this.LoadDetailData = function () {
|
|
var type = this.GetResultType();
|
|
var time = this.GetDetailTime(type);
|
|
if (time !== null) {
|
|
var data = (type === 'backward') ? this.ResultData.backward : this.ResultData.forward;
|
|
var index = this.GetTimeIndex(time, data);
|
|
this.Parent.Parent.Map.LoadDetailData(this.LayerName, data.details[index]);
|
|
}
|
|
};
|
|
|
|
this.GetResultType = function () {
|
|
return this.Self.find('.clac-title .active:first').attr('type');
|
|
};
|
|
|
|
this.GetDetailTime = function (type) {
|
|
if (type === 'backward') {
|
|
let active = this.Self.find('.backward-time-list .active:first');
|
|
return active.length === 1 ? active.attr('time') : null;
|
|
}
|
|
else {
|
|
let active = this.Self.find('.forward-time-list .active:first');
|
|
return active.length === 1 ? active.attr('time') : null;
|
|
}
|
|
};
|
|
|
|
this.GetTimeIndex = function (time, data) {
|
|
for (var i = 0; i < data.points.length; i++) {
|
|
if (data.points[i][2] === time)
|
|
return i;
|
|
}
|
|
return -1;
|
|
};
|
|
|
|
this.OnPreButtonClick = function () {
|
|
var active = this.CurrentTimeList.find('.active:first');
|
|
var prev = active.prev();
|
|
if (prev.length === 0)
|
|
prev = this.CurrentTimeList.find('li:last');
|
|
|
|
prev.trigger('click');
|
|
};
|
|
|
|
this.OnNextButtonClick = function () {
|
|
var active = this.CurrentTimeList.find('.active:first');
|
|
var next = active.next();
|
|
if (next.length === 0)
|
|
next = this.CurrentTimeList.find('li:first');
|
|
|
|
next.trigger('click');
|
|
};
|
|
|
|
this.OnPlayButtonClick = function () {
|
|
this.PlayTimer = setInterval(this.OnNextButtonClick.bind(this), 1500);
|
|
this.PauseButton.parent('.pause').show();
|
|
this.PlayButton.parent('.play').hide();
|
|
};
|
|
|
|
this.OnPauseButtonClick = function () {
|
|
clearInterval(this.PlayTimer);
|
|
this.PauseButton.parent('.pause').hide();
|
|
this.PlayButton.parent('.play').show();
|
|
};
|
|
};
|