Skip to content

Commit a5461fb

Browse files
Added a task form autosave with delays
1 parent 72f8a49 commit a5461fb

5 files changed

Lines changed: 36 additions & 8 deletions

File tree

ProcessMaker/Http/Controllers/Api/TaskDraftController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
use ProcessMaker\Http\Resources\ApiCollection;
88
use ProcessMaker\Http\Resources\ApiResource;
99
use ProcessMaker\Models\TaskDraft;
10+
use ProcessMaker\Models\ProcessRequestToken;
11+
use Illuminate\Support\Arr;
1012

1113
class TaskDraftController extends Controller
1214
{
1315
public function update(Request $request, ProcessRequestToken $task)
1416
{
1517
$search = ['task_id' => $task->id];
16-
17-
$draft = TaskDraft::updateOrCreate($search, $request);
18+
$filteredData = Arr::except($request->all(), ['_user', '_request']);
19+
$draft = TaskDraft::updateOrCreate($search,['data' => $filteredData]);
1820

1921
return new ApiResource($draft);
2022
}

ProcessMaker/Models/TaskDraft.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ class TaskDraft extends ProcessMakerModel
1515
'created_at',
1616
];
1717

18+
protected $fillable = [
19+
'task_id',
20+
'data',
21+
];
22+
1823
protected $casts = [
1924
'data' => 'array',
2025
];

resources/js/tasks/show.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import NavbarTaskMobile from "./components/NavbarTaskMobile.vue";
88
import AvatarImage from "../components/AvatarImage.vue";
99
import Timeline from "../components/Timeline.vue";
1010
import TimelineItem from "../components/TimelineItem.vue";
11+
import autosaveMixins from "../modules/autosave/autosaveMixin";
1112

1213
Vue.use(Vuex);
1314
Vue.use("task", Task);
@@ -18,5 +19,7 @@ Vue.component("MonacoEditor", MonacoEditor);
1819
Vue.component("Timeline", Timeline);
1920
Vue.component("TimelineItem", TimelineItem);
2021

22+
Vue.mixin(autosaveMixins);
23+
2124
window.debounce = debounce;
2225
window.Vuex = Vuex;

resources/views/tasks/edit.blade.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class="card border-0"
6464
@@error="error"
6565
@closed="closed"
6666
@redirect="redirectToTask"
67-
@form-data-changed="autoSave"
67+
@form-data-changed="handleAutosave()"
6868
></task>
6969
@endcan
7070
<div v-if="taskHasComments">
@@ -269,6 +269,8 @@ class="d-inline-flex pull-left align-items-center"
269269
userIsAdmin,
270270
userIsProcessManager,
271271
showTree: false,
272+
is_loading: false,
273+
autoSaveDelay: 5000,
272274
},
273275
watch: {
274276
task: {
@@ -460,8 +462,15 @@ class="d-inline-flex pull-left align-items-center"
460462
taskUpdated(task) {
461463
this.task = task;
462464
},
463-
autoSave(formData) {
464-
console.log("Hola", formData);
465+
autosaveApiCall() {
466+
return ProcessMaker.apiClient
467+
.put("drafts/" + this.task.id, this.formData)
468+
.then(() => {
469+
this.is_loading = true;
470+
})
471+
.finally(() => {
472+
this.is_loading = false;
473+
});
465474
},
466475
},
467476
mounted() {

resources/views/tasks/preview.blade.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class="card border-0"
107107
@@error="error"
108108
@closed="closed"
109109
@redirect="redirectToTask"
110-
@form-data-changed="autoSave"
110+
@form-data-changed="handleAutosave()"
111111
:task-preview="true"
112112
></task>
113113
</div>
@@ -184,6 +184,8 @@ class="card border-0"
184184
submitting: false,
185185
userIsAdmin,
186186
userIsProcessManager,
187+
is_loading: false,
188+
autoSaveDelay: 5000,
187189
},
188190
watch: {
189191
task: {
@@ -375,8 +377,15 @@ class="card border-0"
375377
taskUpdated(task) {
376378
this.task = task;
377379
},
378-
autoSave(formData) {
379-
console.log("Hola", formData);
380+
autosaveApiCall() {
381+
return ProcessMaker.apiClient
382+
.put("drafts/" + this.task.id, this.formData)
383+
.then(() => {
384+
this.is_loading = true;
385+
})
386+
.finally(() => {
387+
this.is_loading = false;
388+
});
380389
},
381390
},
382391
mounted() {

0 commit comments

Comments
 (0)