From 1f0759a0ca3a144cba9943e5ef7e0b443a2c95a0 Mon Sep 17 00:00:00 2001 From: Fabio Date: Thu, 12 Sep 2024 13:02:12 -0400 Subject: [PATCH 1/7] FOUR-18634: New view "cases" and Implement new UI tabs --- .../Http/Controllers/RequestController.php | 5 ++ resources/js/cases/components/CaseDetail.vue | 48 ++++++++++++++ resources/js/cases/components/Tabs.vue | 66 +++++++++++++++++++ resources/js/cases/edit.js | 8 +++ resources/views/cases/edit.blade.php | 25 +++++++ resources/views/layouts/layout.blade.php | 1 + 6 files changed, 153 insertions(+) create mode 100644 resources/js/cases/components/CaseDetail.vue create mode 100644 resources/js/cases/components/Tabs.vue create mode 100644 resources/js/cases/edit.js create mode 100644 resources/views/cases/edit.blade.php diff --git a/ProcessMaker/Http/Controllers/RequestController.php b/ProcessMaker/Http/Controllers/RequestController.php index b4924debc7..8deef44b5a 100644 --- a/ProcessMaker/Http/Controllers/RequestController.php +++ b/ProcessMaker/Http/Controllers/RequestController.php @@ -281,4 +281,9 @@ public function summaryScreenTranslation(ProcessRequest $request): void $request->summary_screen['config'] = $translatedConf; } } + + public function edit(ProcessRequest $request) + { + return view('cases.edit'); + } } diff --git a/resources/js/cases/components/CaseDetail.vue b/resources/js/cases/components/CaseDetail.vue new file mode 100644 index 0000000000..6135a8aeb5 --- /dev/null +++ b/resources/js/cases/components/CaseDetail.vue @@ -0,0 +1,48 @@ + + + diff --git a/resources/js/cases/components/Tabs.vue b/resources/js/cases/components/Tabs.vue new file mode 100644 index 0000000000..2a9f4f860b --- /dev/null +++ b/resources/js/cases/components/Tabs.vue @@ -0,0 +1,66 @@ + + + diff --git a/resources/js/cases/edit.js b/resources/js/cases/edit.js new file mode 100644 index 0000000000..c633a6cb01 --- /dev/null +++ b/resources/js/cases/edit.js @@ -0,0 +1,8 @@ +import Vue from "vue"; +import CaseDetail from "./components/CaseDetail.vue"; + +new Vue({ + el: "#case-detail", + components: { CaseDetail }, + data() {}, +}); diff --git a/resources/views/cases/edit.blade.php b/resources/views/cases/edit.blade.php new file mode 100644 index 0000000000..a89c2e3b46 --- /dev/null +++ b/resources/views/cases/edit.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.layout') + +@section('title') + {{ __('Case Detail') }} +@endsection + +@section('sidebar') + @include('layouts.sidebar', ['sidebar' => Menu::get('sidebar_request')]) +@endsection + +@section('breadcrumbs') + @include('shared.breadcrumbs', ['routes' => [ + __('Cases') => route('cases.index'), + ]]) +@endsection + +@section('content') +
+ +
+@endsection + +@section('js') + +@endsection diff --git a/resources/views/layouts/layout.blade.php b/resources/views/layouts/layout.blade.php index 2fd4356d4c..301ddc5189 100644 --- a/resources/views/layouts/layout.blade.php +++ b/resources/views/layouts/layout.blade.php @@ -39,6 +39,7 @@ + @yield('css') diff --git a/resources/js/cases/components/Tabs.vue b/resources/jscomposition/cases/casesDetail/components/Tabs.vue similarity index 91% rename from resources/js/cases/components/Tabs.vue rename to resources/jscomposition/cases/casesDetail/components/Tabs.vue index d7f752eca7..0f0f056932 100644 --- a/resources/js/cases/components/Tabs.vue +++ b/resources/jscomposition/cases/casesDetail/components/Tabs.vue @@ -12,7 +12,7 @@ :href="tab.href" class="tw-whitespace-nowrap tw-border-b-2 tw-px-1 tw-py-4 tw-text-sm tw-font-medium" :class="[tabSelected === tab.current ? 'tw-border-blue-500 tw-text-blue-500' - : 'tw-border-transparent tw-text-gray-500 hover:tw-border-gray-600 hover:tw-text-gray-600' + : 'tw-border-transparent tw-text-gray-500 hover:tw-border-gray-600 hover:tw-text-gray-600' ]" :aria-current="tab.current ? 'page' : undefined" @click="selectTab(tab)" @@ -21,7 +21,7 @@ -
+
diff --git a/resources/jscomposition/cases/casesDetail/components/TaskTable.vue b/resources/jscomposition/cases/casesDetail/components/TaskTable.vue new file mode 100644 index 0000000000..ec56dc0555 --- /dev/null +++ b/resources/jscomposition/cases/casesDetail/components/TaskTable.vue @@ -0,0 +1,35 @@ + + + diff --git a/resources/jscomposition/cases/casesDetail/config/columns.js b/resources/jscomposition/cases/casesDetail/config/columns.js new file mode 100644 index 0000000000..2d00eadf2f --- /dev/null +++ b/resources/jscomposition/cases/casesDetail/config/columns.js @@ -0,0 +1,99 @@ +import BadgeContainer from "../../casesMain/components/BadgeContainer.vue"; +import AvatarContainer from "../../casesMain/components/AvatarContainer.vue"; + +export default {}; + +// Column for Task +const taskNumberColumn = () => ({ + field: "id", + header: "Tasks #", + resizable: true, + with: 200, +}); + +const taskNameColumn = () => ({ + field: "case_title", + header: "Task Name", + resizable: true, + with: 200, +}); + +const processNameColumn = () => ({ + field: "process_name", + header: "Process", + resizable: true, + with: 200, +}); + +const assignedColumn = () => ({ + field: "assigned", + header: "Assigned", + resizable: true, + with: 200, + cellRenderer: () => AvatarContainer, +}); + +const dueDateColumn = () => ({ + field: "due_date", + header: "Due Date", + resizable: true, + with: 200, +}); + +// Columns for Requests +const requestNumberColumn = () => ({ + field: "id", + header: "Request #", + resizable: true, + with: 200, +}); + +const requestNameColumn = () => ({ + field: "case_title", + header: "Request Name", + resizable: true, + with: 200, +}); + +const currentTaskColumn = () => ({ + field: "current_task", + header: "Current Task", + resizable: true, + with: 200, +}); + +const statusColumn = () => ({ + field: "status", + header: "Status", + resizable: true, + with: 200, + cellRenderer: () => BadgeContainer, +}); + +const startedColumn = () => ({ + field: "started_date", + header: "started", + resizable: true, + with: 200, +}); + +export const getColumns = (type) => { + const columns = { + tasks: [ + taskNumberColumn(), + taskNameColumn(), + processNameColumn(), + assignedColumn(), + dueDateColumn(), + ], + requests: [ + requestNumberColumn(), + requestNameColumn(), + currentTaskColumn(), + statusColumn(), + startedColumn(), + ], + }; + + return columns[type]; +}; diff --git a/resources/js/cases/edit.js b/resources/jscomposition/cases/casesDetail/edit.js similarity index 100% rename from resources/js/cases/edit.js rename to resources/jscomposition/cases/casesDetail/edit.js diff --git a/resources/views/cases/edit.blade.php b/resources/views/cases/edit.blade.php index a89c2e3b46..b95a5fba74 100644 --- a/resources/views/cases/edit.blade.php +++ b/resources/views/cases/edit.blade.php @@ -21,5 +21,5 @@ @endsection @section('js') - + @endsection From 343faed2a3f9c2cbc80502076aba2588e2f29c41 Mon Sep 17 00:00:00 2001 From: Fabio Date: Mon, 16 Sep 2024 15:41:09 -0400 Subject: [PATCH 5/7] CR --- .../cases/casesDetail/config/columns.js | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/jscomposition/cases/casesDetail/config/columns.js b/resources/jscomposition/cases/casesDetail/config/columns.js index 2d00eadf2f..21f34b20e1 100644 --- a/resources/jscomposition/cases/casesDetail/config/columns.js +++ b/resources/jscomposition/cases/casesDetail/config/columns.js @@ -8,28 +8,28 @@ const taskNumberColumn = () => ({ field: "id", header: "Tasks #", resizable: true, - with: 200, + width: 200, }); const taskNameColumn = () => ({ field: "case_title", header: "Task Name", resizable: true, - with: 200, + width: 200, }); const processNameColumn = () => ({ field: "process_name", header: "Process", resizable: true, - with: 200, + width: 200, }); const assignedColumn = () => ({ field: "assigned", header: "Assigned", resizable: true, - with: 200, + width: 200, cellRenderer: () => AvatarContainer, }); @@ -37,7 +37,7 @@ const dueDateColumn = () => ({ field: "due_date", header: "Due Date", resizable: true, - with: 200, + width: 200, }); // Columns for Requests @@ -45,28 +45,28 @@ const requestNumberColumn = () => ({ field: "id", header: "Request #", resizable: true, - with: 200, + width: 200, }); const requestNameColumn = () => ({ field: "case_title", header: "Request Name", resizable: true, - with: 200, + width: 200, }); const currentTaskColumn = () => ({ field: "current_task", header: "Current Task", resizable: true, - with: 200, + width: 200, }); const statusColumn = () => ({ field: "status", header: "Status", resizable: true, - with: 200, + width: 200, cellRenderer: () => BadgeContainer, }); @@ -74,7 +74,7 @@ const startedColumn = () => ({ field: "started_date", header: "started", resizable: true, - with: 200, + width: 200, }); export const getColumns = (type) => { From 619a1e8eed2e0b9c92f1ab812646e7249230bbb2 Mon Sep 17 00:00:00 2001 From: Fabio Date: Tue, 17 Sep 2024 08:22:10 -0400 Subject: [PATCH 6/7] routes --- routes/web.php | 1 + webpack.mix.js | 1 + 2 files changed, 2 insertions(+) diff --git a/routes/web.php b/routes/web.php index 79f9f40450..3ef78d39a3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -137,6 +137,7 @@ Route::post('/keep-alive', [LoginController::class, 'keepAlive'])->name('keep-alive'); // Cases Route::get('cases', [RequestController::class, 'index'])->name('cases.index')->middleware('no-cache'); + Route::get('cases/{request}', [RequestController::class, 'edit'])->name('cases.edit'); // This is a temporary API the engine team will create the API Route::get('cases-main', [CasesController::class, 'index'])->name('cases-main.index')->middleware('no-cache'); Route::get('cases/{type?}', [RequestController::class, 'index'])->name('cases_by_type') diff --git a/webpack.mix.js b/webpack.mix.js index e26379255a..ece7502148 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -122,6 +122,7 @@ mix .js("resources/js/requests/show.js", "public/js/requests") .js("resources/js/requests/preview.js", "public/js/requests") .js("resources/jscomposition/cases/casesMain/main.js", "public/js/composition/cases/casesMain/main.js") + .js("resources/jscomposition/cases/casesDetail/edit.js", "public/js/composition/cases/casesDetail/edit.js") .js("resources/js/processes/translations/import.js", "public/js/processes/translations") .js("resources/js/processes-catalogue/index.js", "public/js/processes-catalogue/index.js") From b78b352f32022e466ecac8050c4b816bc7b65b0a Mon Sep 17 00:00:00 2001 From: Fabio Date: Thu, 19 Sep 2024 10:09:47 -0400 Subject: [PATCH 7/7] update --- ProcessMaker/Http/Controllers/CasesController.php | 4 ++++ ProcessMaker/Http/Controllers/RequestController.php | 5 ----- routes/web.php | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ProcessMaker/Http/Controllers/CasesController.php b/ProcessMaker/Http/Controllers/CasesController.php index 8a5c5f7196..36b60a3aaa 100644 --- a/ProcessMaker/Http/Controllers/CasesController.php +++ b/ProcessMaker/Http/Controllers/CasesController.php @@ -41,4 +41,8 @@ public function index($type = null) // This is a temporary API the engine team will provide the new return view('cases.casesMain'); } + public function edit(ProcessRequest $request) + { + return view('cases.edit'); + } } diff --git a/ProcessMaker/Http/Controllers/RequestController.php b/ProcessMaker/Http/Controllers/RequestController.php index 8deef44b5a..b4924debc7 100644 --- a/ProcessMaker/Http/Controllers/RequestController.php +++ b/ProcessMaker/Http/Controllers/RequestController.php @@ -281,9 +281,4 @@ public function summaryScreenTranslation(ProcessRequest $request): void $request->summary_screen['config'] = $translatedConf; } } - - public function edit(ProcessRequest $request) - { - return view('cases.edit'); - } } diff --git a/routes/web.php b/routes/web.php index 3ef78d39a3..a2e4a3ede1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -137,7 +137,7 @@ Route::post('/keep-alive', [LoginController::class, 'keepAlive'])->name('keep-alive'); // Cases Route::get('cases', [RequestController::class, 'index'])->name('cases.index')->middleware('no-cache'); - Route::get('cases/{request}', [RequestController::class, 'edit'])->name('cases.edit'); + Route::get('cases/{request}', [CasesController::class, 'edit'])->name('cases.edit'); // This is a temporary API the engine team will create the API Route::get('cases-main', [CasesController::class, 'index'])->name('cases-main.index')->middleware('no-cache'); Route::get('cases/{type?}', [RequestController::class, 'index'])->name('cases_by_type')