6 changed files with 165 additions and 28 deletions
-
7app/Http/Controllers/Projects/ProjectsController.php
-
1resources/views/layouts/dashboard.blade.php
-
21resources/views/layouts/project.blade.php
-
16resources/views/projects/jobs.blade.php
-
123resources/views/projects/jobs/index.blade.php
-
17resources/views/projects/show.blade.php
@ -0,0 +1,21 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('title') |
||||
|
{{ $project->name }} - @yield('subtitle', trans('project.show')) |
||||
|
@endsection |
||||
|
|
||||
|
@section('content') |
||||
|
@include('projects.partials.breadcrumb') |
||||
|
|
||||
|
<h1 class="page-header"> |
||||
|
<div class="pull-right"> |
||||
|
@yield('action-buttons') |
||||
|
</div> |
||||
|
{{ $project->name }} <small>@yield('subtitle', trans('project.show'))</small> |
||||
|
</h1> |
||||
|
|
||||
|
@include('projects.partials.nav-tabs') |
||||
|
|
||||
|
@yield('content-project') |
||||
|
|
||||
|
@endsection |
||||
@ -0,0 +1,123 @@ |
|||||
|
@extends('layouts.project') |
||||
|
|
||||
|
@section('subtitle', trans('project.jobs')) |
||||
|
|
||||
|
@section('action-buttons') |
||||
|
{!! html_link_to_route('jobs.create', trans('job.create'), [$project->id], ['class' => 'btn btn-success','icon' => 'plus']) !!} |
||||
|
{!! html_link_to_route('jobs.add-from-other-project', trans('job.add_from_other_project'), [$project->id], ['class' => 'btn btn-default','icon' => 'plus']) !!} |
||||
|
@endsection |
||||
|
|
||||
|
@section('content-project') |
||||
|
|
||||
|
@if ($jobs->isEmpty()) |
||||
|
<p>{{ trans('project.no_jobs') }}, |
||||
|
{{ link_to_route('jobs.create', trans('job.create'), [$project->id]) }}. |
||||
|
</p> |
||||
|
@else |
||||
|
|
||||
|
@foreach($jobs->groupBy('type_id') as $key => $groupedJobs) |
||||
|
|
||||
|
<div id="project-jobs" class="panel panel-default table-responsive"> |
||||
|
<div class="panel-heading"> |
||||
|
<div class="pull-right"> |
||||
|
@if (request('action') == 'sort_jobs') |
||||
|
{{ link_to_route('projects.jobs', trans('app.done'), [$project->id], ['class' => 'btn btn-default btn-xs pull-right', 'style' => 'margin-top: -2px; margin-left: 6px; margin-right: -8px']) }} |
||||
|
@else |
||||
|
{{ link_to_route('projects.jobs', trans('project.sort_jobs'), [$project->id, 'action' => 'sort_jobs', '#project-jobs'], ['class' => 'btn btn-default btn-xs pull-right', 'style' => 'margin-top: -2px; margin-left: 6px; margin-right: -8px']) }} |
||||
|
|
||||
|
{!! link_to_route('projects.jobs-export', trans('project.jobs_export_html'), [$project->id, 'html', 'job_type' => $key], ['class' => '','target' => '_blank']) !!} | |
||||
|
{!! link_to_route('projects.jobs-export', trans('project.jobs_export_excel'), [$project->id, 'excel', 'job_type' => $key], ['class' => '']) !!} | |
||||
|
{!! link_to_route('projects.jobs-export', trans('project.jobs_export_progress_excel'), [$project->id, 'excel-progress', 'job_type' => $key], ['class' => '']) !!} |
||||
|
@endif |
||||
|
</div> |
||||
|
<h3 class="panel-title"> |
||||
|
{{ $key == 1 ? 'Daftar Fitur' : 'Fitur Tambahan' }} |
||||
|
</h3> |
||||
|
</div> |
||||
|
<table class="table table-condensed table-striped"> |
||||
|
<thead> |
||||
|
<th>{{ trans('app.table_no') }}</th> |
||||
|
<th>{{ trans('job.name') }}</th> |
||||
|
<th class="text-center">{{ trans('job.tasks_count') }}</th> |
||||
|
<th class="text-center">{{ trans('job.progress') }}</th> |
||||
|
<th class="text-right">{{ trans('job.price') }}</th> |
||||
|
{{-- <th>{{ trans('job.worker') }}</th> --}} |
||||
|
<th class="text-center">{{ trans('app.action') }}</th> |
||||
|
</thead> |
||||
|
<tbody class="sort-jobs"> |
||||
|
@forelse($groupedJobs as $key => $job) |
||||
|
@php |
||||
|
$no = 1 + $key; |
||||
|
$job->progress = $job->tasks->avg('progress'); |
||||
|
@endphp |
||||
|
<tr id="{{ $job->id }}" {!! $job->progress <= 50 ? 'style="background-color: #faebcc"' : '' !!}> |
||||
|
<td>{{ $no }}</td> |
||||
|
<td> |
||||
|
{{ $job->name }} |
||||
|
@if ($job->tasks->isEmpty() == false) |
||||
|
<ul> |
||||
|
@foreach($job->tasks as $task) |
||||
|
<li>{{ $task->name }}</li> |
||||
|
@endforeach |
||||
|
</ul> |
||||
|
@endif |
||||
|
</td> |
||||
|
<td class="text-center">{{ $job->tasks_count = $job->tasks->count() }}</td> |
||||
|
<td class="text-center">{{ formatDecimal($job->progress) }} %</td> |
||||
|
<td class="text-right">{{ formatRp($job->price) }}</td> |
||||
|
{{-- <td>{{ $job->worker->name }}</td> --}} |
||||
|
<td class="text-center"> |
||||
|
{!! html_link_to_route('jobs.show', '',[$job->id],['icon' => 'search', 'title' => 'Lihat ' . trans('job.show'), 'class' => 'btn btn-info btn-xs','id' => 'show-job-' . $job->id]) !!} |
||||
|
{!! html_link_to_route('jobs.edit', '',[$job->id],['icon' => 'edit', 'title' => trans('job.edit'), 'class' => 'btn btn-warning btn-xs']) !!} |
||||
|
</td> |
||||
|
</tr> |
||||
|
@empty |
||||
|
<tr><td colspan="7">{{ trans('job.empty') }}</td></tr> |
||||
|
@endforelse |
||||
|
</tbody> |
||||
|
<tfoot> |
||||
|
<tr> |
||||
|
<th class="text-right" colspan="2">Total</th> |
||||
|
<th class="text-center">{{ $groupedJobs->sum('tasks_count') }}</th> |
||||
|
<th class="text-center"> |
||||
|
<span title="Total Progress">{{ formatDecimal($groupedJobs->sum('progress') / $groupedJobs->count()) }} %</span> |
||||
|
<span title="Overal Progress" style="font-weight:300">({{ formatDecimal($project->getJobOveralProgress()) }} %)</span> |
||||
|
</th> |
||||
|
<th class="text-right">{{ formatRp($groupedJobs->sum('price')) }}</th> |
||||
|
<th colspan="2"> |
||||
|
@if (request('action') == 'sort_jobs') |
||||
|
{{ link_to_route('projects.jobs', trans('app.done'), [$project->id], ['class' => 'btn btn-default btn-xs pull-right']) }} |
||||
|
@else |
||||
|
{{ link_to_route('projects.jobs', trans('project.sort_jobs'), [$project->id, 'action' => 'sort_jobs', '#project-jobs'], ['class' => 'btn btn-default btn-xs pull-right']) }} |
||||
|
@endif |
||||
|
</th> |
||||
|
</tr> |
||||
|
</tfoot> |
||||
|
</table> |
||||
|
</div> |
||||
|
@endforeach |
||||
|
|
||||
|
@endif |
||||
|
@endsection |
||||
|
|
||||
|
@if (request('action') == 'sort_jobs') |
||||
|
|
||||
|
@section('ext_js') |
||||
|
{!! Html::script(url('assets/js/plugins/jquery-ui.min.js')) !!} |
||||
|
@endsection |
||||
|
|
||||
|
@section('script') |
||||
|
|
||||
|
<script> |
||||
|
(function() { |
||||
|
$('.sort-jobs').sortable({ |
||||
|
update: function (event, ui) { |
||||
|
var data = $(this).sortable('toArray').toString(); |
||||
|
$.post("{{ route('projects.jobs-reorder', $project->id) }}", {postData: data}); |
||||
|
} |
||||
|
}); |
||||
|
})(); |
||||
|
</script> |
||||
|
@endsection |
||||
|
|
||||
|
@endif |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue