Redmine 4.1.1
This commit is contained in:
parent
33e7b881a5
commit
3d976f1b3b
1593 changed files with 36180 additions and 19489 deletions
|
@ -1,5 +1,5 @@
|
|||
/* Redmine - project management software
|
||||
Copyright (C) 2006-2017 Jean-Philippe Lang */
|
||||
Copyright (C) 2006-2019 Jean-Philippe Lang */
|
||||
|
||||
var draw_gantt = null;
|
||||
var draw_top;
|
||||
|
@ -17,6 +17,7 @@ function setDrawArea() {
|
|||
function getRelationsArray() {
|
||||
var arr = new Array();
|
||||
$.each($('div.task_todo[data-rels]'), function(index_div, element) {
|
||||
if(!$(element).is(':visible')) return true;
|
||||
var element_id = $(element).attr("id");
|
||||
if (element_id != null) {
|
||||
var issue_id = element_id.replace("task-todo-issue-", "");
|
||||
|
@ -106,6 +107,7 @@ function getProgressLinesArray() {
|
|||
var today_left = $('#today_line').position().left;
|
||||
arr.push({left: today_left, top: 0});
|
||||
$.each($('div.issue-subject, div.version-name'), function(index, element) {
|
||||
if(!$(element).is(':visible')) return true;
|
||||
var t = $(element).position().top - draw_top ;
|
||||
var h = ($(element).height() / 9);
|
||||
var element_top_upper = t - h;
|
||||
|
@ -161,6 +163,37 @@ function drawGanttProgressLines() {
|
|||
}
|
||||
}
|
||||
|
||||
function drawSelectedColumns(){
|
||||
if ($("#draw_selected_columns").prop('checked')) {
|
||||
if(isMobile()) {
|
||||
$('td.gantt_selected_column').each(function(i) {
|
||||
$(this).hide();
|
||||
});
|
||||
}else{
|
||||
$('.gantt_subjects_container').addClass('draw_selected_columns');
|
||||
$('td.gantt_selected_column').each(function() {
|
||||
$(this).show();
|
||||
var column_name = $(this).attr('id');
|
||||
$(this).resizable({
|
||||
alsoResize: '.gantt_' + column_name + '_container, .gantt_' + column_name + '_container > .gantt_hdr',
|
||||
minWidth: 20,
|
||||
handles: "e",
|
||||
create: function() {
|
||||
$(".ui-resizable-e").css("cursor","ew-resize");
|
||||
}
|
||||
}).on('resize', function (e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
});
|
||||
}
|
||||
}else{
|
||||
$('td.gantt_selected_column').each(function (i) {
|
||||
$(this).hide();
|
||||
$('.gantt_subjects_container').removeClass('draw_selected_columns');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function drawGanttHandler() {
|
||||
var folder = document.getElementById('gantt_draw_area');
|
||||
if(draw_gantt != null)
|
||||
|
@ -168,8 +201,103 @@ function drawGanttHandler() {
|
|||
else
|
||||
draw_gantt = Raphael(folder);
|
||||
setDrawArea();
|
||||
drawSelectedColumns();
|
||||
if ($("#draw_progress_line").prop('checked'))
|
||||
drawGanttProgressLines();
|
||||
try{drawGanttProgressLines();}catch(e){}
|
||||
if ($("#draw_relations").prop('checked'))
|
||||
drawRelations();
|
||||
$('#content').addClass('gantt_content');
|
||||
}
|
||||
|
||||
function resizableSubjectColumn(){
|
||||
$('.issue-subject, .project-name, .version-name').each(function(){
|
||||
$(this).width($(".gantt_subjects_column").width()-$(this).position().left);
|
||||
});
|
||||
$('td.gantt_subjects_column').resizable({
|
||||
alsoResize: '.gantt_subjects_container, .gantt_subjects_container>.gantt_hdr, .project-name, .issue-subject, .version-name',
|
||||
minWidth: 100,
|
||||
handles: 'e',
|
||||
create: function( event, ui ) {
|
||||
$('.ui-resizable-e').css('cursor','ew-resize');
|
||||
}
|
||||
}).on('resize', function (e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
if(isMobile()) {
|
||||
$('td.gantt_subjects_column').resizable('disable');
|
||||
}else{
|
||||
$('td.gantt_subjects_column').resizable('enable');
|
||||
};
|
||||
}
|
||||
|
||||
ganttEntryClick = function(e){
|
||||
var icon_expander = e.target;
|
||||
var subject = $(icon_expander.parentElement);
|
||||
var subject_left = parseInt(subject.css('left')) + parseInt(icon_expander.offsetWidth);
|
||||
var target_shown = null;
|
||||
var target_top = 0;
|
||||
var total_height = 0;
|
||||
var out_of_hierarchy = false;
|
||||
var iconChange = null;
|
||||
if(subject.hasClass('open'))
|
||||
iconChange = function(element){
|
||||
$(element).find('.expander').switchClass('icon-expended', 'icon-collapsed');
|
||||
$(element).removeClass('open');
|
||||
};
|
||||
else
|
||||
iconChange = function(element){
|
||||
$(element).find('.expander').switchClass('icon-collapsed', 'icon-expended');
|
||||
$(element).addClass('open');
|
||||
};
|
||||
iconChange(subject);
|
||||
subject.nextAll('div').each(function(_, element){
|
||||
var el = $(element);
|
||||
var json = el.data('collapse-expand');
|
||||
if(out_of_hierarchy || parseInt(el.css('left')) <= subject_left){
|
||||
out_of_hierarchy = true;
|
||||
if(target_shown == null) return false;
|
||||
|
||||
var new_top_val = parseInt(el.css('top')) + total_height * (target_shown ? -1 : 1);
|
||||
el.css('top', new_top_val);
|
||||
$('#gantt_area form > div[data-collapse-expand="' + json.obj_id + '"], td.gantt_selected_column div[data-collapse-expand="' + json.obj_id + '"]').each(function(_, el){
|
||||
$(el).css('top', new_top_val);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
var is_shown = el.is(':visible');
|
||||
if(target_shown == null){
|
||||
target_shown = is_shown;
|
||||
target_top = parseInt(el.css('top'));
|
||||
total_height = 0;
|
||||
}
|
||||
if(is_shown == target_shown){
|
||||
$('#gantt_area form > div[data-collapse-expand="' + json.obj_id + '"]').each(function(_, task) {
|
||||
var el_task = $(task);
|
||||
if(!is_shown)
|
||||
el_task.css('top', target_top + total_height);
|
||||
if(!el_task.hasClass('tooltip'))
|
||||
el_task.toggle(!is_shown);
|
||||
});
|
||||
$('td.gantt_selected_column div[data-collapse-expand="' + json.obj_id + '"]'
|
||||
).each(function (_, attr) {
|
||||
var el_attr = $(attr);
|
||||
if (!is_shown)
|
||||
el_attr.css('top', target_top + total_height);
|
||||
el_attr.toggle(!is_shown);
|
||||
});
|
||||
if(!is_shown)
|
||||
el.css('top', target_top + total_height);
|
||||
iconChange(el);
|
||||
el.toggle(!is_shown);
|
||||
total_height += parseInt(json.top_increment);
|
||||
}
|
||||
});
|
||||
drawGanttHandler();
|
||||
};
|
||||
|
||||
function disable_unavailable_columns(unavailable_columns) {
|
||||
$.each(unavailable_columns, function (index, value) {
|
||||
$('#available_c, #selected_c').children("[value='" + value + "']").prop('disabled', true);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue