Skip to content

Commit b7ae604

Browse files
committed
FOUR-24946
1 parent f73fb0f commit b7ae604

4 files changed

Lines changed: 62 additions & 3 deletions

File tree

‎ProcessMaker/Helpers/DefaultColumns.php‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Illuminate\Support\Facades\Auth;
66
use ProcessMaker\Package\SavedSearch\Http\Controllers\SavedSearchController;
77
use ProcessMaker\Package\SavedSearch\Models\SavedSearch;
8+
use ProcessMaker\Package\SavedSearch\Traits\HasDataColumns;
89

910
class DefaultColumns
1011
{
@@ -40,4 +41,53 @@ public static function get(string $key)
4041

4142
return $defaultColumns;
4243
}
44+
45+
/**
46+
* Simple verification if columns are default - returns true or false
47+
*
48+
* @param array|null $savedColumns The columns to verify
49+
* @param string $key The key to identify the type can be tasks or requests
50+
* @return bool True if columns have the same fields as defaults, false otherwise
51+
*/
52+
public static function verifyDefaultColumns($savedColumns, string $key): bool
53+
{
54+
// Handle null savedColumns
55+
if ($savedColumns === null || !is_array($savedColumns)) {
56+
return false;
57+
}
58+
59+
// Determine the type based on the key
60+
$type = null;
61+
if ($key === SavedSearch::KEY_TASKS) {
62+
$type = 'task';
63+
} elseif ($key === SavedSearch::KEY_REQUESTS) {
64+
$type = 'request';
65+
} else {
66+
return false;
67+
}
68+
69+
// Get default columns using the HasDataColumns trait
70+
$defaultColumns = SavedSearch::getDefaultColumns($type);
71+
if ($defaultColumns->isEmpty()) {
72+
return false;
73+
}
74+
75+
// Extract only the 'field' values from default columns
76+
$defaultFields = $defaultColumns->map(function ($column) {
77+
return $column->field ?? null;
78+
})->filter()->sort()->values()->toArray();
79+
80+
// Extract only the 'field' values from saved columns (handling both formats)
81+
$savedFields = collect($savedColumns)->map(function ($column) {
82+
// Handle both object and array formats
83+
if (is_object($column)) {
84+
return $column->field ?? null;
85+
} else {
86+
return $column['field'] ?? null;
87+
}
88+
})->filter()->sort()->values()->toArray();
89+
90+
// Compare only the field arrays
91+
return $defaultFields == $savedFields;
92+
}
4393
}

‎ProcessMaker/Http/Controllers/TaskController.php‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ public function index()
6666

6767
$defaultColumns = DefaultColumns::get('tasks');
6868

69+
$isDefaultColumns = DefaultColumns::verifyDefaultColumns($defaultColumns, 'tasks');
70+
6971
$taskDraftsEnabled = TaskDraft::draftsEnabled();
7072

7173
$userConfiguration = (new UserConfigurationController())->index()['ui_configuration'] ?? [];
@@ -74,7 +76,7 @@ public function index()
7476

7577
$defaultSavedSearchId = $this->getDefaultSavedSearchId();
7678

77-
return view('tasks.index', compact('title', 'userFilter', 'defaultColumns', 'taskDraftsEnabled', 'userConfiguration', 'showOldTaskScreen', 'currentUser', 'selectedProcess', 'defaultSavedSearchId', 'manager'));
79+
return view('tasks.index', compact('title', 'userFilter', 'defaultColumns', 'isDefaultColumns', 'taskDraftsEnabled', 'userConfiguration', 'showOldTaskScreen', 'currentUser', 'selectedProcess', 'defaultSavedSearchId', 'manager'));
7880
}
7981

8082
public function edit(ProcessRequestToken $task, string $preview = '')

‎resources/js/tasks/components/ListMixin.js‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,14 @@ const ListMixin = {
8282
this.page = 1;
8383
}
8484
this.previousAdvancedFilter = advancedFilter;
85-
const include =
86-
"process,processRequest,processRequest.user,user,data".split(",");
85+
let includeString = "process,processRequest,processRequest.user,user,data";
86+
// If columns are default (isDefaultColumns = true), don't include data
87+
// If columns are NOT default (isDefaultColumns = false), include data
88+
const isDefaultColumns = window.ProcessMaker?.isDefaultColumns ?? false;
89+
if (isDefaultColumns) {
90+
includeString = "process,processRequest,processRequest.user,user";
91+
}
92+
const include = includeString.split(",");
8793
if (this.additionalIncludes) {
8894
include.push(...this.additionalIncludes);
8995
}

‎resources/views/tasks/index.blade.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
window.ProcessMaker.taskDraftsEnabled = @json($taskDraftsEnabled);
156156
window.ProcessMaker.advanced_filter = @json($userFilter);
157157
window.Processmaker.defaultColumns = @json($defaultColumns);
158+
window.ProcessMaker.isDefaultColumns = @json($isDefaultColumns ?? false);
158159
window.ProcessMaker.userConfiguration = @json($userConfiguration ?? []);
159160
window.sessionStorage.setItem('elementDestinationURL', window.location.href);
160161
window.ProcessMaker.showOldTaskScreen = @json($showOldTaskScreen);

0 commit comments

Comments
 (0)