Skip to content

Commit b714e20

Browse files
committed
WIP #80 FE
1 parent 87a8900 commit b714e20

File tree

6 files changed

+174
-331
lines changed

6 files changed

+174
-331
lines changed

Diff for: client/src/components/compare/CompareStepA.vue

+43-113
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
<script setup>
22
import { ref, computed } from 'vue'
3-
import {
4-
updSpecies,
5-
updOrganismFromSpec,
6-
updModificationFromOrg,
7-
updTechnologyFromOrgAndMod,
8-
updDataset
9-
} from '@/utils/selection.js'
103
4+
const emit = defineEmits(['datasetUpdated'])
5+
const model = defineModel()
116
const props = defineProps({
12-
options: {
13-
type: Array,
7+
organism: {
8+
type: Object,
149
required: true
1510
},
1611
dataset: {
@@ -19,130 +14,65 @@ const props = defineProps({
1914
}
2015
})
2116
22-
const modification = ref()
23-
const selectedModification = ref()
24-
const technology = ref()
25-
const selectedTechnology = ref()
26-
const species = computed(() => updSpecies(props.options))
27-
const selectedSpecies = ref()
28-
const organism = ref()
29-
const selectedOrganism = ref()
30-
const datasetSelection = ref()
31-
const selectedDataset = ref()
32-
33-
const emit = defineEmits(['selectedSpecies', 'selectedDataset'])
34-
35-
const updateOrganism = () => {
36-
selectedOrganism.value = undefined
37-
selectedModification.value = undefined
38-
selectedTechnology.value = undefined
39-
selectedDataset.value = undefined
40-
organism.value = updOrganismFromSpec(props.options, selectedSpecies.value.label)
41-
updateDataset()
42-
emit('selectedSpecies', selectedSpecies.value.label)
43-
}
44-
45-
const updateModification = () => {
46-
selectedModification.value = undefined
47-
selectedTechnology.value = undefined
48-
selectedDataset.value = undefined
49-
modification.value = updModificationFromOrg(props.options, selectedOrganism.value)
50-
updateDataset()
51-
}
52-
53-
const updateTechnology = () => {
54-
selectedTechnology.value = undefined
55-
selectedDataset.value = undefined
56-
technology.value = updTechnologyFromOrgAndMod(
57-
props.options,
58-
selectedOrganism.value,
59-
selectedModification.value
60-
)
61-
updateDataset()
62-
}
17+
const selectedTaxid = ref()
18+
const dataset = ref()
6319
64-
function updateDataset() {
65-
selectedDataset.value = undefined
66-
emit('selectedDataset', undefined)
67-
datasetSelection.value = updDataset(
68-
props.options,
69-
organism.value,
70-
selectedOrganism.value,
71-
selectedModification.value,
72-
selectedTechnology.value,
73-
props.dataset
20+
const updateDataset = (value) => {
21+
model.value = []
22+
let opts = props.dataset.filter((item) => item.taxa_id == value)
23+
dataset.value = [...new Map(opts.map((item) => [item['dataset_id'], item])).values()].map(
24+
(item) => {
25+
return {
26+
dataset_id: item.dataset_id,
27+
dataset_title: item.dataset_title,
28+
dataset_info:
29+
'(' + item.rna + ', ' + item.modomics_sname + ', ' + item.cto + ', ' + item.tech + ')'
30+
}
31+
}
7432
)
33+
emit('datasetUpdated', dataset.value)
7534
}
7635
</script>
7736

7837
<template>
7938
<div class="grid grid-cols-4 gap-6">
80-
<Dropdown
81-
@change="updateOrganism"
82-
v-model="selectedSpecies"
83-
:options="species"
39+
<CascadeSelect
40+
@change="updateDataset($event.value)"
41+
v-model="selectedTaxid"
42+
:options="props.organism"
43+
optionValue="key"
8444
optionLabel="label"
8545
optionGroupLabel="label"
86-
optionGroupChildren="children"
46+
:optionGroupChildren="['child1']"
8747
placeholder="1. Select one organism"
8848
:pt="{
8949
root: { class: 'w-full md:w-full' }
9050
}"
9151
:ptOptions="{ mergeProps: true }"
9252
/>
9353
<MultiSelect
94-
@change="updateModification"
95-
v-model="selectedOrganism"
96-
:options="organism"
97-
optionLabel="label"
98-
placeholder="2. Select cell/tissue"
99-
:maxSelectedLabels="3"
100-
:pt="{
101-
root: { class: 'w-full md:w-full' }
102-
}"
103-
:ptOptions="{ mergeProps: true }"
104-
/>
105-
<TreeSelect
106-
@change="updateTechnology"
107-
v-model="selectedModification"
108-
:options="modification"
109-
selectionMode="checkbox"
110-
:metaKeySelection="false"
111-
placeholder="3. Select RNA modifications"
112-
:pt="{
113-
root: { class: 'w-full md:w-full' }
114-
}"
115-
:ptOptions="{ mergeProps: true }"
116-
/>
117-
<TreeSelect
118-
@change="updateDataset"
119-
v-model="selectedTechnology"
120-
:options="technology"
121-
selectionMode="checkbox"
122-
:metaKeySelection="false"
123-
placeholder="4. Select technologies"
124-
:pt="{
125-
root: { class: 'w-full md:w-full' }
126-
}"
127-
:ptOptions="{ mergeProps: true }"
128-
/>
129-
<MultiSelect
130-
@change="
131-
emit(
132-
'selectedDataset',
133-
$event.value.map((d) => d.dataset_id)
134-
)
135-
"
136-
v-model="selectedDataset"
137-
:options="datasetSelection"
54+
v-model="model"
55+
:options="dataset"
56+
:selectionLimit="3"
13857
filter
139-
optionLabel="dataset_display"
140-
placeholder="5. Select dataset"
58+
:filterFields="['dataset_id', 'dataset_title', 'dataset_info']"
59+
optionValue="dataset_id"
60+
optionLabel="dataset_id"
61+
placeholder="2. Select dataset"
14162
:maxSelectedLabels="3"
63+
display="chip"
14264
:pt="{
143-
root: { class: 'col-span-4 w-full md:w-full' }
65+
root: { class: 'col-span-3 w-full md:w-full' }
14466
}"
14567
:ptOptions="{ mergeProps: true }"
146-
/>
68+
>
69+
<template #option="slotProps">
70+
<div class="flex">
71+
<div class="pr-2 text-surface-500">{{ slotProps.option.dataset_id }}</div>
72+
<div class="pr-2 font-semibold">{{ slotProps.option.dataset_title }}</div>
73+
<div class="italic">{{ slotProps.option.dataset_info }}</div>
74+
</div>
75+
</template>
76+
</MultiSelect>
14777
</div>
14878
</template>

0 commit comments

Comments
 (0)