|
|
|
|
|
|
|
|
}); |
|
|
}); |
|
|
this.el.find("div.bfinish input").change(function(){ |
|
|
this.el.find("div.bfinish input").change(function(){ |
|
|
if (self.validate_finish()){ |
|
|
if (self.validate_finish()){ |
|
|
|
|
|
console.log(self); |
|
|
self.data.finish = self.get_finish(); |
|
|
self.data.finish = self.get_finish(); |
|
|
self.set_err_msg_finish(''); |
|
|
self.set_err_msg_finish(''); |
|
|
self.validate_start_and_finish(); |
|
|
self.validate_start_and_finish(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
get_start(){ |
|
|
get_start(){ |
|
|
return this.el.find('div.bstart input').attr('value'); |
|
|
|
|
|
|
|
|
return this.el.find('div.bstart input').val(); |
|
|
} |
|
|
} |
|
|
set_start(val) |
|
|
set_start(val) |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
this.set_err_msg_start("need start"); |
|
|
this.set_err_msg_start("need start"); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
this.el.find('div.bstart input').attr('value', val); |
|
|
|
|
|
|
|
|
this.el.find('div.bstart input').val(val); |
|
|
} |
|
|
} |
|
|
get_finish() |
|
|
get_finish() |
|
|
{ |
|
|
{ |
|
|
return this.el.find('div.bfinish input').attr('value'); |
|
|
|
|
|
|
|
|
return this.el.find('div.bfinish input').val(); |
|
|
} |
|
|
} |
|
|
set_finish(val) |
|
|
set_finish(val) |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
this.set_err_msg_finish("need finish"); |
|
|
this.set_err_msg_finish("need finish"); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
this.el.find('div.bfinish input').attr('value', val); |
|
|
|
|
|
|
|
|
this.el.find('div.bfinish input').val(val); |
|
|
} |
|
|
} |
|
|
get_rate() |
|
|
get_rate() |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function set_working_hours(num){ |
|
|
function set_working_hours(num){ |
|
|
$('input#woh').attr('value', num); |
|
|
|
|
|
|
|
|
$('input#woh').val(num); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function get_working_hours(){ |
|
|
function get_working_hours(){ |
|
|
var txt = $('input#woh').attr('value'); |
|
|
|
|
|
|
|
|
var txt = $('input#woh').val(); |
|
|
return parseFloat(txt); |
|
|
return parseFloat(txt); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function set_week_boundry() |
|
|
function set_week_boundry() |
|
|
{ |
|
|
{ |
|
|
var date = $('span[name="w1d1"]').data().date; |
|
|
var date = $('span[name="w1d1"]').data().date; |
|
|
$('#week1b').attr('value', format_date(date)); |
|
|
|
|
|
|
|
|
$('#week1b').val(format_date(date)); |
|
|
var date = $('span[name="w2d7"]').data().date; |
|
|
var date = $('span[name="w2d7"]').data().date; |
|
|
$('#week2b').attr('value', format_date(date)); |
|
|
|
|
|
|
|
|
$('#week2b').val(format_date(date)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function number_of_unsaved_job(){ |
|
|
function number_of_unsaved_job(){ |
|
|
|
|
|
|
|
|
e.stopPropagation(); |
|
|
e.stopPropagation(); |
|
|
}); |
|
|
}); |
|
|
$('div.weekly div.weekname.prev >input ').change(function(e){ |
|
|
$('div.weekly div.weekname.prev >input ').change(function(e){ |
|
|
var date = $('#week1b').attr('value'); |
|
|
|
|
|
|
|
|
var date = $('#week1b').val(); |
|
|
init_weekdays_by_anchor(date, true); |
|
|
init_weekdays_by_anchor(date, true); |
|
|
set_week_number(); |
|
|
set_week_number(); |
|
|
debounced_load_timesheet(); |
|
|
debounced_load_timesheet(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$('div.weekly div.weekname.next >input ').change(function(e){ |
|
|
$('div.weekly div.weekname.next >input ').change(function(e){ |
|
|
e.stopPropagation(); |
|
|
e.stopPropagation(); |
|
|
var date = $('#week2b').attr('value'); |
|
|
|
|
|
|
|
|
var date = $('#week2b').val(); |
|
|
init_weekdays_by_anchor(date, false); |
|
|
init_weekdays_by_anchor(date, false); |
|
|
set_week_number(); |
|
|
set_week_number(); |
|
|
debounced_load_timesheet(); |
|
|
debounced_load_timesheet(); |
|
|
|
|
|
|
|
|
function save_unsaved_copy(event) |
|
|
function save_unsaved_copy(event) |
|
|
{ |
|
|
{ |
|
|
event.preventDefault(); |
|
|
event.preventDefault(); |
|
|
var num = $('div.jobTable.dirty').length; |
|
|
|
|
|
|
|
|
var num = $('div.jobTable.dirty:visible').length; |
|
|
if (num > 0){ |
|
|
if (num > 0){ |
|
|
if ( !confirm('save all '+ num + ' jobs?')){ |
|
|
if ( !confirm('save all '+ num + ' jobs?')){ |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
$('div.jobTable.dirty').each(function(){ |
|
|
|
|
|
|
|
|
$('div.jobTable.dirty:visible').each(function(){ |
|
|
$(this).find('span.ticon.ticon-save').trigger('click'); |
|
|
$(this).find('span.ticon.ticon-save').trigger('click'); |
|
|
}) |
|
|
}) |
|
|
}else{ |
|
|
}else{ |
|
|
|
|
|
|
|
|
$('div.divTableHeading div.bsave span.ticon-save').contextmenu(function(event){ |
|
|
$('div.divTableHeading div.bsave span.ticon-save').contextmenu(function(event){ |
|
|
//clearn all unsaved jobs. |
|
|
//clearn all unsaved jobs. |
|
|
event.preventDefault(); |
|
|
event.preventDefault(); |
|
|
var num = $('div.jobTable.dirty').length; |
|
|
|
|
|
|
|
|
var num = $('div.jobTable.dirty:visible').length; |
|
|
if (num > 0){ |
|
|
if (num > 0){ |
|
|
if ( !confirm('delete all '+ num + ' unsaved?')){ |
|
|
if ( !confirm('delete all '+ num + ' unsaved?')){ |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
$('div.jobTable.dirty').each(function(){ |
|
|
|
|
|
|
|
|
$('div.jobTable.dirty:visible').each(function(){ |
|
|
var newjob_id = $(this).data().newjob_id; |
|
|
var newjob_id = $(this).data().newjob_id; |
|
|
delete bts().job_map_new[newjob_id] |
|
|
delete bts().job_map_new[newjob_id] |
|
|
$(this).remove(); |
|
|
$(this).remove(); |