ソースを参照

invalid rate is marked

master
patrick 6年前
コミット
3a5841613a
3個のファイルの変更67行の追加16行の削除
  1. +12
    -2
      css/bts_office.css
  2. +2
    -2
      html/jobv1.html
  3. +53
    -12
      js/bts_office.js

+ 12
- 2
css/bts_office.css ファイルの表示

} }
} }


@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 { .titlebar_gradient {
/* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#f6e6b4+0,ed9017+100 */ /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#f6e6b4+0,ed9017+100 */
background: rgb(246,230,180); /* Old browsers */ background: rgb(246,230,180); /* Old browsers */
box-shadow: 0px 0px 10px green; box-shadow: 0px 0px 10px green;
} }
.divTable.highlight div { .divTable.highlight div {
background-color: lightyellow;
background-color: lightyellow !important;
} }


.divTable.invalidjob.highlight { .divTable.invalidjob.highlight {
max-width: 20px; max-width: 20px;
} }


div.brate.error{
background-color: red !important;
animation: bolder 1s linear infinite;
}

.divTable div > select { .divTable div > select {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: none; display: none;
} }



div.jobTable.saved div{ div.jobTable.saved div{
background-color: transparent; background-color: transparent;
} }

+ 2
- 2
html/jobv1.html ファイルの表示

</div> </div>
<div class="divTableCell bstart">{{start}}</div> <div class="divTableCell bstart">{{start}}</div>
<div class="divTableCell bfinish">{{finish}}</div> <div class="divTableCell bfinish">{{finish}}</div>
<div class="divTableCell brate">{{rate_name}}</div>
<div class="divTableCell brate {{#non_hour}} error {{/non_hour}}">{{rate_name}}</div>
<div class="divTableCell bstaff">{{staff_name}}</div> <div class="divTableCell bstaff">{{staff_name}}</div>
<div class="divTableCell bclient">{{client_name}}</div>
<div class="divTableCell bclient {{#is_week1}}week1color{{/is_week1}} {{#is_week2}}week2color{{/is_week2}}">{{client_name}}</div>
<div class="divTableCell bconfirmed"><input name="ack" type=checkbox {{#is_confirmed}}checked{{/is_confirmed}}></div> <div class="divTableCell bconfirmed"><input name="ack" type=checkbox {{#is_confirmed}}checked{{/is_confirmed}}></div>
<div class="divTableCell brating">{{rating}}</div> <div class="divTableCell brating">{{rating}}</div>
<div class="divTableCell bdelete"> <div class="divTableCell bdelete">

+ 53
- 12
js/bts_office.js ファイルの表示

{ {
//map data for each jobTable //map data for each jobTable
response.jobs.forEach(function(e){ 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 //we do works, load timesheets
}, 500); //try it half seconds later }, 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){ function show_jobs(job_els, in_ajax){
if (job_els.length >0){ if (job_els.length >0){
var el = $(this).closest('.jobTable'); var el = $(this).closest('.jobTable');
var data = el.data(); var data = el.data();
data.ack = e.checked? 1: 0; 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.removeClass('saved');
el.addClass('dirty'); el.addClass('dirty');
} }
function mark_clean(el)
function job_mark_clean(el)
{ {
el.addClass('saved'); el.addClass('saved');
el.removeClass('dirty'); 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(){ function init_ts(){
xero(false); xero(false);
wifi(false); wifi(false);

読み込み中…
キャンセル
保存