@adminforth/background-jobs 1.13.0 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build.log CHANGED
@@ -13,5 +13,5 @@ custom/tsconfig.json
13
13
  custom/useBackgroundJobApi.ts
14
14
  custom/utils.ts
15
15
 
16
- sent 21,425 bytes received 172 bytes 43,194.00 bytes/sec
17
- total size is 20,792 speedup is 0.96
16
+ sent 22,184 bytes received 172 bytes 44,712.00 bytes/sec
17
+ total size is 21,551 speedup is 0.96
@@ -134,12 +134,14 @@ function handleJobStateFieldUpdate(data: JobStateFieldUpdate) {
134
134
  return;
135
135
  }
136
136
 
137
- jobStore.updateCurrentJob({
138
- state: {
139
- ...props.job.state,
140
- [data.fieldName]: data.value,
141
- },
142
- });
137
+ props.job.state[data.fieldName] = data.value;
138
+ if (jobStore.currentJob?.id === props.job.id) {
139
+ jobStore.updateCurrentJob({
140
+ state: {
141
+ ...props.job.state,
142
+ },
143
+ });
144
+ }
143
145
  }
144
146
 
145
147
  function handleTaskStateFieldUpdate(data: TaskStateFieldUpdate) {
@@ -5,7 +5,7 @@
5
5
  class="p-4"
6
6
  v-for="job in props.jobs" :key="job.id"
7
7
  :beforeCloseFunction="onBeforeClose"
8
- :beforeOpenFunction="onBeforeOpen"
8
+ :beforeOpenFunction="() => onBeforeOpen(job)"
9
9
  removeFromDomOnClose
10
10
  >
11
11
  <template #trigger>
@@ -30,7 +30,8 @@
30
30
  </div>
31
31
  </template>
32
32
  <JobInfoPopup
33
- :job="job"
33
+ v-if="loadedJobs[job.id]"
34
+ :job="loadedJobs[job.id]"
34
35
  :meta="meta"
35
36
  :closeModal="closeModal"
36
37
  />
@@ -42,7 +43,7 @@
42
43
 
43
44
  <script setup lang="ts">
44
45
  import type { IJob } from './utils';
45
- import { getTimeAgoString } from '@/utils';
46
+ import { callAdminForthApi, getTimeAgoString } from '@/utils';
46
47
  import { ProgressBar, Modal } from '@/afcl';
47
48
  import JobInfoPopup from './JobInfoPopup.vue';
48
49
  import StateToIcon from './StateToIcon.vue';
@@ -78,9 +79,34 @@ const props = defineProps<{
78
79
 
79
80
 
80
81
  const isModalOpen = ref(false);
82
+ const loadedJobs = ref<Record<string, IJob>>({});
81
83
 
82
- function onBeforeOpen() {
84
+ async function onBeforeOpen(job: IJob) {
83
85
  props.closeDropdown();
86
+ try {
87
+ const res = await callAdminForthApi({
88
+ path: `/plugin/get-background-job-info`,
89
+ method: 'POST',
90
+ body: { jobId: job.id },
91
+ });
92
+
93
+ if (res?.ok && res.job) {
94
+ loadedJobs.value[job.id] = res.job;
95
+ return;
96
+ }
97
+
98
+ console.log('[background-jobs] failed to load full job info', {
99
+ jobId: job.id,
100
+ response: res,
101
+ });
102
+ } catch (error) {
103
+ console.log('[background-jobs] failed to load full job info', {
104
+ error,
105
+ jobId: job.id,
106
+ });
107
+ }
108
+
109
+ loadedJobs.value[job.id] = job;
84
110
  }
85
111
 
86
112
  function onBeforeClose() {
@@ -88,4 +114,4 @@ function onBeforeClose() {
88
114
  }
89
115
 
90
116
 
91
- </script>
117
+ </script>
@@ -134,12 +134,14 @@ function handleJobStateFieldUpdate(data: JobStateFieldUpdate) {
134
134
  return;
135
135
  }
136
136
 
137
- jobStore.updateCurrentJob({
138
- state: {
139
- ...props.job.state,
140
- [data.fieldName]: data.value,
141
- },
142
- });
137
+ props.job.state[data.fieldName] = data.value;
138
+ if (jobStore.currentJob?.id === props.job.id) {
139
+ jobStore.updateCurrentJob({
140
+ state: {
141
+ ...props.job.state,
142
+ },
143
+ });
144
+ }
143
145
  }
144
146
 
145
147
  function handleTaskStateFieldUpdate(data: TaskStateFieldUpdate) {
@@ -5,7 +5,7 @@
5
5
  class="p-4"
6
6
  v-for="job in props.jobs" :key="job.id"
7
7
  :beforeCloseFunction="onBeforeClose"
8
- :beforeOpenFunction="onBeforeOpen"
8
+ :beforeOpenFunction="() => onBeforeOpen(job)"
9
9
  removeFromDomOnClose
10
10
  >
11
11
  <template #trigger>
@@ -30,7 +30,8 @@
30
30
  </div>
31
31
  </template>
32
32
  <JobInfoPopup
33
- :job="job"
33
+ v-if="loadedJobs[job.id]"
34
+ :job="loadedJobs[job.id]"
34
35
  :meta="meta"
35
36
  :closeModal="closeModal"
36
37
  />
@@ -42,7 +43,7 @@
42
43
 
43
44
  <script setup lang="ts">
44
45
  import type { IJob } from './utils';
45
- import { getTimeAgoString } from '@/utils';
46
+ import { callAdminForthApi, getTimeAgoString } from '@/utils';
46
47
  import { ProgressBar, Modal } from '@/afcl';
47
48
  import JobInfoPopup from './JobInfoPopup.vue';
48
49
  import StateToIcon from './StateToIcon.vue';
@@ -78,9 +79,34 @@ const props = defineProps<{
78
79
 
79
80
 
80
81
  const isModalOpen = ref(false);
82
+ const loadedJobs = ref<Record<string, IJob>>({});
81
83
 
82
- function onBeforeOpen() {
84
+ async function onBeforeOpen(job: IJob) {
83
85
  props.closeDropdown();
86
+ try {
87
+ const res = await callAdminForthApi({
88
+ path: `/plugin/get-background-job-info`,
89
+ method: 'POST',
90
+ body: { jobId: job.id },
91
+ });
92
+
93
+ if (res?.ok && res.job) {
94
+ loadedJobs.value[job.id] = res.job;
95
+ return;
96
+ }
97
+
98
+ console.log('[background-jobs] failed to load full job info', {
99
+ jobId: job.id,
100
+ response: res,
101
+ });
102
+ } catch (error) {
103
+ console.log('[background-jobs] failed to load full job info', {
104
+ error,
105
+ jobId: job.id,
106
+ });
107
+ }
108
+
109
+ loadedJobs.value[job.id] = job;
84
110
  }
85
111
 
86
112
  function onBeforeClose() {
@@ -88,4 +114,4 @@ function onBeforeClose() {
88
114
  }
89
115
 
90
116
 
91
- </script>
117
+ </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminforth/background-jobs",
3
- "version": "1.13.0",
3
+ "version": "1.13.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",