From 3a5841613ad40b3071c8e184a4e0662b7b732ac6 Mon Sep 17 00:00:00 2001 From: patrick Date: Tue, 3 Sep 2019 05:33:33 +1000 Subject: [PATCH] invalid rate is marked --- css/bts_office.css | 14 ++++++++-- html/jobv1.html | 4 +-- js/bts_office.js | 65 +++++++++++++++++++++++++++++++++++++--------- 3 files changed, 67 insertions(+), 16 deletions(-) diff --git a/css/bts_office.css b/css/bts_office.css index a9a8649..c320fbc 100644 --- a/css/bts_office.css +++ b/css/bts_office.css @@ -18,6 +18,12 @@ body { } } +@keyframes bolder { + 0% { padding-left:0px; background-color:yellow;} + 50% { padding-left:10px; background-color: lightyellow;} + 100% { padding-left:0px; background-color:yellow;} +} + .titlebar_gradient { /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#f6e6b4+0,ed9017+100 */ background: rgb(246,230,180); /* Old browsers */ @@ -757,7 +763,7 @@ div.blueTable.emptyrecord { box-shadow: 0px 0px 10px green; } .divTable.highlight div { - background-color: lightyellow; + background-color: lightyellow !important; } .divTable.invalidjob.highlight { @@ -836,6 +842,11 @@ div.brate { max-width: 20px; } +div.brate.error{ + background-color: red !important; + animation: bolder 1s linear infinite; +} + .divTable div > select { width: 100%; height: 100%; @@ -888,7 +899,6 @@ div.jobTable.saved div.bsave span.ticon-save { display: none; } - div.jobTable.saved div{ background-color: transparent; } diff --git a/html/jobv1.html b/html/jobv1.html index 3f11954..caee06b 100644 --- a/html/jobv1.html +++ b/html/jobv1.html @@ -8,9 +8,9 @@
{{start}}
{{finish}}
-
{{rate_name}}
+
{{rate_name}}
{{staff_name}}
-
{{client_name}}
+
{{client_name}}
{{rating}}
diff --git a/js/bts_office.js b/js/bts_office.js index f111f72..eed04cd 100644 --- a/js/bts_office.js +++ b/js/bts_office.js @@ -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);