Skip to content

Commit 09e87d1

Browse files
committed
Sort TRS workflow versions semantically
1 parent 1165479 commit 09e87d1

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

client/src/components/Workflow/Import/TrsTool.vue

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
<script setup lang="ts">
2+
23
import { faUpload } from "@fortawesome/free-solid-svg-icons";
34
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
45
import { BFormSelect } from "bootstrap-vue";
6+
import semver from 'semver';
57
import { computed, onMounted, ref, watch } from "vue";
68
79
import { useMarkdown } from "@/composables/markdown";
@@ -26,16 +28,29 @@ const emit = defineEmits<{
2628
2729
const { renderMarkdown } = useMarkdown({ openLinksInNewPage: true });
2830
29-
const reversedVersions = computed(() => {
30-
return [...props.trsTool.versions].reverse();
31+
const sortedVersions = computed(() => {
32+
return props.trsTool.versions.slice().sort((a, b) => {
33+
const aSemver = semver.coerce(a.name);
34+
const bSemver = semver.coerce(b.name);
35+
36+
if (aSemver && bSemver) {
37+
return semver.rcompare(aSemver, bSemver);
38+
} else if (aSemver) {
39+
return -1;
40+
} else if (bSemver) {
41+
return 1;
42+
} else {
43+
return b.name.localeCompare(a.name);
44+
}
45+
});
3146
});
3247
3348
const selectedVersion = ref<TrsToolVersion | null>(
34-
reversedVersions.value.length > 0 ? (reversedVersions.value[0] ?? null) : null,
49+
sortedVersions.value.length > 0 ? (sortedVersions.value[0] ?? null) : null,
3550
);
3651
3752
const versionOptions = computed(() => {
38-
return reversedVersions.value.map((version) => ({
53+
return sortedVersions.value.map((version) => ({
3954
value: version,
4055
text: version.name,
4156
}));

0 commit comments

Comments
 (0)