It's a little long but this is the whole file.
@extends('app')
@section('title')
Submit a Timesheet
@endsection
@section('content')
<div class="panel panel-default">
<div class="panel-heading">Submit Timesheet</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-2 control-label"><?php echo Lang::get('staff-timesheets.form.table.placement'); ?></label>
{!! Form::open(['url' => 'staff-timesheet']) !!}
<div class="col-sm-2">
<select name="placement" class="form-control">
@foreach($placements as $placement)
<option value="{!! $placement->id !!}">{!! $placement->name !!}</option>
@endforeach
</select>
</div>
<label class="col-sm-2 control-label"><?php echo Lang::get('staff-timesheets.form.table.manager'); ?></label>
<div class="col-sm-2 {{ $errors->has('placementLineManager') ? 'has-error' : '' }}">
<?php
echo Form::text('placementLineManager', null, array(
'class' => 'form-control',
));
?>
{!! $errors->first('placementLineManager', '<span class="help-block">required field</span>') !!}
</div>
<label class="col-sm-2 control-label"><?php echo Lang::get('staff-timesheets.form.table.week'); ?></label>
<div class="col-sm-2">
<?php
echo Form::select('weekCommencing', $weeks, null, array(
'class' => 'form-control',
));
?>
</div>
</div>
<hr />
<table class="table table-striped">
<thead>
<tr>
<th><?php echo Lang::get('staff-timesheets.form.table.day'); ?></th>
<th><?php echo Lang::get('staff-timesheets.form.table.startTime'); ?></th>
<th><?php echo Lang::get('staff-timesheets.form.table.endTime'); ?></th>
<th>Breaks</th>
<th><?php echo Lang::get('staff-timesheets.form.table.payableMileage'); ?></th>
<th><?php echo Lang::get('staff-timesheets.form.table.totalPayableHours'); ?></th>
<th><?php echo Lang::get('staff-timesheets.form.table.comments'); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach($days as $key=>$day) {
?>
<tr>
<td>
<label class="control-label">
<?php echo Lang::get('staff-timesheets.form.table.' . $day); ?>
</label>
</td>
<td>
<?php
echo Form::text($day . '[startTime]', (isset($timesheetDays[$key]) ? $timesheetDays[$key]->startTime : null), array(
'class' => 'form-control timepicker calculate',
'autocomplete' => 'off',
'data-day' => $day,
));
?>
</td>
<td>
<?php
echo Form::text($day . '[endTime]', (isset($timesheetDays[$key]) ? $timesheetDays[$key]->endTime : null), array(
'class' => 'form-control timepicker calculate',
'autocomplete' => 'off',
'data-day' => $day,
));
?>
</td>
<td>
<input type="text" name="breaks" class="form-control calculate" autocomplete="off" data-day="<?php echo $day; ?>">
</td>
<td>
<?php
echo Form::input('number', $day . '[payableMileage]', (isset($timesheetDays[$key]) ? $timesheetDays[$key]->payableMileage : 0), array(
'class' => 'form-control',
'data-attribute' => 'payableMileage',
'min' => '0',
));
?>
</td>
<td>
<?php
//echo Form::text($day . '[totalPayableHours]', (isset($timesheetDays[$key]) ? $timesheetDays[$key]->totalPayableHours : null), array(
// 'class' => 'form-control timepicker',
// 'data-attribute' => 'totalPayableHours',
// 'autocomplete' => 'off'
//));
?>
<input name="<?php echo $day; ?>[total]" id ="total" type="text" class="form-control" readonly>
</td>
<td>
<?php
echo Form::text($day . '[comments]', (isset($timesheetDays[$key]) ? $timesheetDays[$key]->comments : null), array(
'class' => 'form-control',
));
?>
</td>
</tr>
<?php
}
?>
<tr class="totals">
<td class="text-right" colspan="3">
<h3><?php echo Lang::get('staff-timesheets.form.table.totals'); ?></h3>
</td>
<td></td>
<td>
<h3 id="payableMileageTotal"><?php echo $payableMileageTotal; ?></h3>
</td>
<td colspan="2">
<h3 id="totalPayableHoursTotal"></h3>
</td>
</tr>
</tbody>
</table>
<div class="form-group">
<div class="col-lg-3">
<?php
echo Form::submit(Lang::get('staff-timesheets.form.table.save'), array(
'class' => 'btn',
'name' => 'save',
));
?>
{{--<a href="/staff-timesheet/save-later" class="btn btn-primary" name="save">Save for Later</a>--}}
{{--<button type="submit" class="btn btn-success" name="send">Submit Timesheet</button>--}}
<?php
echo Form::submit(Lang::get('staff-timesheets.form.table.submit'), array(
'class' => 'btn-success btn',
'name' => 'send',
));
?>
</div>
</div>
{!! Form::close() !!}
</div>
</div><!-- /row -->
</div>
</div>
@endsection
@section('endjs')
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
function hmsToSeconds(hms)
{
var times = hms.split(':');
var hrs = parseInt(times[0]);
var mins = parseInt(times[1]);
var secs = parseInt(times[2]);
return (hrs*3600)+(mins*60)+secs;
}
function totalSecondsWorked(start, finish, breaks)
{
return hmsToSeconds(finish) - hmsToSeconds(start) - hmsToSeconds(breaks);
}
function nearestFullHour(seconds)
{
return Math.ceil(seconds/3600);
}
function checkTime(value)
{
var patt = /([0-9][0-9]):([0-5][0-9]):([0-5][0-9])/;
if (patt.test(value))
{
return value;
}
return '00:00:00';
}
function calculateDay(day)
{
var start = checkTime($("input[name='"+day+"[start]']").val());
var finish = checkTime($("input[name='"+day+"[finish]']").val());
var breaks = checkTime($("input[name='"+day+"[breaks]']").val());
var seconds = totalSecondsWorked(start, finish, breaks);
var hours = nearestFullHour(seconds);
$("input[name='"+day+"[total]']").val(hours > 0 ? hours : 0);
}
$(function(){
$.each([ 'monday', 'tuesday', 'wednesday', 'thursday', 'friday' , 'saturday', 'sunday' ], function( index, day ) {
calculateDay(day);
});
$(document).on('keyup', 'input.calculate', function(e){
calculateDay($(this).data('day'));
});
});
</script>
@endsection