Skip to content

Commit 24b91c8

Browse files
eprifticlaude
andcommitted
Improve demo flow: navigate after load, auto-select datasets
1. After loading demo data, navigate directly to the project page 2. RunView fetches project datasets and shows them in dropdowns instead of manual ID input 3. Auto-selects Xtrain/Ytrain by filename pattern so users can immediately launch analysis Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent daea39f commit 24b91c8

2 files changed

Lines changed: 35 additions & 7 deletions

File tree

‎frontend/src/views/ProjectsView.vue‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,11 @@
5252

5353
<script setup>
5454
import { ref, onMounted } from 'vue'
55+
import { useRouter } from 'vue-router'
5556
import axios from 'axios'
5657
58+
const router = useRouter()
59+
5760
const projects = ref([])
5861
const newName = ref('')
5962
const loading = ref(true)
@@ -84,8 +87,8 @@ async function fetchSamples() {
8487
async function loadSample(sampleId) {
8588
loadingSample.value = true
8689
try {
87-
await axios.post(`/api/samples/${sampleId}/load`)
88-
await fetchProjects()
90+
const { data } = await axios.post(`/api/samples/${sampleId}/load`)
91+
router.push(`/project/${data.project_id}`)
8992
} catch (e) {
9093
console.error('Failed to load sample:', e)
9194
} finally {

‎frontend/src/views/RunView.vue‎

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@
77
<section class="section">
88
<h3>Data</h3>
99
<div class="form-row">
10-
<label>X dataset ID:
11-
<input v-model="form.x_dataset_id" required placeholder="e.g., a1b2c3d4" />
10+
<label>X (features):
11+
<select v-model="form.x_dataset_id" required>
12+
<option value="" disabled>Select X dataset</option>
13+
<option v-for="d in datasets" :key="d.id" :value="d.id">{{ d.filename }}</option>
14+
</select>
1215
</label>
13-
<label>y dataset ID:
14-
<input v-model="form.y_dataset_id" required placeholder="e.g., e5f6g7h8" />
16+
<label>y (labels):
17+
<select v-model="form.y_dataset_id" required>
18+
<option value="" disabled>Select y dataset</option>
19+
<option v-for="d in datasets" :key="d.id" :value="d.id">{{ d.filename }}</option>
20+
</select>
1521
</label>
1622
</div>
1723
<div class="form-row">
@@ -100,13 +106,14 @@
100106
</template>
101107

102108
<script setup>
103-
import { ref, reactive } from 'vue'
109+
import { ref, reactive, onMounted } from 'vue'
104110
import { useRoute } from 'vue-router'
105111
import axios from 'axios'
106112
107113
const route = useRoute()
108114
const launching = ref(false)
109115
const jobId = ref(null)
116+
const datasets = ref([])
110117
111118
const form = reactive({
112119
x_dataset_id: '',
@@ -142,6 +149,24 @@ const form = reactive({
142149
},
143150
})
144151
152+
async function fetchDatasets() {
153+
try {
154+
const { data } = await axios.get(`/api/projects/${route.params.id}`)
155+
datasets.value = data.datasets || []
156+
// Auto-select X and Y by filename pattern
157+
const xDs = datasets.value.find(d => /^X/i.test(d.filename) && /train/i.test(d.filename))
158+
|| datasets.value.find(d => /^X/i.test(d.filename))
159+
const yDs = datasets.value.find(d => /^Y/i.test(d.filename) && /train/i.test(d.filename))
160+
|| datasets.value.find(d => /^Y/i.test(d.filename))
161+
if (xDs) form.x_dataset_id = xDs.id
162+
if (yDs) form.y_dataset_id = yDs.id
163+
} catch (e) {
164+
console.error('Failed to load datasets:', e)
165+
}
166+
}
167+
168+
onMounted(fetchDatasets)
169+
145170
async function launch() {
146171
launching.value = true
147172
try {

0 commit comments

Comments
 (0)