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.
347 lines
11 KiB
347 lines
11 KiB
var HistoryPanel = function (parent) {
|
|
this.Parent = parent;
|
|
this.ResultList = new ResultList(this, '#history-result-list');
|
|
|
|
this.Startup = function () {
|
|
this.ResultList.Startup();
|
|
this.InitDataGrid();
|
|
this.InitDateTimes();
|
|
|
|
$('#dialog-close').on('click', this.HideEditDialog.bind(this));
|
|
$('#delete-dialog-close').on('click', this.HideDeleteDialog.bind(this));
|
|
$('#dialog-cancel').on('click', this.HideDeleteDialog.bind(this));
|
|
$('#query-button').on('click', this.OnQueryButtonClick.bind(this));
|
|
$('#query-button').trigger('click');
|
|
};
|
|
|
|
this.InitDataGrid = function () {
|
|
$('#task-grid').datagrid({
|
|
columns: [[
|
|
{ field: 'ReleaseTime', title: '释放时间', align: 'center', width: 80, formatter: this.ShowDetailInfo.bind(this) },
|
|
{ field: 'Height', title: '高度(米)', align: 'center', width: 30 },
|
|
{ field: 'Manage', title: '操作', align: 'center', width: 40, formatter: this.OperateColumn.bind(this) }
|
|
]],
|
|
striped: true,
|
|
singleSelect: false,
|
|
fitColumns: true,
|
|
fit: true,
|
|
scrollbarSize: 0,
|
|
onLoadSuccess: function (data) {
|
|
for (var i = 0; i < data.rows.length; i++) {
|
|
$('.datagrid-btable tr').eq(i).find('.edit').off('click').on('click', this.ShowEditDialog.bind(this, i));
|
|
$('.datagrid-btable tr').eq(i).find('.delete').off('click').on('click', this.ShowDeleteDialog.bind(this, i));
|
|
}
|
|
}.bind(this),
|
|
onSelect: this.OnTaskSelected.bind(this),
|
|
onUnselect: this.OnTaskUnselected.bind(this)
|
|
});
|
|
};
|
|
|
|
this.InitDateTimes = function () {
|
|
$('#start-date').datetimebox({
|
|
panelWidth: 190,
|
|
panelHeight: 230,
|
|
panelAlign: 'right',
|
|
showSeconds: false,
|
|
currentText: '现在'
|
|
});
|
|
|
|
$('#end-date').datetimebox({
|
|
panelWidth: 190,
|
|
panelHeight: 230,
|
|
panelAlign: 'right',
|
|
showSeconds: false,
|
|
currentText: '现在'
|
|
});
|
|
|
|
var startDate = moment(new Date()).subtract(1, 'months').format('YYYY/MM/DD HH:mm');
|
|
$('#start-date').datetimebox("setValue", startDate);
|
|
};
|
|
|
|
this.OnTaskSelected = function (index, row) {
|
|
this.LoadData(row);
|
|
|
|
var selections = $('#task-grid').datagrid('getSelections');
|
|
if (selections.length > 1) {
|
|
this.ResultList.DisableSwitch = true;
|
|
this.ResultList.ShowMask();
|
|
}
|
|
};
|
|
|
|
this.OnTaskUnselected = function (index, row) {
|
|
// Remove data layer
|
|
this.Parent.Map.RemoveLayer(row.Id);
|
|
|
|
// Reset result list if no task selected
|
|
var selections = $('#task-grid').datagrid('getSelections');
|
|
if (selections.length === 0) {
|
|
this.ResultList.Reset();
|
|
return;
|
|
}
|
|
|
|
// Resize mask of result list
|
|
this.ResultList.DisableSwitch = (selections.length !== 1);
|
|
this.ResultList.ResizeMask();
|
|
};
|
|
|
|
this.LoadData = function (task) {
|
|
$.getJSON("http://{0}/bj/getresult/{1}.json".format(Config.ApiRoot, task.Id), function (data) {
|
|
this.Parent.Map.LoadAverageData(task.Id, task, data);
|
|
this.ResultList.SetData(task.Id, [task.Latitude, task.Longitude], data);
|
|
}.bind(this));
|
|
};
|
|
|
|
this.OnQueryButtonClick = function () {
|
|
this.ReloadAllLabels();
|
|
this.ReloadDataGrid();
|
|
};
|
|
|
|
this.ReloadAllLabels = function () {
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: 'text',
|
|
url: '/Beijing/GetUserTags',
|
|
data: {
|
|
userId: parseInt($('#user-info').attr('userid'))
|
|
},
|
|
success: function (result) {
|
|
this.CreateAllLabels(JSON.parse(result));
|
|
}.bind(this)
|
|
});
|
|
};
|
|
|
|
this.CreateAllLabels = function (data) {
|
|
var list = $('.all-label-list');
|
|
if (data.length === 0) {
|
|
list.find('.no-tags').show();
|
|
return;
|
|
}
|
|
|
|
data.forEach(function (item) {
|
|
var label = $('<a href="javascript:;" tagId="{0}">{1}<span class="clear-btn"><i></i></span></a>'.format(item.Id, item.Name));
|
|
label.on('click', this.SetActiveLabel.bind(this));
|
|
label.find('.clear-btn').on('click', this.RemoveAllLabel.bind(this));
|
|
list.append(label);
|
|
}.bind(this));
|
|
};
|
|
|
|
this.SetActiveLabel = function (event) {
|
|
$(event.target).toggleClass('active');
|
|
this.ReloadDataGrid();
|
|
};
|
|
|
|
this.RemoveAllLabel = function (event) {
|
|
var aLabel = null;
|
|
|
|
if ($(event.target).parent().is('a'))
|
|
aLabel = $(event.target).parent();
|
|
else
|
|
aLabel = $(event.target).parents('a');
|
|
|
|
aLabel.remove();
|
|
|
|
if ($('.all-label-list a').length === 0)
|
|
$('.all-label-list').find('.no-tags').show();
|
|
|
|
this.Relayout();
|
|
this.ClearLabel(parseInt(aLabel.text()));
|
|
};
|
|
|
|
this.ClearLabel = function (name) {
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: 'json',
|
|
url: '/Beijing/DeleteTagsByName',
|
|
data: {
|
|
userId: parseInt($('#user-info').attr('userid')),
|
|
name: name
|
|
},
|
|
success: function (result) {
|
|
}.bind(this)
|
|
});
|
|
};
|
|
|
|
this.GetSeletedLabelId = function () {
|
|
var tagIds = [];
|
|
var items = $('.all-label-list a.active');
|
|
items.each(function (index, item) {
|
|
var text = $(item).text();
|
|
tagIds.push(parseInt(text));
|
|
}.bind(this));
|
|
|
|
return tagIds;
|
|
};
|
|
|
|
this.ReloadDataGrid = function () {
|
|
$('#task-grid').datagrid({
|
|
method: "POST",
|
|
url: '/Beijing/GetTasks',
|
|
queryParams: {
|
|
userId: parseInt($('#user-info').attr('userid')),
|
|
startTime: $("#start-date").datetimebox('getValue'),
|
|
endTime: $("#end-date").datetimebox('getValue'),
|
|
tags: this.GetSeletedLabelId()
|
|
}
|
|
});
|
|
};
|
|
|
|
this.ShowDetailInfo = function (val) {
|
|
return moment(val).format('YYYY/MM/DD HH:mm');
|
|
};
|
|
|
|
this.OperateColumn = function () {
|
|
return '<span class="edit"></span><span class="delete"></span>';
|
|
};
|
|
|
|
this.ShowEditDialog = function (i, event) {
|
|
event.stopPropagation();
|
|
|
|
$('#label').val('');
|
|
$('.dialog-manage').show();
|
|
$('#dialog-label-list').find('h2').hide();
|
|
|
|
var rows = $("#task-grid").datagrid('getRows');
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: 'json',
|
|
url: '/Beijing/GetTaskTags',
|
|
data: {
|
|
userId: parseInt($('#user-info').attr('userid')),
|
|
taskId: rows[i].Id
|
|
},
|
|
success: function (result) {
|
|
this.CreateDialogLabel(result);
|
|
this.SetDialogHeight();
|
|
$('#dialog-add-label').off('click').on('click', this.DialogAddLabelButton.bind(this, rows[i].Id));
|
|
}.bind(this)
|
|
});
|
|
};
|
|
|
|
this.CreateDialogLabel = function (data) {
|
|
var list = $('#dialog-label-list');
|
|
list.find('a').remove();
|
|
|
|
if (data.length === 0) {
|
|
list.find('.dialog-no-tags').show();
|
|
return;
|
|
}
|
|
data.forEach(function (item) {
|
|
var label = $('<a href="javascript:;" tagId="{0}">{1}<span class="clear-btn"><i></i></span></a>'.format(item.Id, item.Name));
|
|
label.find('.clear-btn').on('click', this.RemoveLabel.bind(this));
|
|
list.append(label);
|
|
}.bind(this));
|
|
};
|
|
|
|
this.ShowDeleteDialog = function (i, event) {
|
|
event.stopPropagation();
|
|
$('.dialog-delete').show();
|
|
|
|
var row = $("#task-grid").datagrid('getRows')[i];
|
|
$('.dialog-clear h2').text('确定删除释放时间为「{0}」的任务吗?'.format(moment(row.ReleaseTime).format('YYYY/MM/DD HH:mm')));
|
|
$('#dialog-sure').on('click', this.DeleteCurrentLabel.bind(this, row.Id));
|
|
};
|
|
|
|
this.DeleteCurrentLabel = function (id) {
|
|
this.HideDeleteDialog();
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: '/Beijing/DeleteTask',
|
|
async: true,
|
|
data: {
|
|
id: id
|
|
},
|
|
success: function () {
|
|
this.ReloadDataGrid();
|
|
}.bind(this)
|
|
});
|
|
};
|
|
|
|
|
|
this.HideDialog = function () {
|
|
this.Parent.HideDialog();
|
|
};
|
|
|
|
this.HideEditDialog = function () {
|
|
$('.dialog-manage').hide();
|
|
};
|
|
|
|
this.HideDeleteDialog = function () {
|
|
$('.dialog-delete').hide();
|
|
};
|
|
|
|
this.DialogAddLabelButton = function (id) {
|
|
var value = $('#label').val().trim();
|
|
if (value.length === 0)
|
|
return;
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: 'json',
|
|
data: {
|
|
userId: parseInt($('#user-info').attr('userid')),
|
|
taskId: id,
|
|
name: value
|
|
},
|
|
url: '/Beijing/AddTag',
|
|
success: function (result) {
|
|
var label = '<a href="javascript:;" tagid="{0}">{1}<span class="clear-btn"><i></i></span></a>'.format(result, value);
|
|
$('#dialog-label-list').append(label).find('.clear-btn').on('click', this.RemoveLabel.bind(this));
|
|
this.SetDialogHeight();
|
|
}.bind(this)
|
|
});
|
|
};
|
|
|
|
this.RemoveLabel = function (event) {
|
|
var label = null;
|
|
if ($(event.target).parent().is('a'))
|
|
label = $(event.target).parent();
|
|
else
|
|
label = $(event.target).parents('a');
|
|
|
|
label.remove();
|
|
this.DeleteLabel(parseInt(label.attr('tagid')));
|
|
this.SetDialogHeight();
|
|
};
|
|
|
|
this.DeleteLabel = function (id) {
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: 'json',
|
|
url: '/Beijing/DeleteTag',
|
|
data: {
|
|
id: id
|
|
},
|
|
success: function (result) {
|
|
}.bind(this)
|
|
});
|
|
};
|
|
|
|
this.SetDialogHeight = function () {
|
|
var dialog = $('.dialog-manage .dialog-content');
|
|
var label = $('#dialog-label-list');
|
|
var number = label.find('a').length;
|
|
if (number > 3) {
|
|
label.find('h2').hide();
|
|
dialog.height(Math.ceil(number / 3) * 40 + 100);
|
|
}
|
|
else if (number === 0) {
|
|
label.find('h2').show();
|
|
dialog.height(140);
|
|
}
|
|
else {
|
|
label.find('h2').hide();
|
|
dialog.height(138);
|
|
}
|
|
};
|
|
|
|
this.Relayout = function () {
|
|
var windowHeight = $(window).height();
|
|
var labelHeight = $('#history-slider').find('.label-list:first').height();
|
|
var tableHeight = $('#history-slider').find('.calc-table:first').height();
|
|
|
|
var resultList = $('#history-result-list');
|
|
resultList.find('.calc-list ul').height(windowHeight - labelHeight - tableHeight - 500);
|
|
this.ResultList.ResizeMask();
|
|
};
|
|
};
|