diff --git a/app/DataTables/DirectoratDataTable.php b/app/DataTables/DirectoratDataTable.php index 5a1c7e2..7321cbc 100644 --- a/app/DataTables/DirectoratDataTable.php +++ b/app/DataTables/DirectoratDataTable.php @@ -30,12 +30,6 @@ class DirectoratDataTable extends DataTable } }) ->addIndexColumn() - ->addColumn('kode', function ($model) { - return $model->kode; - }) - ->addColumn('name', function ($model) { - return $model->name; - }) ->addColumn('action', 'pages.masters.directorat._action') ->setRowId('id'); } @@ -77,8 +71,6 @@ class DirectoratDataTable extends DataTable Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), Column::make('kode'), Column::make('name'), - Column::make('created_at'), - Column::make('updated_at'), Column::computed('action') ->exportable(false) ->printable(false) diff --git a/app/DataTables/JobDataTable.php b/app/DataTables/JobDataTable.php new file mode 100644 index 0000000..fffd4a2 --- /dev/null +++ b/app/DataTables/JobDataTable.php @@ -0,0 +1,99 @@ +filter(function ($query) { + if (request()->has('search')) { + $search = request()->get('search'); + $query->where('kode', 'like', "%" . $search['value'] . "%") + ->orWhere('name', 'like', "%" . $search['value'] . "%") + ->orWhereRelation('directorat', 'name', 'like', '%'.$search['value'].'%') + ->orWhereRelation('subDirectorat', 'name', 'like', '%'.$search['value'].'%'); + } + }) + ->addIndexColumn() + ->addColumn('directorat', function ($job) { + return $job->directorat->name; + }) + ->addColumn('sub_directorat', function ($job) { + return $job->subDirectorat->name; + }) + ->addColumn('action', 'pages.masters.job._action') + ->setRowId('id'); + } + + /** + * Get the query source of dataTable. + */ + public function query(Job $model): QueryBuilder + { + return $model->newQuery(); + } + + /** + * Optional method if you want to use the html builder. + */ + public function html(): HtmlBuilder + { + return $this->builder() + ->setTableId('job-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(false) + ->responsive() + ->autoWidth(true) + ->orderBy(1) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get the dataTable columns definition. + */ + public function getColumns(): array + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), + Column::make('directorat'), + Column::make('sub_directorat'), + Column::make('kode'), + Column::make('name'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->width(60) + ->addClass('text-center'), + ]; + } + + /** + * Get the filename for export. + */ + protected function filename(): string + { + return 'Job_' . date('YmdHis'); + } +} diff --git a/app/DataTables/SubDirectoratDataTable.php b/app/DataTables/SubDirectoratDataTable.php new file mode 100644 index 0000000..cbab504 --- /dev/null +++ b/app/DataTables/SubDirectoratDataTable.php @@ -0,0 +1,94 @@ +filter(function ($query) { + if (request()->has('search')) { + $search = request()->get('search'); + $query->where('kode', 'like', "%" . $search['value'] . "%") + ->orWhere('name', 'like', "%" . $search['value'] . "%") + ->orWhereRelation('directorat', 'name', 'like', '%'.$search['value'].'%'); + } + }) + ->addIndexColumn() + ->addColumn('directorat', function ($subDirectorat) { + return $subDirectorat->directorat->name; + }) + ->addColumn('action', 'pages.masters.sub-directorat._action') + ->setRowId('id'); + } + + /** + * Get the query source of dataTable. + */ + public function query(SubDirectorat $model): QueryBuilder + { + return $model->newQuery(); + } + + /** + * Optional method if you want to use the html builder. + */ + public function html(): HtmlBuilder + { + return $this->builder() + ->setTableId('sub-directorat-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(false) + ->responsive() + ->autoWidth(true) + ->orderBy(1) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get the dataTable columns definition. + */ + public function getColumns(): array + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), + Column::make('directorat'), + Column::make('kode'), + Column::make('name'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->width(60) + ->addClass('text-center'), + ]; + } + + /** + * Get the filename for export. + */ + protected function filename(): string + { + return 'Sub_Directorat_' . date('YmdHis'); + } +} diff --git a/app/DataTables/SubJobDataTable.php b/app/DataTables/SubJobDataTable.php new file mode 100644 index 0000000..7b80948 --- /dev/null +++ b/app/DataTables/SubJobDataTable.php @@ -0,0 +1,104 @@ +filter(function ($query) { + if (request()->has('search')) { + $search = request()->get('search'); + $query->where('kode', 'like', "%" . $search['value'] . "%") + ->orWhere('name', 'like', "%" . $search['value'] . "%") + ->orWhereRelation('directorat', 'name', 'like', '%'.$search['value'].'%') + ->orWhereRelation('subDirectorat', 'name', 'like', '%'.$search['value'].'%') + ->orWhereRelation('job', 'name', 'like', '%'.$search['value'].'%'); + } + }) + ->addIndexColumn() + ->addColumn('directorat', function ($subJob) { + return $subJob->directorat->name; + }) + ->addColumn('sub_directorat', function ($subJob) { + return $subJob->subDirectorat->name; + }) + ->addColumn('job', function ($subJob) { + return $subJob->job->name; + }) + ->addColumn('action', 'pages.masters.sub-job._action') + ->setRowId('id'); + } + + /** + * Get the query source of dataTable. + */ + public function query(SubJob $model): QueryBuilder + { + return $model->newQuery(); + } + + /** + * Optional method if you want to use the html builder. + */ + public function html(): HtmlBuilder + { + return $this->builder() + ->setTableId('sub-job-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(false) + ->responsive() + ->autoWidth(true) + ->orderBy(1) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get the dataTable columns definition. + */ + public function getColumns(): array + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), + Column::make('directorat'), + Column::make('sub_directorat'), + Column::make('job'), + Column::make('kode'), + Column::make('name'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->width(60) + ->addClass('text-center'), + ]; + } + + /** + * Get the filename for export. + */ + protected function filename(): string + { + return 'Sub_Job_' . date('YmdHis'); + } +} diff --git a/app/Http/Controllers/DirectoratController.php b/app/Http/Controllers/DirectoratController.php index bb8a62a..19bf454 100644 --- a/app/Http/Controllers/DirectoratController.php +++ b/app/Http/Controllers/DirectoratController.php @@ -70,7 +70,7 @@ class DirectoratController extends Controller */ public function show(Directorat $directorat) { - // + } /** @@ -113,6 +113,7 @@ class DirectoratController extends Controller */ public function destroy(Directorat $directorat){ $directorat->delete(); - return redirect()->route('directorat.index')->with('success', 'Directorat deleted successfully.'); + echo json_encode(['status' => 'success', 'message' => 'Directorat deleted successfully.']); + //return redirect()->route('directorat.index')->with('success', 'Directorat deleted successfully.'); } } diff --git a/app/Http/Controllers/JobController.php b/app/Http/Controllers/JobController.php new file mode 100644 index 0000000..ce7c475 --- /dev/null +++ b/app/Http/Controllers/JobController.php @@ -0,0 +1,139 @@ +middleware(function ($request, $next) { + //$this->user = Auth::guard('web')->user(); + return $next($request); + }); + } + + /** + * Display a listing of the resource. + */ + public function index(JobDataTable $dataTable, Request $request) + { + /*if (is_null($this->user) || !$this->user->can('masters.read')) { + abort(403, 'Sorry !! You are Unauthorized to view any master data !'); + }*/ + // Add Vendor + addVendor('chained-select'); + + if(isset($request->sub_directorat_id) && !empty($request->sub_directorat_id)) { + $this->show($request); + return; + } + + $directorat = Directorat::all(); + return $dataTable->render('pages.masters.job.index', compact('directorat')); + } + + /** + * Show the form for creating a new resource. + */ + public function create(){} + + /** + * Store a newly created resource in storage. + */ + public function store(StoreJobRequest $request) + { + /*if (is_null($this->user) || !$this->user->can('masters.create')) { + abort(403, 'Sorry !! You are Unauthorized to create any master data !'); + }*/ + + + // Validate the request... + $validated = $request->validated(); + + // Store the Job... + if($validated){ + try{ + Job::create($validated); + //return redirect()->route('job.index')->with('success', 'Job created successfully.'); + echo json_encode(['status' => 'success', 'message' => 'Job created successfully.']); + }catch(\Exception $e){ + //return redirect()->route('job.index')->with('error', 'Job created failed.'); + echo json_encode(['status' => 'error', 'message' => 'Job created failed.']); + } + } + + return false; + } + + /** + * Display the specified resource. + */ + public function show(Request $request) + { + $jobs = Job::where('sub_directorat_id', $request->sub_directorat_id)->get(); + + $data = []; + foreach ($jobs as $row) { + $result = [ + $row->id => $row->name, + ]; + + $data[] = $result; + } + + echo json_encode($data); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id){ + $job = Job::find($id); + echo json_encode($job); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateJobRequest $request, Job $job) + { + /*if (is_null($this->user) || !$this->user->can('masters.update')) { + abort(403, 'Sorry !! You are Unauthorized to update any master data !'); + }*/ + + // Validate the request... + $validated = $request->validated(); + + // Update the Job... + if($validated){ + try{ + $job->update($validated); + //return redirect()->route('job.index')->with('success', 'Job updated successfully.'); + echo json_encode(['status' => 'success', 'message' => 'Job updated successfully.']); + }catch(\Exception $e){ + //return redirect()->route('job.index')->with('error', 'Job updated failed.'); + echo json_encode(['status' => 'error', 'message' => 'Job updated failed.']); + } + } + + return false; + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Job $job){ + $job->delete(); + echo json_encode(['status' => 'success', 'message' => 'Job deleted successfully.']); + //return redirect()->route('job.index')->with('success', 'Job deleted successfully.'); + } +} diff --git a/app/Http/Controllers/SubDirectoratController.php b/app/Http/Controllers/SubDirectoratController.php new file mode 100644 index 0000000..4f4063e --- /dev/null +++ b/app/Http/Controllers/SubDirectoratController.php @@ -0,0 +1,138 @@ +middleware(function ($request, $next) { + //$this->user = Auth::guard('web')->user(); + return $next($request); + }); + } + + /** + * Display a listing of the resource. + */ + public function index(SubDirectoratDataTable $dataTable, Request $request) + { + /*if (is_null($this->user) || !$this->user->can('masters.read')) { + abort(403, 'Sorry !! You are Unauthorized to view any master data !'); + }*/ + + if(isset($request->directorat_id) && !empty($request->directorat_id)) { + $this->show($request); + return; + } + + + $directorat = Directorat::all(); + return $dataTable->render('pages.masters.sub-directorat.index', compact('directorat')); + } + + /** + * Show the form for creating a new resource. + */ + public function create(){} + + /** + * Store a newly created resource in storage. + */ + public function store(StoreSubDirectoratRequest $request) + { + /*if (is_null($this->user) || !$this->user->can('masters.create')) { + abort(403, 'Sorry !! You are Unauthorized to create any master data !'); + }*/ + + + // Validate the request... + $validated = $request->validated(); + + // Store the SubDirectorat... + if($validated){ + try{ + SubDirectorat::create($validated); + //return redirect()->route('directorat.index')->with('success', 'SubDirectorat created successfully.'); + echo json_encode(['status' => 'success', 'message' => 'Sub Directorat created successfully.']); + }catch(\Exception $e){ + //return redirect()->route('directorat.index')->with('error', 'SubDirectorat created failed.'); + echo json_encode(['status' => 'error', 'message' => 'Sub Directorat created failed.']); + } + } + + return false; + } + + /** + * Display the specified resource. + */ + public function show(Request $request) + { + $subdirectorats = SubDirectorat::where('directorat_id', $request->directorat_id)->get(); + + $data = []; + foreach ($subdirectorats as $row) { + $result = [ + $row->id => $row->name, + ]; + + $data[] = $result; + } + + echo json_encode($data); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id){ + $subDirectorat = SubDirectorat::find($id); + echo json_encode($subDirectorat); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateSubDirectoratRequest $request, SubDirectorat $subDirectorat) + { + /*if (is_null($this->user) || !$this->user->can('masters.update')) { + abort(403, 'Sorry !! You are Unauthorized to update any master data !'); + }*/ + + // Validate the request... + $validated = $request->validated(); + + // Update the SubDirectorat... + if($validated){ + try{ + $subDirectorat->update($validated); + //return redirect()->route('directorat.index')->with('success', 'SubDirectorat updated successfully.'); + echo json_encode(['status' => 'success', 'message' => 'Sub Directorat updated successfully.']); + }catch(\Exception $e){ + //return redirect()->route('directorat.index')->with('error', 'SubDirectorat updated failed.'); + echo json_encode(['status' => 'error', 'message' => 'Sub Directorat updated failed.']); + } + } + + return false; + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(SubDirectorat $subDirectorat){ + $subDirectorat->delete(); + echo json_encode(['status' => 'success', 'message' => 'Sub Directorat deleted successfully.']); + //return redirect()->route('sub-directorat.index')->with('success', 'Sub Directorat deleted successfully.'); + } +} diff --git a/app/Http/Controllers/SubjobController.php b/app/Http/Controllers/SubjobController.php new file mode 100644 index 0000000..926788f --- /dev/null +++ b/app/Http/Controllers/SubjobController.php @@ -0,0 +1,123 @@ +middleware(function ($request, $next) { + //$this->user = Auth::guard('web')->user(); + return $next($request); + }); + } + + /** + * Display a listing of the resource. + */ + public function index(SubJobDataTable $dataTable) + { + /*if (is_null($this->user) || !$this->user->can('masters.read')) { + abort(403, 'Sorry !! You are Unauthorized to view any master data !'); + }*/ + addVendor('chained-select'); + + $directorat = Directorat::all(); + return $dataTable->render('pages.masters.sub-job.index', compact('directorat')); + } + + /** + * Show the form for creating a new resource. + */ + public function create(){} + + /** + * Store a newly created resource in storage. + */ + public function store(StoreSubJobRequest $request) + { + /*if (is_null($this->user) || !$this->user->can('masters.create')) { + abort(403, 'Sorry !! You are Unauthorized to create any master data !'); + }*/ + + + // Validate the request... + $validated = $request->validated(); + + // Store the SubJob... + if($validated){ + try{ + SubJob::create($validated); + //return redirect()->route('job.index')->with('success', 'SubJob created successfully.'); + echo json_encode(['status' => 'success', 'message' => 'Sub Job created successfully.']); + }catch(\Exception $e){ + //return redirect()->route('job.index')->with('error', 'SubJob created failed.'); + echo json_encode(['status' => 'error', 'message' => 'Sub Job created failed.']); + } + } + + return false; + } + + /** + * Display the specified resource. + */ + public function show(SubJob $subJob) + { + echo json_encode($subJob); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id){ + $subJob = SubJob::find($id); + echo json_encode($subJob); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateSubJobRequest $request, SubJob $subJob) + { + /*if (is_null($this->user) || !$this->user->can('masters.update')) { + abort(403, 'Sorry !! You are Unauthorized to update any master data !'); + }*/ + + // Validate the request... + $validated = $request->validated(); + + // Update the SubJob... + if($validated){ + try{ + $subJob->update($validated); + //return redirect()->route('job.index')->with('success', 'SubJob updated successfully.'); + echo json_encode(['status' => 'success', 'message' => 'Sub Job updated successfully.']); + }catch(\Exception $e){ + //return redirect()->route('job.index')->with('error', 'SubJob updated failed.'); + echo json_encode(['status' => 'error', 'message' => 'Sub Job updated failed.']); + } + } + + return false; + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(SubJob $subJob){ + $subJob->delete(); + echo json_encode(['status' => 'success', 'message' => 'Sub Job deleted successfully.']); + //return redirect()->route('sub-job.index')->with('success', 'Sub Job deleted successfully.'); + } +} diff --git a/app/Http/Requests/StoreJobRequest.php b/app/Http/Requests/StoreJobRequest.php new file mode 100644 index 0000000..836f406 --- /dev/null +++ b/app/Http/Requests/StoreJobRequest.php @@ -0,0 +1,49 @@ + + */ + public function rules(): array + { + return [ + 'directorat_id' => 'required|exists:directorats,id', + 'sub_directorat_id' => 'required|exists:sub_directorats,id', + 'kode' => 'required|string|max:2|min:2|unique:jobs,kode', + 'name' => 'required|string|max:50' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator): void + { + $validator->after(function (Validator $validator) { + if($validator->errors()->any()) { + $error = json_decode($validator->errors()->toJson(), true); + foreach ($error as $key => $value) { + flash( $value[0]); + } + + return redirect()->route('job.index')->with('error', 'Job created failed.'); + } + }); + } +} diff --git a/app/Http/Requests/StoreSubDirectoratRequest.php b/app/Http/Requests/StoreSubDirectoratRequest.php new file mode 100644 index 0000000..f1a725c --- /dev/null +++ b/app/Http/Requests/StoreSubDirectoratRequest.php @@ -0,0 +1,48 @@ + + */ + public function rules(): array + { + return [ + 'directorat_id' => 'required', + 'kode' => 'required|string|max:2|min:2|unique:sub_directorats', + 'name' => 'required|string|max:50' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator): void + { + $validator->after(function (Validator $validator) { + if($validator->errors()->any()) { + $error = json_decode($validator->errors()->toJson(), true); + foreach ($error as $key => $value) { + flash( $value[0]); + } + + return redirect()->route('sub-directorat.index')->with('error', 'Sub Directorat created failed.'); + } + }); + } +} diff --git a/app/Http/Requests/StoreSubJobRequest.php b/app/Http/Requests/StoreSubJobRequest.php new file mode 100644 index 0000000..b1d4607 --- /dev/null +++ b/app/Http/Requests/StoreSubJobRequest.php @@ -0,0 +1,50 @@ + + */ + public function rules(): array + { + return [ + 'directorat_id' => 'required|exists:directorats,id', + 'sub_directorat_id' => 'required|exists:sub_directorats,id', + 'job_id' => 'required|exists:jobs,id', + 'kode' => 'required|string|max:2|min:2|unique:sub_jobs,kode', + 'name' => 'required|string|max:50' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator): void + { + $validator->after(function (Validator $validator) { + if($validator->errors()->any()) { + $error = json_decode($validator->errors()->toJson(), true); + foreach ($error as $key => $value) { + flash( $value[0]); + } + + return redirect()->route('job.index')->with('error', 'Job created failed.'); + } + }); + } +} diff --git a/app/Http/Requests/UpdateJobRequest.php b/app/Http/Requests/UpdateJobRequest.php new file mode 100644 index 0000000..cb31973 --- /dev/null +++ b/app/Http/Requests/UpdateJobRequest.php @@ -0,0 +1,49 @@ + + */ + public function rules(): array + { + return [ + 'directorat_id' => 'required|exists:directorats,id', + 'sub_directorat_id' => 'required|exists:sub_directorats,id', + 'kode' => 'required|string|max:2|min:2|unique:jobs,kode,'.$this->id, + 'name' => 'required|string|max:50' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator): void + { + $validator->after(function (Validator $validator) { + if($validator->errors()->any()) { + $error = json_decode($validator->errors()->toJson(), true); + foreach ($error as $key => $value) { + flash( $value[0]); + } + + return redirect()->route('jobs.index')->with('error', 'Job updated failed.'); + } + }); + } +} diff --git a/app/Http/Requests/UpdateSubDirectoratRequest.php b/app/Http/Requests/UpdateSubDirectoratRequest.php new file mode 100644 index 0000000..fdd6abc --- /dev/null +++ b/app/Http/Requests/UpdateSubDirectoratRequest.php @@ -0,0 +1,48 @@ + + */ + public function rules(): array + { + return [ + 'directorat_id' => 'required|exists:directorats,id', + 'kode' => 'required|string|max:2|min:2|unique:sub_directorats,kode,'.$this->id, + 'name' => 'required|string|max:50' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator): void + { + $validator->after(function (Validator $validator) { + if($validator->errors()->any()) { + $error = json_decode($validator->errors()->toJson(), true); + foreach ($error as $key => $value) { + flash( $value[0]); + } + + return redirect()->route('sub-directorat.index')->with('error', 'Sub Directorat updated failed.'); + } + }); + } +} diff --git a/app/Http/Requests/UpdateSubJobRequest.php b/app/Http/Requests/UpdateSubJobRequest.php new file mode 100644 index 0000000..e5d80b1 --- /dev/null +++ b/app/Http/Requests/UpdateSubJobRequest.php @@ -0,0 +1,50 @@ + + */ + public function rules(): array + { + return [ + 'directorat_id' => 'required|exists:directorats,id', + 'sub_directorat_id' => 'required|exists:sub_directorats,id', + 'job_id' => 'required|exists:jobs,id', + 'kode' => 'required|string|max:2|min:2|unique:sub_jobs,kode,'.$this->id, + 'name' => 'required|string|max:50' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator): void + { + $validator->after(function (Validator $validator) { + if($validator->errors()->any()) { + $error = json_decode($validator->errors()->toJson(), true); + foreach ($error as $key => $value) { + flash( $value[0]); + } + + return redirect()->route('jobs.index')->with('error', 'Job updated failed.'); + } + }); + } +} diff --git a/app/Models/Directorat.php b/app/Models/Directorat.php index 6c09ad1..85853fb 100644 --- a/app/Models/Directorat.php +++ b/app/Models/Directorat.php @@ -22,4 +22,9 @@ class Directorat extends Model return LogOptions::defaults()->logAll() ->useLogName('system'); } + + public function subDirectorat() + { + return $this->hasMany(SubDirectorat::class); + } } diff --git a/app/Models/Job.php b/app/Models/Job.php new file mode 100644 index 0000000..748ebe3 --- /dev/null +++ b/app/Models/Job.php @@ -0,0 +1,41 @@ +logAll() + ->useLogName('system'); + } + public function directorat() + { + return $this->belongsTo(Directorat::class); + } + + public function subDirectorat() + { + return $this->belongsTo(SubDirectorat::class); + } + + public function subJob() + { + return $this->hasMany(SubJob::class); + } +} diff --git a/app/Models/SubDirectorat.php b/app/Models/SubDirectorat.php new file mode 100644 index 0000000..fc17ba7 --- /dev/null +++ b/app/Models/SubDirectorat.php @@ -0,0 +1,41 @@ +logAll() + ->useLogName('system'); + } + + public function directorat() + { + return $this->belongsTo(Directorat::class); + } + + public function subJobs() + { + return $this->hasMany(SubJob::class); + } + + public function jobs() + { + return $this->hasManyThrough(Job::class, SubJob::class); + } +} diff --git a/app/Models/SubJob.php b/app/Models/SubJob.php new file mode 100644 index 0000000..5c6ecb7 --- /dev/null +++ b/app/Models/SubJob.php @@ -0,0 +1,43 @@ +logAll() + ->useLogName('system'); + } + + public function directorat() + { + return $this->belongsTo(Directorat::class); + } + + public function subDirectorat() + { + return $this->belongsTo(SubDirectorat::class); + } + + public function job() + { + return $this->belongsTo(Job::class); + } +} diff --git a/composer.lock b/composer.lock index 5d8df37..fd3a170 100644 --- a/composer.lock +++ b/composer.lock @@ -1753,16 +1753,16 @@ }, { "name": "league/flysystem", - "version": "3.12.3", + "version": "3.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "81e87e74dd5213795c7846d65089712d2dda90ce" + "reference": "e2a279d7f47d9098e479e8b21f7fb8b8de230158" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/81e87e74dd5213795c7846d65089712d2dda90ce", - "reference": "81e87e74dd5213795c7846d65089712d2dda90ce", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e2a279d7f47d9098e479e8b21f7fb8b8de230158", + "reference": "e2a279d7f47d9098e479e8b21f7fb8b8de230158", "shasum": "" }, "require": { @@ -1824,7 +1824,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.12.3" + "source": "https://github.com/thephpleague/flysystem/tree/3.14.0" }, "funding": [ { @@ -1834,13 +1834,9 @@ { "url": "https://github.com/frankdejonge", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" } ], - "time": "2023-02-18T15:32:41+00:00" + "time": "2023-04-11T18:11:47+00:00" }, { "name": "league/fractal", @@ -6920,16 +6916,16 @@ }, { "name": "filp/whoops", - "version": "2.15.1", + "version": "2.15.2", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "e864ac957acd66e1565f25efda61e37791a5db0b" + "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/e864ac957acd66e1565f25efda61e37791a5db0b", - "reference": "e864ac957acd66e1565f25efda61e37791a5db0b", + "url": "https://api.github.com/repos/filp/whoops/zipball/aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", + "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", "shasum": "" }, "require": { @@ -6979,7 +6975,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.1" + "source": "https://github.com/filp/whoops/tree/2.15.2" }, "funding": [ { @@ -6987,7 +6983,7 @@ "type": "github" } ], - "time": "2023-03-06T18:09:13+00:00" + "time": "2023-04-12T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -8964,16 +8960,16 @@ }, { "name": "spatie/flare-client-php", - "version": "1.3.5", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42" + "reference": "530ac81255af79f114344286e4275f8869c671e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/530ac81255af79f114344286e4275f8869c671e2", + "reference": "530ac81255af79f114344286e4275f8869c671e2", "shasum": "" }, "require": { @@ -9021,7 +9017,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.3.5" + "source": "https://github.com/spatie/flare-client-php/tree/1.3.6" }, "funding": [ { @@ -9029,37 +9025,46 @@ "type": "github" } ], - "time": "2023-01-23T15:58:46+00:00" + "time": "2023-04-12T07:57:12+00:00" }, { "name": "spatie/ignition", - "version": "1.4.5", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "cc09114b7057bd217b676f047544b33f5b6247e6" + "reference": "4db9c9626e4d7745efbe0b512157326190b41b65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/cc09114b7057bd217b676f047544b33f5b6247e6", - "reference": "cc09114b7057bd217b676f047544b33f5b6247e6", + "url": "https://api.github.com/repos/spatie/ignition/zipball/4db9c9626e4d7745efbe0b512157326190b41b65", + "reference": "4db9c9626e4d7745efbe0b512157326190b41b65", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", + "spatie/backtrace": "^1.4", "spatie/flare-client-php": "^1.1", "symfony/console": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, "require-dev": { + "illuminate/cache": "^9.52", "mockery/mockery": "^1.4", "pestphp/pest": "^1.20", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "symfony/process": "^5.4|^6.0" + "psr/simple-cache-implementation": "*", + "symfony/cache": "^6.2", + "symfony/process": "^5.4|^6.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", "extra": { @@ -9103,20 +9108,20 @@ "type": "github" } ], - "time": "2023-02-28T16:49:47+00:00" + "time": "2023-04-12T09:07:50+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "70c0e2a22c5c4b691a34db8c98bd6d695660a97a" + "reference": "3718dfb91bc5aff340af26507a61f0f9605f81e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/70c0e2a22c5c4b691a34db8c98bd6d695660a97a", - "reference": "70c0e2a22c5c4b691a34db8c98bd6d695660a97a", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/3718dfb91bc5aff340af26507a61f0f9605f81e8", + "reference": "3718dfb91bc5aff340af26507a61f0f9605f81e8", "shasum": "" }, "require": { @@ -9126,18 +9131,24 @@ "illuminate/support": "^10.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.4.3", + "spatie/ignition": "^1.5.0", "symfony/console": "^6.2.3", "symfony/var-dumper": "^6.2.3" }, "require-dev": { "livewire/livewire": "^2.11", "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.3.4", "orchestra/testbench": "^8.0", "pestphp/pest": "^1.22.3", "phpstan/extension-installer": "^1.2", "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-phpunit": "^1.3.3" + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" }, "type": "library", "extra": { @@ -9148,9 +9159,6 @@ "aliases": { "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" } - }, - "branch-alias": { - "dev-main": "2.0-dev" } }, "autoload": { @@ -9192,7 +9200,7 @@ "type": "github" } ], - "time": "2023-01-24T07:20:39+00:00" + "time": "2023-04-12T09:26:00+00:00" }, { "name": "symfony/yaml", diff --git a/config/settings.php b/config/settings.php index 88ce617..c5d8fd8 100644 --- a/config/settings.php +++ b/config/settings.php @@ -226,6 +226,12 @@ return [ 'assets/plugins/custom/bootstrap-select/bootstrap-select.bundle.js', ], ], + 'chained-select' => [ + 'js' => [ + 'assets/plugins/custom/jquery-chained/jquery.chained.js', + 'assets/plugins/custom/jquery-chained/jquery.chained.remote.js', + ], + ], ], ]; diff --git a/database/migrations/2023_04_10_024809_create_jobs_table.php b/database/migrations/2023_04_10_024809_create_jobs_table.php index 56a6e26..058edfa 100644 --- a/database/migrations/2023_04_10_024809_create_jobs_table.php +++ b/database/migrations/2023_04_10_024809_create_jobs_table.php @@ -13,7 +13,8 @@ return new class extends Migration { Schema::create('jobs', function (Blueprint $table) { $table->id(); - $table->foreignId('sub_directorat_id'); + $table->foreignId('directorat_id')->constrained('directorats')->onDelete('cascade'); + $table->foreignId('sub_directorat_id')->constrained('sub_directorats')->onDelete('cascade'); $table->string('kode',2); $table->string('name',50); $table->timestamps(); diff --git a/database/migrations/2023_04_10_024820_create_sub_jobs_table.php b/database/migrations/2023_04_10_024820_create_sub_jobs_table.php index a0f5d4f..9d29c0e 100644 --- a/database/migrations/2023_04_10_024820_create_sub_jobs_table.php +++ b/database/migrations/2023_04_10_024820_create_sub_jobs_table.php @@ -13,7 +13,9 @@ return new class extends Migration { Schema::create('sub_jobs', function (Blueprint $table) { $table->id(); - $table->foreignId('job_id'); + $table->foreignId('directorat_id')->constrained('directorats')->onDelete('cascade'); + $table->foreignId('sub_directorat_id')->constrained('sub_directorats')->onDelete('cascade'); + $table->foreignId('job_id')->constrained('jobs')->onDelete('cascade'); $table->string('kode',2); $table->string('name',50); $table->timestamps(); diff --git a/package-lock.json b/package-lock.json index 7897c4f..51740a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "starterkit", + "name": "cetak-label", "lockfileVersion": 3, "requires": true, "packages": { @@ -67,6 +67,7 @@ "inputmask": "^5.0.6", "jkanban": "^1.3.1", "jquery": "3.6.0", + "jquery-chained": "^2.0.0-beta.2", "jquery.repeater": "^1.2.1", "jstree": "^3.3.11", "jszip": "^3.6.0", @@ -8928,6 +8929,11 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" }, + "node_modules/jquery-chained": { + "version": "2.0.0-beta.2", + "resolved": "https://registry.npmjs.org/jquery-chained/-/jquery-chained-2.0.0-beta.2.tgz", + "integrity": "sha512-3/M0J5RCz1b6nqt8+JumCA/x5LgcBrKka3Zv+rimjkbhFzzWD6prCKQrGQXHSXqJdW2yfQv+MxVAQFUfyu3Q5w==" + }, "node_modules/jquery.repeater": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/jquery.repeater/-/jquery.repeater-1.2.1.tgz", @@ -10115,6 +10121,8 @@ }, "node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "inBundle": true, "license": "ISC" }, @@ -10316,11 +10324,15 @@ }, "node_modules/npm/node_modules/abbrev": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "inBundle": true, "license": "MIT", "dependencies": { @@ -10345,6 +10357,8 @@ }, "node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "inBundle": true, "license": "MIT", "dependencies": { @@ -10372,6 +10386,8 @@ }, "node_modules/npm/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "inBundle": true, "license": "MIT", "engines": { @@ -10380,6 +10396,8 @@ }, "node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "inBundle": true, "license": "MIT", "dependencies": { @@ -10394,21 +10412,29 @@ }, "node_modules/npm/node_modules/ansicolors": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/ansistyles": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ansistyles/-/ansistyles-0.1.3.tgz", + "integrity": "sha512-6QWEyvMgIXX0eO972y7YPBLSBsq7UWKFAoNNTLGaOJ9bstcEL9sCbcjf96dVfNDdUsRoGOK82vWFJlKApXds7g==", "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/aproba": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/archy": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "inBundle": true, "license": "MIT" }, @@ -10426,6 +10452,8 @@ }, "node_modules/npm/node_modules/asap": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "inBundle": true, "license": "MIT" }, @@ -10465,6 +10493,8 @@ }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "inBundle": true, "license": "MIT" }, @@ -10494,6 +10524,8 @@ }, "node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "inBundle": true, "license": "MIT", "engines": { @@ -10502,6 +10534,8 @@ }, "node_modules/npm/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "inBundle": true, "license": "MIT", "dependencies": { @@ -10549,6 +10583,8 @@ }, "node_modules/npm/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "inBundle": true, "license": "MIT", "dependencies": { @@ -10564,6 +10600,8 @@ }, "node_modules/npm/node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "inBundle": true, "license": "ISC", "engines": { @@ -10583,6 +10621,8 @@ }, "node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "inBundle": true, "license": "MIT", "engines": { @@ -10626,6 +10666,8 @@ }, "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "inBundle": true, "license": "MIT", "engines": { @@ -10658,6 +10700,8 @@ }, "node_modules/npm/node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "inBundle": true, "license": "MIT", "engines": { @@ -10685,6 +10729,8 @@ }, "node_modules/npm/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "inBundle": true, "license": "MIT", "dependencies": { @@ -10696,6 +10742,8 @@ }, "node_modules/npm/node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "inBundle": true, "license": "MIT" }, @@ -10738,16 +10786,22 @@ }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "inBundle": true, "license": "ISC" }, @@ -10790,6 +10844,8 @@ }, "node_modules/npm/node_modules/debuglog": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "inBundle": true, "license": "MIT", "engines": { @@ -10814,6 +10870,8 @@ }, "node_modules/npm/node_modules/delegates": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "inBundle": true, "license": "MIT" }, @@ -10853,6 +10911,8 @@ }, "node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "inBundle": true, "license": "MIT" }, @@ -10867,6 +10927,8 @@ }, "node_modules/npm/node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "inBundle": true, "license": "MIT", "engines": { @@ -10875,6 +10937,8 @@ }, "node_modules/npm/node_modules/err-code": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "inBundle": true, "license": "MIT" }, @@ -10893,11 +10957,15 @@ }, "node_modules/npm/node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "inBundle": true, "license": "MIT" }, @@ -10916,6 +10984,8 @@ }, "node_modules/npm/node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "inBundle": true, "license": "ISC", "dependencies": { @@ -10927,11 +10997,15 @@ }, "node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/function-bind": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "inBundle": true, "license": "MIT" }, @@ -11008,6 +11082,8 @@ }, "node_modules/npm/node_modules/has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "inBundle": true, "license": "MIT", "dependencies": { @@ -11019,6 +11095,8 @@ }, "node_modules/npm/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "inBundle": true, "license": "MIT", "engines": { @@ -11027,6 +11105,8 @@ }, "node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "inBundle": true, "license": "ISC" }, @@ -11087,6 +11167,8 @@ }, "node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "inBundle": true, "license": "MIT", "dependencies": { @@ -11095,6 +11177,8 @@ }, "node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "inBundle": true, "license": "MIT", "optional": true, @@ -11115,6 +11199,8 @@ }, "node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "inBundle": true, "license": "MIT", "engines": { @@ -11123,6 +11209,8 @@ }, "node_modules/npm/node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "inBundle": true, "license": "MIT", "engines": { @@ -11131,11 +11219,15 @@ }, "node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11145,6 +11237,8 @@ }, "node_modules/npm/node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "inBundle": true, "license": "ISC" }, @@ -11218,6 +11312,8 @@ }, "node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "inBundle": true, "license": "MIT" }, @@ -11228,6 +11324,8 @@ }, "node_modules/npm/node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "inBundle": true, "license": "ISC" }, @@ -11243,6 +11341,8 @@ }, "node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "inBundle": true, "license": "MIT" }, @@ -11252,11 +11352,15 @@ }, "node_modules/npm/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", "inBundle": true, "license": "ISC", "funding": { @@ -11270,6 +11374,8 @@ }, "node_modules/npm/node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "engines": [ "node >= 0.2.0" ], @@ -11450,6 +11556,8 @@ }, "node_modules/npm/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11528,6 +11636,8 @@ }, "node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11555,6 +11665,8 @@ }, "node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11566,6 +11678,8 @@ }, "node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "inBundle": true, "license": "MIT", "dependencies": { @@ -11575,6 +11689,8 @@ }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11586,6 +11702,8 @@ }, "node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11597,6 +11715,8 @@ }, "node_modules/npm/node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "inBundle": true, "license": "MIT", "dependencies": { @@ -11609,6 +11729,8 @@ }, "node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "inBundle": true, "license": "MIT", "bin": { @@ -11620,6 +11742,8 @@ }, "node_modules/npm/node_modules/mkdirp-infer-owner": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11633,6 +11757,8 @@ }, "node_modules/npm/node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "inBundle": true, "license": "MIT" }, @@ -11904,6 +12030,8 @@ }, "node_modules/npm/node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "inBundle": true, "license": "MIT", "engines": { @@ -11912,6 +12040,8 @@ }, "node_modules/npm/node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "inBundle": true, "license": "ISC", "dependencies": { @@ -11920,6 +12050,8 @@ }, "node_modules/npm/node_modules/opener": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "inBundle": true, "license": "(WTFPL OR MIT)", "bin": { @@ -11928,6 +12060,8 @@ }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "inBundle": true, "license": "MIT", "dependencies": { @@ -11984,6 +12118,8 @@ }, "node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "inBundle": true, "license": "MIT", "engines": { @@ -12002,6 +12138,8 @@ }, "node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", "inBundle": true, "license": "ISC", "funding": { @@ -12018,11 +12156,15 @@ }, "node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "inBundle": true, "license": "MIT", "dependencies": { @@ -12056,6 +12198,8 @@ }, "node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -12126,6 +12270,8 @@ }, "node_modules/npm/node_modules/readdir-scoped-modules": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", "inBundle": true, "license": "ISC", "dependencies": { @@ -12192,6 +12338,8 @@ }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "inBundle": true, "license": "MIT", "engines": { @@ -12200,6 +12348,8 @@ }, "node_modules/npm/node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "inBundle": true, "license": "ISC", "dependencies": { @@ -12214,6 +12364,8 @@ }, "node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -12233,6 +12385,8 @@ }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "inBundle": true, "license": "MIT" }, @@ -12252,6 +12406,8 @@ }, "node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "inBundle": true, "license": "ISC" }, @@ -12306,11 +12462,15 @@ }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "inBundle": true, "license": "MIT", "dependencies": { @@ -12360,6 +12520,8 @@ }, "node_modules/npm/node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "inBundle": true, "license": "MIT", "dependencies": { @@ -12404,6 +12566,8 @@ }, "node_modules/npm/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "inBundle": true, "license": "MIT", "dependencies": { @@ -12415,6 +12579,8 @@ }, "node_modules/npm/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "inBundle": true, "license": "MIT", "dependencies": { @@ -12442,11 +12608,15 @@ }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz", + "integrity": "sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==", "inBundle": true, "license": "MIT" }, @@ -12497,6 +12667,8 @@ }, "node_modules/npm/node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -12505,6 +12677,8 @@ }, "node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "inBundle": true, "license": "MIT" }, @@ -12518,6 +12692,8 @@ }, "node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -12548,11 +12724,15 @@ }, "node_modules/npm/node_modules/walk-up-path": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "inBundle": true, "license": "MIT", "dependencies": { @@ -12561,6 +12741,8 @@ }, "node_modules/npm/node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "inBundle": true, "license": "ISC", "dependencies": { @@ -12583,6 +12765,8 @@ }, "node_modules/npm/node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "inBundle": true, "license": "ISC" }, @@ -12599,6 +12783,8 @@ }, "node_modules/npm/node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "inBundle": true, "license": "ISC" }, diff --git a/package.json b/package.json index 448c328..f07f066 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "inputmask": "^5.0.6", "jkanban": "^1.3.1", "jquery": "3.6.0", + "jquery-chained": "^2.0.0-beta.2", "jquery.repeater": "^1.2.1", "jstree": "^3.3.11", "jszip": "^3.6.0", diff --git a/resources/views/layout/partials/sidebar-layout/_page-title.blade.php b/resources/views/layout/partials/sidebar-layout/_page-title.blade.php index d1f19aa..48f3974 100644 --- a/resources/views/layout/partials/sidebar-layout/_page-title.blade.php +++ b/resources/views/layout/partials/sidebar-layout/_page-title.blade.php @@ -5,7 +5,7 @@ @endphp -

List {{ $route[0] }}

+

{{ ucfirst(str_replace('-',' ',$route[0])) }}

diff --git a/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php b/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php index 5031fd7..4dff460 100644 --- a/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php +++ b/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php @@ -1,22 +1,22 @@
- -
- @include(config('settings.KT_THEME_LAYOUT_DIR').'/partials/sidebar-layout/_page-title') + +
+ @include(config('settings.KT_THEME_LAYOUT_DIR').'/partials/sidebar-layout/_page-title') @php $route = explode('.',Route::currentRouteName()); @endphp - @if($route[1] == 'index') + @if(isset($route[1]) && $route[1] == 'index') - + + Add {{ str_replace('-',' ',$route[0]) }} + +
+ @endif -
- +
+ diff --git a/resources/views/layout/partials/sidebar-layout/sidebar/_menu.blade.php b/resources/views/layout/partials/sidebar-layout/sidebar/_menu.blade.php index 2bde766..b546e15 100644 --- a/resources/views/layout/partials/sidebar-layout/sidebar/_menu.blade.php +++ b/resources/views/layout/partials/sidebar-layout/sidebar/_menu.blade.php @@ -25,9 +25,12 @@ {{-- Master --}} + @php + $route = explode('.',Route::currentRouteName()); + @endphp -