##// END OF EJS Templates
fix JavaScript error of gantt.js on IE7 (#13823)...
Toshi MARUYAMA -
r11507:e59814f98195
parent child
Show More
@@ -1,172 +1,172
1 var draw_gantt = null;
1 var draw_gantt = null;
2 var draw_top;
2 var draw_top;
3 var draw_right;
3 var draw_right;
4 var draw_left;
4 var draw_left;
5
5
6 var rels_stroke_width = 2;
6 var rels_stroke_width = 2;
7
7
8 function setDrawArea() {
8 function setDrawArea() {
9 draw_top = $("#gantt_draw_area").position().top;
9 draw_top = $("#gantt_draw_area").position().top;
10 draw_right = $("#gantt_draw_area").width();
10 draw_right = $("#gantt_draw_area").width();
11 draw_left = $("#gantt_area").scrollLeft();
11 draw_left = $("#gantt_area").scrollLeft();
12 }
12 }
13
13
14 function getRelationsArray() {
14 function getRelationsArray() {
15 var arr = new Array();
15 var arr = new Array();
16 $.each($('div.task_todo[data-rels]'), function(index_div, element) {
16 $.each($('div.task_todo[data-rels]'), function(index_div, element) {
17 var element_id = $(element).attr("id");
17 var element_id = $(element).attr("id");
18 if (element_id != null) {
18 if (element_id != null) {
19 var issue_id = element_id.replace("task-todo-issue-", "");
19 var issue_id = element_id.replace("task-todo-issue-", "");
20 var data_rels = $(element).data("rels");
20 var data_rels = $(element).data("rels");
21 for (rel_type_key in data_rels) {
21 for (rel_type_key in data_rels) {
22 $.each(data_rels[rel_type_key], function(index_issue, element_issue) {
22 $.each(data_rels[rel_type_key], function(index_issue, element_issue) {
23 arr.push({issue_from: issue_id, issue_to: element_issue,
23 arr.push({issue_from: issue_id, issue_to: element_issue,
24 rel_type: rel_type_key});
24 rel_type: rel_type_key});
25 });
25 });
26 }
26 }
27 }
27 }
28 });
28 });
29 return arr;
29 return arr;
30 }
30 }
31
31
32 function drawRelations() {
32 function drawRelations() {
33 var arr = getRelationsArray();
33 var arr = getRelationsArray();
34 $.each(arr, function(index_issue, element_issue) {
34 $.each(arr, function(index_issue, element_issue) {
35 var issue_from = $("#task-todo-issue-" + element_issue["issue_from"]);
35 var issue_from = $("#task-todo-issue-" + element_issue["issue_from"]);
36 var issue_to = $("#task-todo-issue-" + element_issue["issue_to"]);
36 var issue_to = $("#task-todo-issue-" + element_issue["issue_to"]);
37 if (issue_from.size() == 0 || issue_to.size() == 0) {
37 if (issue_from.size() == 0 || issue_to.size() == 0) {
38 return;
38 return;
39 }
39 }
40 var issue_height = issue_from.height();
40 var issue_height = issue_from.height();
41 var issue_from_top = issue_from.position().top + (issue_height / 2) - draw_top;
41 var issue_from_top = issue_from.position().top + (issue_height / 2) - draw_top;
42 var issue_from_right = issue_from.position().left + issue_from.width();
42 var issue_from_right = issue_from.position().left + issue_from.width();
43 var issue_to_top = issue_to.position().top + (issue_height / 2) - draw_top;
43 var issue_to_top = issue_to.position().top + (issue_height / 2) - draw_top;
44 var issue_to_left = issue_to.position().left;
44 var issue_to_left = issue_to.position().left;
45 var color = issue_relation_type[element_issue["rel_type"]]["color"];
45 var color = issue_relation_type[element_issue["rel_type"]]["color"];
46 var landscape_margin = issue_relation_type[element_issue["rel_type"]]["landscape_margin"];
46 var landscape_margin = issue_relation_type[element_issue["rel_type"]]["landscape_margin"];
47 var issue_from_right_rel = issue_from_right + landscape_margin;
47 var issue_from_right_rel = issue_from_right + landscape_margin;
48 var issue_to_left_rel = issue_to_left - landscape_margin;
48 var issue_to_left_rel = issue_to_left - landscape_margin;
49 draw_gantt.path(["M", issue_from_right + draw_left, issue_from_top,
49 draw_gantt.path(["M", issue_from_right + draw_left, issue_from_top,
50 "L", issue_from_right_rel + draw_left, issue_from_top])
50 "L", issue_from_right_rel + draw_left, issue_from_top])
51 .attr({stroke: color,
51 .attr({stroke: color,
52 "stroke-width": rels_stroke_width
52 "stroke-width": rels_stroke_width
53 });
53 });
54 if (issue_from_right_rel < issue_to_left_rel) {
54 if (issue_from_right_rel < issue_to_left_rel) {
55 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_from_top,
55 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_from_top,
56 "L", issue_from_right_rel + draw_left, issue_to_top])
56 "L", issue_from_right_rel + draw_left, issue_to_top])
57 .attr({stroke: color,
57 .attr({stroke: color,
58 "stroke-width": rels_stroke_width
58 "stroke-width": rels_stroke_width
59 });
59 });
60 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_to_top,
60 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_to_top,
61 "L", issue_to_left + draw_left, issue_to_top])
61 "L", issue_to_left + draw_left, issue_to_top])
62 .attr({stroke: color,
62 .attr({stroke: color,
63 "stroke-width": rels_stroke_width
63 "stroke-width": rels_stroke_width
64 });
64 });
65 } else {
65 } else {
66 var issue_middle_top = issue_to_top +
66 var issue_middle_top = issue_to_top +
67 (issue_height *
67 (issue_height *
68 ((issue_from_top > issue_to_top) ? 1 : -1));
68 ((issue_from_top > issue_to_top) ? 1 : -1));
69 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_from_top,
69 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_from_top,
70 "L", issue_from_right_rel + draw_left, issue_middle_top])
70 "L", issue_from_right_rel + draw_left, issue_middle_top])
71 .attr({stroke: color,
71 .attr({stroke: color,
72 "stroke-width": rels_stroke_width
72 "stroke-width": rels_stroke_width
73 });
73 });
74 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_middle_top,
74 draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_middle_top,
75 "L", issue_to_left_rel + draw_left, issue_middle_top])
75 "L", issue_to_left_rel + draw_left, issue_middle_top])
76 .attr({stroke: color,
76 .attr({stroke: color,
77 "stroke-width": rels_stroke_width
77 "stroke-width": rels_stroke_width
78 });
78 });
79 draw_gantt.path(["M", issue_to_left_rel + draw_left, issue_middle_top,
79 draw_gantt.path(["M", issue_to_left_rel + draw_left, issue_middle_top,
80 "L", issue_to_left_rel + draw_left, issue_to_top])
80 "L", issue_to_left_rel + draw_left, issue_to_top])
81 .attr({stroke: color,
81 .attr({stroke: color,
82 "stroke-width": rels_stroke_width
82 "stroke-width": rels_stroke_width
83 });
83 });
84 draw_gantt.path(["M", issue_to_left_rel + draw_left, issue_to_top,
84 draw_gantt.path(["M", issue_to_left_rel + draw_left, issue_to_top,
85 "L", issue_to_left + draw_left, issue_to_top])
85 "L", issue_to_left + draw_left, issue_to_top])
86 .attr({stroke: color,
86 .attr({stroke: color,
87 "stroke-width": rels_stroke_width
87 "stroke-width": rels_stroke_width
88 });
88 });
89 }
89 }
90 draw_gantt.path(["M", issue_to_left + draw_left, issue_to_top,
90 draw_gantt.path(["M", issue_to_left + draw_left, issue_to_top,
91 "l", -4 * rels_stroke_width, -2 * rels_stroke_width,
91 "l", -4 * rels_stroke_width, -2 * rels_stroke_width,
92 "l", 0, 4 * rels_stroke_width, "z"])
92 "l", 0, 4 * rels_stroke_width, "z"])
93 .attr({stroke: "none",
93 .attr({stroke: "none",
94 fill: color,
94 fill: color,
95 "stroke-linecap": "butt",
95 "stroke-linecap": "butt",
96 "stroke-linejoin": "miter",
96 "stroke-linejoin": "miter"
97 });
97 });
98 });
98 });
99 }
99 }
100
100
101 function getProgressLinesArray() {
101 function getProgressLinesArray() {
102 var arr = new Array();
102 var arr = new Array();
103 var today_left = $('#today_line').position().left;
103 var today_left = $('#today_line').position().left;
104 arr.push({left: today_left, top: 0});
104 arr.push({left: today_left, top: 0});
105 $.each($('div.issue-subject, div.version-name'), function(index, element) {
105 $.each($('div.issue-subject, div.version-name'), function(index, element) {
106 var t = $(element).position().top - draw_top ;
106 var t = $(element).position().top - draw_top ;
107 var h = ($(element).height() / 9);
107 var h = ($(element).height() / 9);
108 var element_top_upper = t - h;
108 var element_top_upper = t - h;
109 var element_top_center = t + (h * 3);
109 var element_top_center = t + (h * 3);
110 var element_top_lower = t + (h * 8);
110 var element_top_lower = t + (h * 8);
111 var issue_closed = $(element).children('span').hasClass('issue-closed');
111 var issue_closed = $(element).children('span').hasClass('issue-closed');
112 var version_closed = $(element).children('span').hasClass('version-closed');
112 var version_closed = $(element).children('span').hasClass('version-closed');
113 if (issue_closed || version_closed) {
113 if (issue_closed || version_closed) {
114 arr.push({left: today_left, top: element_top_center});
114 arr.push({left: today_left, top: element_top_center});
115 } else {
115 } else {
116 var issue_done = $("#task-done-" + $(element).attr("id"));
116 var issue_done = $("#task-done-" + $(element).attr("id"));
117 var is_behind_start = $(element).children('span').hasClass('behind-start-date');
117 var is_behind_start = $(element).children('span').hasClass('behind-start-date');
118 var is_over_end = $(element).children('span').hasClass('over-end-date');
118 var is_over_end = $(element).children('span').hasClass('over-end-date');
119 if (is_over_end) {
119 if (is_over_end) {
120 arr.push({left: draw_right, top: element_top_upper, is_right_edge: true});
120 arr.push({left: draw_right, top: element_top_upper, is_right_edge: true});
121 arr.push({left: draw_right, top: element_top_lower, is_right_edge: true, none_stroke: true});
121 arr.push({left: draw_right, top: element_top_lower, is_right_edge: true, none_stroke: true});
122 } else if (issue_done.size() > 0) {
122 } else if (issue_done.size() > 0) {
123 var done_left = issue_done.first().position().left +
123 var done_left = issue_done.first().position().left +
124 issue_done.first().width();
124 issue_done.first().width();
125 arr.push({left: done_left, top: element_top_center});
125 arr.push({left: done_left, top: element_top_center});
126 } else if (is_behind_start) {
126 } else if (is_behind_start) {
127 arr.push({left: 0 , top: element_top_upper, is_left_edge: true});
127 arr.push({left: 0 , top: element_top_upper, is_left_edge: true});
128 arr.push({left: 0 , top: element_top_lower, is_left_edge: true, none_stroke: true});
128 arr.push({left: 0 , top: element_top_lower, is_left_edge: true, none_stroke: true});
129 } else {
129 } else {
130 var todo_left = today_left;
130 var todo_left = today_left;
131 var issue_todo = $("#task-todo-" + $(element).attr("id"));
131 var issue_todo = $("#task-todo-" + $(element).attr("id"));
132 if (issue_todo.size() > 0){
132 if (issue_todo.size() > 0){
133 todo_left = issue_todo.first().position().left;
133 todo_left = issue_todo.first().position().left;
134 }
134 }
135 arr.push({left: Math.min(today_left, todo_left), top: element_top_center});
135 arr.push({left: Math.min(today_left, todo_left), top: element_top_center});
136 }
136 }
137 }
137 }
138 });
138 });
139 return arr;
139 return arr;
140 }
140 }
141
141
142 function drawGanttProgressLines() {
142 function drawGanttProgressLines() {
143 var arr = getProgressLinesArray();
143 var arr = getProgressLinesArray();
144 var color = $("#today_line")
144 var color = $("#today_line")
145 .css("border-left-color");
145 .css("border-left-color");
146 var i;
146 var i;
147 for(i = 1 ; i < arr.length ; i++) {
147 for(i = 1 ; i < arr.length ; i++) {
148 if (!("none_stroke" in arr[i]) &&
148 if (!("none_stroke" in arr[i]) &&
149 (!("is_right_edge" in arr[i - 1] && "is_right_edge" in arr[i]) &&
149 (!("is_right_edge" in arr[i - 1] && "is_right_edge" in arr[i]) &&
150 !("is_left_edge" in arr[i - 1] && "is_left_edge" in arr[i]))
150 !("is_left_edge" in arr[i - 1] && "is_left_edge" in arr[i]))
151 ) {
151 ) {
152 var x1 = (arr[i - 1].left == 0) ? 0 : arr[i - 1].left + draw_left;
152 var x1 = (arr[i - 1].left == 0) ? 0 : arr[i - 1].left + draw_left;
153 var x2 = (arr[i].left == 0) ? 0 : arr[i].left + draw_left;
153 var x2 = (arr[i].left == 0) ? 0 : arr[i].left + draw_left;
154 draw_gantt.path(["M", x1, arr[i - 1].top,
154 draw_gantt.path(["M", x1, arr[i - 1].top,
155 "L", x2, arr[i].top])
155 "L", x2, arr[i].top])
156 .attr({stroke: color, "stroke-width": 2});
156 .attr({stroke: color, "stroke-width": 2});
157 }
157 }
158 }
158 }
159 }
159 }
160
160
161 function drawGanttHandler() {
161 function drawGanttHandler() {
162 var folder = document.getElementById('gantt_draw_area');
162 var folder = document.getElementById('gantt_draw_area');
163 if(draw_gantt != null)
163 if(draw_gantt != null)
164 draw_gantt.clear();
164 draw_gantt.clear();
165 else
165 else
166 draw_gantt = Raphael(folder);
166 draw_gantt = Raphael(folder);
167 setDrawArea();
167 setDrawArea();
168 if ($("#draw_progress_line").attr('checked'))
168 if ($("#draw_progress_line").attr('checked'))
169 drawGanttProgressLines();
169 drawGanttProgressLines();
170 if ($("#draw_rels").attr('checked'))
170 if ($("#draw_rels").attr('checked'))
171 drawRelations();
171 drawRelations();
172 }
172 }
General Comments 0
You need to be logged in to leave comments. Login now