gantt.jsp 17.3 KB
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.hrm.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ page import="java.util.Date"%>
<%@ page import="java.util.*" %>
<%@ page import="weaver.systeminfo.SystemEnv"%>
<%@ page import="weaver.general.TimeUtil"%>
<%@ page import="com.api.cube.service.CubeGanttService"%>
<%@ page import="com.api.cube.bean.GanttNode"%>
<%@ page import="com.alibaba.fastjson.JSON"%>
<%@ page import="com.alibaba.fastjson.serializer.SerializerFeature"%>

<jsp:useBean id="RecordSetV" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="RecordSet1" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="RecordSetHrm" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="RecordSet3" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="ResourceComInfo" class="weaver.hrm.resource.ResourceComInfo" scope="page"/>
<jsp:useBean id="CommonShareManager" class="weaver.cpt.util.CommonShareManager" scope="page" />

<%
	User user = HrmUserVarify.getUser(request, response);
	
	Map<String,Object> map = new CubeGanttService(request,response).getGanttData();
	GanttNode gn = (GanttNode)map.get("ganttNode");
	List<Map<String,Object>> list = (List<Map<String,Object>>)map.get("ganttList");
	List<Map<String,Object>> ganttFieldList = (List<Map<String,Object>>)map.get("ganttFieldList");
	Map<String,String> indexLinkMap = (Map<String,String>)map.get("indexLinkMap");
	Map<String,Object> ganttLinkMap = (Map<String,Object>)map.get("ganttLinkMap");
	String jsonData = JSON.toJSONString(list,SerializerFeature.DisableCircularReferenceDetect);
	String fieldData = JSON.toJSONString(ganttFieldList,SerializerFeature.DisableCircularReferenceDetect);
	String indexLinkData = JSON.toJSONString(indexLinkMap,SerializerFeature.DisableCircularReferenceDetect);
	String ganttLinkData = JSON.toJSONString(ganttLinkMap,SerializerFeature.DisableCircularReferenceDetect);
%>

<html>
<head>
  <title></title>
  <script src="/formmode/view/gantt/libs/jquery.1.8_wev8.js"></script>
  <script src="/formmode/view/gantt/libs/jquery.livequery.min_wev8.js"></script>
  <script src="/formmode/view/gantt/libs/jquery.timers_wev8.js"></script>
  <script src="/formmode/view/gantt/libs/platform_wev8.js"></script>
  <script src="/formmode/view/gantt/libs/date_wev8.js"></script>
  <script src="/formmode/view/gantt/libs/i18nJs_wev8.js"></script>
  <script src="/formmode/view/gantt/libs/dateField/jquery.dateField_wev8.js"></script>
  <script src="/formmode/view/gantt/libs/JST/jquery.JST_wev8.js"></script>
  <script type="text/javascript" src="/js/ecology8/lang/weaver_lang_<%=user.getLanguage()%>_wev8.js"></script>
  
  <script type="text/javascript" src="/formmode/view/gantt/libs/jquery.svg.min_wev8.js"></script>
  <script type="text/javascript" src="/formmode/view/gantt/libs/jquery.svgdom.1.8_wev8.js"></script>
  <script src="/formmode/view/gantt/ganttUtilities_wev8.js"></script>
  <script src="/formmode/view/gantt/ganttTask_wev8.js"></script>
  <script src="/formmode/view/gantt/ganttDrawerSVG_wev8.js"></script>
  <script src="/formmode/view/gantt/ganttGridEditor_wev8.js"></script>
  <script src="/formmode/view/gantt/ganttMaster_wev8.js"></script> 
  <script src="/formmode/view/gantt/ganttTime_wev8.js"></script> 
  <script src="/formmode/view/gantt/ganttDate_wev8.js"></script>
  <script language="javascript"  defer="defer" src="/js/JSDateTime/WdatePicker_wev8.js"></script>
  
  <script type="text/javascript" src="/formmode/view/js/commontsk_wev8.js"></script>
  <script type="text/javascript" src="/wui/common/jquery/jquery.min_wev8.js"></script>
  <script type='text/javascript' src='/js/jquery-autocomplete/browser_wev8.js'></script>
  <script language="javascript" type="text/javascript" src="/js/init_wev8.js"></script>
  <script type="text/javascript" src="/js/jquery/plugins/client/jquery.client_wev8.js"></script>
  <script type="text/javascript" src="/js/ecology8/jNice/jNice/jquery.jNice_wev8.js"></script>
  <script type='text/javascript' src='/js/jquery-autocomplete/jquery.autocomplete_wev8.js'></script>
  <script type='text/javascript' src='/js/jquery-autocomplete/browser_wev8.js'></script>
  <script language=javascript src="/wui/theme/ecology8/jquery/js/zDialog_wev8.js"></script>
  <script type="text/javascript" src="/js/messagejs/highslide/highslide-full_wev8.js"></script>

  <link rel="stylesheet" type="text/css" href="/js/ecology8/selectbox/css/jquery.selectbox_wev8.css">
  <link rel="stylesheet" type="text/css" href="/js/jquery-autocomplete/browser_wev8.css"> 
  <link rel="stylesheet" type="text/css" href="/js/jquery-autocomplete/jquery.autocomplete_wev8.css">
  <link rel="stylesheet" type="text/css" href="/css/commonCss_wev8.css">
  

  <link rel=stylesheet href="/formmode/view/gantt/platform_wev8.css" type="text/css">
  <link rel=stylesheet href="/formmode/view/gantt/libs/dateField/jquery.dateField_wev8.css" type="text/css">
  <link rel=stylesheet href="/formmode/view/gantt/gantt_wev8.css" type="text/css">
  <link rel=stylesheet href="/formmode/view/gantt/ganttPrint_wev8.css" type="text/css" media="print">
  <link rel="stylesheet" type="text/css" href="/css/xpSpin_wev8.css">
  <link rel="stylesheet" type="text/css" href="/formmode/view/gantt/libs/jquery.svg_wev8.css">
  
  
