|
|
|
@@ -1189,15 +1189,7 @@ |
|
|
|
{ |
|
|
|
//map data for each jobTable |
|
|
|
response.jobs.forEach(function(e){ |
|
|
|
e.tos_name = bts().tos[e.tos].tos_full_str; |
|
|
|
e.staff_name = bts().staff_map[e.staff].display_name; |
|
|
|
e.client_name = bts().client_map[e.client].display_name; |
|
|
|
e.rate_name = bts().earnings_rate[e.rate].RatePerUnit + "-" + bts().earnings_rate[e.rate].Name; |
|
|
|
e.saved = true; |
|
|
|
if (e.ack != 0){ |
|
|
|
e.is_confirmed = true; |
|
|
|
} |
|
|
|
//console.log('attach %s %o to %o ', e.id, e, div); |
|
|
|
job_derive_attr(e); |
|
|
|
}); |
|
|
|
|
|
|
|
//we do works, load timesheets |
|
|
|
@@ -1215,6 +1207,33 @@ |
|
|
|
}, 500); //try it half seconds later |
|
|
|
} |
|
|
|
|
|
|
|
function job_derive_attr(e) |
|
|
|
{ |
|
|
|
e.saved = true; |
|
|
|
e.tos_name = bts().tos[e.tos].tos_full_str; |
|
|
|
e.staff_name = bts().staff_map[e.staff].display_name; |
|
|
|
e.client_name = bts().client_map[e.client].display_name; |
|
|
|
e.rate_name = bts().earnings_rate[e.rate].RatePerUnit + "-" + bts().earnings_rate[e.rate].Name; |
|
|
|
|
|
|
|
if (! has_txt_hour( bts().earnings_rate[e.rate].TypeOfUnits )){ |
|
|
|
e.non_hour = true; |
|
|
|
} |
|
|
|
|
|
|
|
if (job_is_week1(e.start)){ |
|
|
|
e.is_week1=true; |
|
|
|
}else if (job_is_week2(e.start)){ |
|
|
|
e.is_week2=true; |
|
|
|
} |
|
|
|
|
|
|
|
if (e.ack != 0){ |
|
|
|
e.is_confirmed = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function has_txt_hour(str){ |
|
|
|
var s = str.toLowerCase(); |
|
|
|
return s.indexOf('hour') != -1; |
|
|
|
} |
|
|
|
|
|
|
|
function show_jobs(job_els, in_ajax){ |
|
|
|
if (job_els.length >0){ |
|
|
|
@@ -1441,21 +1460,43 @@ |
|
|
|
var el = $(this).closest('.jobTable'); |
|
|
|
var data = el.data(); |
|
|
|
data.ack = e.checked? 1: 0; |
|
|
|
mark_dirty(el); |
|
|
|
job_mark_dirty(el); |
|
|
|
}); |
|
|
|
|
|
|
|
function mark_dirty(el) |
|
|
|
function job_mark_dirty(el) |
|
|
|
{ |
|
|
|
el.removeClass('saved'); |
|
|
|
el.addClass('dirty'); |
|
|
|
} |
|
|
|
|
|
|
|
function mark_clean(el) |
|
|
|
function job_mark_clean(el) |
|
|
|
{ |
|
|
|
el.addClass('saved'); |
|
|
|
el.removeClass('dirty'); |
|
|
|
} |
|
|
|
|
|
|
|
function job_is_week1(t) |
|
|
|
{ |
|
|
|
var w1_begin = new Date($('span[name="w1d1"]').data().date) ; |
|
|
|
var w1_end = new Date($('span[name="w1d7"]').data().date); |
|
|
|
w1_begin.setHours(0,0,0,0); |
|
|
|
w1_end.setHours(23,59,59); |
|
|
|
//console.log("week1 begin %o, end %o", w1_begin, w1_end); |
|
|
|
//w1_end = new Date (w1_end.setDate(w1_end.getDate()+1)); //from 00:00 to 23:59; |
|
|
|
var me = new Date(t); |
|
|
|
return (w1_begin <= me && me <= w1_end ); |
|
|
|
} |
|
|
|
|
|
|
|
function job_is_week2(t) |
|
|
|
{ |
|
|
|
var w2_begin = new Date($('span[name="w2d1"]').data().date); |
|
|
|
var w2_end = new Date($('span[name="w2d7"]').data().date); |
|
|
|
w2_begin.setHours(0,0,0,0); |
|
|
|
w2_end.setHours(23,59,59); |
|
|
|
var me = new Date(t); |
|
|
|
return (w2_begin <= me && me <= w2_end ); |
|
|
|
} |
|
|
|
|
|
|
|
function init_ts(){ |
|
|
|
xero(false); |
|
|
|
wifi(false); |