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);
|
||
}
|
||
}
|
||
);
|
||
}
|