diff --git a/app/Events/TableAccessed.php b/app/Events/TableAccessed.php new file mode 100644 index 0000000000000000000000000000000000000000..63c8e35b3b93ff6e6328bcc53814ea94fcc57f01 --- /dev/null +++ b/app/Events/TableAccessed.php @@ -0,0 +1,36 @@ +<?php + +namespace App\Events; + +use App\Events\Event; +use Illuminate\Queue\SerializesModels; +use Illuminate\Contracts\Broadcasting\ShouldBroadcast; + +class TableAccessed extends Event +{ + use SerializesModels; + + private $model; + + /** + * Create a new event instance. + * + * @return void + */ + public function __construct($model) + { + $this->model = $model; + } + + /** + * Get the channels the event should be broadcast on. + * + * @return array + */ + public function broadcastOn() + { + return []; + } + + public function getModel() { return $this->model; } +} diff --git a/app/Events/TableModified.php b/app/Events/TableModified.php new file mode 100644 index 0000000000000000000000000000000000000000..186e969f2b4cafca73cb7ddbd4bd39c4b08a4cd2 --- /dev/null +++ b/app/Events/TableModified.php @@ -0,0 +1,36 @@ +<?php + +namespace App\Events; + +use App\Events\Event; +use Illuminate\Queue\SerializesModels; +use Illuminate\Contracts\Broadcasting\ShouldBroadcast; + +class TableModified extends Event +{ + use SerializesModels; + + private $model; + + /** + * Create a new event instance. + * + * @return void + */ + public function __construct($model) + { + $this->model = $model; + } + + /** + * Get the channels the event should be broadcast on. + * + * @return array + */ + public function broadcastOn() + { + return []; + } + + public function getModel() { return $this->model; } +} diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php index 72801efd1ba74c3713f40c1809ead346cadd62f4..3c8a11c7de0cd1da560e2491af7d3157300cbdd8 100644 --- a/app/Http/Controllers/RoleController.php +++ b/app/Http/Controllers/RoleController.php @@ -36,13 +36,19 @@ class RoleController extends Controller public function index($userId) { - return view('menu.manageRole', ['id'=>$userId,'dataRole' => User::find($userId)->roles()->get()]); + $model = User::find($userId)->roles()->get(); + \Event::fire(new \App\Events\TableAccessed($model)); + return view('menu.manageRole', ['id'=>$userId,'dataRole' => $model]); } public function store($userId) { $data = Input::all(); - if (UsersRoles::create(["id_user"=>$userId, "id_role"=>Input::get('id_role')])){} + if (UsersRoles::create([ + "id_user"=>$userId, + "id_role"=>Input::get('id_role'), + 'created_by' => Auth::user()->id + ])){} return redirect('/user/'.$userId.'/role'); } diff --git a/app/Http/Controllers/ScheduleController.php b/app/Http/Controllers/ScheduleController.php index f6165b8edaa19debbe849ee36295e827be2a898e..b7b5223dbd7cb0c0598f6103fae9b92806909189 100644 --- a/app/Http/Controllers/ScheduleController.php +++ b/app/Http/Controllers/ScheduleController.php @@ -59,6 +59,8 @@ class ScheduleController extends Controller { $all = Schedule::where('id_user', Auth::user()->id)->get(); } + + // \Event::fire(new \App\Events\TableAccessed($all)); foreach ($all as $jadwal) { $tmp = []; $tmp = $jadwal; @@ -83,6 +85,7 @@ class ScheduleController extends Controller $sched->time = Input::get('time',''); $sched->amount = Input::get('amount',1); $sched->is_done = Input::get('is_done', 0); + $sched->created_by = Auth::user()->id; $sched->id = 0; $sched->save(); $tps = Tps::find($sched->id_tps); @@ -141,6 +144,7 @@ class ScheduleController extends Controller if(Input::has('amount')) $sched->amount = Input::get('amount'); $sched->is_done = Input::get('is_done'); + \Event::fire(new \App\Events\TableModified($sched)); $sched->save(); $tps = Tps::find($sched->id_tps); $this->notifySupir('TPS '.$tps->nama.' penuh, jadwal anda di TPS tersebut berubah'); @@ -150,6 +154,7 @@ class ScheduleController extends Controller { if($sched->is_done!=Input::get('is_done')){ $sched->is_done = Input::get('is_done'); + \Event::fire(new \App\Events\TableModified($sched)); $sched->save(); $tps = Tps::find($sched->id_tps); $tps->capacity_now += $sched->amount; @@ -159,6 +164,7 @@ class ScheduleController extends Controller $tps->capacity_now = $tps->capacity_full; $tps->is_full = 1; } + \Event::fire(new \App\Events\TableModified($tps)); $tps->save(); } return redirect('/schedule'); diff --git a/app/Http/Controllers/TpsController.php b/app/Http/Controllers/TpsController.php index 469a242674a1e4367deb33d37c33ab8cb5113120..c972941789953922bf371df8a706dad3b7cfebc5 100644 --- a/app/Http/Controllers/TpsController.php +++ b/app/Http/Controllers/TpsController.php @@ -53,6 +53,7 @@ class TpsController extends Controller { $all = Tps::where('id_manager', Auth::user()->id)->get(); } + \Event::fire(new \App\Events\TableAccessed($all)); foreach ($all as $tps) { $tmp = []; $tmp = $tps; @@ -70,7 +71,12 @@ class TpsController extends Controller $tps->nama = Input::get('name',''); $tps->is_full = Input::get('is_full', 0); $tps->id_manager = Input::get('idPengelola', 0); + $tps->created_by = Auth::user()->id; $tps->id = 0; + + $tps->latitude = Input::get('latitude', 0); + $tps->longitude = Input::get('longitude', 0); + $tps->save(); //$tps = Tps::create(Input::all()); return redirect('/tps'); @@ -108,7 +114,12 @@ class TpsController extends Controller $tps->nama = Input::get('name', ''); $tps->is_full = Input::get('is_full', 0); $tps->id_manager = Input::get('idPengelola', 0); + + $tps->latitude = Input::get('latitude', 0); + $tps->longitude = Input::get('longitude', 0); + $tps->save(); + \Event::fire(new \App\Events\TableModified($tps)); return redirect('/tps'); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index ff94410d3318a8c244d39ef2cd4859c98ed91971..fbc9c3bfd2416124d7e434948882689c718a2d3b 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -44,6 +44,7 @@ class UserController extends Controller public function index() { + \Event::fire(new \App\Events\TableAccessed(User::all())); return view('menu.user', ['data' => User::all()]); } @@ -53,6 +54,7 @@ class UserController extends Controller 'name' => Input::get('name'), 'email' => Input::get('email'), 'password' => bcrypt(Input::get('password')), + 'created_by' => Auth::user()->id ]); return redirect('/user'); } @@ -85,6 +87,7 @@ class UserController extends Controller 'email' => Input::get('email'), 'password' => bcrypt(Input::get('password')), ]); + \Event::fire(new \App\Events\TableModified($user)); return redirect('/user'); } diff --git a/app/Listeners/LastAccessUpdate.php b/app/Listeners/LastAccessUpdate.php new file mode 100644 index 0000000000000000000000000000000000000000..878620afa4cf4347582121fee7d85bd91045fe7d --- /dev/null +++ b/app/Listeners/LastAccessUpdate.php @@ -0,0 +1,36 @@ +<?php + +namespace App\Listeners; + +use App\Events\TableAccessed; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use Carbon\Carbon; + +class LastAccessUpdate +{ + /** + * Create the event listener. + * + * @return void + */ + public function __construct() + { + // + } + + /** + * Handle the event. + * + * @param TableAccessed $event + * @return void + */ + public function handle(TableAccessed $event) + { + foreach ($event->getModel() as $row) { + $row->seen_at = Carbon::now(); + $row->seen_by = \Auth::user()->id; + $row->save(); + } + } +} diff --git a/app/Listeners/LastModifyUpdate.php b/app/Listeners/LastModifyUpdate.php new file mode 100644 index 0000000000000000000000000000000000000000..3cc9d9810d031393b9a6b727684f2c4cdc8cfc66 --- /dev/null +++ b/app/Listeners/LastModifyUpdate.php @@ -0,0 +1,33 @@ +<?php + +namespace App\Listeners; + +use App\Events\TableModified; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use Carbon\Carbon; + +class LastModifyUpdate +{ + /** + * Create the event listener. + * + * @return void + */ + public function __construct() + { + // + } + + /** + * Handle the event. + * + * @param TableModified $event + * @return void + */ + public function handle(TableModified $event) + { + $event->getModel()->updated_by = \Auth::user()->id; + $event->getModel()->save(); + } +} diff --git a/app/Listeners/LoginLogger.php b/app/Listeners/LoginLogger.php new file mode 100644 index 0000000000000000000000000000000000000000..6121a374ba8eb72bab0ffb58c15feca4ea10f5ff --- /dev/null +++ b/app/Listeners/LoginLogger.php @@ -0,0 +1,34 @@ +<?php + +namespace App\Listeners; + +use App\Events\SomeEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use App\User; +use Carbon\Carbon; + +class LoginLogger +{ + /** + * Create the event listener. + * + * @return void + */ + public function __construct() + { + // + } + + /** + * Handle the event. + * + * @param SomeEvent $event + * @return void + */ + public function handle(User $user) + { + $user->last_login = Carbon::now(); + $user->save(); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 58ce9624988b6b372641d0069991415072e0b6a6..70bf557dd3bfb3954119a8c093b47b618d25c339 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -13,8 +13,14 @@ class EventServiceProvider extends ServiceProvider * @var array */ protected $listen = [ - 'App\Events\SomeEvent' => [ - 'App\Listeners\EventListener', + 'auth.login' => [ + 'App\Listeners\LoginLogger', + ], + 'App\Events\TableAccessed' => [ + 'App\Listeners\LastAccessUpdate', + ], + 'App\Events\TableModified' => [ + 'App\Listeners\LastModifyUpdate', ], ]; diff --git a/database/migrations/2016_05_01_163505_add_last_login_column_to_users_table.php b/database/migrations/2016_05_01_163505_add_last_login_column_to_users_table.php new file mode 100644 index 0000000000000000000000000000000000000000..a5931d0fcfeb195daa6333247ce299079d34860f --- /dev/null +++ b/database/migrations/2016_05_01_163505_add_last_login_column_to_users_table.php @@ -0,0 +1,31 @@ +<?php + +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; + +class AddLastLoginColumnToUsersTable extends Migration +{ + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + Schema::table('users', function (Blueprint $table) { + $table->timestamp('last_login')->after('remember_token'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('last_login'); + }); + } +} diff --git a/fonts b/fonts new file mode 160000 index 0000000000000000000000000000000000000000..a44abd0e742ad6e7fd8d8bc4c3cad5155c9f3a92 --- /dev/null +++ b/fonts @@ -0,0 +1 @@ +Subproject commit a44abd0e742ad6e7fd8d8bc4c3cad5155c9f3a92 diff --git a/public/.htaccess b/public/.htaccess index 903f6392ca410eceab8338afb27da72e985b3cc0..cc2d6904a591339d0c327c06db674252b9940b24 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -1,20 +1,8 @@ -<IfModule mod_rewrite.c> - <IfModule mod_negotiation.c> - Options -MultiViews - </IfModule> +DirectoryIndex index.php - RewriteEngine On +Options +FollowSymLinks +RewriteEngine On - # Redirect Trailing Slashes If Not A Folder... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.*)/$ /$1 [L,R=301] - - # Handle Front Controller... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^ index.php [L] - - # Handle Authorization Header - RewriteCond %{HTTP:Authorization} . - RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] -</IfModule> +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^ index.php [L] diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php index 9676562a055c730c008754f8f8bebe753df730e4..7f3e015cb2c4373f67d14fe5791d94f7cb2909ba 100644 --- a/resources/views/auth/passwords/email.blade.php +++ b/resources/views/auth/passwords/email.blade.php @@ -1,3 +1,4 @@ +<<<<<<< HEAD <!DOCTYPE html> <html lang="en" > <head> @@ -46,6 +47,51 @@ <strong>{{ $errors->first('email') }}</strong> </span> @endif +======= +@extends('layouts.app') + +<!-- Main Content --> +@section('content') +<div class="container"> + <div class="row"> + <div class="col-md-8 col-md-offset-2"> + <div class="panel panel-default"> + <div class="panel-heading">Reset Password</div> + <div class="panel-body"> + @if (session('status')) + <div class="alert alert-success"> + {{ session('status') }} + </div> + @endif + + <form class="form-horizontal" role="form" method="POST" action="{{ url('/password/email') }}"> + {!! csrf_field() !!} + + <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">E-Mail Address</label> + + + <div class="col-md-6"> + <input type="email" class="form-control" name="email" value="{{ old('email') }}"> + + @if ($errors->has('email')) + <span class="help-block"> + <strong>{{ $errors->first('email') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group"> + <div class="col-md-6 col-md-offset-4"> + <button type="submit" class="btn btn-primary"> + <i class="fa fa-btn fa-envelope"></i>Send Password Reset Link + </button> + </div> + </div> + </form> + </div> +>>>>>>> ecffaed687c3ade83aae1f82fbedc122ce76264b </div> </div> </div> diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 9bf7adceb535279e1a9111d4c1f0f8aec0b78f6f..c8b42da34dcb8724cd29f95fb29462a86d653599 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -11,155 +11,16 @@ <i class="icon-bdg_expand2 text-active"></i> </a> </li> <li><a href>Home</a></li> - <li class="active"><i class="fa fa-angle-right"></i>Chart</li> + <li class="active"><i class="fa fa-angle-right"></i>Map</li> </ul> </div> <div class="wrapper-lg bg-light"> <div class="row"> <div class="col-md-12"> <div class="panel panel-default"> - <div class="panel-heading font-semibold"> - Responsive Table + <div class="panel-heading font-semibold" style="height: 400px; padding: 2px;"> + <div id="map" style="height: 100%;"></div> </div> - <div class="row wrapper-sm"> - <div class="col-sm-5"> - <select class="input-sm form-control w-sm inline v-middle"> - <option value="0">Bulk action</option> - <option value="1">Delete selected</option> - <option value="2">Bulk edit</option> - <option value="3">Export</option> - </select> - <button class="btn btn-sm btn-default">Apply</button> - </div> - <div class="col-sm-4"> - </div> - <div class="col-sm-3"> - <div class="input-group"> - <input type="text" class="input-sm form-control" placeholder="Search"> - <span class="input-group-btn"> - <button class="btn btn-sm btn-default" type="button">Go!</button> - </span> - </div> - </div> - </div> - <div class="table-responsive"> - <table class="table table-striped b-t b-light"> - <thead> - <tr> - <th style="width:20px;"> - <label class="checkbox-inline "> - <input type="checkbox"><i></i> - </label> - </th> - <th>Project</th> - <th>Task</th> - <th>Date</th> - <th style="width:30px;"></th> - </tr> - </thead> - <tbody> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Idrawfast</td> - <td>4c</td> - <td>Jul 25, 2013</td> - <td> - <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Formasa</td> - <td>8c</td> - <td>Jul 22, 2013</td> - <td> - <a href ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Avatar system</td> - <td>15c</td> - <td>Jul 15, 2013</td> - <td> - <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Throwdown</td> - <td>4c</td> - <td>Jul 11, 2013</td> - <td> - <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Idrawfast</td> - <td>4c</td> - <td>Jul 7, 2013</td> - <td> - <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Formasa</td> - <td>8c</td> - <td>Jul 3, 2013</td> - <td> - <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Avatar system</td> - <td>15c</td> - <td>Jul 2, 2013</td> - <td> - <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - <tr> - <td><label class="checkbox-inline "><input type="checkbox" name="post[]"><i></i></label></td> - <td>Videodown</td> - <td>4c</td> - <td>Jul 1, 2013</td> - <td> - <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a> - </td> - </tr> - </tbody> - </table> - </div> - <footer class="panel-footer"> - <div class="row"> - <div class="col-sm-4 hidden-xs"> - <select class="input-sm form-control w-sm inline v-middle"> - <option value="0">Bulk action</option> - <option value="1">Delete selected</option> - <option value="2">Bulk edit</option> - <option value="3">Export</option> - </select> - <button class="btn btn-sm btn-default">Apply</button> - </div> - <div class="col-sm-4 text-center"> - <small class="text-muted inline m-t-sm m-b-sm">showing 20-30 of 50 items</small> - </div> - <div class="col-sm-4 text-right text-center-xs"> - <ul class="pagination pagination-sm m-t-none m-b-none"> - <li><a href><i class="icon-bdg_arrow4"></i></a></li> - <li><a href>1</a></li> - <li><a href>2</a></li> - <li><a href>3</a></li> - <li><a href>4</a></li> - <li><a href>5</a></li> - <li><a href><i class="icon-bdg_arrow3"></i></a></li> - </ul> - </div> - </div> - </footer> </div> </div> </div> @@ -167,4 +28,42 @@ </div> </div> </div> + + <script> + function initMap() { + var customMapType = new google.maps.StyledMapType([{"featureType":"road","stylers":[{"hue":"#5e00ff"},{"saturation":-79}]},{"featureType":"poi","stylers":[{"saturation":-78},{"hue":"#6600ff"},{"lightness":-47},{"visibility":"off"}]},{"featureType":"road.local","stylers":[{"lightness":22}]},{"featureType":"landscape","stylers":[{"hue":"#6600ff"},{"saturation":-11}]},{},{},{"featureType":"water","stylers":[{"saturation":-65},{"hue":"#1900ff"},{"lightness":8}]},{"featureType":"road.local","stylers":[{"weight":1.3},{"lightness":30}]},{"featureType":"transit","stylers":[{"visibility":"simplified"},{"hue":"#5e00ff"},{"saturation":-16}]},{"featureType":"transit.line","stylers":[{"saturation":-72}]},{}], { + name: 'Custom Style' + }); + var customMapTypeId = 'custom_style'; + + var map = new google.maps.Map(document.getElementById('map'), { + zoom: 12, + center: {lat: -6.914744, lng: 107.609810}, + mapTypeControlOptions: { + mapTypeIds: [google.maps.MapTypeId.ROADMAP, customMapTypeId] + } + }); + + var trashCan = { + path: 'M585.82,235.876H209.179c-39.621,0-71.728,32.082-71.728,71.703l38.865,412.675c0,39.597,32.131,71.703,71.751,71.703 h304.89c39.62,0,71.751-32.106,71.751-71.703l32.888-412.675C657.547,267.958,625.441,235.876,585.82,235.876z M301.839,666.41 c0,19.786-16.053,35.814-35.864,35.814c-19.81,0-35.863-16.053-35.863-35.814V343.467c0-19.786,16.053-35.888,35.863-35.888 c19.811,0,35.864,16.102,35.864,35.888V666.41L301.839,666.41z M427.385,666.41c0,19.786-16.053,35.814-35.863,35.814 c-19.81,0-35.863-16.053-35.863-35.814V343.467c0-19.786,16.053-35.888,35.863-35.888c19.811,0,35.863,16.102,35.863,35.888 V666.41z M552.933,666.41c0,19.786-16.054,35.814-35.864,35.814s-35.863-16.053-35.863-35.814V343.467 c0-19.786,16.053-35.888,35.863-35.888s35.864,16.102,35.864,35.888V666.41z M190.027,200.013L624.27,88.299 c23.981-6.148,38.425-30.594,32.252-54.576c-6.172-23.982-30.618-38.425-54.6-32.326L468.446,35.748 c-12.369-18.347-35.205-27.983-57.845-22.177l-52.088,13.443c-22.641,5.831-37.986,25.275-39.987,47.306l-150.847,38.84 c-23.982,6.148-38.401,30.594-32.253,54.576C141.599,191.742,166.045,206.136,190.027,200.013z', + fillColor: 'black', + fillOpacity: 1, + scale: 0.02, + strokeColor: 'black', + strokeWeight: 0.1 + }; + + var marker = new google.maps.Marker({ + position: map.getCenter(), + icon: trashCan, + map: map + }); + + map.mapTypes.set(customMapTypeId, customMapType); + map.setMapTypeId(customMapTypeId); + } + </script> + <script async defer + src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAQhtIUXQLjOphZJncykzuYoH85EWJ9JMc&callback=initMap"> + </script> @endsection diff --git a/resources/views/menu/editTps.blade.php b/resources/views/menu/editTps.blade.php index da729a087889646859894587d87f42ee308966cb..4410a88137b32fd22e921cbc4196d70c98991b1e 100644 --- a/resources/views/menu/editTps.blade.php +++ b/resources/views/menu/editTps.blade.php @@ -41,18 +41,8 @@ <div class="form-group"> <label class="col-sm-2 control-label">Kapasitas Sekarang</label> <div class="col-sm-10"> - <input ondrag="sliderNowChanges()" id="capacity_now" name="capacity_now" value="<?php echo $data->capacity_now; ?>" ui-jq="slider" ui-options="{ - min: 0, - max: 500, - step: 1, - value: <?php echo $data->capacity_now; ?> - }" class="slider slider-horizontal form-control" type="text"> <span id="span_capacity_now"class="m-l-sm font-bold"> - <script type="text/javascript"> - function sliderNowChanges(){ - document.getElementById("span_capacity_now").innerHTML = - document.getElementById("capacity_now").value; - } - </script> + <input id="capacity_now" name="capacity_now" value="<?php echo $data->capacity_now; ?>" class="form-control" type="text"> <span id="span_capacity_now"class="m-l-sm font-bold"> + </span> </div> </div> @@ -60,21 +50,9 @@ <div class="form-group"> <label class="col-sm-2 control-label">Kapasitas Penuh</label> <div class="col-sm-10"> - <input onchange="sliderFullChanges()" id="capacity_full" name="capacity_full" value="<?php echo $data->capacity_full; ?>" ui-jq="slider" ui-options="{ - min: 0, - max: 500, - step: 1, - value: <?php echo $data->capacity_full; ?> - }" class="slider slider-horizontal form-control" type="text"> <span id="span_capacity_full" class="m-l-sm font-bold"> - </span> + <input id="capacity_full" name="capacity_full" value="<?php echo $data->capacity_full; ?>" type="text" class="form-control"> </div> </div> - <script type="text/javascript"> - function sliderFullChanges(){ - document.getElementById("span_capacity_full").innerHTML = - document.getElementById("capacity_full").value; - } - </script> <div class="line line-dashed b-b line-lg pull-in"></div> <div class="form-group"> @@ -113,6 +91,17 @@ </div> <div class="line line-dashed b-b line-lg pull-in"></div> + <div class="form-group"> + <label class="col-sm-12">Lokasi TPS</label> + <div class="col-sm-12" style="height: 400px; padding: 2px;"> + <input type="hidden" id='latitude' name='latitude' value='<?php echo $data->latitude; ?>'> + <input type="hidden" id='longitude' name='longitude' value='<?php echo $data->longitude; ?>'> + <div id="map" style="height: 100%;"></div> + </div> + </div> + + <div class="line line-dashed b-b line-lg pull-in"></div> + <div class="form-group"> <div class="col-sm-4 col-sm-offset-2"> <a href="{{ url('/tps') }}"><button type="button" class="btn btn-default m-r-sm">Cancel</button></a> @@ -126,4 +115,52 @@ </div> </div> + + +<script> + + var marker = null; + + function initMap() { + var customMapType = new google.maps.StyledMapType([{"featureType":"road","stylers":[{"hue":"#5e00ff"},{"saturation":-79}]},{"featureType":"poi","stylers":[{"saturation":-78},{"hue":"#6600ff"},{"lightness":-47},{"visibility":"off"}]},{"featureType":"road.local","stylers":[{"lightness":22}]},{"featureType":"landscape","stylers":[{"hue":"#6600ff"},{"saturation":-11}]},{},{},{"featureType":"water","stylers":[{"saturation":-65},{"hue":"#1900ff"},{"lightness":8}]},{"featureType":"road.local","stylers":[{"weight":1.3},{"lightness":30}]},{"featureType":"transit","stylers":[{"visibility":"simplified"},{"hue":"#5e00ff"},{"saturation":-16}]},{"featureType":"transit.line","stylers":[{"saturation":-72}]},{}], { + name: 'Custom Style' + }); + var customMapTypeId = 'custom_style'; + + var map = new google.maps.Map(document.getElementById('map'), { + zoom: 12, + center: {lat: -6.914744, lng: 107.609810}, + mapTypeControlOptions: { + mapTypeIds: [google.maps.MapTypeId.ROADMAP, customMapTypeId] + } + }); + + marker = new google.maps.Marker({ + position: new google.maps.LatLng(<?=$data->latitude?>,<?=$data->longitude?>), + map: map + }); + + map.addListener('click', function(e) { + placeMarkerAndPanTo(e.latLng, map); + }); + + map.mapTypes.set(customMapTypeId, customMapType); + map.setMapTypeId(customMapTypeId); + } + + function placeMarkerAndPanTo(latLng, map) { + + marker.setPosition(latLng); + + //update + document.getElementById('latitude').value = latLng.lat(); + document.getElementById('longitude').value = latLng.lng(); + + //map.panTo(latLng); + } + +</script> +<script async defer +src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAQhtIUXQLjOphZJncykzuYoH85EWJ9JMc&callback=initMap"> +</script> @endsection \ No newline at end of file diff --git a/resources/views/menu/insertTps.blade.php b/resources/views/menu/insertTps.blade.php index 4fd0badb1eb4305ce6b8ae605b4e39447b588fd9..e24248e7d51da95413ecd4bb1ef9766b1d946145 100644 --- a/resources/views/menu/insertTps.blade.php +++ b/resources/views/menu/insertTps.blade.php @@ -40,24 +40,14 @@ <div class="form-group"> <label class="col-sm-2 control-label">Kapasitas Sekarang</label> <div class="col-sm-10"> - <input id="slider" name="capacity_now" value="50" ui-jq="slider" ui-options="{ - min: 0, - max: 500, - step: 1, - value: 50 - }" class="slider slider-horizontal form-control" type="text"> <span class="m-l-sm font-bold"></span> + <input id="slider" name="capacity_now" value="0" class="form-control" type="number"> </div> </div> <div class="line line-dashed b-b line-lg pull-in"></div> <div class="form-group"> <label class="col-sm-2 control-label">Kapasitas Penuh</label> <div class="col-sm-10"> - <input id="slider" name="capacity_full" value="50" ui-jq="slider" ui-options="{ - min: 0, - max: 500, - step: 1, - value: 50 - }" class="slider slider-horizontal form-control" type="text"> <span class="m-l-sm font-bold"></span> + <input id="slider" name="capacity_full" value="0" class="form-control" type="number"> </div> </div> @@ -90,6 +80,18 @@ </div> </div> + <div class="line line-dashed b-b line-lg pull-in"></div> + <div class="form-group"> + <label class="col-sm-12">Lokasi TPS</label> + <div class="col-sm-12" style="height: 400px; padding: 2px;"> + <input type="hidden" id='latitude' name='latitude' value='0'> + <input type="hidden" id='longitude' name='longitude' value='0'> + <div id="map" style="height: 100%;"></div> + </div> + </div> + + <div class="line line-dashed b-b line-lg pull-in"></div> + <div class="form-group"> <div class="col-sm-4 col-sm-offset-2"> <a href="{{ url('/tps') }}"><button type="button" class="btn btn-default m-r-sm">Cancel</button></a> @@ -104,4 +106,51 @@ </div> </div> + +<script> + var marker = null; + + function initMap() { + var customMapType = new google.maps.StyledMapType([{"featureType":"road","stylers":[{"hue":"#5e00ff"},{"saturation":-79}]},{"featureType":"poi","stylers":[{"saturation":-78},{"hue":"#6600ff"},{"lightness":-47},{"visibility":"off"}]},{"featureType":"road.local","stylers":[{"lightness":22}]},{"featureType":"landscape","stylers":[{"hue":"#6600ff"},{"saturation":-11}]},{},{},{"featureType":"water","stylers":[{"saturation":-65},{"hue":"#1900ff"},{"lightness":8}]},{"featureType":"road.local","stylers":[{"weight":1.3},{"lightness":30}]},{"featureType":"transit","stylers":[{"visibility":"simplified"},{"hue":"#5e00ff"},{"saturation":-16}]},{"featureType":"transit.line","stylers":[{"saturation":-72}]},{}], { + name: 'Custom Style' + }); + var customMapTypeId = 'custom_style'; + + var map = new google.maps.Map(document.getElementById('map'), { + zoom: 12, + center: {lat: -6.914744, lng: 107.609810}, + mapTypeControlOptions: { + mapTypeIds: [google.maps.MapTypeId.ROADMAP, customMapTypeId] + } + }); + + map.addListener('click', function(e) { + placeMarkerAndPanTo(e.latLng, map); + }); + + map.mapTypes.set(customMapTypeId, customMapType); + map.setMapTypeId(customMapTypeId); + } + + function placeMarkerAndPanTo(latLng, map) { + + if (marker == null) { + marker = new google.maps.Marker({ + position: latLng, + map: map + }); + } else { + marker.setPosition(latLng); + } + + //update + document.getElementById('latitude').value = latLng.lat(); + document.getElementById('longitude').value = latLng.lng(); + + //map.panTo(latLng); + } +</script> +<script async defer +src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAQhtIUXQLjOphZJncykzuYoH85EWJ9JMc&callback=initMap"> +</script> @endsection \ No newline at end of file diff --git a/resources/views/menu/tps.blade.php b/resources/views/menu/tps.blade.php index 729e746e5a2612a77dafcbca1cc84477a9f880f3..230de96864d1e0e58ea8b4c3f0e0217f05857a5e 100644 --- a/resources/views/menu/tps.blade.php +++ b/resources/views/menu/tps.blade.php @@ -29,6 +29,14 @@ foreach ($data as $tps ) { </ul> </div> + <div> + <form action="tpssearch.blade.php" method="GET"> + Search TPS: + <input type="search" name="key"> + <input type="submit"> + </form> + </div> + <div class="wrapper-lg bg-light"> <div class="row"> <!-- Pie Chart--> diff --git a/resources/views/menu/tpssearch.blade.php b/resources/views/menu/tpssearch.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..edf23d93b0c7b6172aa3fe1293e24d0dbe68528b --- /dev/null +++ b/resources/views/menu/tpssearch.blade.php @@ -0,0 +1,230 @@ +<?php +$jumlahPenuh = 0; +$jumlahTakPenuh = 0; +foreach ($data as $tps ) { + if($tps->is_full==0){ + $jumlahTakPenuh+=1; + }else{ + $jumlahPenuh+=1; + } +} +?> +@extends('layouts.app') + +@section('content') +{!! csrf_field() !!} +<div class="hbox hbox-auto-xs hbox-auto-sm ng-scope"> + <div class="col"> + <div class="app-content-body "> + <div class="bg-light lter"> + <ul class="breadcrumb bg-grey-breadcrumb m-b-none"> + <li><a href="#" class="btn no-shadow" ui-toggle-class="app-aside-folded" target=".app"> + <i class="icon-bdg_expand1 text"></i> + <i class="icon-bdg_expand2 text-active"></i> + </a> </li> + <li><a href="{{ url('/') }}">Home</a></li> + <li class="active"><i class="fa fa-angle-right"></i>TPS</li> + </ul> + </div> + <div class="wrapper-lg bg-light"> + <div class="row"> + <!-- Pie Chart--> + <div class="col-md-12"> + <div class="panel panel-default"> + <div class="panel-heading font-regular">Statistik TPS</div> + <div class="panel-body no-padder"> + + <div class="col-xs-8"> + <div class="wrapper text-center"> + <div ui-jq="sparkline" ui-options="[<?=$jumlahPenuh?>,<?=$jumlahTakPenuh?>], {type:'pie', height:140, sliceColors:['#001080','#8dc80e']}" class="sparkline inline text-center"></div> + <div class="line pull-in"></div> + </div> + </div> + + <div class="col-xs-4 border-left"> + <div class="wrapper"> + <div class="text-xs"> + <ul class="sparkline-info"> + <li class="mb20 text-info font-light"><i class="fa fa-circle text-info"></i> Penuh</li> + <li class="mb20 text-success font-light"><i class="fa fa-circle text-success"></i> Takpenuh</li> + </ul> + </div> + </div> + + </div> + + </div> + </div> + </div> + + <div class="col-md-12"> + <div class="panel panel-default"> + <div class="panel-heading font-semibold"> + TPS Table + + </div> + <div class="row wrapper-sm"> + <div class="col-sm-5"> + </div> + <div class="col-sm-6"> + </div> + <div class="col-sm-1"> + <a href="{{ url('/tps/create') }}"><button class="btn m-b-sm m-r-sm btn-info">Create</button></a> + </div> + </div> + <div class="row wrapper-sm"> + <div class="col-sm-5"> + + <select id="aksi2" class="input-sm form-control w-sm inline v-middle"> + <option value="0">Bulk action</option> + <option value="1">Delete selected</option> + <option value="2">Bulk edit</option> + </select> + <button onclick="aksi2();return false;" class="btn btn-sm btn-default">Apply</button> + </div> + <div class="col-sm-4"> + + </div> + <div class="col-sm-3"> + <div class="input-group"> + <input type="text" class="input-sm form-control" placeholder="Search"> + <span class="input-group-btn"> + <button class="btn btn-sm btn-default" type="button">Go!</button> + </span> + </div> + </div> + </div> + <div class="table-responsive"> + <table class="table table-striped b-t b-light"> + <thead> + <tr> + <th style="width:20px;"> + <label class="checkbox-inline "> + <!-- <input type="checkbox"><i></i> --> + </label> + </th> + <th>Nama</th> + <th>Kapasitas saat ini</th> + <th>Kapasitas penuh</th> + <th>Manager</th> + <th>Tidak penuh</th> + </tr> + </thead> + <tbody> + <form id="deleteForm" method="POST"> + {!! csrf_field() !!} + <input type="hidden" name="_method" value="DELETE"> + @foreach ($data as $tps) + @if (str_contains($tps->nama, <?php $_POST["key"];?>) + <tr> + <td><label class="checkbox-inline "><input type="radio" name="id" value="<?=$tps->id?>"><i></i></label></td> + <td><?php echo $tps->nama;?></td> + <td><?php echo $tps->capacity_now;?></td> + <td><?php echo $tps->capacity_full;?></td> + <td><?php echo $tps->managerName;?></td> + <td> + <?php if($tps->is_full==0){?> + <a class="active"><i class="fa fa-check text-success text-active"></i></a> + <?php }else{?> + <a class="active"><i class="fa fa-times text-danger text-active"></i></a><?php }?> + </td> + </tr> + @endif + @endforeach + </form> + </tbody> + </table> + </div> + <footer class="panel-footer"> + <div class="row"> + <div class="col-sm-4 hidden-xs"> + <select id="aksi" class="input-sm form-control w-sm inline v-middle"> + <option value="0">Bulk action</option> + <option value="1">Delete selected</option> + <option value="2">Bulk edit</option> + </select> + <button onclick="aksi();return false;" class="btn btn-sm btn-default">Apply</button> + </div> + <script type="text/javascript"> + function aksi(){ + var lol = document.getElementById("aksi").value; + var KumpulanId = document.getElementsByName("id"); + var id ; + for (i = 0; i < KumpulanId.length; i++) { + if (KumpulanId[i].checked) { + id = KumpulanId[i].value; + break; + } + } + if(id==null){ + window.alert('pilih salah satu'); + lol=3; + } + if(lol==0){ + window.location.href = '/templatePPL2/public/tps'; + } + if(lol==1){ + var s = '/templatePPL2/public/tps/'+id; + document.getElementById("deleteForm").action = s; + document.getElementById("deleteForm").submit(); + } + if(lol==2){ + var s = '/templatePPL2/public/tps/'+id+'/edit'; + window.location.href = s; + } + + } + function aksi2(){ + var lol = document.getElementById("aksi2").value; + var KumpulanId = document.getElementsByName("id"); + var id ; + for (i = 0; i < KumpulanId.length; i++) { + if (KumpulanId[i].checked) { + id = KumpulanId[i].value; + break; + } + } + if(id==null){ + window.alert('pilih salah satu'); + lol=3; + } + if(lol==0){ + window.location.href = '/templatePPL2/public/tps'; + } + if(lol==1){ + var s = '/templatePPL2/public/tps/'+id; + document.getElementById("deleteForm").action = s; + document.getElementById("deleteForm").submit(); + } + if(lol==2){ + var s = '/templatePPL2/public/tps/'+id+'/edit'; + window.location.href = s; + } + + } + + </script> + <div class="col-sm-4 text-center"> + <small class="text-muted inline m-t-sm m-b-sm">showing 20-30 of 50 items</small> + </div> + <div class="col-sm-4 text-right text-center-xs"> + <ul class="pagination pagination-sm m-t-none m-b-none"> + <li><a href><i class="icon-bdg_arrow4"></i></a></li> + <li><a href>1</a></li> + <li><a href>2</a></li> + <li><a href>3</a></li> + <li><a href>4</a></li> + <li><a href>5</a></li> + <li><a href><i class="icon-bdg_arrow3"></i></a></li> + </ul> + </div> + </div> + </footer> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +@endsection \ No newline at end of file