<vn-crud-model vn-id="model" url="WorkerTimeControls/filter" filter="::$ctrl.filter" data="$ctrl.hours"> </vn-crud-model> <div> <vn-card class="vn-pa-lg vn-w-lg"> <vn-table model="model" auto-load="false"> <vn-thead> <vn-tr> <vn-td ng-repeat="weekday in $ctrl.weekDays" center> <div class="weekday" translate>{{::$ctrl.weekdayNames[$index].name}}</div> <div> <span>{{::weekday.dated | date: 'dd'}}</span> <span title="{{::weekday.dated | date: 'MMMM' | translate}}" translate> {{::weekday.dated | date: 'MMMM'}} </span> </div> <vn-chip title="{{::weekday.event.name}}" ng-class="{invisible: !weekday.event}"> <vn-avatar ng-style="::{backgroundColor: weekday.event.color}"> </vn-avatar> <div> {{::weekday.event.name}} </div> </vn-chip> </vn-td> </vn-tr> </vn-thead> <vn-tbody> <vn-tr> <vn-td ng-repeat="weekday in $ctrl.weekDays" class="hours vn-pa-none" expand> <section ng-repeat="hour in weekday.hours"> <vn-icon icon="{{ ::hour.direction == 'in' ? 'arrow_forward' : 'arrow_back' }}" title="{{ ::(hour.direction == 'in' ? 'In' : 'Out') | translate }}" ng-class="::{'invisible': hour.direction == 'middle'}"> </vn-icon> <vn-chip ng-class="::{'colored': hour.manual, 'clickable': true}" removable="::hour.manual" on-remove="$ctrl.showDeleteDialog($event, hour)" ng-click="$ctrl.edit($event, hour)" > <prepend> <vn-icon icon="edit" vn-tooltip="Edit"> </vn-icon> </prepend> {{::hour.timed | date: 'HH:mm'}} </vn-chip> </section> </vn-td> </vn-tr> </vn-tbody> <vn-tfoot> <vn-tr> <vn-td ng-repeat="weekday in $ctrl.weekDays" center> {{$ctrl.formatHours(weekday.workedHours)}} h. </vn-td> </vn-tr> <vn-tr> <vn-td center ng-repeat="weekday in $ctrl.weekDays"> <vn-icon-button icon="add_circle" vn-tooltip="Add time" ng-click="$ctrl.showAddTimeDialog(weekday)"> </vn-icon-button> </vn-td> </vn-tr> </vn-tfoot> </vn-table> </vn-card> <vn-button-bar class="vn-w-lg"> <div ng-show="$ctrl.state"> <vn-button label="Satisfied" disabled="$ctrl.state == 'CONFIRMED'" ng-show="$ctrl.isHimSelf" ng-click="$ctrl.isSatisfied()"> </vn-button> <vn-button label="Not satisfied" disabled="$ctrl.state == 'REVISE'" ng-show="$ctrl.isHimSelf" ng-click="reason.show()"> </vn-button> <vn-button label="Reason" ng-show="$ctrl.reason && ($ctrl.isHimSelf || $ctrl.isHr)" ng-click="reason.show()"> </vn-button> </div> <vn-button label="{{$ctrl.state ? 'Resend' : 'Send'}}" ng-click="sendEmailConfirmation.show()" class="right" vn-tooltip="{{$ctrl.state ? 'Resend' : 'Send'}} email of this week to the user" ng-if="$ctrl.isHr && $ctrl.state != 'CONFIRMED' && $ctrl.canResend"> </vn-button> </vn-button-bar> </div> <vn-side-menu side="right"> <div class="vn-pa-md"> <div class="totalBox" style="text-align: center;"> <h6 translate>Hours</h6> <vn-label-value label="Week total" value="{{$ctrl.weekTotalHours}} h."> </vn-label-value> <vn-label-value label="Finish at" value="{{$ctrl.getFinishTime()}}"> </vn-label-value> </div> <vn-calendar vn-id="calendar" class="vn-pt-md" ng-model="$ctrl.date" format-week="$ctrl.formatWeek($element)" on-move="$ctrl.getMailStates($date)" has-events="$ctrl.hasEvents($day)"> </vn-calendar> </div> </vn-side-menu> <vn-dialog vn-id="addTimeDialog" on-accept="$ctrl.addTime()" message="Add time"> <tpl-body> <vn-input-time vn-one vn-focus ng-model="$ctrl.newTimeEntry.timed" label="Hour" required="true"> </vn-input-time> <vn-autocomplete label="Type" ng-model="$ctrl.newTimeEntry.direction" data="$ctrl.entryDirections" select-fields="['code','description']" show-field="description" value-field="code" required="true"> </vn-autocomplete> </tpl-body> <tpl-buttons> <input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/> <button response="accept" translate>Save</button> </tpl-buttons> </vn-dialog> <vn-confirm vn-id="delete-entry-dialog" on-accept="$ctrl.deleteTimeEntry()" message="This time entry will be deleted" question="Are you sure you want to delete this entry?"> </vn-confirm> <!-- Edit entry Popover --> <vn-popover vn-id="editEntry"> <vn-horizontal class="vn-pa-sm edit-time-entry"> <vn-autocomplete class="dense" ng-model="$ctrl.selectedRow.direction" data="$ctrl.entryDirections" select-fields="['code','description']" show-field="description" value-field="code"> </vn-autocomplete> <vn-icon-button vn-none icon="check" vn-tooltip="Save" ng-click="$ctrl.save()"> </vn-icon-button> </vn-horizontal> </vn-popover> <vn-dialog vn-id="reason" on-accept="$ctrl.isUnsatisfied()"> <tpl-body> <div class="reasonDialog"> <vn-textarea label="Reason" ng-model="$ctrl.reason" disabled="!$ctrl.isHimSelf" rows="5" required="true"> </vn-textarea> </div> </tpl-body> <tpl-buttons ng-if="$ctrl.isHimSelf"> <input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/> <button response="accept" translate>Save</button> </tpl-buttons> </vn-dialog> <vn-dialog vn-id="sendEmailConfirmation" on-accept="$ctrl.resendEmail()" message="Send time control email"> <tpl-body> <span translate>Are you sure you want to send it?</span> </tpl-body> <tpl-buttons> <input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/> <button response="accept" translate>Confirm</button> </tpl-buttons> </vn-dialog>