From e1715db70568e0a4148c3a6ae1cf5e9075f8d91d Mon Sep 17 00:00:00 2001 From: axel7083 <42176370+axel7083@users.noreply.github.com> Date: Mon, 25 Sep 2023 09:26:42 +0200 Subject: [PATCH] feat: indeterminate progress bar (#4016) * feat: indeterminate progress bar Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com> --- .../src/lib/task-manager/ProgressBar.spec.ts | 38 +++++++++++++++++++ .../src/lib/task-manager/ProgressBar.svelte | 35 +++++++++++++++++ .../lib/task-manager/TaskManagerItem.svelte | 8 +--- 3 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 packages/renderer/src/lib/task-manager/ProgressBar.spec.ts create mode 100644 packages/renderer/src/lib/task-manager/ProgressBar.svelte diff --git a/packages/renderer/src/lib/task-manager/ProgressBar.spec.ts b/packages/renderer/src/lib/task-manager/ProgressBar.spec.ts new file mode 100644 index 00000000000..2b5cb764c0d --- /dev/null +++ b/packages/renderer/src/lib/task-manager/ProgressBar.spec.ts @@ -0,0 +1,38 @@ +/********************************************************************** + * Copyright (C) 2023 Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ***********************************************************************/ + +import '@testing-library/jest-dom/vitest'; +import { test, expect } from 'vitest'; +import { render, screen } from '@testing-library/svelte'; +import ProgressBar from '/@/lib/task-manager/ProgressBar.svelte'; + +test('Expect that the progress bar is indeterminate', async () => { + render(ProgressBar, { progress: undefined }); + + // expect the progress bar to have the indeterminate class + const progressBar = screen.getByRole('progressbar'); + expect(progressBar).toHaveClass('progress-bar-indeterminate'); +}); + +test('Expect that the progress bar is not indeterminate', async () => { + render(ProgressBar, { progress: 5 }); + + // expect the progress bar to not have the indeterminate class + const progressBar = screen.getByRole('progressbar'); + expect(progressBar.classList.contains('progress-bar-indeterminate')).toBe(false); +}); diff --git a/packages/renderer/src/lib/task-manager/ProgressBar.svelte b/packages/renderer/src/lib/task-manager/ProgressBar.svelte new file mode 100644 index 00000000000..e7780e550a9 --- /dev/null +++ b/packages/renderer/src/lib/task-manager/ProgressBar.svelte @@ -0,0 +1,35 @@ + + + + +
+
+ {#if progress !== undefined} +
+ {:else} +
+ {/if} +
+
+{#if progress !== undefined} +
{progress}%
+{/if} diff --git a/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte b/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte index 5494ad3d774..6ba94525cbc 100644 --- a/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte +++ b/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte @@ -11,6 +11,7 @@ import Fa from 'svelte-fa/src/fa.svelte'; import { TaskManager, type TaskUI } from './task-manager'; import { removeTask } from '/@/stores/tasks'; import type { Task } from '../../../../main/src/plugin/api/task'; +import ProgressBar from '/@/lib/task-manager/ProgressBar.svelte'; export let task: Task; @@ -79,12 +80,7 @@ function gotoTask(taskUI: TaskUI) { {#if taskUI.status === 'in-progress'}
{#if (taskUI.progress || 0) >= 0} -
-
-
-
-
-
{taskUI.progress}%
+ {/if}
{#if taskUI.hasGotoTask}