Skip to content

Commit dcd4d73

Browse files
authored
Merge pull request #220 from nextcloud/feat/expected-runtime
feat: display expected task runtime when running
2 parents 0d64c90 + fc9b588 commit dcd4d73

4 files changed

Lines changed: 36 additions & 0 deletions

File tree

src/assistant.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,15 @@ export async function openAssistantForm({
8585
view.loading = true
8686
view.showSyncTaskRunning = true
8787
view.progress = null
88+
view.expectedRuntime = null
8889
view.inputs = inputs
8990
view.selectedTaskTypeId = taskTypeId
9091

9192
scheduleTask(appId, newTaskCustomId, taskTypeId, inputs)
9293
.then((response) => {
9394
const task = response.data?.ocs?.data?.task
9495
lastTask = task
96+
view.expectedRuntime = (lastTask?.completionExpectedAt - lastTask?.scheduledAt) || null
9597
const setProgress = (progress) => {
9698
view.progress = progress
9799
}
@@ -385,13 +387,15 @@ export async function openAssistantTask(task, { isInsideViewer = undefined, acti
385387
const syncSubmit = (inputs, taskTypeId, newTaskCustomId = '') => {
386388
view.loading = true
387389
view.showSyncTaskRunning = true
390+
view.expectedRuntime = null
388391
view.inputs = inputs
389392
view.selectedTaskTypeId = taskTypeId
390393

391394
scheduleTask('assistant', newTaskCustomId, taskTypeId, inputs)
392395
.then((response) => {
393396
const task = response.data?.ocs?.data?.task
394397
lastTask = task
398+
view.expectedRuntime = (lastTask?.completionExpectedAt - lastTask?.scheduledAt) || null
395399
pollTask(task.id).then(finishedTask => {
396400
if (finishedTask.status === TASK_STATUS_STRING.successful) {
397401
view.outputs = finishedTask?.output

src/components/AssistantTextProcessingModal.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
v-if="showSyncTaskRunning"
2828
:description="shortInput"
2929
:progress="progress"
30+
:expected-runtime="expectedRuntime"
3031
@background-notify="$emit('background-notify')"
3132
@cancel="$emit('cancel-task')"
3233
@back="onBackToAssistant" />
@@ -112,6 +113,10 @@ export default {
112113
type: [Number, null],
113114
default: null,
114115
},
116+
expectedRuntime: {
117+
type: [Number, null],
118+
default: null,
119+
},
115120
showScheduleConfirmation: {
116121
type: Boolean,
117122
required: true,

src/components/RunningEmptyContent.vue

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
<NcProgressBar
1515
:value="progress" />
1616
</div>
17+
<div v-if="formattedRuntime">
18+
{{ formattedRuntime }}
19+
</div>
1720
<NcButton
1821
@click="$emit('background-notify')">
1922
<template #icon>
@@ -75,6 +78,10 @@ export default {
7578
type: [Number, null],
7679
default: null,
7780
},
81+
expectedRuntime: {
82+
type: [Number, null],
83+
default: null,
84+
},
7885
},
7986
8087
emits: [
@@ -95,6 +102,15 @@ export default {
95102
}
96103
return null
97104
},
105+
formattedRuntime() {
106+
if (this.expectedRuntime === null) {
107+
return ''
108+
}
109+
if (this.expectedRuntime < 60) {
110+
return t('assistant', 'This may take a few seconds…')
111+
}
112+
return t('assistant', 'This may take a few minutes…')
113+
},
98114
},
99115
100116
mounted() {
@@ -116,6 +132,7 @@ export default {
116132
display: flex;
117133
flex-direction: column;
118134
align-items: center;
135+
gap: 2px;
119136
}
120137
}
121138
</style>

src/views/AssistantPage.vue

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
v-if="showSyncTaskRunning"
1111
:description="shortInput"
1212
:progress="progress"
13+
:expected-runtime="expectedRuntime"
1314
@background-notify="onBackgroundNotify"
1415
@cancel="onCancel"
1516
@back="onBackToAssistant" />
@@ -88,6 +89,11 @@ export default {
8889
}
8990
return ''
9091
},
92+
expectedRuntime() {
93+
const expected = this.task.completionExpectedAt
94+
const scheduled = this.task.scheduledAt
95+
return (expected && scheduled) ? (expected - scheduled) : null
96+
},
9197
},
9298
9399
mounted() {
@@ -114,13 +120,17 @@ export default {
114120
syncSubmit(inputs, taskTypeId, newTaskIdentifier = '') {
115121
this.showSyncTaskRunning = true
116122
this.progress = null
123+
this.task.completionExpectedAt = null
124+
this.task.scheduledAt = null
117125
this.task.input = inputs
118126
this.task.type = taskTypeId
119127
scheduleTask('assistant', this.task.identifier, taskTypeId, inputs)
120128
.then((response) => {
121129
console.debug('Assistant SYNC result', response.data?.ocs?.data)
122130
const task = response.data?.ocs?.data?.task
123131
this.task.id = task.id
132+
this.task.completionExpectedAt = task.completionExpectedAt
133+
this.task.scheduledAt = task.scheduledAt
124134
pollTask(task.id, this.setProgress).then(finishedTask => {
125135
if (finishedTask.status === TASK_STATUS_STRING.successful) {
126136
this.task.output = finishedTask?.output

0 commit comments

Comments
 (0)