From 50abb9d909248274bc886a024dc64e2b94e31af0 Mon Sep 17 00:00:00 2001 From: "George Frederick \"Buzz\" Beurling" Date: Thu, 9 Apr 2020 17:20:03 -0400 Subject: [PATCH] April 9 update --- app/Course.php | 76 +++ app/Event.php | 17 + app/GoogleDriveFile.php | 59 ++ app/Http/Controllers/AdminController.php | 7 +- app/Http/Controllers/CourseController.php | 125 ++++- app/Http/Controllers/EventTypeController.php | 5 +- app/Http/Controllers/FilesController.php | 35 +- .../Controllers/GoogleDriveController.php | 214 ++++++-- app/Http/Controllers/LessonPlanController.php | 85 +++ app/Http/Controllers/ProfilController.php | 23 + app/Http/Controllers/ScheduleController.php | 46 +- app/Http/Controllers/StatsController.php | 81 +++ app/Http/Controllers/UserController.php | 10 + app/Http/Kernel.php | 1 + app/Http/Middleware/CheckCoursePerm.php | 43 ++ app/LessonPlan.php | 13 + app/Permission.php | 265 +++------ app/User.php | 13 +- ...2019_08_17_102836_create_courses_table.php | 1 + ...04_06_142322_create_lesson_plans_table.php | 37 ++ public/css/Chart.min.css | 1 + public/css/custom.css | 4 + ...aslee-troutman-art-gallery-collections.jpg | Bin 0 -> 128092 bytes public/images/sidebar.png | Bin 0 -> 16740 bytes public/js/app.js | 12 + public/js/plugins/Chart.min.js | 7 + public/js/plugins/chartist.min.js | 9 - public/js/plugins/course.js | 45 ++ public/js/plugins/drive-explorer.js | 105 +++- resources/custom.css | 4 + .../views/admin/configs/ranks/show.blade.php | 56 +- .../views/admin/configs/schedule.blade.php | 216 +++++--- resources/views/admin/course/index.blade.php | 135 +++++ resources/views/admin/course/show.blade.php | 315 +++++++++++ resources/views/admin/dashboard.blade.php | 31 +- .../views/admin/event_type/show.blade.php | 55 ++ .../files/Google Drive/explorer.blade.php | 5 +- .../admin/files/Google Drive/index.blade.php | 9 +- .../files/Google Drive/permission.blade.php | 29 +- .../Google Drive/permission/add.blade.php | 81 +++ .../Google Drive/permission/edit.blade.php | 8 +- .../admin/files/course-template.blade.php | 53 ++ resources/views/admin/files/guide.blade.php | 86 ++- resources/views/admin/ocom/show.blade.php | 19 +- .../stats/component/lessonPlan.blade.php | 34 ++ .../views/admin/stats/instruction.blade.php | 127 +++++ resources/views/admin/update.blade.php | 60 ++ .../views/admin/user/profil/courses.blade.php | 84 +++ resources/views/layouts/admin/head.blade.php | 1 + .../views/layouts/admin/header.blade.php | 3 +- .../views/layouts/admin/scripts.blade.php | 8 +- .../views/layouts/admin/sidebar.blade.php | 515 ++++++++---------- .../views/layouts/public/banner.blade.php | 2 +- resources/views/layouts/public/main.blade.php | 7 +- routes/api.php | 14 +- routes/breadcrumbs.php | 121 +++- routes/web.php | 72 ++- 57 files changed, 2635 insertions(+), 854 deletions(-) create mode 100644 app/Http/Controllers/LessonPlanController.php create mode 100644 app/Http/Controllers/ProfilController.php create mode 100644 app/Http/Controllers/StatsController.php create mode 100644 app/Http/Middleware/CheckCoursePerm.php create mode 100644 app/LessonPlan.php create mode 100644 database/migrations/2020_04_06_142322_create_lesson_plans_table.php create mode 100644 public/css/Chart.min.css create mode 100644 public/images/fall-art-red-autumn-leaves-orange-fall-trees-baslee-troutman-baslee-troutman-art-gallery-collections.jpg create mode 100644 public/images/sidebar.png create mode 100644 public/js/plugins/Chart.min.js delete mode 100644 public/js/plugins/chartist.min.js create mode 100644 public/js/plugins/course.js create mode 100644 resources/views/admin/course/index.blade.php create mode 100644 resources/views/admin/course/show.blade.php create mode 100644 resources/views/admin/event_type/show.blade.php create mode 100644 resources/views/admin/files/Google Drive/permission/add.blade.php create mode 100644 resources/views/admin/files/course-template.blade.php create mode 100644 resources/views/admin/stats/component/lessonPlan.blade.php create mode 100644 resources/views/admin/stats/instruction.blade.php create mode 100644 resources/views/admin/user/profil/courses.blade.php diff --git a/app/Course.php b/app/Course.php index 53e08c26..7ad56fe2 100644 --- a/app/Course.php +++ b/app/Course.php @@ -42,4 +42,80 @@ class Course extends Model { return $this->name == "" && $this->ocom == ""; } + + public function lessonPlan() + { + return $this->hasOne('App\LessonPlan'); + } + + public static function allFuture() + { + $courses = Course::all(); + foreach ($courses as $key => $course) + { + if (date('c',strtotime($course->event->date_begin)) <= date('c')) + { + $courses->forget($key); + } + } + return $courses; + } + + public static function allThisYear() + { + $courses = Course::all(); + foreach ($courses as $key => $course) + { + if (date('c',strtotime($course->event->date_begin)) <= date('c',strtotime(\App\Config::getData('instruction_year_begin')))) + { + $courses->forget($key); + } + if (date('c',strtotime($course->event->date_begin)) >= date('c',strtotime(\App\Config::getData('instruction_year_end')))) + { + $courses->forget($key); + } + } + return $courses; + } + + public static function allForUser($user_id) + { + $courses = Course::all(); + foreach ($courses as $key => $course) + { + if ($course->user_id != $user_id) + { + $courses->forget($key); + } + } + return $courses; + } + + public static function allForAuthUser() + { + return self::allForUser(\Auth::user()->id); + } + + public static function allFutureForUser($user_id) + { + $courses = Course::all(); + foreach ($courses as $key => $course) + { + if (date('c',strtotime($course->event->date_begin)) <= date('c')) + { + $courses->forget($key); + } + if ($course->user_id != $user_id) + { + $courses->forget($key); + } + } + return $courses; + } + + public static function allFutureForAuthUser() + { + return self::allFutureForUser(\Auth::user()->id); + } + } diff --git a/app/Event.php b/app/Event.php index 37952ed7..b95d21af 100644 --- a/app/Event.php +++ b/app/Event.php @@ -60,6 +60,23 @@ class Event extends Model return $events; } + public static function allThisYear() + { + $events = Event::all(); + foreach ($events as $key => $event) + { + if (date('c',strtotime($event->date_begin)) <= date('c',strtotime(\App\Config::getData('instruction_year_begin')))) + { + $events->forget($key); + } + if (date('c',strtotime($event->date_begin)) >= date('c',strtotime(\App\Config::getData('instruction_year_end')))) + { + $events->forget($key); + } + } + return $events; + } + public static function checkForError() { $events = Event::all(); diff --git a/app/GoogleDriveFile.php b/app/GoogleDriveFile.php index dde0e2a4..230fb95a 100644 --- a/app/GoogleDriveFile.php +++ b/app/GoogleDriveFile.php @@ -327,4 +327,63 @@ class GoogleDriveFile extends Model $contents = collect(Storage::cloud()->listContents('/', true)); return json_encode($contents->where('type', '=', 'dir')); } + + public static function getSidebarFile() + { + $user = \Auth::user(); + $sidebarArray = []; + $dirList = \App\GoogleDriveFile::all(); + if ($dirList->where('path','=','.Privé/.Cadet')->first()->canAuthUser()) + { + $sidebarArray['Cadet'] = [ + 'route' => 'admin.files.cadet', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } + if ($dirList->where('path','=','.Privé/.Staff')->first()->canAuthUser()) + { + $sidebarArray['Staff'] = [ + 'route' => 'admin.files.staff', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } + if ($dirList->where('path','=','.Privé/.ETAMAS')->first()->canAuthUser()) + { + $sidebarArray['ETAMAS'] = [ + 'route' => 'admin.files.etamas', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } + if ($dirList->where('path','=','.Privé/.Officier')->first()->canAuthUser()) + { + $sidebarArray['Officier'] = [ + 'route' => 'admin.files.officier', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } + $sidebarArray['Publique'] = [ + 'route' => 'admin.files.publique', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + if (\Auth::user()->p('drive_see') == 1) + { + $sidebarArray['Google Drive'] = [ + 'route' => 'admin.drive', + 'icon' => 'fab fa-google-drive', + 'perm' => null, + 'child' => null + ]; + } + return $sidebarArray; + } } diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index ce20ae4a..e7ad000f 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -26,7 +26,7 @@ class AdminController extends Controller { clog('navigate','success','consulte le tableau de bord'); - return view('admin.dashboard',['futureEvent' => \App\Event::future()->take(3),'userClasse' => \Auth::User()->getClasse()->forPage(1,6)]); + return view('admin.dashboard',['futureEvent' => \App\Event::future()->take(3),'userClasse' => \Auth::user()->futureCourses()->forPage(1,6)]); } public function update() @@ -42,4 +42,9 @@ class AdminController extends Controller return view('admin.status.index',['alerts' => $alerts]); } + public function instruction() + { + + } + } diff --git a/app/Http/Controllers/CourseController.php b/app/Http/Controllers/CourseController.php index 6e495f85..3be9ccb5 100644 --- a/app/Http/Controllers/CourseController.php +++ b/app/Http/Controllers/CourseController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Course; +use App\GoogleDriveFile; use Illuminate\Http\Request; class CourseController extends Controller @@ -14,7 +15,17 @@ class CourseController extends Controller */ public function index() { - // + $mode = 'future'; + if (\request('all')) + { + $courses = Course::all(); + $mode = 'all'; + } + else + { + $courses = Course::allFuture(); + } + return view('admin.course.index',['courses' => $courses,'mode' => $mode]); } /** @@ -41,18 +52,25 @@ class CourseController extends Controller /** * Display the specified resource. * - * @param \App\Course $course - * @return \Illuminate\Http\Response + * @param $id + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function show(Course $course) + public function show($id) { - // + $course = Course::find($id); + $user = \App\User::find($course->user_id); + $name = $course->user_id; + if ($user != null) + { + $name = $user->fullname(); + } + return view('admin.course.show',['course' => $course,'username' => $name,'lessonPlanDir' => \App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id]); } /** * Show the form for editing the specified resource. * - * @param \App\Course $course + * @param Course $course * @return \Illuminate\Http\Response */ public function edit(Course $course) @@ -64,7 +82,7 @@ class CourseController extends Controller * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request - * @param \App\Course $course + * @param Course $course * @return \Illuminate\Http\Response */ public function update(Request $request, Course $course) @@ -72,14 +90,105 @@ class CourseController extends Controller // } + public function updateCommentOfficer(Request $request, $id) + { + $course = Course::findOrFail($id); + + $course->comment_officer = $request->comment_officer; + $course->save(); + return redirect()->back()->with('success','Modification enregisté avec succès'); + } + + public function updateComment(Request $request, $id) + { + $course = Course::findOrFail($id); + + $course->comment = $request->comment; + $course->save(); + return redirect()->back()->with('success','Modification enregisté avec succès'); + } + + public function updateCommentOfficerPlan(Request $request, $id) + { + $course = Course::findOrFail($id); + + $course->lessonPlan->comment = $request->comment_officer; + $course->lessonPlan->save(); + return redirect()->back()->with('success','Modification enregisté avec succès'); + } + + public function updateCommentPlan(Request $request, $id) + { + $course = Course::findOrFail($id); + + $course->lessonPlan->desc = $request->comment; + $course->lessonPlan->save(); + return redirect()->back()->with('success','Modification enregisté avec succès'); + } + + public function updateLessonPlan(Request $request, $id) + { + $course = Course::findOrFail($id); + $name = $course->ocom.'_'.$course->instructor().'_'.$course->event->date_begin.'_'.'v'.date('c').'.'.\request()->file('file')->getClientOriginalExtension(); + $name = urlencode($name); + $dirID = \App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id; + + if ($course->lessonPlan != null) + { + $lessonPlan = $course->lessonPlan; + $contents = collect(\Storage::cloud()->listContents($dirID, false)); + + $file = $contents + ->where('type', '=', 'file') + ->where('filename', '=', pathinfo($course->lessonPlan->file, PATHINFO_FILENAME)) + ->where('extension', '=', pathinfo($course->lessonPlan->file, PATHINFO_EXTENSION)) + ->first(); // there can be duplicate file names! + \Storage::cloud()->delete($file['path']); + } + else + { + $lessonPlan = new \App\LessonPlan(); + } + \Storage::cloud()->putFileAs($dirID,\request()->file('file'),$name); + $metadata = \Storage::cloud()->getMetadata($dirID.'/'.$name); + + $lessonPlan->user_id = \Auth::user()->id; + $lessonPlan->file = $metadata['name']; + $lessonPlan->course_id = $course->id; + $lessonPlan->desc = ""; + $lessonPlan->comment = ""; + $lessonPlan->save(); + + return redirect()->back(); + } + /** * Remove the specified resource from storage. * - * @param \App\Course $course + * @param Course $course * @return \Illuminate\Http\Response */ public function destroy(Course $course) { // } + + public function validatePlan($id) + { + $course = Course::findOrFail($id); + if ($course->lessonPlan) + { + if ($course->lessonPlan->approved) + { + $course->lessonPlan->approved = false; + } + else + { + $course->lessonPlan->approved = true; + } + $course->lessonPlan->save(); + return strval($course->lessonPlan->approved); + } + return abort(500); + } } diff --git a/app/Http/Controllers/EventTypeController.php b/app/Http/Controllers/EventTypeController.php index 231cb37e..55f99d88 100644 --- a/app/Http/Controllers/EventTypeController.php +++ b/app/Http/Controllers/EventTypeController.php @@ -44,9 +44,10 @@ class EventTypeController extends Controller * @param \App\EventType $eventType * @return \Illuminate\Http\Response */ - public function show(EventType $eventType) + public function show($id) { - // + $event_type = EventType::findOrFail($id); + return view('admin.event_type.show',['event_type' => $event_type]); } /** diff --git a/app/Http/Controllers/FilesController.php b/app/Http/Controllers/FilesController.php index 135234ae..e87fae2d 100644 --- a/app/Http/Controllers/FilesController.php +++ b/app/Http/Controllers/FilesController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\GoogleDriveFile; use Illuminate\Http\Request; class FilesController extends Controller @@ -84,6 +85,38 @@ class FilesController extends Controller public function guide() { - return view('admin.files.guide'); + $dirID = \App\GoogleDriveFile::findByPath('.Privé/.Staff/.Guide'); + $dir = collect(\Storage::cloud()->listContents($dirID->id,false))->sortBy('name'); + return view('admin.files.guide',['dir' => $dir]); + } + + public function instruction() + { + return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Staff/.Instruction')->first()->id, 'mode' => 'folder']); + } + + public function cadet() + { + return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Cadet')->first()->id, 'mode' => 'folder']); + } + + public function staff() + { + return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Staff')->first()->id, 'mode' => 'folder']); + } + + public function etamas() + { + return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.ETAMAS')->first()->id, 'mode' => 'folder']); + } + + public function officier() + { + return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Officier')->first()->id, 'mode' => 'folder']); + } + + public function publique() + { + return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Publique')->first()->id, 'mode' => 'folder']); } } diff --git a/app/Http/Controllers/GoogleDriveController.php b/app/Http/Controllers/GoogleDriveController.php index 0a4431d1..facff370 100644 --- a/app/Http/Controllers/GoogleDriveController.php +++ b/app/Http/Controllers/GoogleDriveController.php @@ -22,6 +22,11 @@ class GoogleDriveController extends Controller return view('admin.files.Google Drive.index',['folder' => $folder]); } + public function indexFolder($folder = '') + { + return view('admin.files.Google Drive.index',['folder' => $folder,'mode' => 'folder']); + } + /** * Show the form for creating a new file. * @@ -172,6 +177,14 @@ class GoogleDriveController extends Controller ->where('type', '=', 'file') ->where('filename', '=', pathinfo($filename, PATHINFO_FILENAME)) ->first(); // there can be duplicate file names! + if ($file == null) + { + $filename = \request('f'); + $file = $contents + ->where('type', '=', 'file') + ->where('filename', '=', pathinfo($filename, PATHINFO_FILENAME)) + ->first(); // there can be duplicate file names! + } $rawData = Storage::cloud()->get($file['path']); $filename = urlencode($filename); @@ -335,76 +348,71 @@ class GoogleDriveController extends Controller public function getFileStructure() { return collect([ - '🔒.Privé' => [ + '.Systeme' => [ 'rank' => [1 => 'rwp'], 'job' => [], 'user' => [] ], - '🔒.Privé/🔒.Cadet' => [ + '.Systeme/.Fichier' => [ 'rank' => [1 => 'rwp'], 'job' => [], 'user' => [] ], - '🔒.Privé/🔒.ETAMAS' => [ + '.Systeme/.Fichier/.PlanDeCours' => [ 'rank' => [1 => 'rwp'], 'job' => [], 'user' => [] ], - '🔒.Privé/🔒.Officier' => [ + '.Privé' => [ 'rank' => [1 => 'rwp'], 'job' => [], 'user' => [] ], - '🔒.Privé/🔒.Staff' => [ + '.Privé/.Cadet' => [ 'rank' => [1 => 'rwp'], 'job' => [], 'user' => [] ], - '🔒.Privé/🔒.Staff/🔒.Guide' => [ + '.Privé/.ETAMAS' => [ 'rank' => [1 => 'rwp'], 'job' => [], 'user' => [] ], - '🔒.Publique' => [ + '.Privé/.Officier' => [ + 'rank' => [1 => 'rwp'], + 'job' => [], + 'user' => [] + ], + '.Privé/.Staff' => [ + 'rank' => [1 => 'rwp'], + 'job' => [], + 'user' => [] + ], + '.Privé/.Staff/.Guide' => [ + 'rank' => [1 => 'rwp'], + 'job' => [], + 'user' => [] + ], + '.Privé/.Staff/.Instruction' => [ + 'rank' => [1 => 'rwp'], + 'job' => [], + 'user' => [] + ], + '.Publique' => [ 'rank' => [1 => 'rwp',0 => 'r'], 'job' => [], 'user' => [] ], - '🔒.Publique/🔒.Fichier' => [ + '.Publique/.Fichier' => [ 'rank' => [1 => 'rwp',0 => 'r'], 'job' => [], 'user' => [] ], - '🔒.Publique/🔒.Image' => [ + '.Publique/.Image' => [ 'rank' => [1 => 'rwp',0 => 'r'], 'job' => [], 'user' => [] ], - '🔒.Système' => [ - 'rank' => [1 => 'rwp'], - 'job' => [], - 'user' => [] - ], - '🔒.Système/🔒.Fichier' => [ - 'rank' => [1 => 'rwp'], - 'job' => [], - 'user' => [] - ], - '🔒.Système/🔒.Image' => [ - 'rank' => [1 => 'rwp'], - 'job' => [], - 'user' => [] - ], - '🔒.Système/🔒.Image/🔒.Nouvelle' => [ - 'rank' => [1 => 'rwp'], - 'job' => [], - 'user' => [] - ], - '🔒.Système/🔒.Image/🔒.Profil' => [ - 'rank' => [1 => 'rwp'], - 'job' => [], - 'user' => [] - ], ]); } @@ -412,7 +420,7 @@ class GoogleDriveController extends Controller { $contents = collect(\Storage::cloud()->listContents($d, false)); $dir = $contents->where('type', '=', 'dir'); - $dir = $dir->where('filename','=','🔒'); + $dir = $dir->where('filename','=',''); return $dir; } @@ -481,6 +489,142 @@ class GoogleDriveController extends Controller return view('admin.files.Google Drive.permission.edit',['folder' => $dir,'subject' => $foo,'perm' => $perm,'s' => $subject]); } + public function addPermissionModal($folder,$subject) + { + $dir = GoogleDriveFile::find($folder); + $list = null; + if ($subject == 'rank') + { + $list = \App\Rank::all(); + } + elseif ($subject == 'job') + { + $list = \App\Job::all(); + } + else + { + $list = \App\User::all(); + } + return view('admin.files.Google Drive.permission.add',['folder' => $dir,'list' => $list,'s' => $subject]); + } + public function patchPermission(Request $request,$folder,$subject,$id) + { + $f = GoogleDriveFile::find($folder); + $permstring = ''; + if (isset($request->read)) + { + if ($request->read == 'on') + { + $permstring = $permstring.'r'; + } + } + if (isset($request->write)) + { + if ($request->write == 'on') + { + $permstring = $permstring.'w'; + } + } + if (isset($request->perm)) + { + if ($request->perm == 'on') + { + $permstring = $permstring.'p'; + } + } + if ($subject == 'rank') + { + $temp = $f->rank_permission; + $temp[$id] = $permstring; + $f->rank_permission = $temp; + } + if ($subject == 'job') + { + $temp = $f->job_permission; + $temp[$id] = $permstring; + $f->job_permission = $temp; + } + if ($subject == 'user') + { + $temp = $f->user_permission; + $temp[$id] = $permstring; + $f->user_permission = $temp; + } + $f->save(); + return redirect()->back()->with('success','Modification enregistré avec succès'); + } + + public function addPermission(Request $request,$folder,$subject) + { + $f = GoogleDriveFile::find($folder); + $permstring = ''; + if (isset($request->read)) + { + if ($request->read == 'on') + { + $permstring = $permstring.'r'; + } + } + if (isset($request->write)) + { + if ($request->write == 'on') + { + $permstring = $permstring.'w'; + } + } + if (isset($request->perm)) + { + if ($request->perm == 'on') + { + $permstring = $permstring.'p'; + } + } + if ($subject == 'rank') + { + $temp = $f->rank_permission; + $temp[$request->id] = $permstring; + $f->rank_permission = $temp; + } + if ($subject == 'job') + { + $temp = $f->job_permission; + $temp[$request->id] = $permstring; + $f->job_permission = $temp; + } + if ($subject == 'user') + { + $temp = $f->user_permission; + $temp[$request->id] = $permstring; + $f->user_permission = $temp; + } + $f->save(); + return redirect()->back()->with('success','Modification enregistré avec succès'); + } + + public function deletePermission($folder,$subject,$id) + { + $f = GoogleDriveFile::find($folder); + if ($subject == 'rank') + { + $temp = $f->rank_permission; + unset($temp[$id]); + $f->rank_permission = $temp; + } + if ($subject == 'job') + { + $temp = $f->job_permission; + unset($temp[$id]); + $f->job_permission = $temp; + } + if ($subject == 'user') + { + $temp = $f->user_permission; + unset($temp[$id]); + $f->user_permission = $temp; + } + $f->save(); + return redirect()->back()->with('success','Modification enregistré avec succès'); + } } diff --git a/app/Http/Controllers/LessonPlanController.php b/app/Http/Controllers/LessonPlanController.php new file mode 100644 index 00000000..32cfa438 --- /dev/null +++ b/app/Http/Controllers/LessonPlanController.php @@ -0,0 +1,85 @@ + $courses,'mode' => $mode]); + } +} diff --git a/app/Http/Controllers/ScheduleController.php b/app/Http/Controllers/ScheduleController.php index e4a2c70c..73cb6e0e 100644 --- a/app/Http/Controllers/ScheduleController.php +++ b/app/Http/Controllers/ScheduleController.php @@ -11,49 +11,21 @@ class ScheduleController extends Controller { public function index() { - return view('admin.configs.schedule',['configs' => \App\Config::all()]); + return view('admin.configs.schedule',['configs' => \App\Config::all(),'events_type' => \App\EventType::all()]); } - public function update() + public function update(Request $request) { - $configs = ['admin_periode_nb']; + $instruction_year_begin = \App\Config::find('instruction_year_begin'); + $instruction_year_end = \App\Config::find('instruction_year_end'); - foreach ($configs as $config) { - $c = \App\Config::all()->where('name',$config)->first(); - $c->data = [request($config)]; - $c->save(); - } + $instruction_year_begin->data = [date('Y-m-d',strtotime($request->instruction_year_begin))]; + $instruction_year_end->data = [date('Y-m-d',strtotime($request->instruction_year_end))]; - $new_admin_periode_begin = []; - $new_admin_periode_end = []; - for ($i=1; $i <= request('admin_periode_nb'); $i++) { - if(request('admin_periode_begin_'.$i)) - { - $new_admin_periode_begin[$i] = request('admin_periode_begin_'.$i); - } - else - { - $new_admin_periode_begin[$i] = "00:00"; - } - if(request('admin_periode_end_'.$i)) - { - $new_admin_periode_end[$i] = request('admin_periode_end_'.$i); - } - else - { - $new_admin_periode_end[$i] = "00:00"; - } - } + $instruction_year_begin->save(); + $instruction_year_end->save(); - $temp = \App\Config::all()->where('name','admin_periode_begin')->first(); - $temp->data = $new_admin_periode_begin; - $temp->save(); - - $temp = \App\Config::all()->where('name','admin_periode_end')->first(); - $temp->data = $new_admin_periode_end; - $temp->save(); - - return redirect('/admin/config/schedule')->with('success','Modification sauvegarder avec succès !'); + return redirect('/admin/config/instruction')->with('success','Modification sauvegarder avec succès !'); } public function apiIndex() diff --git a/app/Http/Controllers/StatsController.php b/app/Http/Controllers/StatsController.php new file mode 100644 index 00000000..328f0381 --- /dev/null +++ b/app/Http/Controllers/StatsController.php @@ -0,0 +1,81 @@ +lessonPlan) + { + if ($course->lessonPlan->approved) + { + $nbCoursePlanDoneAndCheckTY++; + } + else + { + $nbCoursePlanDoneTY++; + } + } + } + + $coursesUTTD = $coursesTY; + $nbCoursePlanDoneUTDP = 0; + $nbCoursePlanDoneAndCheckUTDP = 0; + + foreach ($coursesUTTD as $key => $course) + { + if (date('c',strtotime($course->event->date_begin)) >= date('c')) + { + $coursesUTTD->forget($key); + } + else + { + $instructorUTTD->push($course->instructor()); + if ($course->lessonPlan) + { + if ($course->lessonPlan->approved) + { + $nbCoursePlanDoneAndCheckUTDP++; + } + else + { + $nbCoursePlanDoneUTDP++; + } + } + } + } + $instructorUTTD = $instructorUTTD->unique(); + + $eventTY = \App\Event::allThisYear(); + $eventUTTD = $eventTY; + foreach ($eventUTTD as $key => $event) + { + if (date('c',strtotime($event->date_begin)) >= date('c')) + { + $eventUTTD->forget($key); + } + } + return view('admin.stats.instruction',[ + 'nbCourseThisYear' => count($coursesTY), + 'nbInstructorUpToThisDay' => count($instructorUTTD), + 'nbEventThisYear' => count($eventTY), + 'nbEventUpToThisDay' => count($eventUTTD), + 'nbCourseUpToThisDay' => count($coursesUTTD), + 'nbCoursePlanDoneUTDP' => $nbCoursePlanDoneUTDP, + 'nbCoursePlanDoneTY' => $nbCoursePlanDoneTY, + 'nbCoursePlanDoneAndCheckUTDP' => $nbCoursePlanDoneAndCheckUTDP, + 'nbCoursePlanDoneAndCheckTY' => $nbCoursePlanDoneAndCheckTY, + 'nbCourseInDB' => count(\App\OCOM::all()), + ]); + } +} diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index b1e66459..9f6c8f32 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -262,4 +262,14 @@ class UserController extends Controller return json_encode($name); } + + public function showCourses($id) + { + return view('admin.user.courses',['courses' => User::find($id)->courses]); + } + + public function showCourse($id,$course_id) + { + return view('admin.user.course',['courses' => User::find($id)->courses]); + } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 75cf88dd..27361b03 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -63,5 +63,6 @@ class Kernel extends HttpKernel 'admin' => \App\Http\Middleware\AccesAdmin::class, 'perm' => \App\Http\Middleware\CheckPerm::class, 'fileperm' => \App\Http\Middleware\CheckFilePerm::class, + 'courseperm' => \App\Http\Middleware\CheckCoursePerm::class, ]; } diff --git a/app/Http/Middleware/CheckCoursePerm.php b/app/Http/Middleware/CheckCoursePerm.php new file mode 100644 index 00000000..24e0ccee --- /dev/null +++ b/app/Http/Middleware/CheckCoursePerm.php @@ -0,0 +1,43 @@ +id); + + if (\Auth::user()->id == $course->user_id) + { + if ($perm == 'see' || $perm == 'edit') + { + return $next($request); + } + } + + if (\Auth::user()->p('course_'.$perm.'_all') == 1) + { + return $next($request); + } + if (\Auth::user()->p('course_'.$perm) == 1) + { + return $next($request); + } + if ($perm == 'validate_plan') + { + abort(401); + } + clog('navigate','danger','L\'utilisateur n\'est pas autorisé à effectuer cette action',\Auth::user()->id); + return redirect('/admin')->with('error','Vous n\'êtes pas autorisé à effectuer cette action'); + } +} diff --git a/app/LessonPlan.php b/app/LessonPlan.php new file mode 100644 index 00000000..6c05c0f3 --- /dev/null +++ b/app/LessonPlan.php @@ -0,0 +1,13 @@ +belongsTo('App\Course'); + } +} diff --git a/app/Permission.php b/app/Permission.php index 32f14a5c..6f2d4330 100644 --- a/app/Permission.php +++ b/app/Permission.php @@ -38,36 +38,6 @@ class Permission extends Model 'valeur' => 0 ] ], - 'message' => [ - 'msg_see' => [ - 'ckey' => 'msg_see', - 'communName' => 'Voir les messages', - 'desc' => 'L\'utilisateur peut-il consulter les messages de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'msg_add' => [ - 'ckey' => 'msg_add', - 'communName' => 'Ajouter un message', - 'desc' => 'L\'utilisateur peut-il ajouter un message de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'msg_edit' => [ - 'ckey' => 'msg_edit', - 'communName' => 'Modifier un message', - 'desc' => 'L\'utilisateur peut-il modifier les messages de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'msg_delete' => [ - 'ckey' => 'msg_delete', - 'communName' => 'Supprimer un message', - 'desc' => 'L\'utilisateur peut-il supprimer un message de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ] - ], 'inventory' => [ 'inventory_see' => [ 'ckey' => 'inventory_see', @@ -98,36 +68,6 @@ class Permission extends Model 'valeur' => 0 ], ], - 'booking' => [ - 'booking_see' => [ - 'ckey' => 'booking_see', - 'communName' => 'Voir les réservations', - 'desc' => 'L\'utilisateur peut-il consulter la liste des réservations', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'booking_add' => [ - 'ckey' => 'booking_add', - 'communName' => 'Ajouter une réservation', - 'desc' => 'L\'utilisateur peut-il ajouter une réservation', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'booking_edit' => [ - 'ckey' => 'booking_edit', - 'communName' => 'Modifier une réservation', - 'desc' => 'L\'utilisateur peut-il modifier une réservation', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'booking_delete' => [ - 'ckey' => 'booking_delete', - 'communName' => 'Supprimer une réservation', - 'desc' => 'L\'utilisateur peut-il supprimer une réservation', - 'icon' => 'fa-eye', - 'valeur' => 0 - ] - ], 'user' => [ 'user_see' => [ 'ckey' => 'user_see', @@ -183,7 +123,72 @@ class Permission extends Model 'valeur' => 0 ] ], - 'schedule' => [ + 'Instruction' => [ + 'instruction_guide_see' => [ + 'ckey' => 'instruction_guide_see', + 'communName' => 'Voir les guides pédagogiques et normes de qualifications', + 'desc' => 'L\'utilisateur peut-il consulter les guides pédagogiques et normes de qualifications', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'instruction_db_ocom_see' => [ + 'ckey' => 'instruction_db_ocom_see', + 'communName' => 'Voir la base de donnée de cours', + 'desc' => 'L\'utilisateur peut-il consulter la base de donnée des cours', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'instruction_db_ocom_add' => [ + 'ckey' => 'instruction_db_ocom_add', + 'communName' => 'Ajouter à la base de donnée de cours', + 'desc' => 'L\'utilisateur peut-il ajouter à la base de donnée des cours', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'instruction_db_ocom_edit' => [ + 'ckey' => 'instruction_db_ocom_edit', + 'communName' => 'Modifier la base de donnée de cours', + 'desc' => 'L\'utilisateur peut-il modifier la base de donnée des cours', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'instruction_db_ocom_delete' => [ + 'ckey' => 'instruction_db_ocom_delete', + 'communName' => 'Supprimer de la base de donnée de cours', + 'desc' => 'L\'utilisateur peut-il supprimer de la base de donnée des cours', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'course_see_all' => [ + 'ckey' => 'course_see_all', + 'communName' => 'Voir les cours de tous les utilisateurs', + 'desc' => 'L\'utilisateur peut-il voir les cours de tous les utilisateurs', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'course_comment_officer' => [ + 'ckey' => 'course_comment_officer', + 'communName' => 'Ajouter un commentaire sur n\'importe quel cours', + 'desc' => 'L\'utilisateur peut-il ajouter un commentaire sur n\'importe quel cours', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'course_validate_plan' => [ + 'ckey' => 'course_validate_plan', + 'communName' => 'Valider n\'importe quel plan de cours', + 'desc' => 'L\'utilisateur peut-il valider n\'importe quel plan de cours', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'course_comment_plan_officer' => [ + 'ckey' => 'course_comment_plan_officer', + 'communName' => 'Ajouter un commentaire sur n\'importe quel plan de cours', + 'desc' => 'L\'utilisateur peut-il ajouter un commentaire sur n\'importe quel plan de cours', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + ], + 'Horaire' => [ 'schedule_see' => [ 'ckey' => 'schedule_see', 'communName' => 'Voir l\'horaire', @@ -274,146 +279,20 @@ class Permission extends Model ], ], 'file' => [ - 'file_see_public' => [ - 'ckey' => 'file_see_public', + 'file_see' => [ + 'ckey' => 'file_see', 'communName' => 'Voir les fichiers publiques', 'desc' => 'L\'utilisateur peut-il consulter les fichiers publiques', 'icon' => 'fa-eye', 'valeur' => 0 ], - 'file_add_public' => [ - 'ckey' => 'file_add_public', - 'communName' => 'Ajouter un fichier publiques', - 'desc' => 'L\'utilisateur peut-il ajouter un fichier disponible publiques', + 'drive_see' => [ + 'ckey' => 'drive_see', + 'communName' => 'Voir l\'explorateur de fichier', + 'desc' => 'L\'utilisateur peut-il consulter l\'explorateur de fichier', 'icon' => 'fa-eye', 'valeur' => 0 ], - 'file_edit_public' => [ - 'ckey' => 'file_edit_public', - 'communName' => 'Modifier un fichier publiques', - 'desc' => 'L\'utilisateur peut-il modifier un fichier publiques', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_delete_public' => [ - 'ckey' => 'file_delete_public', - 'communName' => 'Supprimer un fichier publiques', - 'desc' => 'L\'utilisateur peut-il supprimer un fichier publiques', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_see_cadet' => [ - 'ckey' => 'file_see_cadet', - 'communName' => 'Voir les fichiers des cadets', - 'desc' => 'L\'utilisateur peut-il consulter les fichiers des cadets', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_add_cadet' => [ - 'ckey' => 'file_add_cadet', - 'communName' => 'Ajouter un fichier disponible aux cadets', - 'desc' => 'L\'utilisateur peut-il ajouter un fichier disponible aux cadets', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_edit_cadet' => [ - 'ckey' => 'file_edit_cadet', - 'communName' => 'Modifier un fichier des cadets', - 'desc' => 'L\'utilisateur peut-il modifier un fichier des cadets', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_delete_cadet' => [ - 'ckey' => 'file_delete', - 'communName' => 'Supprimer un fichier des cadets', - 'desc' => 'L\'utilisateur peut-il supprimer un fichier des cadets', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_see_staff' => [ - 'ckey' => 'file_see_staff', - 'communName' => 'Voir les fichiers des staffs', - 'desc' => 'L\'utilisateur peut-il consulter les fichiers des staffs', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_add_staff' => [ - 'ckey' => 'file_add_staff', - 'communName' => 'Ajouter un fichier disponible aux staffs', - 'desc' => 'L\'utilisateur peut-il ajouter un fichier disponible aux staffs\'', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_edit_staff' => [ - 'ckey' => 'file_edit_staff', - 'communName' => 'Modifier un fichier des staffs', - 'desc' => 'L\'utilisateur peut-il modifier un fichier des staffs', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_delete_staff' => [ - 'ckey' => 'file_delete_staff', - 'communName' => 'Supprimer un fichier des staffs', - 'desc' => 'L\'utilisateur peut-il supprimer un fichier des staffs', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_see_etamas' => [ - 'ckey' => 'file_see_etamas', - 'communName' => 'Voir les fichiers de l\'ETAMAS', - 'desc' => 'L\'utilisateur peut-il consulter les fichiers de l\'ETAMAS', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_add_etamas' => [ - 'ckey' => 'file_add_etamas', - 'communName' => 'Ajouter un fichier disponible a l\'ETAMAS', - 'desc' => 'L\'utilisateur peut-il ajouter un fichier disponible a l\'ETAMAS', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_edit_etamas' => [ - 'ckey' => 'file_edit_etamas', - 'communName' => 'Modifier un fichier de l\'ETAMAS', - 'desc' => 'L\'utilisateur peut-il modifier un fichier de l\'ETAMAS', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_delete_etmas' => [ - 'ckey' => 'file_delete_staff', - 'communName' => 'Supprimer un fichier de l\'ETAMAS', - 'desc' => 'L\'utilisateur peut-il supprimer un fichier de l\'ETAMAS', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_see_officier' => [ - 'ckey' => 'file_see_officier', - 'communName' => 'Voir les fichiers des officiers', - 'desc' => 'L\'utilisateur peut-il consulter les fichiers des officiers', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_add_officier' => [ - 'ckey' => 'file_add_officier', - 'communName' => 'Ajouter un fichier disponible aux officiers', - 'desc' => 'L\'utilisateur peut-il ajouter un fichier disponible aux officiers', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_edit_officier' => [ - 'ckey' => 'file_edit_officier', - 'communName' => 'Modifier un fichier des officiers', - 'desc' => 'L\'utilisateur peut-il modifier un fichier des officiers', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'file_delete_officier' => [ - 'ckey' => 'file_delete_staff', - 'communName' => 'Supprimer un fichier des officiers', - 'desc' => 'L\'utilisateur peut-il supprimer un fichier des officiers', - 'icon' => 'fa-eye', - 'valeur' => 0 - ] ] ]; diff --git a/app/User.php b/app/User.php index 987a3620..425717ad 100644 --- a/app/User.php +++ b/app/User.php @@ -77,18 +77,7 @@ class User extends Authenticatable public function futureCourses() { - $filterCourse = collect(); - foreach (\Auth::user()->courses as $course) - { - if($course->event) - { - if(date('U',strtotime($course->event->date_begin)) >= date('U')) - { - $filterCourse->push($course); - } - } - } - return $filterCourse; + return \App\Course::allFutureForUser($this->id); } public function routeNotificationForNexmo($notification) diff --git a/database/migrations/2019_08_17_102836_create_courses_table.php b/database/migrations/2019_08_17_102836_create_courses_table.php index 3782007b..0e795d18 100644 --- a/database/migrations/2019_08_17_102836_create_courses_table.php +++ b/database/migrations/2019_08_17_102836_create_courses_table.php @@ -21,6 +21,7 @@ class CreateCoursesTable extends Migration $table->integer('level'); $table->string('location'); $table->text('comment'); + $table->text('comment_officer'); $table->integer('event_id'); $table->string('user_id'); $table->timestamps(); diff --git a/database/migrations/2020_04_06_142322_create_lesson_plans_table.php b/database/migrations/2020_04_06_142322_create_lesson_plans_table.php new file mode 100644 index 00000000..69b95ba6 --- /dev/null +++ b/database/migrations/2020_04_06_142322_create_lesson_plans_table.php @@ -0,0 +1,37 @@ +bigIncrements('id'); + $table->integer('user_id'); + $table->string('file'); + $table->integer('course_id')->nullable(); + $table->text('desc')->nullable(); + $table->text('comment')->nullable(); + $table->boolean('approved')->default(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('lesson_plans'); + } +} diff --git a/public/css/Chart.min.css b/public/css/Chart.min.css new file mode 100644 index 00000000..9dc5ac2e --- /dev/null +++ b/public/css/Chart.min.css @@ -0,0 +1 @@ +@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0} \ No newline at end of file diff --git a/public/css/custom.css b/public/css/custom.css index 4ca0c16e..1eb79b1c 100644 --- a/public/css/custom.css +++ b/public/css/custom.css @@ -1836,4 +1836,8 @@ h2 { .no-hover:hover { background-color: initial; +} + +tfoot > tr { + width: 100%; } \ No newline at end of file diff --git a/public/images/fall-art-red-autumn-leaves-orange-fall-trees-baslee-troutman-baslee-troutman-art-gallery-collections.jpg b/public/images/fall-art-red-autumn-leaves-orange-fall-trees-baslee-troutman-baslee-troutman-art-gallery-collections.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9147ea2c94b8aa3522a46e8e722c33a232267f8a GIT binary patch literal 128092 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

;Jj1QcA^v8@6;W5n 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%0AiT6ib^nnE;i(DH;cZD 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

H0RY>nJcI$)h#pz9%FiOgP8pA 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

u6Np0rE|GAYEA5m?zKe9v5EwA8 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%0AoX@CIYS49hLDj5_AIZjs{^WO*aO6CxYtE&guUE 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�pF>QA>Tbut8I|E4$_~!bz$Nbvg0|%oNCY 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 literal 0 HcmV?d00001 diff --git a/public/images/sidebar.png b/public/images/sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..046f8771ffef7018c1389421318219f4ee65f6f5 GIT binary patch literal 16740 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 LoAZ@tZzTK=NdCJ^ literal 0 HcmV?d00001 diff --git a/public/js/app.js b/public/js/app.js index c041062a..f98ed062 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,4 +1,16 @@ +extendSidebar(); + function navigate(url) { window.location.href = window.location+'/'+url; +} + +function extendSidebar() +{ + let foo = $('.nav-item.active'); + if (foo.attr('parent')) + { + $('#'+foo.attr('parent')).collapse('show'); + $('#link-'+foo.attr('parent')).addClass('active'); + } } \ No newline at end of file diff --git a/public/js/plugins/Chart.min.js b/public/js/plugins/Chart.min.js new file mode 100644 index 00000000..7c16b0d1 --- /dev/null +++ b/public/js/plugins/Chart.min.js @@ -0,0 +1,7 @@ +/*! + * Chart.js v2.9.3 + * https://www.chartjs.org + * (c) 2019 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(function(){try{return require("moment")}catch(t){}}()):"function"==typeof define&&define.amd?define(["require"],(function(t){return e(function(){try{return t("moment")}catch(t){}}())})):(t=t||self).Chart=e(t.moment)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},n=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[e[i]]=i);var a=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var r in a)if(a.hasOwnProperty(r)){if(!("channels"in a[r]))throw new Error("missing channels property: "+r);if(!("labels"in a[r]))throw new Error("missing channel labels property: "+r);if(a[r].labels.length!==a[r].channels)throw new Error("channel and label counts mismatch: "+r);var o=a[r].channels,s=a[r].labels;delete a[r].channels,delete a[r].labels,Object.defineProperty(a[r],"channels",{value:o}),Object.defineProperty(a[r],"labels",{value:s})}a.rgb.hsl=function(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s===o?e=0:i===s?e=(a-r)/l:a===s?e=2+(r-i)/l:r===s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},a.rgb.hsv=function(t){var e,n,i,a,r,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),d=u-Math.min(o,s,l),h=function(t){return(u-t)/6/d+.5};return 0===d?a=r=0:(r=d/u,e=h(o),n=h(s),i=h(l),o===u?a=i-n:s===u?a=1/3+e-i:l===u&&(a=2/3+n-e),a<0?a+=1:a>1&&(a-=1)),[360*a,100*r,100*u]},a.rgb.hwb=function(t){var e=t[0],n=t[1],i=t[2];return[a.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]},a.rgb.cmyk=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]},a.rgb.keyword=function(t){var i=n[t];if(i)return i;var a,r,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],d=(r=t,o=u,Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2));d.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;function i(t){var e=function(){for(var t={},e=Object.keys(n),i=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(i)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:d,getHsla:h,getRgb:function(t){var e=d(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:c,getAlpha:function(t){var e=d(t);if(e)return e[3];if(e=h(t))return e[3];if(e=c(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return"#"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"},percentaString:g,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return b[t.slice(0,3)]}};function d(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(i){a=(i=i[1])[3];for(var r=0;rn?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new y,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},y.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i=0;a--)e.call(n,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-S.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*S.easeInBounce(2*t):.5*S.easeOutBounce(2*t-1)+.5}},C={effects:S};M.easingEffects=S;var P=Math.PI,A=P/180,D=2*P,T=P/2,I=P/4,F=2*P/3,L={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2,i/2),s=e+o,l=n+o,u=e+i-o,d=n+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,i,a=this.animations,r=0;r=n?(V.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},J=V.options.resolve,Q=["push","pop","shift","splice","unshift"];function tt(t,e){var n=t._chartjs;if(n){var i=n.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(Q.forEach((function(e){delete t[e]})),delete t._chartjs)}}var et=function(t,e){this.initialize(t,e)};V.extend(et.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,i=this.getDataset(),a=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!i.xAxisID||(t.xAxisID=i.xAxisID||a.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!i.yAxisID||(t.yAxisID=i.yAxisID||a.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&tt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;na?(r=a/e.innerRadius,t.arc(o,s,e.innerRadius-a,i+r,n-r,!0)):t.arc(o,s,a,i+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function rt(t,e,n){var i="inner"===e.borderAlign;i?(t.lineWidth=2*e.borderWidth,t.lineJoin="round"):(t.lineWidth=e.borderWidth,t.lineJoin="bevel"),n.fullCircles&&function(t,e,n,i){var a,r=n.endAngle;for(i&&(n.endAngle=n.startAngle+it,at(t,n),n.endAngle=r,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=it,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+it,n.startAngle,!0),a=0;as;)a-=it;for(;a=o&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,i="inner"===n.borderAlign?.33:0,a={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/it)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,a.fullCircles){for(a.endAngle=a.startAngle+it,e.beginPath(),e.arc(a.x,a.y,a.outerRadius,a.startAngle,a.endAngle),e.arc(a.x,a.y,a.innerRadius,a.endAngle,a.startAngle,!0),e.closePath(),t=0;tt.x&&(e=vt(e,"left","right")):t.basen?n:i,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>n?n:r,l:l.left||o<0?0:o>e?e:o}}function xt(t,e,n){var i=null===e,a=null===n,r=!(!t||i&&a)&&mt(t);return r&&(i||e>=r.left&&e<=r.right)&&(a||n>=r.top&&n<=r.bottom)}z._set("global",{elements:{rectangle:{backgroundColor:gt,borderColor:gt,borderSkipped:"bottom",borderWidth:0}}});var yt=X.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=mt(t),n=e.right-e.left,i=e.bottom-e.top,a=bt(t,n/2,i/2);return{outer:{x:e.left,y:e.top,w:n,h:i},inner:{x:e.left+a.l,y:e.top+a.t,w:n-a.l-a.r,h:i-a.t-a.b}}}(e),i=n.outer,a=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(i.x,i.y,i.w,i.h),i.w===a.w&&i.h===a.h||(t.save(),t.beginPath(),t.rect(i.x,i.y,i.w,i.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return xt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return pt(n)?xt(n,t,null):xt(n,null,e)},inXRange:function(t){return xt(this._view,t,null)},inYRange:function(t){return xt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return pt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return pt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),_t={},kt=ot,wt=ut,Mt=ft,St=yt;_t.Arc=kt,_t.Line=wt,_t.Point=Mt,_t.Rectangle=St;var Ct=V._deprecated,Pt=V.valueOrDefault;function At(t,e,n){var i,a,r=n.barThickness,o=e.stackCount,s=e.pixels[t],l=V.isNullOrUndef(r)?function(t,e){var n,i,a,r,o=t._length;for(a=1,r=e.length;a0?Math.min(o,Math.abs(i-n)):o,n=i;return o}(e.scale,e.pixels):-1;return V.isNullOrUndef(r)?(i=l*n.categoryPercentage,a=n.barPercentage):(i=r*o,a=1),{chunk:i/o,ratio:a,start:s-i/2}}z._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),z._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Dt=nt.extend({dataElementType:_t.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var t,e,n=this;nt.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Ct("bar chart",e.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),Ct("bar chart",e.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),Ct("bar chart",e.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),Ct("bar chart",n._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),Ct("bar chart",e.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e=0&&p.min>=0?p.min:p.max,y=void 0===p.start?p.end:p.max>=0&&p.min>=0?p.max-p.min:p.min-p.max,_=g.length;if(v||void 0===v&&void 0!==b)for(i=0;i<_&&(a=g[i]).index!==t;++i)a.stack===b&&(r=void 0===(u=h._parseValue(f[a.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(p.min<0&&r<0||p.max>=0&&r>0)&&(x+=r));return o=h.getPixelForValue(x),l=(s=h.getPixelForValue(x+y))-o,void 0!==m&&Math.abs(l)=0&&!c||y<0&&c?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,i){var a="flex"===i.barThickness?function(t,e,n){var i,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t=Ot?-Rt:b<-Ot?Rt:0)+m,y=Math.cos(b),_=Math.sin(b),k=Math.cos(x),w=Math.sin(x),M=b<=0&&x>=0||x>=Rt,S=b<=zt&&x>=zt||x>=Rt+zt,C=b<=-zt&&x>=-zt||x>=Ot+zt,P=b===-Ot||x>=Ot?-1:Math.min(y,y*p,k,k*p),A=C?-1:Math.min(_,_*p,w,w*p),D=M?1:Math.max(y,y*p,k,k*p),T=S?1:Math.max(_,_*p,w,w*p);u=(D-P)/2,d=(T-A)/2,h=-(D+P)/2,c=-(T+A)/2}for(i=0,a=g.length;i0&&!isNaN(t)?Rt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,i,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,i=V.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Lt(n.hoverBackgroundColor,i(n.backgroundColor)),e.borderColor=Lt(n.hoverBorderColor,i(n.borderColor)),e.borderWidth=Lt(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n0&&Vt(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},"x-axis":function(t,e){return ie(t,e,{intersect:!1})},point:function(t,e){return te(t,Jt(e,t))},nearest:function(t,e,n){var i=Jt(e,t);n.axis=n.axis||"xy";var a=ne(n.axis);return ee(t,i,n.intersect,a)},x:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a}}},re=V.extend;function oe(t,e){return V.where(t,(function(t){return t.pos===e}))}function se(t,e){return t.sort((function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function le(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function ue(t,e,n){var i,a,r=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?r.height:r.width,t[n.pos]+=n.size,r.getPadding){var s=r.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(i=e.outerWidth-le(o,t,"left","right"),a=e.outerHeight-le(o,t,"top","bottom"),i!==t.w||a!==t.h)return t.w=i,t.h=a,n.horizontal?i!==t.w:a!==t.h}function de(t,e){var n=e.maxPadding;function i(t){var i={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){i[t]=Math.max(e[t],n[t])})),i}return i(t?["left","right"]:["top","bottom"])}function he(t,e,n){var i,a,r,o,s,l,u=[];for(i=0,a=t.length;idiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&fe.default||fe,me="$chartjs",ve="chartjs-size-monitor",be="chartjs-render-monitor",xe="chartjs-render-animation",ye=["animationstart","webkitAnimationStart"],_e={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function ke(t,e){var n=V.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}var we=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Me(t,e,n){t.addEventListener(e,n,we)}function Se(t,e,n){t.removeEventListener(e,n,we)}function Ce(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function Pe(t){var e=document.createElement("div");return e.className=t||"",e}function Ae(t,e,n){var i,a,r,o,s=t[me]||(t[me]={}),l=s.resizer=function(t){var e=Pe(ve),n=Pe(ve+"-expand"),i=Pe(ve+"-shrink");n.appendChild(Pe()),i.appendChild(Pe()),e.appendChild(n),e.appendChild(i),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var a=function(){e._reset(),t()};return Me(n,"scroll",a.bind(n,"expand")),Me(i,"scroll",a.bind(i,"shrink")),e}((i=function(){if(s.resizer){var i=n.options.maintainAspectRatio&&t.parentNode,a=i?i.clientWidth:0;e(Ce("resize",n)),i&&i.clientWidth0){var r=t[0];r.label?n=r.label:r.xLabel?n=r.xLabel:a>0&&r.index-1?t.split("\n"):t}function We(t){var e=z.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Re(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Re(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Re(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Re(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Re(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Re(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Re(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Re(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Re(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ve(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function He(t){return Be([],Ee(t))}var je=X.extend({initialize:function(){this._model=We(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,i=n.beforeTitle.apply(t,arguments),a=n.title.apply(t,arguments),r=n.afterTitle.apply(t,arguments),o=[];return o=Be(o,Ee(i)),o=Be(o,Ee(a)),o=Be(o,Ee(r))},getBeforeBody:function(){return He(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return V.each(t,(function(t){var r={before:[],lines:[],after:[]};Be(r.before,Ee(i.beforeLabel.call(n,t,e))),Be(r.lines,i.label.call(n,t,e)),Be(r.after,Ee(i.afterLabel.call(n,t,e))),a.push(r)})),a},getAfterBody:function(){return He(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),i=e.footer.apply(t,arguments),a=e.afterFooter.apply(t,arguments),r=[];return r=Be(r,Ee(n)),r=Be(r,Ee(i)),r=Be(r,Ee(a))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=We(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var _=[],k=[];y=Ne[c.position].call(h,p,h._eventPosition);var w=[];for(e=0,n=p.length;ei.width&&(a=i.width-e.width),a<0&&(a=0)),"top"===d?r+=h:r-="bottom"===d?e.height+h:e.height/2,"center"===d?"left"===u?a+=h:"right"===u&&(a-=h):"left"===u?a-=c:"right"===u&&(a+=c),{x:a,y:r}}(g,x,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.yl.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+p)+u,r=i,o=s-u,l=s+u);else if("left"===h?(i=(a=f+d+u)-u,r=a+u):"right"===h?(i=(a=f+p-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+m)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var i,a,r,o=e.title,s=o.length;if(s){var l=ze(e.rtl,e.x,e.width);for(t.x=Ve(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline="middle",i=e.titleFontSize,a=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=V.fontString(i,e._titleFontStyle,e._titleFontFamily),r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,V.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),V.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!V.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),qe=Ne,Ue=je;Ue.positioners=qe;var Ye=V.valueOrDefault;function Ge(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?V.merge(e[t][a],[Oe.getScaleDefaults(r),o]):V.merge(e[t][a],o)}else V._merger(t,e,n,i)}})}function Xe(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||{},r=n[t];"scales"===t?e[t]=Ge(a,r):"scale"===t?e[t]=V.merge(a,[Oe.getScaleDefaults(r.type),r]):V._merger(t,e,n,i)}})}function Ke(t){var e=t.options;V.each(t.scales,(function(e){ge.removeBox(t,e)})),e=Xe(z.global,z[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ze(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(V.findIndex(t,a)>=0);return i}function $e(t){return"top"===t||"bottom"===t}function Je(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}z._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Qe=function(t,e){return this.construct(t,e),this};V.extend(Qe.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Xe(z.global,z[t.type],t.options||{}),t}(e);var i=Fe.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=V.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,Qe.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Le.notify(t,"beforeInit"),V.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,"afterInit"),t},clear:function(){return V.canvas.clear(this),this},stop:function(){return $.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(V.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:V.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+"px",i.style.height=o+"px",V.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;V.each(e.xAxes,(function(t,n){t.id||(t.id=Ze(e.xAxes,"x-axis-",n))})),V.each(e.yAxes,(function(t,n){t.id||(t.id=Ze(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&i.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),V.each(i,(function(e){var i=e.options,r=i.id,o=Ye(i.type,e.dtype);$e(i.position)!==$e(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Oe.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),V.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Oe.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;--n)this.drawDataset(e[n],t);Le.notify(this,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Le.notify(this,"beforeDatasetDraw",[n])&&(t.controller.draw(e),Le.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Le.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),Le.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ae.modes.single(this,t)},getElementsAtEvent:function(t){return ae.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ae.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=ae.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return ae.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=V.log10(Math.abs(i)),r="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=V.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toExponential(s)}else{var l=-1*Math.floor(a);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(V.log10(t)));return 0===t?"0":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():""}}},on=V.isArray,sn=V.isNullOrUndef,ln=V.valueOrDefault,un=V.valueAtIndexOrDefault;function dn(t,e,n){var i,a=t.getTicks().length,r=Math.min(e,a-1),o=t.getPixelForTick(r),s=t._startPixel,l=t._endPixel;if(!(n&&(i=1===a?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(r-1))/2,(o+=rl+1e-6)))return o}function hn(t,e,n,i){var a,r,o,s,l,u,d,h,c,f,g,p,m,v=n.length,b=[],x=[],y=[];for(a=0;ae){for(n=0;n=c||d<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,i=Math.min(s.maxWidth,s.chart.width-e),e+6>(a=l.offset?s.maxWidth/d:i/(d-1))&&(a=i/(d-(l.offset?.5:1)),r=s.maxHeight-cn(l.gridLines)-u.padding-fn(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=V.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/a,1)),Math.asin(Math.min(r/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(c,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){V.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){V.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=t._isVisible(),l="bottom"===i.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=cn(o)+fn(r)),u?s&&(e.height=cn(o)+fn(r)):e.height=t.maxHeight,a.display&&s){var d=pn(a),h=t._getLabelSizes(),c=h.first,f=h.last,g=h.widest,p=h.highest,m=.4*d.minor.lineHeight,v=a.padding;if(u){var b=0!==t.labelRotation,x=V.toRadians(t.labelRotation),y=Math.cos(x),_=Math.sin(x),k=_*g.width+y*(p.height-(b?p.offset:0))+(b?0:m);e.height=Math.min(t.maxHeight,e.height+k+v);var w,M,S=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(t.getTicks().length-1);b?(w=l?y*c.width+_*c.offset:_*(c.height-c.offset),M=l?_*(f.height-f.offset):y*f.width+_*f.offset):(w=c.width/2,M=f.width/2),t.paddingLeft=Math.max((w-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-C)*t.width/(t.width-C),0)+3}else{var P=a.mirror?0:g.width+v+m;e.width=Math.min(t.maxWidth,e.width+P),t.paddingTop=c.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){V.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(sn(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,i,a=this;for(a.ticks=t.map((function(t){return t.value})),a.beforeTickToLabelConversion(),e=a.convertTicksToLabels(t)||a.ticks,a.afterTickToLabelConversion(),n=0,i=t.length;nn-1?null:this.getPixelForDecimal(t*i+(e?i/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,a,r=this.options.ticks,o=this._length,s=r.maxTicksLimit||o/this._tickSize()+1,l=r.major.enabled?function(t){var e,n,i=[];for(e=0,n=t.length;es)return function(t,e,n){var i,a,r=0,o=e[0];for(n=Math.ceil(n),i=0;iu)return r;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e1?(h-d)/(u-1):null,vn(t,i,V.isNullOrUndef(a)?0:d-a,d),vn(t,i,h,V.isNullOrUndef(a)?t.length:h+a),mn(t)}return vn(t,i),mn(t)},_tickSize:function(){var t=this.options.ticks,e=V.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),i=Math.abs(Math.sin(e)),a=this._getLabelSizes(),r=t.autoSkipPadding||0,o=a?a.widest.width+r:0,s=a?a.highest.height+r:0;return this.isHorizontal()?s*n>o*i?o/n:s/i:s*i=0&&(o=t),void 0!==r&&(t=n.indexOf(r))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;xn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var i,a,r,o=this;return yn(e)||yn(n)||(t=o.chart.data.datasets[n].data[e]),yn(t)||(i=o.isHorizontal()?t.x:t.y),(void 0!==i||void 0!==t&&isNaN(e))&&(a=o._getLabels(),t=V.valueOrDefault(i,t),e=-1!==(r=a.indexOf(t))?r:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),kn={position:"bottom"};_n._defaults=kn;var wn=V.noop,Mn=V.isNullOrUndef;var Sn=xn.extend({getRightValue:function(t){return"string"==typeof t?+t:xn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=V.sign(t.min),i=V.sign(t.max);n<0&&i<0?t.max=0:n>0&&i>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,i=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:wn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:V.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=V.niceNum((g-f)/u/l)*l;if(p<1e-14&&Mn(d)&&Mn(h))return[f,g];(r=Math.ceil(g/p)-Math.floor(f/p))>u&&(p=V.niceNum(r*p/u/l)*l),s||Mn(c)?n=Math.pow(10,V._decimalPlaces(p)):(n=Math.pow(10,c),p=Math.ceil(p*n)/n),i=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!Mn(d)&&V.almostWhole(d/p,p/1e3)&&(i=d),!Mn(h)&&V.almostWhole(h/p,p/1e3)&&(a=h)),r=(a-i)/p,r=V.almostEquals(r,Math.round(r),p/1e3)?Math.round(r):Math.ceil(r),i=Math.round(i*n)/n,a=Math.round(a*n)/n,o.push(Mn(d)?i:d);for(var m=1;me.length-1?null:this.getPixelForValue(e[t])}}),Tn=Cn;Dn._defaults=Tn;var In=V.valueOrDefault,Fn=V.math.log10;var Ln={position:"left",ticks:{callback:rn.formatters.logarithmic}};function On(t,e){return V.isFinite(t)&&t>=0?t:e}var Rn=xn.extend({determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.options,l=o.chart,u=l.data.datasets,d=o.isHorizontal();function h(t){return d?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var c=s.stacked;if(void 0===c)for(t=0;t0){var e=V.min(t),n=V.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(Fn(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:On(e.min),max:On(e.max)},a=t.ticks=function(t,e){var n,i,a=[],r=In(t.min,Math.pow(10,Math.floor(Fn(e.min)))),o=Math.floor(Fn(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(n=Math.floor(Fn(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(r),r=i*Math.pow(10,n)):(n=Math.floor(Fn(r)),i=Math.floor(r/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(r),10===++i&&(i=1,l=++n>=0?1:l),r=Math.round(i*Math.pow(10,n)*l)/l}while(ne.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(Fn(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;xn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=In(t.options.ticks.fontSize,z.global.defaultFontSize)/t._length),t._startValue=Fn(e),t._valueOffset=n,t._valueRange=(Fn(t.max)-Fn(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(Fn(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),zn=Ln;Rn._defaults=zn;var Nn=V.valueOrDefault,Bn=V.valueAtIndexOrDefault,En=V.options.resolve,Wn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:rn.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Vn(t){var e=t.ticks;return e.display&&t.display?Nn(e.fontSize,z.global.defaultFontSize)+2*e.backdropPaddingY:0}function Hn(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:ta?{start:e-n,end:e}:{start:e,end:e+n}}function jn(t){return 0===t||180===t?"center":t<180?"left":"right"}function qn(t,e,n,i){var a,r,o=n.y+i/2;if(V.isArray(e))for(a=0,r=e.length;a270||t<90)&&(n.y-=e.h)}function Yn(t){return V.isNumber(t)?t:0}var Gn=Sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Vn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;V.each(e.data.datasets,(function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);V.each(a.data,(function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Vn(this.options))},convertTicksToLabels:function(){var t=this;Sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=V.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:""}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,i,a=V.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=t.chart.data.labels.length;for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(i.height-i.paddingTop),0)/Math.cos(n.b);a=Yn(a),r=Yn(r),o=Yn(o),s=Yn(s),i.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-a.paddingTop-i-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(V.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,i=this,a=i.ctx,r=i.options,o=r.gridLines,s=r.angleLines,l=Nn(s.lineWidth,o.lineWidth),u=Nn(s.color,o.color);if(r.pointLabels.display&&function(t){var e=t.ctx,n=t.options,i=n.pointLabels,a=Vn(n),r=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=V.options._parseFont(i);e.save(),e.font=o.string,e.textBaseline="middle";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?a/2:0,u=t.getPointPosition(s,r+l+5),d=Bn(i.fontColor,s,z.global.defaultFontColor);e.fillStyle=d;var h=t.getIndexAngle(s),c=V.toDegrees(h);e.textAlign=jn(c),Un(c,t._pointLabelSizes[s],u),qn(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(i),o.display&&V.each(i.ticks,(function(t,n){0!==n&&(e=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),function(t,e,n,i){var a,r=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=Bn(e.color,i-1),u=Bn(e.lineWidth,i-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{a=t.getPointPosition(0,n),r.moveTo(a.x,a.y);for(var d=1;d=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=V.options._parseFont(n),s=Nn(n.fontColor,z.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",V.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:V.noop}),Xn=Wn;Gn._defaults=Xn;var Kn=V._deprecated,Zn=V.options.resolve,$n=V.valueOrDefault,Jn=Number.MIN_SAFE_INTEGER||-9007199254740991,Qn=Number.MAX_SAFE_INTEGER||9007199254740991,ti={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ei=Object.keys(ti);function ni(t,e){return t-e}function ii(t){return V.valueOrDefault(t.time.min,t.ticks.min)}function ai(t){return V.valueOrDefault(t.time.max,t.ticks.max)}function ri(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function oi(t,e){var n=t._adapter,i=t.options.time,a=i.parser,r=a||i.format,o=e;return"function"==typeof a&&(o=a(o)),V.isFinite(o)||(o="string"==typeof r?n.parse(o,r):n.parse(o)),null!==o?+o:(a||"function"!=typeof r||(o=r(e),V.isFinite(o)||(o=n.parse(o))),o)}function si(t,e){if(V.isNullOrUndef(e))return null;var n=t.options.time,i=oi(t,t.getRightValue(e));return null===i?i:(n.round&&(i=+t._adapter.startOf(i,n.round)),i)}function li(t,e,n,i){var a,r,o,s=ei.length;for(a=ei.indexOf(t);a=0&&(e[r].major=!0);return e}(t,r,o,n):r}var di=xn.extend({initialize:function(){this.mergeTicksOptions(),xn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),i=t._adapter=new an._date(e.adapters.date);return Kn("time scale",n.format,"time.format","time.parser"),Kn("time scale",n.min,"time.min","ticks.min"),Kn("time scale",n.max,"time.max","ticks.max"),V.mergeIf(n.displayFormats,i.formats()),xn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),xn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o,s=this,l=s.chart,u=s._adapter,d=s.options,h=d.time.unit||"day",c=Qn,f=Jn,g=[],p=[],m=[],v=s._getLabels();for(t=0,n=v.length;t1?function(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e1e5*u)throw e+" and "+n+" are too far apart with stepSize of "+u+" "+l;for(a=h;a=a&&n<=r&&d.push(n);return i.min=a,i.max=r,i._unit=l.unit||(s.autoSkip?li(l.minUnit,i.min,i.max,h):function(t,e,n,i,a){var r,o;for(r=ei.length-1;r>=ei.indexOf(n);r--)if(o=ei[r],ti[o].common&&t._adapter.diff(a,i,o)>=e-1)return o;return ei[n?ei.indexOf(n):0]}(i,d.length,l.minUnit,i.min,i.max)),i._majorUnit=s.major.enabled&&"year"!==i._unit?function(t){for(var e=ei.indexOf(t)+1,n=ei.length;ee&&s=0&&t0?s:1}}),hi={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};di._defaults=hi;var ci={category:_n,linear:Dn,logarithmic:Rn,radialLinear:Gn,time:di},fi={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};an._date.override("function"==typeof t?{_id:"moment",formats:function(){return fi},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,i){return t(e).add(n,i).valueOf()},diff:function(e,n,i){return t(e).diff(t(n),i)},startOf:function(e,n,i){return e=t(e),"isoWeek"===n?e.isoWeekday(i).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),z._set("global",{plugins:{filler:{propagate:!0}}});var gi={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function mi(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,i,a,r,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,d=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,i=o.getPointPositionForValue(0,e),a=0;a0;--r)V.canvas.lineTo(t,n[r],n[r-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),r=a-1;r>0;--r)t.arc(o,s,l,n[r].angle,n[r-1].angle,!0)}}function _i(t,e,n,i,a,r){var o,s,l,u,d,h,c,f,g=e.length,p=i.spanGaps,m=[],v=[],b=0,x=0;for(t.beginPath(),o=0,s=g;o=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||z.global.defaultColor,o&&s&&r.length&&(V.canvas.clipArea(u,t.chartArea),_i(u,r,o,a,s,i._loop),V.canvas.unclipArea(u)))}},wi=V.rtl.getRtlAdapter,Mi=V.noop,Si=V.valueOrDefault;function Ci(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}z._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement("ul"),r=t.data.datasets;for(a.setAttribute("class",t.id+"-legend"),e=0,n=r.length;el.width)&&(h+=o+n.padding,d[d.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:i,height:o},d[d.length-1]+=i+n.padding})),l.height+=h}else{var c=n.padding,f=t.columnWidths=[],g=t.columnHeights=[],p=n.padding,m=0,v=0;V.each(t.legendItems,(function(t,e){var i=Ci(n,o)+o/2+a.measureText(t.text).width;e>0&&v+o+2*c>l.height&&(p+=m+n.padding,f.push(m),g.push(v),m=0,v=0),m=Math.max(m,i),v+=o+c,s[e]={left:0,top:0,width:i,height:o}})),p+=m,f.push(m),g.push(v),l.width+=p}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:Mi,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,i=z.global,a=i.defaultColor,r=i.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var d,h=wi(e.rtl,t.left,t.minSize.width),c=t.ctx,f=Si(n.fontColor,i.defaultFontColor),g=V.options._parseFont(n),p=g.size;c.textAlign=h.textAlign("left"),c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=g.string;var m=Ci(n,p),v=t.legendHitBoxes,b=function(t,i){switch(e.align){case"start":return n.padding;case"end":return t-i;default:return(t-i+n.padding)/2}},x=t.isHorizontal();d=x?{x:t.left+b(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+b(o,s[0]),line:0},V.rtl.overrideTextDirection(t.ctx,e.textDirection);var y=p+n.padding;V.each(t.legendItems,(function(e,i){var f=c.measureText(e.text).width,g=m+p/2+f,_=d.x,k=d.y;h.setWidth(t.minSize.width),x?i>0&&_+g+n.padding>t.left+t.minSize.width&&(k=d.y+=y,d.line++,_=d.x=t.left+b(l,u[d.line])):i>0&&k+y>t.top+t.minSize.height&&(_=d.x=_+t.columnWidths[d.line]+n.padding,d.line++,k=d.y=t.top+b(o,s[d.line]));var w=h.x(_);!function(t,e,i){if(!(isNaN(m)||m<=0)){c.save();var o=Si(i.lineWidth,r.borderWidth);if(c.fillStyle=Si(i.fillStyle,a),c.lineCap=Si(i.lineCap,r.borderCapStyle),c.lineDashOffset=Si(i.lineDashOffset,r.borderDashOffset),c.lineJoin=Si(i.lineJoin,r.borderJoinStyle),c.lineWidth=o,c.strokeStyle=Si(i.strokeStyle,a),c.setLineDash&&c.setLineDash(Si(i.lineDash,r.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+p/2;V.canvas.drawPoint(c,i.pointStyle,s,l,u,i.rotation)}else c.fillRect(h.leftForLtr(t,m),e,m,p),0!==o&&c.strokeRect(h.leftForLtr(t,m),e,m,p);c.restore()}}(w,k,e),v[i].left=h.leftForLtr(w,v[i].width),v[i].top=k,function(t,e,n,i){var a=p/2,r=h.xPlus(t,m+a),o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(h.xPlus(r,i),o),c.stroke())}(w,k,e,f),x?d.x+=g+n.padding:d.y+=y})),V.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,i,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,n=0;n=(i=a[n]).left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height)return r.legendItems[n];return null},handleEvent:function(t){var e,n=this,i=n.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!i.onHover&&!i.onLeave)return}else{if("click"!==a)return;if(!i.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===a?e&&i.onClick&&i.onClick.call(n,t.native,e):(i.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),i.onHover&&e&&i.onHover.call(n,t.native,e))}});function Ai(t,e){var n=new Pi({ctx:t.ctx,options:e,chart:t});ge.configure(t,n,e),ge.addBox(t,n),t.legend=n}var Di={id:"legend",_element:Pi,beforeInit:function(t){var e=t.options.legend;e&&Ai(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(V.mergeIf(e,z.global.legend),n?(ge.configure(t,n,e),n.options=e):Ai(t,e)):n&&(ge.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Ti=V.noop;z._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Ii=X.extend({initialize:function(t){V.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Ti,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:Ti,beforeSetDimensions:Ti,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Ti,beforeBuildLabels:Ti,buildLabels:Ti,afterBuildLabels:Ti,beforeFit:Ti,fit:function(){var t,e=this,n=e.options,i=e.minSize={},a=e.isHorizontal();n.display?(t=(V.isArray(n.text)?n.text.length:1)*V.options._parseFont(n).lineHeight+2*n.padding,e.width=i.width=a?e.maxWidth:t,e.height=i.height=a?t:e.maxHeight):e.width=i.width=e.height=i.height=0},afterFit:Ti,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var i,a,r,o=V.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=V.valueOrDefault(n.fontColor,z.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,i=f-h):(a="left"===n.position?h+l:f-l,r=d+(c-d)/2,i=c-d,u=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(V.isArray(g))for(var p=0,m=0;m=0;i--){var a=t[i];if(e(a))return a}},V.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},V.almostEquals=function(t,e,n){return Math.abs(t-e)=t},V.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},V.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},V.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},V.toRadians=function(t){return t*(Math.PI/180)},V.toDegrees=function(t){return t*(180/Math.PI)},V._decimalPlaces=function(t){if(V.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},V.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},V.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},V.aliasPixel=function(t){return t%2==0?0:.5},V._alignPixel=function(t,e,n){var i=t.currentDevicePixelRatio,a=n/2;return Math.round((e-a)*i)/i+a},V.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},V.EPSILON=Number.EPSILON||1e-14,V.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},V.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},V.niceNum=function(t,e){var n=Math.floor(V.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},V.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},V.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var l=parseFloat(V.getStyle(r,"padding-left")),u=parseFloat(V.getStyle(r,"padding-top")),d=parseFloat(V.getStyle(r,"padding-right")),h=parseFloat(V.getStyle(r,"padding-bottom")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},V.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},V.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},V._calculatePadding=function(t,e,n){return(e=V.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},V._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},V.getMaximumWidth=function(t){var e=V._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-V._calculatePadding(e,"padding-left",n)-V._calculatePadding(e,"padding-right",n),a=V.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},V.getMaximumHeight=function(t){var e=V._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-V._calculatePadding(e,"padding-top",n)-V._calculatePadding(e,"padding-bottom",n),a=V.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},V.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},V.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},V.fontString=function(t,e,n){return e+" "+t+"px "+n},V.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var o,s,l,u,d,h=0,c=n.length;for(o=0;on.length){for(o=0;oi&&(i=r),i},V.numberOfLabelLines=function(t){var e=1;return V.each(t,(function(t){V.isArray(t)&&t.length>e&&(e=t.length)})),e},V.color=k?function(t){return t instanceof CanvasGradient&&(t=z.global.defaultColor),k(t)}:function(t){return console.error("Color.js not found!"),t},V.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:V.color(t).saturate(.5).darken(.1).rgbString()}}(),tn._adapters=an,tn.Animation=Z,tn.animationService=$,tn.controllers=$t,tn.DatasetController=nt,tn.defaults=z,tn.Element=X,tn.elements=_t,tn.Interaction=ae,tn.layouts=ge,tn.platform=Fe,tn.plugins=Le,tn.Scale=xn,tn.scaleService=Oe,tn.Ticks=rn,tn.Tooltip=Ue,tn.helpers.each(ci,(function(t,e){tn.scaleService.registerScaleType(e,t,t._defaults)})),Li)Li.hasOwnProperty(Ni)&&tn.plugins.register(Li[Ni]);tn.platform.initialize();var Bi=tn;return"undefined"!=typeof window&&(window.Chart=tn),tn.Chart=tn,tn.Legend=Li.legend._element,tn.Title=Li.title._element,tn.pluginService=tn.plugins,tn.PluginBase=tn.Element.extend({}),tn.canvasHelpers=tn.helpers.canvas,tn.layoutService=tn.layouts,tn.LinearScaleBase=Sn,tn.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){tn[t]=function(e,n){return new tn(e,tn.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Bi})); diff --git a/public/js/plugins/chartist.min.js b/public/js/plugins/chartist.min.js deleted file mode 100644 index 7a8672c7..00000000 --- a/public/js/plugins/chartist.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/* Chartist.js 0.11.0 - * Copyright © 2017 Gion Kunz - * Free to use under either the WTFPL license or the MIT license. - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT - */ - -!function(a,b){"function"==typeof define&&define.amd?define("Chartist",[],function(){return a.Chartist=b()}):"object"==typeof module&&module.exports?module.exports=b():a.Chartist=b()}(this,function(){var a={version:"0.11.0"};return function(a,b,c){"use strict";c.namespaces={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",ct:"http://gionkunz.github.com/chartist-js/ct"},c.noop=function(a){return a},c.alphaNumerate=function(a){return String.fromCharCode(97+a%26)},c.extend=function(a){var b,d,e;for(a=a||{},b=1;b":">",'"':""","'":"'"},c.serialize=function(a){return null===a||void 0===a?a:("number"==typeof a?a=""+a:"object"==typeof a&&(a=JSON.stringify({data:a})),Object.keys(c.escapingMap).reduce(function(a,b){return c.replaceAll(a,b,c.escapingMap[b])},a))},c.deserialize=function(a){if("string"!=typeof a)return a;a=Object.keys(c.escapingMap).reduce(function(a,b){return c.replaceAll(a,c.escapingMap[b],b)},a);try{a=JSON.parse(a),a=void 0!==a.data?a.data:a}catch(b){}return a},c.createSvg=function(a,b,d,e){var f;return b=b||"100%",d=d||"100%",Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function(a){return a.getAttributeNS(c.namespaces.xmlns,"ct")}).forEach(function(b){a.removeChild(b)}),f=new c.Svg("svg").attr({width:b,height:d}).addClass(e),f._node.style.width=b,f._node.style.height=d,a.appendChild(f._node),f},c.normalizeData=function(a,b,d){var e,f={raw:a,normalized:{}};return f.normalized.series=c.getDataArray({series:a.series||[]},b,d),e=f.normalized.series.every(function(a){return a instanceof Array})?Math.max.apply(null,f.normalized.series.map(function(a){return a.length})):f.normalized.series.length,f.normalized.labels=(a.labels||[]).slice(),Array.prototype.push.apply(f.normalized.labels,c.times(Math.max(0,e-f.normalized.labels.length)).map(function(){return""})),b&&c.reverseData(f.normalized),f},c.safeHasProperty=function(a,b){return null!==a&&"object"==typeof a&&a.hasOwnProperty(b)},c.isDataHoleValue=function(a){return null===a||void 0===a||"number"==typeof a&&isNaN(a)},c.reverseData=function(a){a.labels.reverse(),a.series.reverse();for(var b=0;bf.high&&(f.high=c),h&&c0?f.low=0:(f.high=1,f.low=0)),f},c.isNumeric=function(a){return null!==a&&isFinite(a)},c.isFalseyButZero=function(a){return!a&&0!==a},c.getNumberOrUndefined=function(a){return c.isNumeric(a)?+a:void 0},c.isMultiValue=function(a){return"object"==typeof a&&("x"in a||"y"in a)},c.getMultiValue=function(a,b){return c.isMultiValue(a)?c.getNumberOrUndefined(a[b||"y"]):c.getNumberOrUndefined(a)},c.rho=function(a){function b(a,c){return a%c===0?c:b(c,a%c)}function c(a){return a*a+1}if(1===a)return a;var d,e=2,f=2;if(a%2===0)return 2;do e=c(e)%a,f=c(c(f))%a,d=b(Math.abs(e-f),a);while(1===d);return d},c.getBounds=function(a,b,d,e){function f(a,b){return a===(a+=b)&&(a*=1+(b>0?o:-o)),a}var g,h,i,j=0,k={high:b.high,low:b.low};k.valueRange=k.high-k.low,k.oom=c.orderOfMagnitude(k.valueRange),k.step=Math.pow(10,k.oom),k.min=Math.floor(k.low/k.step)*k.step,k.max=Math.ceil(k.high/k.step)*k.step,k.range=k.max-k.min,k.numberOfSteps=Math.round(k.range/k.step);var l=c.projectLength(a,k.step,k),m=l=d)k.step=1;else if(e&&n=d)k.step=n;else for(;;){if(m&&c.projectLength(a,k.step,k)<=d)k.step*=2;else{if(m||!(c.projectLength(a,k.step/2,k)>=d))break;if(k.step/=2,e&&k.step%1!==0){k.step*=2;break}}if(j++>1e3)throw new Error("Exceeded maximum number of iterations while optimizing scale step!")}var o=2.221e-16;for(k.step=Math.max(k.step,o),h=k.min,i=k.max;h+k.step<=k.low;)h=f(h,k.step);for(;i-k.step>=k.high;)i=f(i,-k.step);k.min=h,k.max=i,k.range=k.max-k.min;var p=[];for(g=k.min;g<=k.max;g=f(g,k.step)){var q=c.roundWithPrecision(g);q!==p[p.length-1]&&p.push(q)}return k.values=p,k},c.polarToCartesian=function(a,b,c,d){var e=(d-90)*Math.PI/180;return{x:a+c*Math.cos(e),y:b+c*Math.sin(e)}},c.createChartRect=function(a,b,d){var e=!(!b.axisX&&!b.axisY),f=e?b.axisY.offset:0,g=e?b.axisX.offset:0,h=a.width()||c.quantity(b.width).value||0,i=a.height()||c.quantity(b.height).value||0,j=c.normalizePadding(b.chartPadding,d);h=Math.max(h,f+j.left+j.right),i=Math.max(i,g+j.top+j.bottom);var k={padding:j,width:function(){return this.x2-this.x1},height:function(){return this.y1-this.y2}};return e?("start"===b.axisX.position?(k.y2=j.top+g,k.y1=Math.max(i-j.bottom,k.y2+1)):(k.y2=j.top,k.y1=Math.max(i-j.bottom-g,k.y2+1)),"start"===b.axisY.position?(k.x1=j.left+f,k.x2=Math.max(h-j.right,k.x1+1)):(k.x1=j.left,k.x2=Math.max(h-j.right-f,k.x1+1))):(k.x1=j.left,k.x2=Math.max(h-j.right,k.x1+1),k.y2=j.top,k.y1=Math.max(i-j.bottom,k.y2+1)),k},c.createGrid=function(a,b,d,e,f,g,h,i){var j={};j[d.units.pos+"1"]=a,j[d.units.pos+"2"]=a,j[d.counterUnits.pos+"1"]=e,j[d.counterUnits.pos+"2"]=e+f;var k=g.elem("line",j,h.join(" "));i.emit("draw",c.extend({type:"grid",axis:d,index:b,group:g,element:k},j))},c.createGridBackground=function(a,b,c,d){var e=a.elem("rect",{x:b.x1,y:b.y2,width:b.width(),height:b.height()},c,!0);d.emit("draw",{type:"gridBackground",group:a,element:e})},c.createLabel=function(a,d,e,f,g,h,i,j,k,l,m){var n,o={};if(o[g.units.pos]=a+i[g.units.pos],o[g.counterUnits.pos]=i[g.counterUnits.pos],o[g.units.len]=d,o[g.counterUnits.len]=Math.max(0,h-10),l){var p=b.createElement("span");p.className=k.join(" "),p.setAttribute("xmlns",c.namespaces.xhtml),p.innerText=f[e],p.style[g.units.len]=Math.round(o[g.units.len])+"px",p.style[g.counterUnits.len]=Math.round(o[g.counterUnits.len])+"px",n=j.foreignObject(p,c.extend({style:"overflow: visible;"},o))}else n=j.elem("text",o,k.join(" ")).text(f[e]);m.emit("draw",c.extend({type:"label",axis:g,index:e,group:j,element:n,text:f[e]},o))},c.getSeriesOption=function(a,b,c){if(a.name&&b.series&&b.series[a.name]){var d=b.series[a.name];return d.hasOwnProperty(c)?d[c]:b[c]}return b[c]},c.optionsProvider=function(b,d,e){function f(b){var f=h;if(h=c.extend({},j),d)for(i=0;i=2&&a[h]<=a[h-2]&&(g=!0),g&&(f.push({pathCoordinates:[],valueData:[]}),g=!1),f[f.length-1].pathCoordinates.push(a[h],a[h+1]),f[f.length-1].valueData.push(b[h/2]));return f}}(window,document,a),function(a,b,c){"use strict";c.Interpolation={},c.Interpolation.none=function(a){var b={fillHoles:!1};return a=c.extend({},b,a),function(b,d){for(var e=new c.Svg.Path,f=!0,g=0;g1){var i=[];return h.forEach(function(a){i.push(f(a.pathCoordinates,a.valueData))}),c.Svg.Path.join(i)}if(b=h[0].pathCoordinates,g=h[0].valueData,b.length<=4)return c.Interpolation.none()(b,g);for(var j,k=(new c.Svg.Path).move(b[0],b[1],!1,g[0]),l=0,m=b.length;m-2*!j>l;l+=2){var n=[{x:+b[l-2],y:+b[l-1]},{x:+b[l],y:+b[l+1]},{x:+b[l+2],y:+b[l+3]},{x:+b[l+4],y:+b[l+5]}];j?l?m-4===l?n[3]={x:+b[0],y:+b[1]}:m-2===l&&(n[2]={x:+b[0],y:+b[1]},n[3]={x:+b[2],y:+b[3]}):n[0]={x:+b[m-2],y:+b[m-1]}:m-4===l?n[3]=n[2]:l||(n[0]={x:+b[l],y:+b[l+1]}),k.curve(d*(-n[0].x+6*n[1].x+n[2].x)/6+e*n[2].x,d*(-n[0].y+6*n[1].y+n[2].y)/6+e*n[2].y,d*(n[1].x+6*n[2].x-n[3].x)/6+e*n[2].x,d*(n[1].y+6*n[2].y-n[3].y)/6+e*n[2].y,n[2].x,n[2].y,!1,g[(l+2)/2])}return k}return c.Interpolation.none()([])}},c.Interpolation.monotoneCubic=function(a){var b={fillHoles:!1};return a=c.extend({},b,a),function d(b,e){var f=c.splitIntoSegments(b,e,{fillHoles:a.fillHoles,increasingX:!0});if(f.length){if(f.length>1){var g=[];return f.forEach(function(a){g.push(d(a.pathCoordinates,a.valueData))}),c.Svg.Path.join(g)}if(b=f[0].pathCoordinates,e=f[0].valueData,b.length<=4)return c.Interpolation.none()(b,e);var h,i,j=[],k=[],l=b.length/2,m=[],n=[],o=[],p=[];for(h=0;h0!=n[h]>0?m[h]=0:(m[h]=3*(p[h-1]+p[h])/((2*p[h]+p[h-1])/n[h-1]+(p[h]+2*p[h-1])/n[h]),isFinite(m[h])||(m[h]=0));for(i=(new c.Svg.Path).move(j[0],k[0],!1,e[0]),h=0;h1}).map(function(a){var b=a.pathElements[0],c=a.pathElements[a.pathElements.length-1];return a.clone(!0).position(0).remove(1).move(b.x,r).line(b.x,b.y).position(a.pathElements.length+1).line(c.x,r)}).forEach(function(c){var h=i.elem("path",{d:c.stringify()},a.classNames.area,!0);this.eventEmitter.emit("draw",{type:"area",values:b.normalized.series[g],path:c.clone(),series:f,seriesIndex:g,axisX:d,axisY:e,chartRect:j,index:g,group:i,element:h})}.bind(this))}}.bind(this)),this.eventEmitter.emit("created",{bounds:e.bounds,chartRect:j,axisX:d,axisY:e,svg:this.svg,options:a})}function e(a,b,d,e){c.Line["super"].constructor.call(this,a,b,f,c.extend({},f,d),e)}var f={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,type:void 0},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,type:void 0,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,showLine:!0,showPoint:!0,showArea:!1,areaBase:0,lineSmooth:!0,showGridBackground:!1,low:void 0,high:void 0,chartPadding:{top:15,right:15,bottom:5,left:10},fullWidth:!1,reverseData:!1,classNames:{chart:"ct-chart-line",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",line:"ct-line",point:"ct-point",area:"ct-area",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};c.Line=c.Base.extend({constructor:e,createChart:d})}(window,document,a),function(a,b,c){"use strict";function d(a){var b,d;a.distributeSeries?(b=c.normalizeData(this.data,a.reverseData,a.horizontalBars?"x":"y"),b.normalized.series=b.normalized.series.map(function(a){return[a]})):b=c.normalizeData(this.data,a.reverseData,a.horizontalBars?"x":"y"),this.svg=c.createSvg(this.container,a.width,a.height,a.classNames.chart+(a.horizontalBars?" "+a.classNames.horizontalBars:""));var e=this.svg.elem("g").addClass(a.classNames.gridGroup),g=this.svg.elem("g"),h=this.svg.elem("g").addClass(a.classNames.labelGroup);if(a.stackBars&&0!==b.normalized.series.length){var i=c.serialMap(b.normalized.series,function(){ -return Array.prototype.slice.call(arguments).map(function(a){return a}).reduce(function(a,b){return{x:a.x+(b&&b.x)||0,y:a.y+(b&&b.y)||0}},{x:0,y:0})});d=c.getHighLow([i],a,a.horizontalBars?"x":"y")}else d=c.getHighLow(b.normalized.series,a,a.horizontalBars?"x":"y");d.high=+a.high||(0===a.high?0:d.high),d.low=+a.low||(0===a.low?0:d.low);var j,k,l,m,n,o=c.createChartRect(this.svg,a,f.padding);k=a.distributeSeries&&a.stackBars?b.normalized.labels.slice(0,1):b.normalized.labels,a.horizontalBars?(j=m=void 0===a.axisX.type?new c.AutoScaleAxis(c.Axis.units.x,b.normalized.series,o,c.extend({},a.axisX,{highLow:d,referenceValue:0})):a.axisX.type.call(c,c.Axis.units.x,b.normalized.series,o,c.extend({},a.axisX,{highLow:d,referenceValue:0})),l=n=void 0===a.axisY.type?new c.StepAxis(c.Axis.units.y,b.normalized.series,o,{ticks:k}):a.axisY.type.call(c,c.Axis.units.y,b.normalized.series,o,a.axisY)):(l=m=void 0===a.axisX.type?new c.StepAxis(c.Axis.units.x,b.normalized.series,o,{ticks:k}):a.axisX.type.call(c,c.Axis.units.x,b.normalized.series,o,a.axisX),j=n=void 0===a.axisY.type?new c.AutoScaleAxis(c.Axis.units.y,b.normalized.series,o,c.extend({},a.axisY,{highLow:d,referenceValue:0})):a.axisY.type.call(c,c.Axis.units.y,b.normalized.series,o,c.extend({},a.axisY,{highLow:d,referenceValue:0})));var p=a.horizontalBars?o.x1+j.projectValue(0):o.y1-j.projectValue(0),q=[];l.createGridAndLabels(e,h,this.supportsForeignObject,a,this.eventEmitter),j.createGridAndLabels(e,h,this.supportsForeignObject,a,this.eventEmitter),a.showGridBackground&&c.createGridBackground(e,o,a.classNames.gridBackground,this.eventEmitter),b.raw.series.forEach(function(d,e){var f,h,i=e-(b.raw.series.length-1)/2;f=a.distributeSeries&&!a.stackBars?l.axisLength/b.normalized.series.length/2:a.distributeSeries&&a.stackBars?l.axisLength/2:l.axisLength/b.normalized.series[e].length/2,h=g.elem("g"),h.attr({"ct:series-name":d.name,"ct:meta":c.serialize(d.meta)}),h.addClass([a.classNames.series,d.className||a.classNames.series+"-"+c.alphaNumerate(e)].join(" ")),b.normalized.series[e].forEach(function(g,k){var r,s,t,u;if(u=a.distributeSeries&&!a.stackBars?e:a.distributeSeries&&a.stackBars?0:k,r=a.horizontalBars?{x:o.x1+j.projectValue(g&&g.x?g.x:0,k,b.normalized.series[e]),y:o.y1-l.projectValue(g&&g.y?g.y:0,u,b.normalized.series[e])}:{x:o.x1+l.projectValue(g&&g.x?g.x:0,u,b.normalized.series[e]),y:o.y1-j.projectValue(g&&g.y?g.y:0,k,b.normalized.series[e])},l instanceof c.StepAxis&&(l.options.stretch||(r[l.units.pos]+=f*(a.horizontalBars?-1:1)),r[l.units.pos]+=a.stackBars||a.distributeSeries?0:i*a.seriesBarDistance*(a.horizontalBars?-1:1)),t=q[k]||p,q[k]=t-(p-r[l.counterUnits.pos]),void 0!==g){var v={};v[l.units.pos+"1"]=r[l.units.pos],v[l.units.pos+"2"]=r[l.units.pos],!a.stackBars||"accumulate"!==a.stackMode&&a.stackMode?(v[l.counterUnits.pos+"1"]=p,v[l.counterUnits.pos+"2"]=r[l.counterUnits.pos]):(v[l.counterUnits.pos+"1"]=t,v[l.counterUnits.pos+"2"]=q[k]),v.x1=Math.min(Math.max(v.x1,o.x1),o.x2),v.x2=Math.min(Math.max(v.x2,o.x1),o.x2),v.y1=Math.min(Math.max(v.y1,o.y2),o.y1),v.y2=Math.min(Math.max(v.y2,o.y2),o.y1);var w=c.getMetaData(d,k);s=h.elem("line",v,a.classNames.bar).attr({"ct:value":[g.x,g.y].filter(c.isNumeric).join(","),"ct:meta":c.serialize(w)}),this.eventEmitter.emit("draw",c.extend({type:"bar",value:g,index:k,meta:w,series:d,seriesIndex:e,axisX:m,axisY:n,chartRect:o,group:h,element:s},v))}}.bind(this))}.bind(this)),this.eventEmitter.emit("created",{bounds:j.bounds,chartRect:o,axisX:m,axisY:n,svg:this.svg,options:a})}function e(a,b,d,e){c.Bar["super"].constructor.call(this,a,b,f,c.extend({},f,d),e)}var f={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,scaleMinSpace:30,onlyInteger:!1},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,high:void 0,low:void 0,referenceValue:0,chartPadding:{top:15,right:15,bottom:5,left:10},seriesBarDistance:15,stackBars:!1,stackMode:"accumulate",horizontalBars:!1,distributeSeries:!1,reverseData:!1,showGridBackground:!1,classNames:{chart:"ct-chart-bar",horizontalBars:"ct-horizontal-bars",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",bar:"ct-bar",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};c.Bar=c.Base.extend({constructor:e,createChart:d})}(window,document,a),function(a,b,c){"use strict";function d(a,b,c){var d=b.x>a.x;return d&&"explode"===c||!d&&"implode"===c?"start":d&&"implode"===c||!d&&"explode"===c?"end":"middle"}function e(a){var b,e,f,h,i,j=c.normalizeData(this.data),k=[],l=a.startAngle;this.svg=c.createSvg(this.container,a.width,a.height,a.donut?a.classNames.chartDonut:a.classNames.chartPie),e=c.createChartRect(this.svg,a,g.padding),f=Math.min(e.width()/2,e.height()/2),i=a.total||j.normalized.series.reduce(function(a,b){return a+b},0);var m=c.quantity(a.donutWidth);"%"===m.unit&&(m.value*=f/100),f-=a.donut&&!a.donutSolid?m.value/2:0,h="outside"===a.labelPosition||a.donut&&!a.donutSolid?f:"center"===a.labelPosition?0:a.donutSolid?f-m.value/2:f/2,h+=a.labelOffset;var n={x:e.x1+e.width()/2,y:e.y2+e.height()/2},o=1===j.raw.series.filter(function(a){return a.hasOwnProperty("value")?0!==a.value:0!==a}).length;j.raw.series.forEach(function(a,b){k[b]=this.svg.elem("g",null,null)}.bind(this)),a.showLabel&&(b=this.svg.elem("g",null,null)),j.raw.series.forEach(function(e,g){if(0!==j.normalized.series[g]||!a.ignoreEmptyValues){k[g].attr({"ct:series-name":e.name}),k[g].addClass([a.classNames.series,e.className||a.classNames.series+"-"+c.alphaNumerate(g)].join(" "));var p=i>0?l+j.normalized.series[g]/i*360:0,q=Math.max(0,l-(0===g||o?0:.2));p-q>=359.99&&(p=q+359.99);var r,s,t,u=c.polarToCartesian(n.x,n.y,f,q),v=c.polarToCartesian(n.x,n.y,f,p),w=new c.Svg.Path(!a.donut||a.donutSolid).move(v.x,v.y).arc(f,f,0,p-l>180,0,u.x,u.y);a.donut?a.donutSolid&&(t=f-m.value,r=c.polarToCartesian(n.x,n.y,t,l-(0===g||o?0:.2)),s=c.polarToCartesian(n.x,n.y,t,p),w.line(r.x,r.y),w.arc(t,t,0,p-l>180,1,s.x,s.y)):w.line(n.x,n.y);var x=a.classNames.slicePie;a.donut&&(x=a.classNames.sliceDonut,a.donutSolid&&(x=a.classNames.sliceDonutSolid));var y=k[g].elem("path",{d:w.stringify()},x);if(y.attr({"ct:value":j.normalized.series[g],"ct:meta":c.serialize(e.meta)}),a.donut&&!a.donutSolid&&(y._node.style.strokeWidth=m.value+"px"),this.eventEmitter.emit("draw",{type:"slice",value:j.normalized.series[g],totalDataSum:i,index:g,meta:e.meta,series:e,group:k[g],element:y,path:w.clone(),center:n,radius:f,startAngle:l,endAngle:p}),a.showLabel){var z;z=1===j.raw.series.length?{x:n.x,y:n.y}:c.polarToCartesian(n.x,n.y,h,l+(p-l)/2);var A;A=j.normalized.labels&&!c.isFalseyButZero(j.normalized.labels[g])?j.normalized.labels[g]:j.normalized.series[g];var B=a.labelInterpolationFnc(A,g);if(B||0===B){var C=b.elem("text",{dx:z.x,dy:z.y,"text-anchor":d(n,z,a.labelDirection)},a.classNames.label).text(""+B);this.eventEmitter.emit("draw",{type:"label",index:g,group:b,element:C,text:""+B,x:z.x,y:z.y})}}l=p}}.bind(this)),this.eventEmitter.emit("created",{chartRect:e,svg:this.svg,options:a})}function f(a,b,d,e){c.Pie["super"].constructor.call(this,a,b,g,c.extend({},g,d),e)}var g={width:void 0,height:void 0,chartPadding:5,classNames:{chartPie:"ct-chart-pie",chartDonut:"ct-chart-donut",series:"ct-series",slicePie:"ct-slice-pie",sliceDonut:"ct-slice-donut",sliceDonutSolid:"ct-slice-donut-solid",label:"ct-label"},startAngle:0,total:void 0,donut:!1,donutSolid:!1,donutWidth:60,showLabel:!0,labelOffset:0,labelPosition:"inside",labelInterpolationFnc:c.noop,labelDirection:"neutral",reverseData:!1,ignoreEmptyValues:!1};c.Pie=c.Base.extend({constructor:f,createChart:e,determineAnchorPosition:d})}(window,document,a),a}); diff --git a/public/js/plugins/course.js b/public/js/plugins/course.js new file mode 100644 index 00000000..18e6d334 --- /dev/null +++ b/public/js/plugins/course.js @@ -0,0 +1,45 @@ +$('.richeditor').trumbowyg({ + lang: 'fr', + btns: [ + ['viewHTML'], + ['emoji'], + ['undo', 'redo'], // Only supported in Blink browsers + ['strong', 'em', 'del'], + ['superscript', 'subscript'], + ['fontfamily'], + ['fontsize'], + ['foreColor', 'backColor'], + ['link'], + ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'], + ['unorderedList', 'orderedList'], + ['horizontalRule'], + ['removeformat'], + ['fullscreen'] + ] +}); + +function switchPlanStatus(id) +{ + $.ajax({ + type: 'POST', + url: '/api/course/'+id+'/plan/validate?api_token='+api_token, + success: function (data) { + if (data == '1') + { + showNotification('success','Le plan de cours est maintenant vérifié','top', 'center'); + $("[name='isPlanCheck']").prop( "checked", true ); + + } + else + { + showNotification('warning','Le plan de cours n\'est maintenant plus vérifié','top', 'center'); + $("[name='isPlanCheck']").prop( "checked", false ); + + } + }, + error: function () { + showNotification('error','Erreur impossible de changer le status du plan de cours','top', 'center'); + $("[name='isPlanCheck']").prop( "checked", false ); + } + }) +} \ No newline at end of file diff --git a/public/js/plugins/drive-explorer.js b/public/js/plugins/drive-explorer.js index 59c89a63..10a4ba64 100644 --- a/public/js/plugins/drive-explorer.js +++ b/public/js/plugins/drive-explorer.js @@ -4,8 +4,13 @@ var currentFolder = ''; var folderGoBack = []; var permissionModalHtml = null; var progressBar = 0; -function init(folder) +var originalFolder; +var mode = ''; +function init(folder,pmode = '') { + mode = pmode; + console.log(mode); + originalFolder = folder; loadFolder(folder); loadHistory(); } @@ -28,7 +33,17 @@ function loadHistory() { updateProgressBar(progressBar+10); if(!currentFolder == '' || !currentFolder == 'root') { - btnBack.removeAttr('disabled'); + if (mode == 'folder') + { + if (currentFolder != originalFolder) + { + btnBack.removeAttr('disabled'); + } + } + else + { + btnBack.removeAttr('disabled'); + } } updateProgressBar(progressBar+5); }, @@ -50,11 +65,13 @@ function loadFolder(folder) { type: 'GET', url: '/api/drive/folders/'+folder+'?api_token=' + api_token, success: function (template) { - // Load Explorer Content updateProgressBar(progressBar+30); $(".drive-explorer").html(template); currentFolder = folder; - window.history.pushState("object or string", "Page Title", "/admin/drive/"+folder); + if (mode != 'folder') + { + window.history.pushState("object or string", "Page Title", "/admin/drive/"+folder); + } updateProgressBar(progressBar+5); hideLoader(); @@ -68,7 +85,21 @@ function loadFolder(folder) { } else { - $('#backbtn').removeAttr('disabled'); + if (mode == 'folder') + { + if (currentFolder != originalFolder) + { + $('#backbtn').removeAttr('disabled'); + } + else + { + $('#backbtn').prop('disabled','true'); + } + } + else + { + $('#backbtn').removeAttr('disabled'); + } } } updateProgressBar(progressBar+10); @@ -151,13 +182,16 @@ function editPermission(folder,subject,id) $('#permissionModal').on('hidden.bs.modal', function (e) { $('#permissionModalHtml').html(permissionModalHtml); }); - + let csrf = $('input[name="_token"]').val(); $.ajax({ type: 'GET', url: '/api/drive/'+folder+'/permission/'+subject+'/'+id+'?api_token=' + api_token, success: function (modal) { permissionModalHtml = $('#permissionModalHtml').html(); $('#permissionModalHtml').html(modal); + + $('#csrf').val(csrf); + $('#permissionModal').modal('show'); }, error: function () { @@ -166,6 +200,51 @@ function editPermission(folder,subject,id) }); } +function addPermission(folder,subject) +{ + $('#permissionModal').on('hidden.bs.modal', function (e) { + $('#permissionModalHtml').html(permissionModalHtml); + }); + let csrf = $('input[name="_token"]').val(); + $.ajax({ + type: 'GET', + url: '/api/drive/'+folder+'/addpermission/'+subject+'/?api_token=' + api_token, + success: function (modal) { + permissionModalHtml = $('#permissionModalHtml').html(); + $('#permissionModalHtml').html(modal); + + $('#csrf').val(csrf); + + $('#permissionModal').modal('show'); + }, + error: function () { + showNotification('error', 'Impossible de charger le dossier '+folder, 'top', 'center') + } + }); +} + +function deletePermission(folder,subject,id) +{ + $('#permissionModal').on('hidden.bs.modal', function (e) { + $('#permissionModalHtml').html(permissionModalHtml); + }); + swal({ + title: 'Êtes vous certain de vouloir supprimer les permissions ?', + text: "Vous ne pourrez pas annuler cette action", + type: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Oui', + cancelButtonText: 'Non' + }).then((result) => { + if (result.value) { + window.location.href = '/admin/drive/'+folder+'/deletepermission/'+subject+'/'+id; + } + }) + +} + function updateProgressBar(value) { progressBar = value; @@ -180,3 +259,17 @@ function updateProgressBar(value) $('.progress').fadeIn(650); } } + +function updateHeader(perm) +{ + if (perm == 1) + { + $('#createDropdown').removeClass('d-none'); + $('#uploadDropdown').removeClass('d-none'); + } + else + { + $('#createDropdown').addClass('d-none'); + $('#uploadDropdown').addClass('d-none'); + } +} diff --git a/resources/custom.css b/resources/custom.css index 4ca0c16e..1eb79b1c 100644 --- a/resources/custom.css +++ b/resources/custom.css @@ -1836,4 +1836,8 @@ h2 { .no-hover:hover { background-color: initial; +} + +tfoot > tr { + width: 100%; } \ No newline at end of file diff --git a/resources/views/admin/configs/ranks/show.blade.php b/resources/views/admin/configs/ranks/show.blade.php index 13c75cb3..58822c77 100644 --- a/resources/views/admin/configs/ranks/show.blade.php +++ b/resources/views/admin/configs/ranks/show.blade.php @@ -14,14 +14,14 @@

- + Description du grade
@@ -33,35 +33,31 @@

@foreach(\App\Permission::allToArray() as $key => $cat) -
- - -
-
-
- @foreach($cat as $r) -
- -
{{$r['communName']}}
-
- - - -
-

- {{$r['desc']}} -

-
- @endforeach +
+

{{$key}}

+
+ @foreach($cat as $r) +
+ +

{{$r['communName']}}
+ {{$r['desc']}} +

-
+
+
+ + +
+
+
+ @endforeach
@endforeach diff --git a/resources/views/admin/configs/schedule.blade.php b/resources/views/admin/configs/schedule.blade.php index 335ab19d..4c164ee4 100644 --- a/resources/views/admin/configs/schedule.blade.php +++ b/resources/views/admin/configs/schedule.blade.php @@ -1,100 +1,150 @@ @extends('layouts.admin.main') @section('content') -
-
-
- Configuration Horaire d'instruction -
-
-
- @csrf -
Configuration des périodes
-
-
- - - Nombre de période dans une soirée d'instruction régulière -
-
-
- @for ($i = 1; $i <= \App\Config::getData('admin_periode_nb'); $i++) -
-
-

- -

+
+
+
+

Configuration de l'année d'instruction

+
+
+
+ + @method('PATCH') + @csrf +
+
+
Configuration de l'année d'instruction
- -
-
-
-
- - - Heure de début de la période dans une soirée d'instruction régulière +
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+

Type d'évènement

+
+
+
+
+ @foreach($events_type as $event_type) +
+
+
+

{{$event_type->name}}

+
+
+

De {{$event_type->begin_time}} à {{$event_type->end_time}} - {{$event_type->location}}

+
+ @if($event_type->is_mandatory) + +

Obligatoire

+ @else + +

N'est pas obligatoire

+ @endif
-
- - - Heure de fin de la période dans une soirée d'instruction régulière +
+ @if($event_type->use_weekly_msg) + +

Utilise les messages de la semaine

+ @else + +

N'utilise pas les messages de la semaine

+ @endif +
+
+ @if($event_type->use_schedule) + +

Utilise un horaire

+ @else + +

N'utilise pas un horaire

+ @endif +
+
+ {!! $event_type->admin_desc !!} +
+
+ +
+ @if($event_type->id != 1) + + @else + + @endif +
-
- @endfor -
-
- + @endforeach
- -
-
-
-@endsection - -@section('breadcrumb') - @endsection @section('custom_scripts') - -@endsection + +@endsection \ No newline at end of file diff --git a/resources/views/admin/course/index.blade.php b/resources/views/admin/course/index.blade.php new file mode 100644 index 00000000..95a00988 --- /dev/null +++ b/resources/views/admin/course/index.blade.php @@ -0,0 +1,135 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+

Liste des cours

+
+
+
+
+
+

Liste des cours dans l'horaire

+ +
+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + + @foreach($courses as $course) + + + + + + + + + + + @endforeach + +
OCOMNomInstructeurDateNiveauPériodePlan de cours
{{$course->ocom}}{{$course->name}}{{$course->instructor()}}{{$course->event->date_begin}}{{$course->level}}{{$course->periode}} + @if($course->lessonPlan) + @if($course->lessonPlan->approved == 1) + + @else + + @endif + @else + + @endif + + + add + +
+
+
+
+
+@endsection + +@section('breadcrumb') + Base de données des cours +@endsection + +@section('custom_scripts') + +@endsection diff --git a/resources/views/admin/course/show.blade.php b/resources/views/admin/course/show.blade.php new file mode 100644 index 00000000..8a98f0ec --- /dev/null +++ b/resources/views/admin/course/show.blade.php @@ -0,0 +1,315 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+
+

{{$course->name}} ({{$course->event->date_begin}})

+
+
+
+
+
+ +

{{$course->name}}

+
+
+ +

{{$username}}

+
+
+ +

{{$course->ocom}}

+
+
+ +

{{$course->event->date_begin}}

+
+
+ +

{{$course->periode}}

+
+
+ +

{{$course->level}}

+
+
+
+
+ +
+ @if($course->comment == null) +

Aucun commentaire

+ @else +
{!! $course->comment !!}
+ @endif +
+
+ +
+ @if($course->comment_officer == null) +

Aucun commentaire

+ @else +
{!! $course->comment_officer !!}
+ @endif +
+
+ +
+
+ @if(\Auth::user()->p('course_comment_officer') == 1) + + @endif +
+
+
+
+ + @if($course->lessonPlan == null) + + @else +
+
+ +

{{$course->lessonPlan->file}}

+
+
+ +

{{$course->lessonPlan->created_at}}

+ +
+
+ +

{{$course->lessonPlan->updated_at}}

+
+
+ + @if(\Auth::user()->p('course_validate_plan') == 1) +
+ +
+ @else + @if($course->lessonPlan->approved == 1) +

+ @else +

+ @endif + @endif +
+
+ +

+ + cloud_download + +

+
+
+
+
+ + +
+
+
+
+ + @if($course->lessonPlan->desc == null) +

Aucun commentaire

+ @else +
{!! $course->lessonPlan->desc !!}
+ @endif +
+
+ + @if($course->lessonPlan->comment == null) +

Aucun commentaire

+ @else +
{!! $course->lessonPlan->comment !!}
+ @endif +
+
+ +
+
+ @if(\Auth::user()->p('course_comment_plan_officer') == 1) + + @endif +
+
+
+
+
+
+
+
+ @endif + +
+
+
+
+
+
+
+ + + + + +@endsection + +@section('custom_scripts') + +@endsection + diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 7b7ffc6a..7288dd19 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -6,7 +6,7 @@
-

Cours à venir

+

Mes cours à venir

@@ -15,14 +15,31 @@

Aucun cours à venir

@else - @foreach (\Auth::user()->futureCourses() as $course) + @foreach ($userClasse as $course) @if($course->event != null)
-
+
-

{{$course->ocom}} - {{$course->name}}

-

{{date('Y-m-d',strtotime($course->event->date_begin))}}

-

Période {{$course->periode}}, Niveau {{$course->level}}

+

+ {{$course->ocom}} - {{$course->name}} + @if($course->lessonPlan) + @if($course->lessonPlan->approved == 1) + + @else + + @endif + @else + + @endif +

+
+

{{date('Y-m-d',strtotime($course->event->date_begin))}}

+

Période {{$course->periode}}, Niveau {{$course->level}}

+
+
+ Détail +
+
@@ -30,6 +47,7 @@ @endforeach @endif
+ Afficher tous mes cours
@@ -85,6 +103,7 @@

diff --git a/resources/views/admin/event_type/show.blade.php b/resources/views/admin/event_type/show.blade.php new file mode 100644 index 00000000..d1e4e4fd --- /dev/null +++ b/resources/views/admin/event_type/show.blade.php @@ -0,0 +1,55 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+

{{$event_type->name}}

+
+
+
+
+ @method('PATCH') + @csrf +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+
+
+@endsection + +@section('custom_scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/admin/files/Google Drive/explorer.blade.php b/resources/views/admin/files/Google Drive/explorer.blade.php index 8ab83f30..9e940dad 100644 --- a/resources/views/admin/files/Google Drive/explorer.blade.php +++ b/resources/views/admin/files/Google Drive/explorer.blade.php @@ -108,4 +108,7 @@ @endif -Dernière mise à jour {{date('r')}} \ No newline at end of file +Dernière mise à jour {{date('r')}} + \ No newline at end of file diff --git a/resources/views/admin/files/Google Drive/index.blade.php b/resources/views/admin/files/Google Drive/index.blade.php index f9ef5bf1..12fc506f 100644 --- a/resources/views/admin/files/Google Drive/index.blade.php +++ b/resources/views/admin/files/Google Drive/index.blade.php @@ -11,7 +11,7 @@
- - @@ -141,6 +140,10 @@ @endsection diff --git a/resources/views/admin/files/Google Drive/permission.blade.php b/resources/views/admin/files/Google Drive/permission.blade.php index 2826231c..e2f1f3ab 100644 --- a/resources/views/admin/files/Google Drive/permission.blade.php +++ b/resources/views/admin/files/Google Drive/permission.blade.php @@ -9,7 +9,7 @@
Permission des grades
- +
@@ -17,9 +17,9 @@ @@ -101,7 +101,7 @@ - @@ -111,7 +111,7 @@
GradeÉcriture Gestion - +
Permission des postes
- +
@@ -119,9 +119,9 @@ @@ -163,7 +163,7 @@ - @@ -172,7 +172,7 @@
PosteÉcriture Gestion - +
Permission des utilisateurs
- +
@@ -180,9 +180,9 @@ @@ -224,7 +224,7 @@ - @@ -235,6 +235,7 @@ + @csrf @endsection -@section('breadcrumb') - Fichier / Google Drive -@endsection - @section('custom_scripts') diff --git a/resources/views/admin/files/Google Drive/permission/add.blade.php b/resources/views/admin/files/Google Drive/permission/add.blade.php new file mode 100644 index 00000000..8241d993 --- /dev/null +++ b/resources/views/admin/files/Google Drive/permission/add.blade.php @@ -0,0 +1,81 @@ + + + + @method('patch') + + + + \ No newline at end of file diff --git a/resources/views/admin/files/Google Drive/permission/edit.blade.php b/resources/views/admin/files/Google Drive/permission/edit.blade.php index 7f5ea4a3..0d7f77f7 100644 --- a/resources/views/admin/files/Google Drive/permission/edit.blade.php +++ b/resources/views/admin/files/Google Drive/permission/edit.blade.php @@ -5,7 +5,7 @@ - @csrf + @method('patch')
UtilisateursÉcriture Gestion - +
+ + + + + + + + + @foreach($dir as $d) + + + + + + @endforeach + +
+ Nom + + Dernière modification +
+ {{$d['name']}} + + {{strftime('%e %b %Y',$d['timestamp'])}} + + + cloud_download + +
+
+
+
+
+@endsection + +@section('custom_scripts') + +@endsection diff --git a/resources/views/admin/files/guide.blade.php b/resources/views/admin/files/guide.blade.php index c1acc618..2c992e68 100644 --- a/resources/views/admin/files/guide.blade.php +++ b/resources/views/admin/files/guide.blade.php @@ -3,61 +3,39 @@ @section('content')
-
- Fichiers - +
+

Guides pédagogiques et Norme de qualification

-

Les fichiers si dessous sont disponible autant dans l'espace administration que dans l'espace cadet cadre. - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @foreach($dir as $d) + + + + + + @endforeach
Nom
+ Nom + + Dernière modification +
Niveau 1
Guide PédagogiqueTélécharger
Guide de QualificationTélécharger
Niveau 2
Guide PédagogiqueTélécharger
Guide de QualificationTélécharger
Niveau 3
Guide PédagogiqueTélécharger
Guide de QualificationTélécharger
Niveau 4
Guide PédagogiqueTélécharger
Guide de QualificationTélécharger
+ {{$d['name']}} + + {{strftime('%e %b %Y',$d['timestamp'])}} + + + cloud_download + +

@@ -66,10 +44,10 @@
@endsection -@section('breadcrumb') -Fichier / Guide Pédagogique -@endsection - @section('custom_scripts') - + @endsection diff --git a/resources/views/admin/ocom/show.blade.php b/resources/views/admin/ocom/show.blade.php index 8985d930..b11cff99 100644 --- a/resources/views/admin/ocom/show.blade.php +++ b/resources/views/admin/ocom/show.blade.php @@ -58,6 +58,7 @@ Date Instructeur Niveau + Plan de cours @@ -67,6 +68,23 @@ {{$course->event->date_begin}} {{$course->instructor()}} {{$course->level}} + + @if($course->lessonPlan) + + @if($course->lessonPlan->approved == 1) + + @else + + @endif + + @else + + @endif + @endforeach @@ -90,7 +108,6 @@ $('.tooltip').tooltip('enable') $(document).ready(function() { $('#table').DataTable({ - "lengthMenu": [[25, 50, -1], [25, 50, "All"]], "ordering" : true, "order": [[1, "asc"]] }); diff --git a/resources/views/admin/stats/component/lessonPlan.blade.php b/resources/views/admin/stats/component/lessonPlan.blade.php new file mode 100644 index 00000000..dfa07a1d --- /dev/null +++ b/resources/views/admin/stats/component/lessonPlan.blade.php @@ -0,0 +1,34 @@ +
+
+
+

Plan de cours remis

+

Combiens de plan de cours on été remis au courant de cette année d'instruction

+
+
+
+
+
+ +
+
+
+
+
+
+ \ No newline at end of file diff --git a/resources/views/admin/stats/instruction.blade.php b/resources/views/admin/stats/instruction.blade.php new file mode 100644 index 00000000..cde255f8 --- /dev/null +++ b/resources/views/admin/stats/instruction.blade.php @@ -0,0 +1,127 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+
+

Statistique de l'instruction

+
+
+
+
+
+

+ {{$nbCourseUpToThisDay}} cours on été donnée cette année d'instruction par {{$nbInstructorUpToThisDay}} instructeurs différent au cours de {{$nbEventUpToThisDay}} activitées +

+
+
+
+
+
+
+
+
+
+

Plan de cours remis

+

Combiens de plan de cours on été remis au courant de cette année d'instruction

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

Cours de l'année d'instruction

+

Combiens de cours ont été donnée au courant de cette année d'instruction

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

Cours total de la DB

+

Combiens de cours ont été donnée au courant de cette année d'instruction par rapport au total de la DB

+
+
+
+
+
+ +
+
+
+
+
+
+
+@endsection + +@section('custom_scripts') + +@endsection diff --git a/resources/views/admin/update.blade.php b/resources/views/admin/update.blade.php index d2a843d7..70ee48af 100644 --- a/resources/views/admin/update.blade.php +++ b/resources/views/admin/update.blade.php @@ -51,6 +51,46 @@
+
  • +
    +
    + +
    +
    + Ajout d'une section "Mes cours" +
    +
    +
  • +
  • +
    +
    + +
    +
    + Ajout d'une section "Mes fichiers" +
    +
    +
  • +
  • +
    +
    + +
    +
    + Ajout d'une liste des cours pour l'instruction +
    +
    +
  • +
  • +
    +
    + +
    +
    + Ajout de statistique pour l'instruction +
    +
    +
  • @@ -91,6 +131,26 @@
  • +
  • +
    +
    + +
    +
    + Mise à jour de la section "Guide pédagogique et Norme de qualification" +
    +
    +
  • +
  • +
    +
    + +
    +
    + Mise à jour de la section "Fichier" de l'instruction +
    +
    +
  • diff --git a/resources/views/admin/user/profil/courses.blade.php b/resources/views/admin/user/profil/courses.blade.php new file mode 100644 index 00000000..a4088665 --- /dev/null +++ b/resources/views/admin/user/profil/courses.blade.php @@ -0,0 +1,84 @@ +@extends('layouts.admin.main') + +@section('content') +
    +
    +
    +

    Mes cours

    +
    +
    +
    +
    +
    +

    Liste de mes cours dans l'horaire

    + +
    +
    + + + + + + + + + + + + + + + @foreach($courses as $course) + + + + + + + + + + + @endforeach + +
    OCOMNomInstructeurDateNiveauPériodePlan de cours
    {{$course->ocom}}{{$course->name}}{{$course->instructor()}}{{$course->event->date_begin}}{{$course->level}}{{$course->periode}} + @if($course->lessonPlan) + @if($course->lessonPlan->approved == 1) + + @else + + @endif + @else + + @endif + + + add + +
    +
    +
    +
    +
    +@endsection + +@section('custom_scripts') + + +@endsection diff --git a/resources/views/layouts/admin/head.blade.php b/resources/views/layouts/admin/head.blade.php index 8184ce7c..4a96b0dd 100644 --- a/resources/views/layouts/admin/head.blade.php +++ b/resources/views/layouts/admin/head.blade.php @@ -29,6 +29,7 @@ + diff --git a/resources/views/layouts/admin/header.blade.php b/resources/views/layouts/admin/header.blade.php index 0b4bb47b..6d15ce17 100644 --- a/resources/views/layouts/admin/header.blade.php +++ b/resources/views/layouts/admin/header.blade.php @@ -67,7 +67,8 @@ foreach (Auth::user()->unreadNotifications as $notification) {