226 lines
6.0 KiB
JavaScript
226 lines
6.0 KiB
JavaScript
|
|
/* 标准方法:加载、保存、调试项目,弹出任务面板、日历面板。
|
|||
|
|
-----------------------------------------------------------------------------*/
|
|||
|
|
|
|||
|
|
var ServicesPath = mini_JSPath + "../plusproject/services/"; //Ajax交互路径(根据实际项目部署路径,需要修改)
|
|||
|
|
|
|||
|
|
var LoadProjectUrl = ServicesPath + 'load.aspx';
|
|||
|
|
var SaveProjectUrl = ServicesPath + 'save.aspx';
|
|||
|
|
|
|||
|
|
|
|||
|
|
function doSetProjectData(project, dataProject) {
|
|||
|
|
if (project.showProjectTask) {
|
|||
|
|
|
|||
|
|
var root = { Name: dataProject.Name, isProject: true };
|
|||
|
|
root.children = dataProject.Tasks;
|
|||
|
|
|
|||
|
|
dataProject.Tasks = [root];
|
|||
|
|
|
|||
|
|
project.loadData(dataProject);
|
|||
|
|
|
|||
|
|
//如果是将项目作为顶级父任务,则需要处理下数据联动
|
|||
|
|
|
|||
|
|
project.orderProject();
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
project.loadData(dataProject);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function doGetProjectData(project) {
|
|||
|
|
var dataProject = project.getData();
|
|||
|
|
dataProject.RemovedTasks = project.getRemovedTasks();
|
|||
|
|
|
|||
|
|
if (project.showProjectTask) {
|
|||
|
|
|
|||
|
|
var Tasks = dataProject.Tasks;
|
|||
|
|
|
|||
|
|
var root = Tasks[0];
|
|||
|
|
if (root && root.isProject) { //如果第一条任务是项目任务,则克隆一个新项目数据
|
|||
|
|
|
|||
|
|
dataProject.Tasks = [];
|
|||
|
|
var clone = mini.clone(dataProject);
|
|||
|
|
dataProject.Tasks = Tasks; //还原原始数据
|
|||
|
|
|
|||
|
|
dataProject = clone;
|
|||
|
|
dataProject.Tasks = root.children;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return dataProject;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function LoadProject(params, project, callback) {
|
|||
|
|
if (typeof params != "object") params = { projectuid: params };
|
|||
|
|
|
|||
|
|
project.loading();
|
|||
|
|
$.ajax({
|
|||
|
|
url: LoadProjectUrl,
|
|||
|
|
data: params,
|
|||
|
|
cache: false,
|
|||
|
|
success: function (text) {
|
|||
|
|
var dataProject = mini.decode(text);
|
|||
|
|
|
|||
|
|
doSetProjectData(project, dataProject);
|
|||
|
|
|
|||
|
|
//project.orderProject();
|
|||
|
|
|
|||
|
|
//加载时自动排程,如果有变动,需要提示
|
|||
|
|
// if (project.isChanged()) {
|
|||
|
|
// alert("项目数据加载时自动调整");
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
if (callback) callback(project);
|
|||
|
|
project.unmask();
|
|||
|
|
},
|
|||
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|||
|
|
alert("加载失败, 错误码:" + textStatus);
|
|||
|
|
project.unmask();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function SaveProject(project, callback, params) {
|
|||
|
|
|
|||
|
|
var dataProject = doGetProjectData(project);
|
|||
|
|
|
|||
|
|
var json = mini.encode(dataProject);
|
|||
|
|
|
|||
|
|
project.mask("数据保存中,请稍后...");
|
|||
|
|
|
|||
|
|
if (!params) params = {};
|
|||
|
|
params.project = json;
|
|||
|
|
|
|||
|
|
$.ajax({
|
|||
|
|
url: SaveProjectUrl,
|
|||
|
|
type: "post",
|
|||
|
|
data: params,
|
|||
|
|
success: function (text) {
|
|||
|
|
alert("保存成功,项目UID:" + text);
|
|||
|
|
project.acceptChanges();
|
|||
|
|
if (callback) callback(project);
|
|||
|
|
project.unmask();
|
|||
|
|
},
|
|||
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|||
|
|
alert("保存失败, 错误码:" + textStatus);
|
|||
|
|
project.unmask();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function TrackProject(project) {
|
|||
|
|
|
|||
|
|
// var list = project.getTaskList();
|
|||
|
|
// list.forEach(function (o) {
|
|||
|
|
// delete o._id;
|
|||
|
|
// delete o._uid;
|
|||
|
|
// delete o._pid;
|
|||
|
|
// delete o._level;
|
|||
|
|
// delete o._x;
|
|||
|
|
// delete o._state;
|
|||
|
|
// });
|
|||
|
|
|
|||
|
|
var dataProject = project.getData();
|
|||
|
|
var json = mini.encode(dataProject);
|
|||
|
|
document.write(json);
|
|||
|
|
//把生成的项目JSON数据发送给技术支持人员,方便技术人员进行调试定位项目问题
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function LoadJSONProject(url, project, callback) {
|
|||
|
|
project.loading();
|
|||
|
|
$.ajax({
|
|||
|
|
url: url,
|
|||
|
|
cache: false,
|
|||
|
|
success: function (text) {
|
|||
|
|
var dataProject = mini.decode(text);
|
|||
|
|
|
|||
|
|
doSetProjectData(project, dataProject);
|
|||
|
|
|
|||
|
|
if (callback) callback(project);
|
|||
|
|
project.unmask();
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|||
|
|
alert("加载失败, 错误码:" + textStatus);
|
|||
|
|
project.unmask();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//创建任务面板
|
|||
|
|
|
|||
|
|
var taskWindow = null;
|
|||
|
|
|
|||
|
|
function ShowTaskWindow(project, tabName) {
|
|||
|
|
var task = project.getSelected();
|
|||
|
|
if (task) {
|
|||
|
|
if (!taskWindow) {
|
|||
|
|
taskWindow = new TaskWindow();
|
|||
|
|
}
|
|||
|
|
taskWindow.setTitle("编辑任务");
|
|||
|
|
taskWindow.show();
|
|||
|
|
taskWindow.setData(task, project,
|
|||
|
|
function (action) {
|
|||
|
|
|
|||
|
|
if (action == 'ok') {
|
|||
|
|
try {
|
|||
|
|
var taskData = taskWindow.getData();
|
|||
|
|
project.updateTask(task, taskData);
|
|||
|
|
} catch (ex) {
|
|||
|
|
alert("error:"+ex.message);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
if (tabName) {
|
|||
|
|
taskWindow.activeTab(tabName);
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
alert("请先选择任务");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//日历面板
|
|||
|
|
|
|||
|
|
var calendarWindow = null;
|
|||
|
|
|
|||
|
|
function ShowCalendarWindow(project) {
|
|||
|
|
if (!calendarWindow) {
|
|||
|
|
calendarWindow = new CalendarWindow();
|
|||
|
|
}
|
|||
|
|
calendarWindow.show();
|
|||
|
|
calendarWindow.setData(project.getCalendars(), project,
|
|||
|
|
function (action) {
|
|||
|
|
if (action == "ok") {
|
|||
|
|
|
|||
|
|
var calendars = calendarWindow.getData();
|
|||
|
|
var calendarUID = calendarWindow.CalendarsCombo.getValue();
|
|||
|
|
|
|||
|
|
project.beginUpdate();
|
|||
|
|
project.setCalendars(calendars);
|
|||
|
|
project.setCalendarUID(calendarUID);
|
|||
|
|
project.endUpdate();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//资源面板
|
|||
|
|
var resourcesWindow;
|
|||
|
|
|
|||
|
|
function ShowResourcesWindow(project) {
|
|||
|
|
if (!resourcesWindow) {
|
|||
|
|
resourcesWindow = new ResourcesWindow();
|
|||
|
|
}
|
|||
|
|
resourcesWindow.show();
|
|||
|
|
resourcesWindow.setData(project.data.Resources, project,
|
|||
|
|
function (action) {
|
|||
|
|
if (action == "ok") {
|
|||
|
|
var resources = resourcesWindow.getData();
|
|||
|
|
project.setResources(resources);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
}
|