Skip to content

Commit 90cfdcf

Browse files
committed
fix: updated runtime selection filter
Signed-off-by: Brian <[email protected]>
1 parent 385f589 commit 90cfdcf

File tree

4 files changed

+28
-67
lines changed

4 files changed

+28
-67
lines changed

packages/frontend/src/lib/select/InferenceRuntimeSelect.spec.ts

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -48,31 +48,6 @@ test('Lists all runtime options', async () => {
4848
});
4949
});
5050

51-
test('Selecting "all" works correctly', async () => {
52-
const { container } = render(InferenceRuntimeSelect, {
53-
value: undefined,
54-
disabled: false,
55-
});
56-
57-
const input = within(container).getByLabelText('Select Inference Runtime');
58-
await fireEvent.pointerUp(input);
59-
60-
const allOption = Array.from(container.querySelectorAll('div[class~="list-item"]')).find(item =>
61-
item.textContent?.includes(InferenceType.ALL),
62-
);
63-
64-
expect(allOption).toBeDefined();
65-
if (allOption) {
66-
await fireEvent.click(allOption);
67-
}
68-
69-
const valueContainer = container.querySelector('.value-container');
70-
if (!(valueContainer instanceof HTMLElement)) throw new Error('Missing value container');
71-
72-
const selectedLabel = within(valueContainer).getByText(InferenceType.ALL);
73-
expect(selectedLabel).toBeInTheDocument();
74-
});
75-
7651
test('Selected value should be visible', async () => {
7752
const { container } = render(InferenceRuntimeSelect, {
7853
value: undefined,

packages/frontend/src/lib/select/InferenceRuntimeSelect.svelte

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ interface Props {
99
}
1010
let { value = $bindable(), disabled, exclude = [] }: Props = $props();
1111
12-
// Filter options based on exclude list
13-
const options = Object.values(InferenceType).filter(type => type !== InferenceType.NONE) as Array<InferenceType>;
14-
const filteredOptions = options.filter(type => type === InferenceType.ALL || !exclude.includes(type));
12+
// Filter options based on optional exclude list
13+
const options = Object.values(InferenceType).filter(type => !exclude.includes(type));
1514
1615
function handleOnChange(nValue: { value: string } | undefined): void {
1716
if (nValue) {
@@ -29,7 +28,7 @@ function handleOnChange(nValue: { value: string } | undefined): void {
2928
value={value ? { label: value, value: value } : undefined}
3029
onchange={handleOnChange}
3130
placeholder="Select Inference Runtime to use"
32-
items={filteredOptions.map(type => ({
31+
items={options.map(type => ({
3332
value: type,
3433
label: type,
3534
}))} />

packages/frontend/src/pages/PlaygroundCreate.svelte

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,14 @@ import { InferenceType } from '@shared/models/IInference';
1717
import InferenceRuntimeSelect from '/@/lib/select/InferenceRuntimeSelect.svelte';
1818
1919
// Preset the runtime selection
20-
let runtime: InferenceType;
21-
runtime = InferenceType.ALL;
20+
let runtime: InferenceType | undefined = undefined;
2221
// exlude whisper.cpp from selection
2322
let exclude: InferenceType[] = [InferenceType.WHISPER_CPP];
2423
let localModels: ModelInfo[];
2524
// Special case for "ALL" returns runtimes with optional exclution
26-
$: localModels =
27-
runtime === InferenceType.ALL
28-
? $modelsInfo.filter(model => model.file && !exclude.includes(model.backend as InferenceType))
29-
: $modelsInfo.filter(model => model.file && model.backend === runtime);
25+
$: localModels = $modelsInfo.filter(
26+
model => model.file && (!runtime || model.backend === runtime) && !exclude.includes(model.backend as InferenceType),
27+
);
3028
$: availModels = $modelsInfo.filter(model => !model.file);
3129
let model: ModelInfo | undefined = undefined;
3230
let submitted: boolean = false;
@@ -160,42 +158,33 @@ export function goToUpPage(): void {
160158
Inference Runtime
161159
</label>
162160
<InferenceRuntimeSelect bind:value={runtime} exclude={exclude} />
163-
{#if !runtime}
161+
<!-- model input -->
162+
<label for="model" class="pt-4 block mb-2 font-bold text-[var(--pd-content-card-header-text)]">Model</label>
163+
<ModelSelect models={localModels} disabled={submitted} bind:value={model} />
164+
{#if localModels.length === 0}
164165
<div class="text-red-500 p-1 flex flex-row items-center">
165166
<Fa size="1.1x" class="cursor-pointer text-red-500" icon={faExclamationCircle} />
166167
<div role="alert" aria-label="Error Message Content" class="ml-2">
167-
Please select an inference runtime before selecting a model.
168+
You don't have any models downloaded. You can download them in <a
169+
href="javascript:void(0);"
170+
class="underline"
171+
title="Models page"
172+
on:click={openModelsPage}>models page</a
173+
>.
168174
</div>
169175
</div>
170-
{:else}
171-
<!-- model input -->
172-
<label for="model" class="pt-4 block mb-2 font-bold text-[var(--pd-content-card-header-text)]">Model</label>
173-
<ModelSelect models={localModels} disabled={submitted} bind:value={model} />
174-
{#if localModels.length === 0}
175-
<div class="text-red-500 p-1 flex flex-row items-center">
176-
<Fa size="1.1x" class="cursor-pointer text-red-500" icon={faExclamationCircle} />
177-
<div role="alert" aria-label="Error Message Content" class="ml-2">
178-
You don't have any models downloaded. You can download them in <a
179-
href="javascript:void(0);"
180-
class="underline"
181-
title="Models page"
182-
on:click={openModelsPage}>models page</a
183-
>.
184-
</div>
176+
{:else if availModels.length > 0}
177+
<div class="text-sm p-1 flex flex-row items-center text-[var(--pd-content-card-text)]">
178+
<Fa size="1.1x" class="cursor-pointer" icon={faInfoCircle} />
179+
<div role="alert" aria-label="Info Message Content" class="ml-2">
180+
Other models are available, but must be downloaded from the <a
181+
href="javascript:void(0);"
182+
class="underline"
183+
title="Models page"
184+
on:click={openModelsPage}>models page</a
185+
>.
185186
</div>
186-
{:else if availModels.length > 0}
187-
<div class="text-sm p-1 flex flex-row items-center text-[var(--pd-content-card-text)]">
188-
<Fa size="1.1x" class="cursor-pointer" icon={faInfoCircle} />
189-
<div role="alert" aria-label="Info Message Content" class="ml-2">
190-
Other models are available, but must be downloaded from the <a
191-
href="javascript:void(0);"
192-
class="underline"
193-
title="Models page"
194-
on:click={openModelsPage}>models page</a
195-
>.
196-
</div>
197-
</div>
198-
{/if}
187+
</div>
199188
{/if}
200189
</div>
201190
{#if errorMsg !== undefined}

packages/shared/src/models/IInference.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,13 @@ export enum InferenceType {
2121
LLAMA_CPP = 'llama-cpp',
2222
WHISPER_CPP = 'whisper-cpp',
2323
OPENVINO = 'openvino',
24-
ALL = 'all',
2524
NONE = 'none',
2625
}
2726

2827
const InferenceTypeLabel = {
2928
'llama-cpp': 'llamacpp',
3029
'whisper-cpp': 'whispercpp',
3130
openvino: 'openvino',
32-
all: 'all',
3331
none: 'None',
3432
};
3533

0 commit comments

Comments
 (0)