File: /home/imensosw/www/imenso.co/dev/impactify-it/js/gantt.js
$(document).ready(function() {
setTimeout(function(){ gantimg(); },1000);
function gantimg()
{
html2canvas(document.getElementById('gantt-table')).then(function(canvas) {
var imgdata = canvas.toDataURL('image/png');
$.ajax({
url: url+"/user/project/ganttCanvasUpload",
data: {
_token:csrf_token,
imgdata:imgdata,
filed:'gantt_image',
project_id:project_id
},
type: 'post',
success: function (response)
{
console.log(response);
}
});
});
}
gant_load();
$(document).on('click','.add_workstream',function(){
id=0;
//$('.loading').show();
$.ajax({
type: "post",
url: url+"/user/task/add",
data: {_token:csrf_token,week_width_in_per:week_width_in_per,id:id,project_id:project_id,start:calender.date[1]},
success: function(responce){
$('#gantt_left').append(responce.left_gantt);
$('#gantt_right').append(responce.right_gantt);
//$('.loading').hide();
calender_column_css();
gant_load();
},
dataType: 'json'
});
});
$(document).on('click','.gantt-add',function(){
//$('.loading').show();
id=$(this).closest('tr').attr('data-id');
tr_id=$(this).closest('tr').attr('id');
$.ajax({
type: "post",
url: url+"/user/task/add",
data: {_token:csrf_token,week_width_in_per:week_width_in_per,id:id,project_id:project_id,start:calender.date[1]},
success: function(responce){
var totalrow=$('.gantt-heading').find('.row_'+tr_id).length;
totalrow-=1;
if(totalrow<0)
{
$('.gantt-heading').find('#'+tr_id).after(responce.left_gantt);
$('.gantt-detail').find('#'+tr_id).after(responce.right_gantt);
}
else
{
$('.gantt-heading').find('.row_'+tr_id).eq(totalrow).after(responce.left_gantt);
$('.gantt-detail').find('.row_'+tr_id).eq(totalrow).after(responce.right_gantt);
}
parent_move(responce);
calender_column_css();
gant_load();
},
dataType: 'json'
});
});
$(document).on('click','.gantt-activity-delete',function(){
//$('.loading').show();
tr_id=$(this).closest('tr').attr('id');
$('#delete_task_modal').modal('show');
$('.delete_taskUpdate').attr('data-id',tr_id);
});
$(document).on('click','.delete_taskUpdate',function(){
tr_id=$(this).attr('data-id');
id=$('.gantt-detail').find('#'+tr_id).attr('data-id');
$.ajax({
type: "post",
url: url+"/user/task/delete",
data: {_token:csrf_token,id:id,project_id:project_id,start:calender.date[1]},
success: function(responce){
if(responce.parent_id>0)
{
$('.gantt-heading').find('#'+tr_id).remove();
$('.gantt-detail').find('#'+tr_id).remove();
$('.gantt-heading').find('#'+responce.parent_id).find("#budget").html(responce.budget);
$('.gantt-heading').find('#'+responce.parent_id).find("#utilized").html(responce.utilized);
parent_move(responce);
}
else
{
$('.gantt-heading').find('#'+tr_id).remove();
$('.gantt-detail').find('#'+tr_id).remove();
$('.gantt-heading').find('.row_'+tr_id).remove();
$('.gantt-detail').find('.row_'+tr_id).remove();
//$('.loading').hide();
}
$('#delete_task_modal').modal('hide');
calender_column_css();
},
dataType: 'json'
});
});
$(document).on('change','.sub_task_form',function(){
//$('.loading').show();
self=$(this);
id=self.closest('tr').attr('data-id');
tr_id=self.closest('tr').attr('id');
var name = self.closest('tr').find("#name").val();
var budget = self.closest('tr').find("#budget").val();
var utilized = self.closest('tr').find("#utilized").val();
$.ajax({
type: "post",
url: url+"/user/task/update",
data: {_token:csrf_token,name:name,budget:budget,utilized:utilized,id:id,project_id:project_id},
success: function(responce){
//$('.loading').hide();
$('.gantt-heading').find('#'+responce.parent_id).find("#budget").html(responce.budget);
$('.gantt-heading').find('#'+responce.parent_id).find("#utilized").html(responce.utilized);
},
dataType: 'json'
});
});
$(document).on('click','.task_status',function(){
//$('.loading').show();
self=$(this);
id=self.closest('tr').attr('data-id');
tr_id=self.closest('tr').attr('id');
var status = self.attr("data-value");
if(status=="Complete")
{
$('.complete_taskUpdate').attr('data-id',tr_id);
$('#complete_task_modal').modal('show');
return false;
}
$.ajax({
type: "post",
url: url+"/user/task/updateStatus",
data: {_token:csrf_token,status:status,id:id,project_id:project_id},
success: function(responce){
//$('.loading').hide();
self.closest('tr').find('.task_status').removeClass('active');
self.addClass('active');
$('.gantt-detail').find('#'+responce.parent_id).find(".data_strech_parent").removeClass('Not_start').removeClass('On-track').removeClass('Delayed').removeClass('No-progress').removeClass('Complete');
$('.gantt-detail').find('#'+responce.parent_id).find(".data_strech_parent").addClass(responce.parent_status);
$('.gantt-detail').find('#'+responce.id).find(".data_strech").removeClass('Not_start').removeClass('On-track').removeClass('Delayed').removeClass('No-progress').removeClass('Complete');
$('.gantt-detail').find('#'+responce.id).find(".data_strech").addClass(responce.status);
},
dataType: 'json'
});
});
$(document).on('click','.complete_taskUpdate',function(){
status="Complete";
tr_id=$(this).attr('data-id');
$('#gantt_left').find('#'+tr_id).find('.gantt-action').find('#comment_modal').trigger('click');
id=$('#gantt_left').find('#'+tr_id).attr('data-id');
$.ajax({
type: "post",
url: url+"/user/task/updateStatus",
data: {_token:csrf_token,status:status,id:id,project_id:project_id},
success: function(responce){
$('#complete_task_modal').modal('hide');
$('.gantt-heading').find('#'+responce.id).find('.dropdown-menu,.status_action').remove();
$('.gantt-detail').find('#'+responce.parent_id).find(".data_strech_parent").removeClass('Not_start').removeClass('On-track').removeClass('Delayed').removeClass('No-progress').removeClass('Complete');
$('.gantt-detail').find('#'+responce.parent_id).find(".data_strech_parent").addClass(responce.parent_status);
$('.gantt-detail').find('#'+responce.id).find(".data_strech").removeClass('Not_start').removeClass('On-track').removeClass('Delayed').removeClass('No-progress').removeClass('Complete');
$('.gantt-detail').find('#'+responce.id).find(".data_strech").addClass(responce.status);
},
dataType: 'json'
});
})
$(document).on('change','.task_form',function(){
//$('.loading').show();
self=$(this);
id=self.closest('tr').attr('data-id');
tr_id=self.closest('tr').attr('id');
var name = self.closest('tr').find("#name").val();
$.ajax({
type: "post",
url: url+"/user/task/updateTask",
data: {_token:csrf_token,name:name,id:id,project_id:project_id},
success: function(responce){
//$('.loading').hide();
},
dataType: 'json'
});
});
function gant_load(){
if(calender_view==false && user_task_gantt=="")
{
return false;
}
$(".data_strech"+user_task_gantt).draggable(
{
axis: 'x',
stop: function(event, ui) {
//$('.loading').show();
var w=$(this).width();
w=Math.round(w/week_width);
var l=$(this).css("left").replace(/[^-\d\.]/g, '');
l=Math.round(l/week_width);
if(l<0)
{
l=0;
}
if(l<1)
{
left=0;
}
else
{
left=l*week_width_in_per;
}
if(w<1)
{
width=week_width_in_per;
}
else
{
width=w*week_width_in_per;
}
updateCalendar($(this),left,width,l,w);
}
}
).resizable({
handles: 'e, w',
stop: function(e, ui) {
//$('.loading').show();
var w=$(this).width();
w=Math.round(w/week_width);
if(w<1)
{
width=week_width_in_per;
}
else
{
width=w*week_width_in_per;
}
var l=$(this).css("left").replace(/[^-\d\.]/g, '');
l=Math.round(l/week_width);
if(l<0)
{
l=0;
}
if(l<1)
{
left=0;
}
else
{
left=l*week_width_in_per;
}
updateCalendar($(this),left,width,l,w);
}
});
}
function updateCalendar(self,left,width,l,w)
{
start=l;
end=l+w-1;
start=calender.date[start];
end=calender.date[end];
//alert(l+" "+w);
if(start==undefined || end==undefined)
{
location.reload();
return false;
}
id=self.closest('tr').attr('data-id');
tr_id=self.closest('tr').attr('id');
$.ajax({
type: "post",
url: url+"/user/task/calendarUpdate",
data: {_token:csrf_token,l:l,w:w,id:id,project_id:project_id,start:start,end:end},
success: function(responce){
if(l==0)
{
ganttIncreaseDuration(calender.date[0],'left');
}
else if(l+w==week_total)
{
ganttIncreaseDuration(calender.date[week_total-1],'right');
}
else
{
parent_move(responce);
move(self,left,width);
}
},
dataType: 'json'
});
}
function move(self,left,width)
{
self.css("left",left+"%");
self.css("width",width+"%");
}
function parent_move(responce)
{
if(responce.star=="")
{
var start_date=1;
var end_date=1;
}
else
{
var start_date=calender.week_no[responce.start];
var end_date=calender.week_no[responce.end];
}
var total_week=end_date-(start_date-1);
total_week*= week_width_in_per ;
left=(start_date* week_width_in_per)-week_width_in_per;
$('.gantt-detail').find('#'+responce.parent_id).find('.data_strech_parent').css("left",left+"%");
$('.gantt-detail').find('#'+responce.parent_id).find('.data_strech_parent').css("width",total_week+"%");
//$('.loading').hide();
}
function ganttIncreaseDuration(date,increaseduration)
{
$.ajax({
type: "post",
url: url+"/user/project/ganttIncreaseDuration",
data: {_token:csrf_token,filter_status:filter_status,filter_team:filter_team,week_width:week_width,project_id:project_id,date:date,increaseduration:increaseduration},
success: function(responce){
//$('.loading').hide();
$('.gentt_section').html(responce);
gant_load();
$('.dropdown-toggle').dropdown();
},
dataType: 'html'
});
}
$(document).on('click','.gantt-folder',function(){
tr_id=$(this).closest('tr').attr('id');
if($(this).attr('data-status')=="open")
{
$(this).attr('data-status','close');
$('.row_'+tr_id).hide();
$(this).html('<i class="fa fa-folder"></i>');
}
else
{
$(this).attr('data-status','open');
$('.row_'+tr_id).show();
$(this).html('<i class="fa fa-folder-open"></i>');
}
});
// scroll start
$('.data').attr("data-scrolling", "false");
$('.data').scroll(function(){
if($("#data_right").scrollLeft()==0)
{
$(".topscroll").css('left',-1);
}
else
{
$(".topscroll").css('left',-$("#data_right").scrollLeft());
}
if($("#data_left").scrollLeft()==0)
{
$(".gh-left-fixed").css('left',-1);
}
else
{
$(".gh-left-fixed").css('left',-$("#data_left").scrollLeft());
}
// console.log(11);
if($(this).attr("data-scrolling") == "false"){
$('.data').not(this).attr("data-scrolling", "true");
$('.data').not(this).scrollTop($(this).scrollTop());
}
$(this).attr("data-scrolling", "false");
});
// scroll end
function calender_column_css()
{
var calender_column=$('#gantt_left').find('tr').length;
var data_right=$('#data_right').height()-20;
var collum_height=23*calender_column;
if(data_right<collum_height)
{
$('.calender_column').css('height',collum_height);
}
else
{
$('.calender_column').css('height',data_right);
}
gcounting();
}
calender_column_css();
function gcounting()
{
var gname="A";
$('.task_parent').each(function(e){
sub_root=1;
$(this).find('#alpha').html(gname);
var tr_id= $(this).attr('id');
var sub=$('.gantt-heading').find('.row_'+tr_id).length;
for(i=0;i<sub;i++)
{
$('.gantt-heading').find('.row_'+tr_id).eq(i).find('#alpha').html(gname+""+sub_root);
sub_root++;
}
gname=String.fromCharCode(gname.charCodeAt() + 1);
});
}
$(document).on('click','.project_approve',function(){
//$('.loading').show();
var self=$(this);
$.ajax({
type: "post",
url: url+"/user/project/userAction",
data: {_token:csrf_token,project_id:project_id},
success: function(responce){
//$('.loading').hide();
self.html('Waiting For Approval');
self.removeClass('project_approve');
},
dataType: 'json'
});
});
$(document).on('click','.filter',function(){
//$('.loading').show();
if($(this).closest('.dropdown-menu').hasClass('zoom-dropdown'))
{
week_width=$(this).attr('data-id');
}
if($(this).closest('.dropdown-menu').hasClass('status-dropdown'))
{
filter_status=$(this).attr('data-id');
}
else if($(this).closest('.dropdown-menu').hasClass('team-dropdown'))
{
filter_team=$(this).attr('data-id');
}
filter();
});
function filter()
{
$.ajax({
type: "post",
url: url+"/user/project/ganttIncreaseDuration",
data: {_token:csrf_token,filter_status:filter_status,filter_team:filter_team,week_width:week_width,project_id:project_id,increaseduration:'zoom'},
success: function(responce){
//$('.loading').hide();
$('.gentt_section').html(responce);
gant_load();
$('.dropdown-toggle').dropdown();
calender_column_css();
},
dataType: 'html'
});
}
$(document).on('click','.left_toggel',function(){
left_toggel=$(this).attr('data-status');
if(left_toggel=="show")
{
$('.gantt-heading').css('width','0');
$('.gantt-detail').css('width','100%');
$(this).attr('data-status','hide');
$(this).html('left show');
}
else
{
$('.gantt-heading').css('width','37%');
$('.gantt-detail').css('width','63%');
$(this).attr('data-status','show');
$(this).html('left hide');
}
});
$(document).on('click','#team_edit',function(){
//$('.loading').show();
self=$(this);
id=self.closest('tr').attr('data-id');
tr_id=self.closest('tr').attr('id');
$('#updateTeam').attr('data-id',tr_id);
$('#updateTeam').attr('data-eid',id);
$.ajax({
type: "post",
url: url+"/user/task/getTeam",
data: {_token:csrf_token,id:id,project_id:project_id},
success: function(responce){
//$('.loading').hide();
$('.modal-body').html(responce);
$('#updateTeam').modal('show');
},
dataType: 'html'
});
});
$(document).on('click','.teamUpdate',function(){
//$('.loading').show();
self=$(this);
var id=$('#updateTeam').attr('data-eid');
var tr_id=$('#updateTeam').attr('data-id');
var form = $('#team-form');
form = form.serializeArray();
form = form.concat([
{name: "id", value: id},
{name: "project_id", value: project_id}
]);
$.ajax({
type: "post",
url: url+"/user/task/teamUpdate",
data: form,
success: function(responce){
//$('.loading').hide();
$('#updateTeam').modal('hide');
$('.gantt-heading').find('#'+tr_id).find('#team_sub_task').html(responce.name);
},
dataType: 'json'
});
});
$(document).on('mouseover','#gantt_right tr,#gantt_left tr',function(){
var trid=$(this).attr('id');
$('#gantt_right').find('#'+trid).addClass('lg-bg');
$('#gantt_left').find('#'+trid).addClass('lg-bg');
});
$(document).on('mouseout','#gantt_right tr,#gantt_left tr',function(){
$('tr').removeClass('lg-bg');
});
$(document).on('click','.project_start',function(){
$.ajax({
type: "post",
url: url+"/user/project/AllBudget",
data: {_token:csrf_token,project_id:project_id},
success: function(responce){
var TotalPlannedBudget=responce.TotalPlannedBudget;
var TotalActivityBudget=parseFloat(responce.TotalActivityBudget).toFixed(2);
var TotalCategorywiseallocation=responce.TotalCategorywiseallocation;
var TotalPaymentSchedule=responce.TotalPaymentSchedule;
console.log(TotalPlannedBudget);
console.log(TotalActivityBudget);
console.log(TotalCategorywiseallocation);
console.log(TotalPaymentSchedule);
if(TotalActivityBudget>0 && TotalActivityBudget==TotalCategorywiseallocation && TotalActivityBudget==TotalPaymentSchedule)
{
projectStart();
}
else
{
$('#TotalPlannedBudget').html(TotalPlannedBudget);
$('#TotalActivityBudget').html(TotalActivityBudget);
$('#TotalCategorywiseallocation').html(TotalCategorywiseallocation);
$('#TotalPaymentSchedule').html(TotalPaymentSchedule);
$('#startErrorPopup').modal("show");
}
},
dataType: 'json'
});
//$('#startErrorPopup').modal();
});
$(document).on('click','#comment_modal',function(){
// $('#comment_modal_box').modal('show');
var task_id = $(this).attr('data-task_id');
var project_id = $(this).attr('data-project_id');
$.ajax({
type:'post',
data:{_token:csrf_token,task_id:task_id,project_id:project_id},
url: url+"/user/project/task/comment",
dataType:"html",
success:function(data)
{
$('#comment_modal_box').find('.modal-body').html(data);
$('#comment_modal_box').modal('show');
}
});
});
$(document).on('submit','#comment_form',function(e){
e.preventDefault();
var myFormData = new FormData();
task_id=$(this).attr('task_id');
myFormData.append('task_id',task_id);
myFormData.append('_token',csrf_token);
myFormData.append('project_id',project_id);
myFormData.append('comment_file', $(this).find('input[type=file]')[0].files[0]);
myFormData.append('message', $(this).find('#message').val());
$.ajax({
data:myFormData ,
type: "POST",
async: false,
cache: false,
contentType: false,
processData: false,
url : url + "/user/project/task/comment/add",
success: function(result){
$('#comment_form').trigger("reset");
htm="<tr><td>"+result.message+"</td>";
htm+="<td><a target='_blank' href='"+result.destinationPath+"' >"+result.filepath+"</a></td>";
htm+="<td class='text-center width_70'>";
htm+="<a href='javascript:;' class='comment_delete' data-id="+result.id+">";
htm+="<i class='fa fa-trash-o' aria-hidden='true'></i>";
htm+="</a></td></tr>";
$('#comment_tbody').prepend(htm);
},
error:function(response){
var errorString="";
var response = $.parseJSON(response.responseText);
$.each(response.errors, function (key, val) {
errorString += '\n' + val;
});
arrayOfData={"message":errorString};
ajax_message(arrayOfData,'danger');
},
dataType:"json",
});
});
$(document).on('click','.comment_delete',function(){
if(!confirm("Are you sure!"))
{
return fasle;
}
var id= $(this).attr('data-id');
var self=$(this);
$.ajax({
url: url+"/user/project/task/comment/delete",
type:"post",
data:{_token:csrf_token,id:id},
success: function(data){
self.closest('tr').remove();
},
dataType: 'json',
});
});
/*$(document).on('click','.comment_delete',function(){
var id= $(this).attr('data-id');
var self=$(this);
$.ajax({
url: url+"/user/project/task/comment/delete",
type:"post",
data:{_token:csrf_token,id:id},
success: function(data){
self.closest('tr').remove();
},
dataType: 'json',
});
});*/
/*$(document).on('click','.comment_delete',function(){
var id = $(this).attr('data-id');
// alert(id);
$('#delete_comment_modal').modal('show');
$('.delete_comment').attr('data-id',id);
});
$(document).on('click','.delete_comment',function(){
$('#delete_comment_modal').modal('hide');
var id = $(this).attr('data-id');
// var self = $(this);
$.ajax({
type:"post",
url: url+"/user/project/task/comment/delete",
data:{_token:csrf_token,id:id},
success:function(data){
$('#comment_tbody').closest('tr').find('data-id',id).remove();
},
dataType:'json',
});
});*/
});
;