| @@ -867,7 +867,7 @@ div.workspace .brating > span:hover ~ span:before { | |||
| div.bsave span.ticon-copy { | |||
| display: none; | |||
| } | |||
| div.bsave.saved span.ticon-copy { | |||
| div.jobTable.saved div.bsave span.ticon-copy { | |||
| display: inline-block; | |||
| border: 3px solid orange; | |||
| padding: 5px; | |||
| @@ -884,10 +884,29 @@ div.bsave span.ticon-save { | |||
| cursor: pointer; | |||
| } | |||
| div.bsave.saved span.ticon-save { | |||
| div.jobTable.saved div.bsave span.ticon-save { | |||
| display: none; | |||
| } | |||
| div.jobTable.saved div{ | |||
| background-color: transparent; | |||
| } | |||
| div.jobTable.dirty div.bsave{ | |||
| background-color: lightyellow; | |||
| } | |||
| div.jobTable.dirty div.bsave span{ | |||
| animation-duration: 0.3s; | |||
| animation-timing-function: linear; | |||
| animation-delay: 0s; | |||
| animation-iteration-count: 5; | |||
| animation-direction: normal; | |||
| animation-fill-mode: none; | |||
| animation-play-state: running; | |||
| animation-name: blinker; | |||
| } | |||
| div.bdelete span.ticon-trash { | |||
| display: inline-block; | |||
| border: 3px solid lightgrey; | |||
| @@ -1,5 +1,5 @@ | |||
| {{#jobs}} | |||
| <div class="divTable jobTable blueTable " id="job_{{id}}" | |||
| <div class="divTable jobTable blueTable {{#saved}} saved {{/saved}}" id="job_{{id}}" | |||
| data-id="{{id}}" data-tos="{{tos}}" data-rate="{{rate}}" data-staff="{{staff}}" data-client="{{client}}"> | |||
| <div class="divTableBody"> | |||
| <div class="divTableRow"> | |||
| @@ -11,12 +11,12 @@ | |||
| <div class="divTableCell brate">{{rate_name}}</div> | |||
| <div class="divTableCell bstaff">{{staff_name}}</div> | |||
| <div class="divTableCell bclient">{{client_name}}</div> | |||
| <div class="divTableCell bconfirmed"><input 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 bdelete"> | |||
| <span class="ticon ticon-trash"></span> | |||
| </div> | |||
| <div class="divTableCell bsave {{#saved}} saved {{/saved}}"> | |||
| <div class="divTableCell bsave "> | |||
| <span class="ticon ticon-save"></span> | |||
| <span class="ticon ticon-copy"></span> | |||
| </div> | |||
| @@ -1437,11 +1437,12 @@ | |||
| return $('#p'+login).data().obj; | |||
| } | |||
| $(document).on('change', '.divTableRow select, .divTableRow input', function() { | |||
| var job = $(this).closest('.divTable').data().job; | |||
| job.validate(); | |||
| job.mark_dirty(); | |||
| debounced_calculate(); | |||
| $(document).on('change', '.divTableRow input[name="ack"]', function(e) { | |||
| var el = $(this).closest('.jobTable'); | |||
| var data = el.data(); | |||
| data.ack = e.checked? 1: 0; | |||
| el.removeClass('saved'); | |||
| el.addClass('dirty'); | |||
| }); | |||
| function init_ts(){ | |||