Skip to content

Commit bac326b

Browse files
committed
Supported pre/post pinned_package_versions in task-collection
1 parent 4a92afb commit bac326b

File tree

4 files changed

+52
-12
lines changed

4 files changed

+52
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* Added body request normalizer (\#825);
66
* Fixed JSON schema validation during arguments import (\#827);
77
* Updated slim-select version to support range selection (\#827);
8+
* Supported pre/post `pinned_package_versions` in task-collection (\#827);
89

910
# 1.19.3
1011

components/src/lib/tasks/FilteredTasksTable.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@
376376
</div>
377377
</div>
378378
{#if allRows.length === 0}
379-
<p>
379+
<p class="mt-4">
380380
There are no available tasks. You can add new tasks on the
381381
<a href="/v2/tasks/management">Tasks management</a> page.
382382
</p>

playwright.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export default defineConfig({
8888

8989
webServer: [
9090
{
91-
command: './tests/start-test-server.sh --branch main',
91+
command: './tests/start-test-server.sh --branch 2760-support-both-pre-pinning-and-post-pinning-for-task-collection',
9292
port: 8000,
9393
waitForPort: true,
9494
stdout: 'pipe',

src/lib/components/v2/tasks/TaskCollection.svelte

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { FormErrorHandler } from '$lib/common/errors';
33
import TaskGroupSelector from './TaskGroupSelector.svelte';
44
import { recentActivities } from '$lib/stores';
5+
import { PropertyDescription } from 'fractal-components';
56
67
/**
78
* @typedef {Object} Props
@@ -16,7 +17,7 @@
1617
let package_version = $state('');
1718
let python_version = $state('');
1819
let package_extras = $state('');
19-
/** @type {{key: string, value: string}[]} */
20+
/** @type {Array<{key: string, value: string, type: 'pre' | 'post'}>} */
2021
let pinnedPackageVersions = $state([]);
2122
let privateTask = $state(false);
2223
let selectedGroup = $state(null);
@@ -78,9 +79,13 @@
7879
formData.append('package_version', package_version);
7980
}
8081
81-
const ppv = getPinnedPackageVersionsMap();
82-
if (ppv) {
83-
formData.append('pinned_package_versions', JSON.stringify(ppv));
82+
const ppvPre = getPinnedPackageVersionsMap('pre');
83+
if (ppvPre) {
84+
formData.append('pinned_package_versions_pre', JSON.stringify(ppvPre));
85+
}
86+
const ppvPost = getPinnedPackageVersionsMap('post');
87+
if (ppvPost) {
88+
formData.append('pinned_package_versions_post', JSON.stringify(ppvPost));
8489
}
8590
8691
let url = `/api/v2/task/collect/pip?private=${privateTask}`;
@@ -115,13 +120,14 @@
115120
}
116121
117122
/**
123+
* @param {'pre'|'post'} type
118124
* @returns {{[key: string]: string}|undefined}
119125
*/
120-
function getPinnedPackageVersionsMap() {
126+
function getPinnedPackageVersionsMap(type) {
121127
/** @type {{[key: string]: string}} */
122128
const map = {};
123129
for (const ppv of pinnedPackageVersions) {
124-
if (ppv.key && ppv.value) {
130+
if (ppv.key && ppv.value && ppv.type === type) {
125131
map[ppv.key] = ppv.value;
126132
}
127133
}
@@ -132,7 +138,7 @@
132138
}
133139
134140
function addPackageVersion() {
135-
pinnedPackageVersions = [...pinnedPackageVersions, { key: '', value: '' }];
141+
pinnedPackageVersions = [...pinnedPackageVersions, { key: '', value: '', type: 'post' }];
136142
}
137143
138144
/**
@@ -275,24 +281,51 @@
275281
{/if}
276282
{#each pinnedPackageVersions as ppv, i (i)}
277283
<div class="row">
278-
<div class="col-xl-6 col-lg-8 col-md-12 mb-2">
284+
<div class="col-xl-8 col-lg-10 col-md-12 mb-2">
279285
<div class="input-group">
280286
<label class="input-group-text" for="ppv_key_{i}">Name</label>
281287
<input
282288
type="text"
283-
class="form-control"
289+
class="form-control ppv-input"
284290
id="ppv_key_{i}"
285291
bind:value={ppv.key}
286292
required
287293
/>
288294
<label class="input-group-text" for="ppv_value_{i}">Version</label>
289295
<input
290296
type="text"
291-
class="form-control"
297+
class="form-control ppv-input"
292298
id="ppv_value_{i}"
293299
bind:value={ppv.value}
294300
required
295301
/>
302+
<span class="input-group-text">
303+
<div class="form-check form-check-inline">
304+
<input
305+
class="form-check-input"
306+
type="radio"
307+
name="ppv-type-{i}"
308+
id="ppv-pre-{i}"
309+
value="pre"
310+
bind:group={ppv.type}
311+
/>
312+
<label class="form-check-label" for="ppv-pre-{i}">Pre</label>
313+
</div>
314+
<div class="form-check form-check-inline me-1">
315+
<input
316+
class="form-check-input"
317+
type="radio"
318+
name="ppv-type-{i}"
319+
id="ppv-post-{i}"
320+
value="post"
321+
bind:group={ppv.type}
322+
/>
323+
<label class="form-check-label" for="ppv-post-{i}">Post</label>
324+
</div>
325+
<PropertyDescription
326+
description="Whether the pinned dependency should be installed before or after the main package"
327+
/>
328+
</span>
296329
<button
297330
class="btn btn-outline-secondary"
298331
type="button"
@@ -347,3 +380,9 @@
347380
</div>
348381
</form>
349382
</div>
383+
384+
<style>
385+
.ppv-input {
386+
min-width: 100px;
387+
}
388+
</style>

0 commit comments

Comments
 (0)