-
HongKee Moon authoredHongKee Moon authored
ProteinDetailPage.vue 9.12 KiB
<template>
<div class="d-flex" id="wrapper">
<!-- Sidebar -->
<!--<div class="bg-light border-right" id="sidebar-wrapper">-->
<!--<!–<div class="sidebar-heading">Menu </div>–>-->
<!--<div class="list-group list-group-flush">-->
<!--<a href="#" class="list-group-item list-group-item-action bg-light">Search</a>-->
<!--<a href="#" class="list-group-item list-group-item-action bg-light">Columns</a>-->
<!--<a href="#" class="list-group-item list-group-item-action bg-light">Filters</a>-->
<!--<a href="#" class="list-group-item list-group-item-action bg-light">Download</a>-->
<!--<a href="#" class="list-group-item list-group-item-action bg-light">Contacts</a>-->
<!--</div>-->
<!--</div>-->
<!-- /#sidebar-wrapper -->
<div id="page-content-wrapper" class="main">
<h2>Protein Detail</h2>
<fetch-protein :protein="protein">
<template slot-scope="{response, loading}">
<slot :response="response" :loading="loading">
<div v-if="loading">Loading...</div>
<div v-else>
<h4 class="round">General Information</h4>
<div class="panel panel-default">
<div class="panel-heading">
<b>Protein {{response.data.name}}</b>
</div>
<div class="panel-body">
<div class="container-fluid col-md-12">
<div class="row">
<div class="text col-sm-3">Gene name</div>
<div class="col-sm-9">
{{response.data.gene_name}}
</div>
</div>
<div class="row">
<div class="text col-sm-3">Species</div>
<div class="col-sm-9">
{{response.data.species_name + ' (' + response.data.species_tax_id + ')'}}
</div>
</div>
<div class="row">
<div class="text col-sm-3">Ensembl ID</div>
<div class="col-sm-9">
<div v-if="response.data.ensembl_id">
<a :href="'https://www.ensembl.org/id/' + response.data.ensembl_id" class="uniprot-link" target="_blank">
{{response.data.ensembl_id}}
<i class="glyphicon glyphicon-link"></i></a>
</div>
</div>
</div>
<div class="row">
<div class="text col-sm-3">Ensembl Gene ID</div>
<div class="col-sm-9">
<div v-if="response.data.ensembl_gene_id">
<a :href="'https://www.ensembl.org/id/' + response.data.ensembl_gene_id" class="uniprot-link" target="_blank">
{{response.data.ensembl_gene_id}}
<i class="glyphicon glyphicon-link"></i></a>
</div>
</div>
</div>
<div class="row">
<div class="text col-sm-3">UniProt</div>
<div class="col-sm-9">
<div v-if="response.data.uniprot_id">
<a :href="'https://www.uniprot.org/uniprot/' + response.data.uniprot_id" class="uniprot-link" target="_blank">
{{response.data.uniprot_id + ' (' + response.data.uniprot_readable_id + ')'}}
<i class="glyphicon glyphicon-link"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>
<h4 class="round">LLPS ptms</h4>
<div class="panel panel-default">
<table class="csi table table-hover table-responsive">
<thead>
<tr class="active">
<th>Name</th>
<th>Type</th>
<th>Enzyme</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in response.data.llps_ptms" v-bind:key="index">
<td>{{item.name}}</td>
<td>{{item.effect_type}}</td>
<td class="text-nowrap">{{item.enzyme}}</td>
<td>{{item.effect_description}}</td>
</tr>
</tbody>
</table>
</div>
<h4 class="round">Additional Information</h4>
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div class="text col-sm-3">Sequence</div>
<div class="col-sm-9">
<input type="text" :value="response.data.sequence">
<button class="copy-button" :name="'sequence'" :id="'sequence'" :data-clipboard-text="response.data.sequence"><i class="glyphicon glyphicon-copy"></i> </button>
</div>
</div>
</div>
</div>
</div>
</slot>
</template>
</fetch-protein>
</div>
</div>
<!-- /#wrapper -->
</template>
<script>
import fetchProtein from '@/components/DDCODE/fetchProtein.vue'
const _ = require('lodash')
require('./js/clipboard')
export default {
name: 'LandingPage',
components: {
fetchProtein
},
props: ['proteinId'],
data() {
return {
protein: this.$route.params.protein,
}
},
computed: {
},
methods: {
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style>
@import url('~@/assets/bootstrap.css');
@import url('~@/assets/datatable.css');
@import url('~@/assets/tooltip.css');
.main {
/*margin-left: 200px;*/
margin-left: 20px;
}
h3 {
margin: 40px 0 0;
}
a {
color: #42b983;
}
#wrapper {
overflow-x: hidden;
}
#sidebar-wrapper {
min-height: 100vh;
margin-left: -15rem;
-webkit-transition: margin .25s ease-out;
-moz-transition: margin .25s ease-out;
-o-transition: margin .25s ease-out;
transition: margin .25s ease-out;
position: absolute;
z-index: 1; /* Stay on top */
left: 0;
}
#sidebar-wrapper .sidebar-heading {
padding: 0.875rem 1.25rem;
font-size: 1.2rem;
}
#sidebar-wrapper .list-group {
position: -webkit-sticky;
position: sticky;
top: 0;
width: 15rem;
}
#page-content-wrapper {
min-width: 100vw;
}
#wrapper.toggled #sidebar-wrapper {
margin-left: 0;
}
@media (min-width: 768px) {
#sidebar-wrapper {
margin-left: 0;
}
#page-content-wrapper {
min-width: 0;
width: 100%;
}
#wrapper.toggled #sidebar-wrapper {
margin-left: -15rem;
}
}
.uniprot-link {
font-weight: bold;
color: #0065b9;
}
.d-flex {
display: -ms-flexbox !important;
display: flex !important;
}
.panel {
font-size: 1.2rem;
}
</style>