<style>
*{font-family:Microsoft YaHei;font-size:12px;color:#333;}
.taskEditRow input{font-family:Microsoft YaHei;font-size:12px;color:#333;}
.gdfTable td, .gdfTable th{font-size: 12px;color:#333;}
TH,.tableHeader{background-color:#f4f4f4;color:#333;}
.taskEditRow.rowSelected td, .taskEditRow.rowSelected input{background-color:#e3f5fb;}
.teamworkIcon{color:#777;}
.ganttButtonBar{height: 30px;}
.ganttButtonBar .buttons, .ganttButtonBar h1{margin:0;}
.button{box-shadow:none;-webkit-box-shadow:none;font-family:Microsoft YaHei;font-size:12px;margin:0;padding:3px 10px;background-color:#eee;color:#333;border-radius:0;}
.button.first{background-color:#eee;font-weight: normal;}
.vSplitBar{color:#aaa;}
.taskStatus{width:12px;height:12px;border-radius:50%;}
.e8_browflow{margin:0;padding:0;border:none;cursor:pointer;overflow:visible;outline:none;moz-outline:none;}
.guid{float:right;margin-right:30px;}
.sbSelector {
    line-height: 23px;
}
</style>

</head>
<body style="background-color: #fff;">

<div id="workSpace" style="padding:0px; overflow-y:auto; overflow-x:hidden;border:1px solid #e5e5e5;position:relative;margin:0 5px"></div>

<div id="taZone" style="display:none;" class="noprint">
   <textarea rows="8" cols="150" id="ta">
   </textarea>
  <button onclick="loadGanttFromServer();">load</button>
</div>

<style>
.resEdit { padding: 15px;}
.resLine {width: 95%; padding: 3px; margin: 5px; border: 1px solid #d0d0d0;}
body {overflow: hidden;}
.ganttButtonBar h1{color: #000000; font-weight: bold;font-size: 28px; margin-left: 10px;}
</style>

<script type="text/javascript">
var Jsonss = {"tasks":<%=jsonData%>,"selectedRow":0,"canWrite":false,"canWriteOnParent":true};
var indexLinkData = <%=indexLinkData %>;
var ganttLinkData = <%=ganttLinkData %>;
var ge;//this is the hugly but very friendly global var for the gantt editor
$(function() {	
  	var jsonStr = Jsonss;
  
  	//here starts gantt initialization初始化
  	loadLeftList();
  	ge = new GanttMaster();
  	var workSpace = $("#workSpace");
 	workSpace.css({width:$(window).width() - 20,height:$(window).height() - 100});
  	ge.init(workSpace);
  
  	//overwrite with localized ones
 	loadI18n();

  	//simulate a data load from a server.
  	loadGanttFromServer();
  
  	//fill default Teamwork roles if any
  	if (!ge.roles || ge.roles.length == 0) {
    	setRoles();
  	}

  	//fill default Resources roles if any
  	if (!ge.resources || ge.resources.length == 0) {
    	setResource();
 	}

  	$(window).resize(function(){
    	workSpace.css({width:$(window).width() - 1,height:$(window).height() - workSpace.position().top});
    	workSpace.trigger("resize.gantt");
  	}).oneTime(150,"resize",function(){$(this).trigger("resize")});
});

function userDate(uData){
   	var myDate = new Date(uData*1000);
   	var year = myDate.getFullYear();
   	var month = myDate.getMonth() + 1;
   	var day = myDate.getDate();
   	return year + '-' + month + '-' + day;
}

function loadGanttFromServer(taskId, callback) {
  	loadFromLocalStorage();
}

function setRoles() {
  	ge.roles = [
    	{
      	id:"tmp_1",
      	name:"Project Manager"
    	},
    	{
      	id:"tmp_2",
      	name:"Worker"
    	},
    	{
      	id:"tmp_3",
     	name:"Stakeholder/Customer"
    	}
  	];
}

function setResource() {
  	var res = [];
  	for (var i = 1; i <= 10; i++) {
    	res.push({id:"tmp_" + i,name:"Resource " + i});
  	}
  	ge.resources = res;
}

function clearGantt() {
  	ge.reset();
}

function returnTask(){
	window.history.go(-1); 
}

function loadI18n() {
  	GanttMaster.messages = {
    			"CANNOT_WRITE": "<%=SystemEnv.getHtmlLabelNames("130195", user.getLanguage())%>",
                "CHANGE_OUT_OF_SCOPE": "<%=SystemEnv.getHtmlLabelNames("130196", user.getLanguage())%>",
                "START_IS_MILESTONE": "<%=SystemEnv.getHtmlLabelNames("130197", user.getLanguage())%>",
                "END_IS_MILESTONE": "<%=SystemEnv.getHtmlLabelNames("130198", user.getLanguage())%>",
                "TASK_HAS_CONSTRAINTS": "<%=SystemEnv.getHtmlLabelNames("130199", user.getLanguage())%>",
                "GANTT_ERROR_DEPENDS_ON_OPEN_TASK": "<%=SystemEnv.getHtmlLabelNames("130200", user.getLanguage())%>",
                "GANTT_ERROR_DESCENDANT_OF_CLOSED_TASK": "<%=SystemEnv.getHtmlLabelNames("130201", user.getLanguage())%>",
                "TASK_HAS_EXTERNAL_DEPS": "<%=SystemEnv.getHtmlLabelNames("130202", user.getLanguage())%>",
                "GANTT_ERROR_LOADING_DATA_TASK_REMOVED": "<%=SystemEnv.getHtmlLabelNames("130203", user.getLanguage())%>",
                "ERROR_SETTING_DATES": "<%=SystemEnv.getHtmlLabelNames("130204", user.getLanguage())%>",
                "CIRCULAR_REFERENCE": "<%=SystemEnv.getHtmlLabelNames("130205", user.getLanguage())%>",
                "CANNOT_DEPENDS_ON_ANCESTORS": "<%=SystemEnv.getHtmlLabelNames("130206", user.getLanguage())%>",
                "CANNOT_DEPENDS_ON_DESCENDANTS": "<%=SystemEnv.getHtmlLabelNames("130207", user.getLanguage())%>",
                "INVALID_DATE_FORMAT": "<%=SystemEnv.getHtmlLabelNames("130208", user.getLanguage())%>",
                "TASK_MOVE_INCONSISTENT_LEVEL": "<%=SystemEnv.getHtmlLabelNames("130209", user.getLanguage())%>",
                "GANTT_QUARTER_SHORT": "<%=SystemEnv.getHtmlLabelNames("17495", user.getLanguage())%>",
                "GANTT_SEMESTER_SHORT": "<%=SystemEnv.getHtmlLabelNames("20729", user.getLanguage())%>",
                "Message1":"<%=SystemEnv.getHtmlLabelNames("130210", user.getLanguage())%>",
                "Message2":"<%=SystemEnv.getHtmlLabelNames("130211", user.getLanguage())%>",
                "Message3":"<%=SystemEnv.getHtmlLabelNames("130212", user.getLanguage())%>",
  				"Message4":"<%=SystemEnv.getHtmlLabelNames("130213", user.getLanguage())%>",
 				"Message5":"<%=SystemEnv.getHtmlLabelNames("130214", user.getLanguage())%>",
  				"Message6":"<%=SystemEnv.getHtmlLabelNames("130215", user.getLanguage())%>"
  };
}

//Get project file as JSON (used for migrate project from gantt to Teamwork)
function getFile() {
  	$("#gimBaPrj").val(JSON.stringify(ge.saveProject()));
  	$("#gimmeBack").submit();
  	$("#gimBaPrj").val("");
}

//LOCAL STORAGE MANAGEMENT (for this demo only)
Storage.prototype.setObject = function(key, value) {
  	this.setItem(key, JSON.stringify(value));
};

Storage.prototype.getObject = function(key) {
  	return this.getItem(key) && JSON.parse(this.getItem(key));
};

function loadFromLocalStorage() {
	var ret;
	if (localStorage) {
    	if (localStorage.getObject("teamworkGantDemo")) {
      		ret = localStorage.getObject("teamworkGantDemo");
    	}
  	} else {
    	$("#taZone").show();
  	}
		if (true){  
    	ret = Jsonss;
  	}

	ge.loadProject(ret);
	ge.checkpoint(); //empty the undo stack
	beautySelect();
}

function loadLeftList(){
	var fieldData = <%=fieldData%> || [];
	var clientWidth = document.body.clientWidth;
	var allWidth = 0;
	var theadHtml = "<div class=\"__template__\" type=\"TASKSEDITHEAD\">";
	theadHtml += "<!--";
	theadHtml += "<table class=\"gdfTable\" cellspacing=\"0\" cellpadding=\"0\">";
  	theadHtml += "<thead>";
	theadHtml += "<tr style=\"height:40px\">";
	theadHtml += "<th class=\"gdfColHeader\" style=\"width:30px;\"><%=SystemEnv.getHtmlLabelNames("15486", user.getLanguage())%></th>";
	
	var taskHtml = "<div class=\"__template__\" type=\"TASKROW\"><!--";
	taskHtml += "<tr taskId=\"(#=obj.id#)\" class=\"taskEditRow\" level=\"(#=level#)\">";
  	taskHtml += "<th class=\"gdfCell\" align=\"right\" style=\"cursor:pointer;\"><span class=\"taskRowIndex\">(#=obj.getRow()+1#)</span>&nbsp;</th>";
	
  	var emptHtml = "<div class=\"__template__\" type=\"TASKEMPTYROW\"><!--";
  	emptHtml += "<tr class=\"taskEditRow emptyRow\" >";
  	emptHtml += "<th class=\"gdfCell\" align=\"right\"></th>";
  	emptHtml += "<td class=\"gdfCell\"></td>";
  	for(var i=0;i<fieldData.length;i++){
		var data = fieldData[i];
		if(data){
			var fieldLink = data.fieldLink;
			var showName = data.showName;
			var colwidth = parseFloat(data.colwidth,10);
			var width = parseInt((clientWidth*colwidth*0.4)/100);
			var fieldhtmltype = data.fieldhtmltype;
			var fieldtype = data.fieldtype;
			allWidth += width;
			theadHtml += "<th class=\"gdfColHeader gdfResizable\" style=\"width:"+width+"px;\">"+showName+"</th>";
			if(fieldLink == "name"){
				taskHtml += "<td class=\"gdfCell indentCell\" style=\"padding-left:(#=obj.level*10#)px;\">";
			  	taskHtml += "<div class=\"(#=obj.isParent()?'exp-controller expcoll exp':'exp-controller'#)\" align=\"center\"></div>";
			  	taskHtml += "<input type=\"text\" name=\"name\" value=\"(#=obj.name#)\"></td>";
			}else if(fieldLink == "start"){
				taskHtml += "<td class=\"gdfCell\"><input type=\"text\" id=\"begindate_(#=obj.id#)\" name=\"start\"  value=\"\" class=\"date\" onclick=\"onShowBeginDate(this.id)\"></td>";
			}else if(fieldLink == "end"){
				taskHtml += "<td class=\"gdfCell\"><input type=\"text\" id=\"enddate_(#=obj.id#)\" name=\"end\"  value=\"\" class=\"date\" onclick=\"onShowBeginDate(this.id)\"></td>";
			}else if(fieldLink == "starttime" || fieldLink == "endtime"){
				taskHtml += "<td class=\"gdfCell\"><input type=\"text\" id=\""+fieldLink+"_(#=obj.id#)\" name=\""+fieldLink+"\" value=\"(#=obj."+fieldLink+"#)\"  class=\"time\" ></td>";
			}else if(fieldLink == "duration"){
				taskHtml += "<td class=\"gdfCell\"><input type=\"text\" name=\"duration\" value=\"(#=obj.duration#)\"></td>";
			}else{
				if(fieldhtmltype == 2){
					taskHtml += "<td class=\"gdfCell\">(#=obj."+fieldLink+"#)</td>";
				}else{
					taskHtml += "<td class=\"gdfCell\"><input type=\"text\" value=\"(#=obj."+fieldLink+"#)\"></td>";
				}
				
			}
			emptHtml += "<td class=\"gdfCell\"></td>";
		}
	}
	theadHtml += "</tr>";
    theadHtml += "</thead>";
    theadHtml += "</table>";
    theadHtml += "--></div>";
    taskHtml += "</tr>";
  	taskHtml += "--></div>";
    emptHtml += "</tr>";
    emptHtml += "--></div>";
    
    var btnHtml = "<div class=\"__template__\" type=\"GANTBUTTONS\">";
	btnHtml += "<!--";
	btnHtml += "<div class=\"ganttButtonBar noprint\">";
	btnHtml += "<div title=<%=gn.getGanttname()%> class=\"buttonTitle\" style=\"position: absolute;top:7px;width:"+allWidth+"px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;\"><span>";
	btnHtml += "<%=gn.getGanttname()%>";
	btnHtml += "</span></div>";
	btnHtml += "<div class=\"buttons\" style=\"padding-left:"+allWidth+"px\">";
	btnHtml += "<button onclick=\"print();\" class=\"button textual\" title=\"<%=SystemEnv.getHtmlLabelNames("257", user.getLanguage())%>\">";
	btnHtml += "<span class=\"teamworkIcon\">p</span></button>";
	btnHtml += "<span class=\"ganttButtonSeparator\"></span>";
	btnHtml += "<%=SystemEnv.getHtmlLabelNames("83929",user.getLanguage())%>";
	btnHtml += "<input checked type=\"radio\" value=\"m\" onclick=\"$('#workSpace').trigger('zoomChangeM');\" name=\"levelRadio\"/><%=SystemEnv.getHtmlLabelNames("390",user.getLanguage())%>";
	btnHtml += "&nbsp;&nbsp;";
	btnHtml += "<input type=\"radio\" value=\"w\" onclick=\"$('#workSpace').trigger('zoomChangeW');\" name=\"levelRadio\"/><%=SystemEnv.getHtmlLabelNames("1926",user.getLanguage())%>";
	btnHtml += "&nbsp;&nbsp;";
	btnHtml += "<input type=\"radio\" value=\"g\" onclick=\"$('#workSpace').trigger('zoomChangeG');\" name=\"levelRadio\"/><%=SystemEnv.getHtmlLabelNames("33452",user.getLanguage())%>";
	btnHtml += "&nbsp;&nbsp;";
	btnHtml += "<input type=\"radio\" value=\"y\" onclick=\"$('#workSpace').trigger('zoomChangeY');\" name=\"levelRadio\"/><%=SystemEnv.getHtmlLabelNames("445",user.getLanguage())%>";
	btnHtml += "</div>";
	btnHtml += "<div class=\"guid\">";
	btnHtml += "<img src=\"/formmode/view/gantt/res/jh_wev8.png\">&nbsp;<label><%=SystemEnv.getHtmlLabelNames("407", user.getLanguage())%></label>&nbsp;";
	btnHtml += "<img src=\"/formmode/view/gantt/res/jinxingzhong.png\">&nbsp;<label><%=SystemEnv.getHtmlLabelNames("628", user.getLanguage())%></label>&nbsp;";
	btnHtml += "</div>";
	btnHtml += "</div>";
	btnHtml += "  --></div>";

	$("#gantEditorTemplates").append(btnHtml);
    $("#gantEditorTemplates").append(theadHtml);
    $("#gantEditorTemplates").append(taskHtml);
    $("#gantEditorTemplates").append(emptHtml);
}
</script>
<div id="gantEditorTemplates" style="display:none;">
</div>
<script type="text/javascript">
</script>
</body>
</html>