Sketch out initial dataset view component

This commit is contained in:
Dannon Baker
2025-05-14 08:32:21 -04:00
parent eac679df74
commit 959b8bd00b
5 changed files with 97 additions and 2 deletions
@@ -0,0 +1,81 @@
<script setup lang="ts">
import { BTab, BTabs } from "bootstrap-vue";
import { computed, ref } from "vue";
import { STATES } from "@/components/History/Content/model/states";
import { useDatasetStore } from "@/stores/datasetStore";
import Heading from "../Common/Heading.vue";
import DatasetAttributes from "@/components/DatasetInformation/DatasetAttributes.vue";
import DatasetDetails from "@/components/DatasetInformation/DatasetDetails.vue";
import VisualizationsList from "@/components/Visualizations/Index.vue";
const datasetStore = useDatasetStore();
const props = defineProps({
datasetId: {
type: String,
required: true,
},
// Move toplevel routes to this component with subrouting
});
const dataset = computed(() => datasetStore.getDataset(props.datasetId));
const isLoading = computed(() => datasetStore.isLoadingDataset(props.datasetId));
const stateText = computed(() => dataset.value && STATES[dataset.value.state] && STATES[dataset.value.state].text);
const activeTab = ref("activeTab");
const displayUrl = computed(() => `/datasets/${props.datasetId}/display/?preview=true`);
</script>
<template>
<div v-if="dataset && !isLoading">
<header class="dataset-header">
<Heading h2>{{ dataset.name }}</Heading>
<div v-if="stateText" class="mb-1">{{ stateText }}</div>
<div v-else-if="dataset.misc_blurb" class="blurb">
<span class="value">{{ dataset.misc_blurb }}</span>
</div>
<span v-if="dataset.file_ext" class="datatype">
<span v-localize class="prompt">format</span>
<span class="value">{{ dataset.file_ext }}</span>
</span>
<span v-if="dataset.genome_build" class="dbkey">
<span v-localize class="prompt">database</span>
<BLink class="value" data-label="Database/Build" @click.stop="activeTab = 'edit'">{{
dataset.genome_build
}}</BLink>
</span>
<div v-if="dataset.misc_info" class="info">
<span class="value">{{ dataset.misc_info }}</span>
</div>
</header>
<div class="dataset-tabs h-100">
<BTabs pills card>
<BTab title="Preview" active class="h-100">
<iframe
:src="displayUrl"
title="galaxy dataset display frame"
class="center-frame h-100"
width="100%"
height="100%"
frameborder="0"></iframe>
</BTab>
<BTab title="Details">
<DatasetDetails :dataset-id="datasetId" />
</BTab>
<BTab title="Visualize">
<VisualizationsList :dataset-id="datasetId" />
</BTab>
<BTab title="Edit">
<DatasetAttributes :dataset-id="datasetId" />
</BTab>
</BTabs>
</div>
</div>
</template>
<style scoped>
.dataset-header {
margin-bottom: 1.5rem;
}
</style>
@@ -187,6 +187,7 @@ const itemUrls = computed<ItemUrls>(() => {
reportError: `/datasets/${id}/error`,
rerun: `/tool_runner/rerun?id=${id}`,
visualize: `/visualizations?dataset_id=${id}`,
view: `/datasets/${id}`,
};
});
@@ -300,6 +301,9 @@ function onEdit() {
router.push(itemUrls.value.edit!);
}
function onView() {
router.push(itemUrls.value.view!);
}
function onShowCollectionInfo() {
router.push(itemUrls.value.showDetails!);
}
@@ -429,6 +433,7 @@ function unexpandedClick(event: Event) {
"
@delete="onDelete"
@display="onDisplay"
@view="onView"
@showCollectionInfo="onShowCollectionInfo"
@edit="onEdit"
@undelete="onUndelete"
@@ -509,4 +514,4 @@ function unexpandedClick(event: Event) {
margin-left: 0rem !important;
}
}
</style>
</style>
@@ -46,6 +46,8 @@ const editDisabled = computed(() =>
const displayUrl = computed(() => prependPath(props.itemUrls.display));
const viewUrl = computed(() => prependPath(props.itemUrls.view));
const editUrl = computed(() => prependPath(props.itemUrls.edit));
const isCollection = computed(() => !props.isDataset);
@@ -125,7 +127,7 @@ function onDisplay($event: MouseEvent) {
class="display-btn px-1"
size="sm"
variant="link"
:href="displayUrl"
:href="viewUrl"
@click.prevent.stop="onDisplay($event)">
<icon icon="eye" />
</BButton>
+6
View File
@@ -5,6 +5,7 @@ import CollectionEditView from "components/Collections/common/CollectionEditView
import DatasetList from "components/Dataset/DatasetList";
import DatasetAttributes from "components/DatasetInformation/DatasetAttributes";
import DatasetDetails from "components/DatasetInformation/DatasetDetails";
import DatasetView from "components/Dataset/DatasetView";
import DatasetError from "components/DatasetInformation/DatasetError";
import FormGeneric from "components/Form/FormGeneric";
import GalaxyWizard from "components/GalaxyWizard";
@@ -269,6 +270,11 @@ export function getRouter(Galaxy) {
component: DatasetError,
props: true,
},
{
path: "datasets/:datasetId",
component: DatasetView,
props: true,
},
{
path: "datatypes",
component: AvailableDatatypes,
+1
View File
@@ -286,6 +286,7 @@ def app_pair(global_conf, load_app_kwds=None, wsgi_preflight=True, **kwargs):
webapp.add_client_route("/datasets/{dataset_id}/preview")
webapp.add_client_route("/datasets/{dataset_id}/report")
webapp.add_client_route("/datasets/{dataset_id}/show_params")
webapp.add_client_route("/datasets/{dataset_id}")
webapp.add_client_route("/collection/{collection_id}/edit")
webapp.add_client_route("/collection/new_list")
webapp.add_client_route("/jobs/submission/success")