mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-24 02:04:04 +08:00
Sketch out initial dataset view component
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user