Skip to content

Commit

Permalink
Variants are now local. Add vue2-filters to support sorting.
Browse files Browse the repository at this point in the history
  • Loading branch information
talavis committed Nov 17, 2019
1 parent 7d62fda commit 01390fb
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 65 deletions.
1 change: 1 addition & 0 deletions frontend/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"core-js": "^3.3.2",
"vue": "^2.6.10",
"vue-router": "^3.1.3",
"vue2-filters": "^0.8.0",
"vuex": "^3.1.1"
},
"devDependencies": {
Expand Down
81 changes: 59 additions & 22 deletions frontend/vue/src/components/dataset/browser/BrowserVariants.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,7 @@
<p>Unable to load the variants.</p>
<p>Reason: {{ error }}</p>
</div>
<!-- LOADING MESSAGE -->
<div v-if="!variants" class="alert alert-info col-md-4 col-md-offset-4 text-center" >
<strong>Loading Variants</strong>
</div>
<div class="container" v-if="variants && !error.statusCode">
<div class="container" v-else>
<div class="row">
<div class="col-md-12">
<span class="btn-group radio-button-group" @change="filterVariants">
Expand Down Expand Up @@ -39,7 +35,7 @@
</div>
<div class="row">
<div class="col-md-12">
Number of variants: {{filteredVariants.length}} (including filtered: {{variants.length}})
<div v-if="loaded">Number of variants: {{filteredVariants.length}} (including filtered: {{variants.length}})</div><div v-else>Loading...</div>
</div>
</div>
<div class="row">
Expand All @@ -59,7 +55,7 @@
</tr>
</thead>
<tbody>
<tr v-for="variant in filteredVariants" :key="variant.variantId">
<tr v-for="variant in orderedVariants" :key="variant.variantId">
<td :title="variant['variantId']" class="variantId">
<router-link :to="browserLink('variant/' + variant['variantId'] )">
{{formatVariant(variant)}}
Expand Down Expand Up @@ -98,31 +94,40 @@

<script>
import {mapGetters} from 'vuex';
import axios from 'axios';
import Vue2Filters from 'vue2-filters'
export default {
name: 'BrowserVariants',
mixins: [Vue2Filters.mixin],
data() {
return {
error: {
'statusCode': null,
'statusText': null
},
error: null,
filterVariantsBy: "all",
filterIncludeNonPass: false,
filterVariantsOld: null,
variantBoxThresholds: [0, 1/10000, 1/1000, 1/100, 1/20, 1/2],
item: null,
itemType: null,
filteredVariants: [],
orderByField: null,
headers: null,
reverseSort: null,
orderByField: "pos",
reverseSort: false,
variants: [],
variantHeaders: [],
loaded: false,
}
},
props: ['datasetName', 'datasetVersion', 'dataType', 'identifier'],
computed: {
...mapGetters(['dataset', 'variants', 'variantHeaders']),
...mapGetters(['dataset']),
orderedVariants: function() {
return this.orderBy(this.filteredVariants, this.orderByField, this.reverseSort ? -1 : 1);
}
},
methods: {
formatVariant (variant, len=12) {
function shortenSeq(input, len=12) {
Expand All @@ -144,9 +149,17 @@ export default {
}
return text;
},
reorderVariants (event) {
event.preventDefault();
reorderVariants (event, field) {
if (field == this.orderByField) {
this.reverseSort = !this.reverseSort;
}
else {
this.orderByField = field;
this.reverseSort = false;
}
},
filterVariants () {
let filterAsText = this.filterVariantsBy + this.filterIncludeNonPass;
if (this.filterVariantsOld == filterAsText) {
Expand All @@ -173,6 +186,7 @@ export default {
}
this.filteredVariants = this.variants.filter( filterFunction );
},
browserLink (link) {
if (this.datasetVersion) {
return "/dataset/" + this.datasetName + "/version/" + this.datasetVersion + "/browser/" + link;
Expand All @@ -181,12 +195,35 @@ export default {
}
},
created () {
this.$store.dispatch('getVariants', {'dataset': this.$props.datasetName,
'version': this.$props.datasetVersion,
'datatype': this.dataType,
'identifier': this.$props.identifier})
.then(() => {
let url = '/api/dataset/' + this.$props.datasetName;
if (this.$props.datasetVersion) {
url += '/version/' + this.$props.datasetVersion;
}
url += '/browser/variants/' + this.$props.dataType +
'/' + this.$props.identifier;
axios
.get(url)
.then((response) => {
let variants = response.data.variants;
let mapFunction = function(variant) {
variant.isPass = variant.filter == "PASS";
if (variant.flags.indexOf("LoF") === -1)
variant.isLof = false;
else
variant.isLof = true;
variant.isMissense = variant.majorConsequence == "missense";
};
variants.map(mapFunction);
this.variants = variants;
this.variantHeaders = response.data.headers;
this.filterVariants();
this.loaded = true;
})
.catch((error) => {
this.error = error;
});
}
};
Expand Down
7 changes: 5 additions & 2 deletions frontend/vue/src/main.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import Vue from 'vue'
import App from './App.vue'
import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import Vue2Filters from 'vue2-filters';

Vue.use(Vue2Filters);

Vue.config.productionTip = false

Expand Down
41 changes: 0 additions & 41 deletions frontend/vue/src/store/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,47 +155,6 @@ const actions = {
response;
});
},

getVariants(context, payload) {
return new Promise((resolve, reject) => {
let url = '';
if (payload.version) {
url = '/api/dataset/' + payload.dataset +
'/version/' + payload.version +
'/browser/variants/' + payload.datatype +
'/' + payload.identifier;
}
else {
url = '/api/dataset/' + payload.dataset +
'/browser/variants/' + payload.datatype +
'/' + payload.identifier;
}
axios
.get(url)
.then((response) => {
let variants = response.data.variants;

let mapFunction = function(variant) {
variant.isPass = variant.filter == "PASS";
if (variant.flags.indexOf("LoF") === -1)
variant.isLof = false;
else
variant.isLof = true;
variant.isMissense = variant.majorConsequence == "missense";
};

variants.map(mapFunction);

context.commit('UPDATE_VARIANTS', variants);
context.commit('UPDATE_VARIANT_HEADERS', response.data.headers);
resolve(response);
})
.catch((error) => {
reject(error);
context.commit('UPDATE_VARIANTS', []);
});
});
},

makeBeaconQuery (context, payload) {
return new Promise((resolve, reject) => {
Expand Down

0 comments on commit 01390fb

Please sign in to comment.