Select Git revision
App.vue 41.61 KiB
<template>
<div id="app">
<v-app>
<v-container justify-center grid-list-lg>
<v-layout column>
<v-flex xs4>
<v-alert
v-for="(alert, i) in alerts"
:type="(alert.type === 'danger' ? 'error' : alert.type)"
:value="true"
transition="slide-y-transition"
:key="i"
>
<v-layout row>
<v-flex class="pa-3">{{alert.msg}}</v-flex>
<v-spacer></v-spacer>
<v-btn icon @click.native="dismiss(alert)">
<v-icon>close</v-icon>
</v-btn>
</v-layout>
</v-alert>
</v-flex>
<v-layout row>
<v-flex xs3 text-xs-left>
<router-link :to="'/'">
<img src="./assets/Uni_Logo_2016.png" class="logo" alt="logo" />
</router-link>
</v-flex>
<template v-if="signedin">
<v-flex xs3>
<h3 class="font-weight-light pt-4">Logged in</h3>
<span
v-if="signedin"
class="subheading displayname grey--text text--lighten-1"
>{{ user.firstname }} {{ user.lastname }}</span>
</v-flex>
<v-flex xs1>
<v-btn
raised
single-line
color="primary lighten-2"
class="mt-3"
@click="logout()"
>Logout</v-btn>
</v-flex>
</template>
<template v-else>
<v-flex xs2>
<v-text-field v-model="credentials.username" :label="'username'"></v-text-field>
</v-flex>
<v-flex xs2>
<v-text-field
v-model="credentials.password"
:label="'password'"
:append-icon="psvis ? 'visibility' : 'visibility_off'"
@click:append="toggleVisibility"
:type="psvis ? 'password' : 'text'"
></v-text-field>
</v-flex>
<v-flex xs1>
<v-btn
raised
single-line
color="primary lighten-2"
class="mt-3"
@click="login()"
>Login</v-btn>
</v-flex>
</template>
<v-flex offset-xs2 xs2>
<v-select
v-model="lang"
:items="languages"
:label="$t('Language')"
@change="$i18n.locale=$event"
prepend-icon="language"
single-line
></v-select>
</v-flex>
<v-flex xs1 class="mt-4">v {{version}}</v-flex>
</v-layout>
<v-tabs
v-model="window"
slot="extension"
slider-color="blue darken-4"
color="light-green lighten-3"
>
<v-tab ripple>{{ $t('Submit') }}</v-tab>
<v-tab ripple>{{ $t('Display') }}</v-tab>
<v-tab ripple>{{ $t('Edit') }}</v-tab>
<v-tab ripple>{{ $t('Search') }}</v-tab>
</v-tabs>
<v-layout row>
<v-flex>
<v-window v-model="window">
<v-window-item>
<ph-submit
:form="form"
v-on:object-created="objectCreated($event)"
v-on:load-form="form = $event"
v-on:form-input-p-select="handleSelect($event)"
v-on:add-phaidrasubject-section="addPhaidrasubjectSection($event)"
></ph-submit>
</v-window-item>
<v-window-item>
<v-flex>
<v-card>
<v-toolbar flat>
<v-toolbar-title>{{$t('Display')}}</v-toolbar-title>
<v-divider class="mx-3" inset vertical></v-divider>
<v-text-field v-model="pid" :placeholder="pid"></v-text-field>
<v-spacer></v-spacer>
<v-btn
raised
single-line
class="right"
color="primary lighten-2"
@click="getPid();loadDisplay()"
>Load</v-btn>
</v-toolbar>
<v-card-text>
<v-layout row>
members {{fullmembers}}
<ph-d-jsonld :form="form" :jsonld="displayjsonld" :pid="pid"></ph-d-jsonld>
</v-layout>
<v-toolbar v-if="members.length>0" dense flat>
<v-toolbar-title class="font-weight-light">File Members</v-toolbar-title>
</v-toolbar>
<v-layout row>
<v-layout v-for="(mpid,order) in members">
<v-flex xs4 class="subheading">
<a :href="'https://' + instance.baseurl +'/'+mpid.pid" target="_blank">{{'https://' + instance.baseurl +'/'+mpid.pid}}</a>
</v-flex>
<v-flex xs4>
<p-img
:src="'https://' + instance.baseurl + '/preview/' + mpid.pid + '///120'"
class="elevation-1"
>
<v-layout slot="placeholder" fill-height align-center justify-center ma-0>
<v-progress-circular indeterminate color="grey lighten-5"></v-progress-circular>
</v-layout>
</p-img>
</v-flex>
</v-layout>
</v-layout>
</v-card-text>
</v-card>
</v-flex>
</v-window-item>
<v-window-item>
<v-flex>
<v-card>
<v-toolbar flat>
<v-toolbar-title>{{$t('Edit')}}</v-toolbar-title>
<v-divider class="mx-3" inset vertical></v-divider>
<v-text-field v-model="pid" :placeholder="pid"></v-text-field>
<v-spacer></v-spacer>
<v-btn
raised
single-line
class="right"
color="primary lighten-2"
@click="loadEdit()"
>Load</v-btn>
</v-toolbar>
<v-card-text>
</v-card-text>
</v-card>
</v-flex>
</v-window-item>
<v-window-item>
<v-flex>
<v-card>
<v-toolbar flat>
<v-toolbar-title>{{ $t('Search') }}</v-toolbar-title>
<v-divider class="mx-3" inset vertical></v-divider>
<v-text-field
:placeholder="'Collection, e.g. ' + sampleCollection"
v-model="collection"
></v-text-field>
<v-spacer></v-spacer>
<v-btn
raised
single-line
class="right"
color="primary lighten-2"
@click="loadSearch()"
>Load Collection</v-btn>
</v-toolbar>
<v-card-text>
<p-search :collection="collection"></p-search>
</v-card-text>
</v-card>
</v-flex>
</v-window-item>
</v-window>
</v-flex>
</v-layout>
</v-layout>
</v-container>
</v-app>
</div>
</template>
<script>
import Vue from "vue";
import qs from "qs";
import PIForm from "@/components/input/phaidra_inputs/PIForm";
import PhSubmit from "@/components/input/PhSubmit";
import PhDJsonld from "@/components/display/pharma_display/PhDJsonld";
import PMDelete from "@/components/management/PMDelete";
import PMSort from "@/components/management/PMSort";
import PMRights from "@/components/management/PMRights";
import PMRelationships from "@/components/management/PMRelationships";
import PMFiles from "@/components/management/PMFiles";
import PSearch from "@/components/search/PSearch";
import { version } from "../package.json";
import fields from "@/utils/fields";
import jsonLd from "@/utils/json-ld";
import PImg from "@/components/utils/PImg";
import "@/compiled-icons/univie-sprache";
import "@/compiled-icons/material-social-person";
import "@/compiled-icons/material-navigation-menu";
export default {
name: "app",
components: {
PhSubmit,
PhDJsonld,
PSearch,
PMDelete,
PMSort,
PMRights,
PMRelationships,
PMFiles,
PIForm,PImg
},
computed: {
loadedcmodel: function() {
return "cmodel" in this.piddoc ? this.piddoc.cmodel : "unknown";
},
signedin: function() {
return this.$store.state.user.token;
},
alerts: function() {
return this.$store.state.alerts.alerts;
},
vocabularies: function() {
return this.$store.state.vocabulary.vocabularies;
},
instance: function() {
return this.$store.state.settings.instance;
},
user() {
return this.$store.state.user;
},
settings() {
return this.$store.state.settings;
},
user() {
return this.$store.state.user;
}
},
data() {
return {
window: 0,
lang: "eng",
languages: [
{ text: "english", value: "eng" },
{ text: "deutsch", value: "deu" }
],
displayjsonld: {},
editform: {},
form: {
sections: []
},
members: [],
fullmembers:[],
pid: "o:589027",
piddoc: {},
collection: "",
sampleCollection: "",
solrbaseurl: "https://app01.cc.univie.ac.at:8983/solr/phaidra_sandbox",
phaidrabaseurl: "phaidra-sandbox.univie.ac.at",
trackerbaseurl: "www.univie.ac.at/phaidra-stat/piwik",
siteid: 19,
apibaseurl: "https://services.phaidra-sandbox.univie.ac.at/api",
credentials: {
username: "",
password: ""
},
version: version,
contentmodel: "https://pid.phaidra.org/vocabulary/8MY0-BQDQ",
psvis: true
};
},
methods: {
getPid: function() {
var newpid = this.pid.replace(/\s+/g, "");
this.pid = newpid;
},
getResourceTypeFromMimeType: function(mime) {
switch (mime) {
case "image/jpeg":
case "image/tiff":
case "image/gif":
case "image/png":
case "image/x-ms-bmp":
// picture
return "https://pid.phaidra.org/vocabulary/44TN-P1S0";
case "audio/wav":
case "audio/mpeg":
case "audio/flac":
case "audio/ogg":
// audio
return "https://pid.phaidra.org/vocabulary/8YB5-1M0J";
case "application/pdf":
// document
return "https://pid.phaidra.org/vocabulary/69ZZ-2KGX";
case "video/mpeg":
case "video/avi":
case "video/mp4":
case "video/quicktime":
case "video/x-matroska":
// video
return "https://pid.phaidra.org/vocabulary/B0Y6-GYT8";
// eg application/x-iso9660-image
default:
// data
return "https://pid.phaidra.org/vocabulary/7AVS-Y482";
}
},
handleSelect: function(val) {
var i;
var j;
var k;
if (val.predicate === "ebucore:hasMimeType") {
for (i = 0; i < this.form.sections.length; i++) {
if (this.form.sections[i].fields) {
var mime;
for (j = 0; j < this.form.sections[i].fields.length; j++) {
if (
this.form.sections[i].fields[j].predicate ===
"ebucore:hasMimeType"
) {
mime = this.form.sections[i].fields[j].value;
}
}
if (mime) {
var resourcetype = this.getResourceTypeFromMimeType(mime);
for (j = 0; j < this.form.sections[i].fields.length; j++) {
if (
this.form.sections[i].fields[j].predicate === "dcterms:type"
) {
var rt = this.form.sections[i].fields[j];
rt.value = resourcetype;
var preflabels;
for (
k = 0;
k < this.vocabularies["resourcetype"].terms.length;
k++
) {
if (
this.vocabularies["resourcetype"].terms[k]["@id"] ===
rt.value
) {
preflabels = this.vocabularies["resourcetype"].terms[k][
"skos:prefLabel"
];
}
}
rt["skos:prefLabel"] = [];
Object.entries(preflabels).forEach(([key, value]) => {
rt["skos:prefLabel"].push({
"@value": value,
"@language": key
});
});
}
}
this.form.sections.splice(i, 1, this.form.sections[i]);
}
}
}
}
},
addPhaidrasubjectSection: function(afterSection) {
let s = {
title: "Subject",
type: "phaidra:Subject",
id: this.form.sections.length + 1,
removable: true,
multiplicable: true,
fields: []
};
this.form.sections.splice(
this.form.sections.indexOf(afterSection) + 1,
0,
s
);
},
loadManagement: function(pid) {
this.loadMembers(pid);
this.loadDoc(pid);
},
loadDoc: function(pid) {
var self = this;
this.members = [];
var params = {
q: 'pid:"' + pid + '"',
defType: "edismax",
wt: "json",
qf: "pid^5"
};
var query = qs.stringify(params, {
encodeValuesOnly: true,
indices: false
});
var url = self.instance.solr + "/select?" + query;
var promise = fetch(url, {
method: "GET",
mode: "cors"
})
.then(function(response) {
return response.json();
})
.then(function(json) {
if (json.response.numFound > 0) {
self.piddoc = json.response.docs[0];
} else {
self.piddoc = {};
}
})
.catch(function(error) {
console.log(error); // eslint-disable-line no-console
});
return promise;
},
getMembers: function(pid) {
this.members = [];
var self = this;
var url =
self.$store.state.settings.instance.api +
"/object/" +
pid +
"/members/order";
var promise = fetch(url, {
method: "GET",
mode: "cors"
})
.then(function(response) {
return response.json();
})
.then(function(json) {
if (json.metadata["members"]) {
return json.metadata["members"];
}
})
.catch(function(error) {
console.log(error); // eslint-disable-line no-console
});
return promise;
},
loadMembers: function(pid) {
var self = this;
this.members = [];
var params = {
q: 'ismemberof:"' + pid + '"',
defType: "edismax",
wt: "json",
qf: "ismemberof^5",
fl: "pid,cmodel,dc_title,created",
sort: "pos_in_" + pid.replace(":", "_") + " asc"
};
var query = qs.stringify(params, {
encodeValuesOnly: true,
indices: false
});
var url = self.instance.solr + "/select?" + query;
var promise = fetch(url, {
method: "GET",
mode: "cors"
})
.then(function(response) {
return response.json();
console.log("in loadMembers response", response.json())
})
.then(function(json) {
if (json.response.numFound > 0) {
self.members = json.response.docs;
} else {
self.members = [];
}
})
.catch(function(error) {
console.log(error); // eslint-disable-line no-console
});
return promise;
},
loadMetadata: function(pid) {
this.loadedMetadata = [];
var self = this;
var url =
self.$store.state.settings.instance.api +
"/object/" +
pid +
"/metadata?mode=resolved";
var promise = fetch(url, {
method: "GET",
mode: "cors"
})
.then(function(response) {
return response.json();
})
.then(function(json) {
if (json.metadata["JSON-LD"]) {
//console.log("load metadata returned", json.metadata["JSON-LD"])
return json.metadata["JSON-LD"];
}
})
.catch(function(error) {
console.log(error); // eslint-disable-line no-console
});
return promise;
},
loadDisplay: function() {
this.displayjsonld = {};
let self = this;
this.loadMetadata(self.pid).then(function(jsonld) {
self.displayjsonld = jsonld;
});
this.getMembers(self.pid).then(function(jsonmembers) {
self.members = jsonmembers;
});
this.loadMembers(self.pid).then(function(jsonfullmembers) {
self.fullmembers = jsonfullmembers;
});
},
loadEdit: function() {
let self = this;
this.loadMetadata(self.pid).then(function(jsonld) {
self.editform = jsonLd.json2form(jsonld);
});
},
loadSearch: function() {
this.collection = "";
this.collection = this.sampleCollection;
},
login: function() {
this.$store.dispatch("login", this.credentials);
},
logout: function() {
this.$store.dispatch("logout");
document.cookie = "X-XSRF-TOKEN=";
},
objectCreated: function(event) {
this.$store.commit("setAlerts", [
{ type: "success", msg: "Object " + event + " created" }
]);
},
objectSaved: function(event) {
this.$store.commit("setAlerts", [
{ type: "success", msg: "Metadata for object " + event + " saved" }
]);
},
orderSaved: function(event) {
this.$store.commit("setAlerts", [
{ type: "success", msg: "Order for object " + event + " saved" }
]);
},
objectDeleted: function() {
this.$store.commit("setAlerts", [
{ type: "success", msg: "Object was successfully deleted." }
]);
},
toggleVisibility: function() {
this.psvis = !this.psvis;
},
dismiss: function(alert) {
this.$store.commit("clearAlert", alert);
},
getCookie: function(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) {
var val = parts
.pop()
.split(";")
.shift();
return val === " " ? null : val;
}
},
resetForm: function(cm) {
if (cm === "https://pid.phaidra.org/vocabulary/8MY0-BQDQ") {
this.createContainerForm();
} else {
this.createSimpleForm();
}
},
createSimpleForm: function() {
this.form = {
sections: [
{
title: "General metadata",
type: "digitalobject",
id: "general",
isActive: true,
fields: []
},
{
title: "File",
id: "file",
type: "member",
isActive: true,
fields: []
},
{
title: "Content Classification",
type: "pharma_content",
id: "content",
isActive: true,
categories: [
{
id: "biologicalMacromolecule",
component: "uniprot",
description: "Biological macromolecules",
question: "Connection to biological macromolecules",
fields: []
},
{
id: "life",
component: "taxon_cell",
description: "Living organisms",
question: "Connection to living organisms",
fields: []
},
{
id: "assay",
component: "bioassay",
description: "Bioassay",
question: "Bioassay content",
fields: []
},
{
id: "disease",
component: "disease",
description: "Diseases",
question: "Connection to diseases",
fields: []
},
{
id: "anatomicalCategory",
component: "anatomy",
description: "Anatomical entity",
question: "Relation to anatomical entity",
fields: []
},
{
id: "goTerm",
component: "GO",
description: "GO terms",
question: "Matching Gene Ontology terms",
info:
"An ontology for describing the function of genes and gene products",
fields: []
},
{
id: "chebi",
component: "chebi",
question: "Associated CHEBI-terms",
description: "CHEBI-terms",
fields: []
},
{
id: "technique",
component: "technique",
question: "Used techniques",
description: "Techniques",
fields: []
},
{
id: "discipline",
component: "discipline",
question: "Involved disciplines",
description: "Disciplines",
fields: []
}
]
},
{
title: "Submit",
type: "digitalobject",
id: "submit",
isActive: true,
fields: []
}
]
};
var rt = fields.getField("resource-type");
rt.value = this.contentmodel;
this.form.sections[0].fields.push(rt);
this.form.sections[0].fields.push(fields.getField("pharma-title"));
this.form.sections[0].fields.push(fields.getField("abstract"));
this.form.sections[0].fields.push(fields.getField("date"));
this.form.sections[0].fields.push(fields.getField("contributors"));
this.form.sections[0].fields.push(fields.getField("projects"));
//this is moved to file section now
//this.form.sections[0].fields.push(fields.getField("license"));
this.form.sections[1].fields.push(fields.getField("file"));
//push to biassay
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Assay-title")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Assay-protocol")
);
//this.form.sections[2].categories[2].fields.push(
// fields.getField("0-Assay-result")
//);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Bioassay-type")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Bioassay-category")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Assay-format")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Assay-design-method")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Computational-method")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Assay-screening-campaign-stage")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Organism")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Cellular-organism")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Viruses")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Viroids")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-cell-line")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Assay-target")
);
var uniprot_assayTarget = fields.getField("1-Uniprot");
uniprot_assayTarget.label = "Assay Target Uniprot record";
uniprot_assayTarget.type = "pharmaWien:uniprot_protein_assayTarget";
uniprot_assayTarget.category = ["assayTarget"];
var isoform_assayTarget = fields.getField("1-Isoform");
isoform_assayTarget.label = "Assay Target Isoform";
isoform_assayTarget.type = "pharmaWien:assayTarget_isoform_protein";
isoform_assayTarget.category = ["assayTarget"];
var seqAlt_assayTarget = fields.getField("1-Protein-sequence-alteration");
seqAlt_assayTarget.label = "Assay Target Protein sequence alteration";
seqAlt_assayTarget.type = "pharmaWien:assayTarget_seqAlt_protein";
seqAlt_assayTarget.category = ["assayTarget"];
var protMod_assayTarget = fields.getField("1-Protein-modification");
protMod_assayTarget.label = "Assay Target Protein Modification";
protMod_assayTarget.type = "pharmaWien:assayTarget_protMod_protein";
protMod_assayTarget.category = ["assayTarget"];
this.form.sections[2].categories[2].fields.push(uniprot_assayTarget);
this.form.sections[2].categories[2].fields.push(isoform_assayTarget);
this.form.sections[2].categories[2].fields.push(seqAlt_assayTarget);
this.form.sections[2].categories[2].fields.push(protMod_assayTarget);
var gene_assayTarget = fields.getField("1-Entrez-gene-ID");
gene_assayTarget.label = "Assay Target Entrez Gene ID";
gene_assayTarget.type = "pharmaWien:assayTarget_geneId";
gene_assayTarget.category = ["assayTarget"];
var geneMod_assayTarget = fields.getField("1-Gene-modification");
geneMod_assayTarget.label = "Assay Target Gene Modification";
geneMod_assayTarget.type = "pharmaWien:assayTarget_geneMod";
geneMod_assayTarget.category = ["assayTarget"];
this.form.sections[2].categories[2].fields.push(gene_assayTarget);
this.form.sections[2].categories[2].fields.push(geneMod_assayTarget);
var nacid_assayTarget = fields.getField("1-Nucleic-acid-type");
nacid_assayTarget.label = "Assay Target Nucleic Acid Type";
nacid_assayTarget.type = "pharmaWien:assayTarget_type_nucleicAcid";
nacid_assayTarget.category = ["assayTarget"];
nacid_assayTarget.description = "Nucleic Acid";
var refSeq_assayTarget = fields.getField("1-RefSeq-accession");
refSeq_assayTarget.label = "Assay Target RefSeq accession:";
refSeq_assayTarget.type = "pharmaWien:assayTarget_refSeq_nucleicAcid";
refSeq_assayTarget.category = ["assayTarget"];
refSeq_assayTarget.description = "Nucleic Acid";
this.form.sections[2].categories[2].fields.push(nacid_assayTarget);
this.form.sections[2].categories[2].fields.push(refSeq_assayTarget);
var PFAM_assayTarget = fields.getField("1-PFAM-accession");
PFAM_assayTarget.label = "Assay Target PFAM accession number";
PFAM_assayTarget.type = "pharmaWien:assayTarget_PFAM";
PFAM_assayTarget.category = ["assayTarget"];
this.form.sections[2].categories[2].fields.push(PFAM_assayTarget);
var uniprotsub_assayTarget = fields.getField("1-Uniprot");
uniprotsub_assayTarget.label =
"Assay Target Protein Subunit Uniprot record";
uniprotsub_assayTarget.type = "pharmaWien:assayTarget_uniprot_protSub";
uniprotsub_assayTarget.category = ["assayTarget"];
uniprotsub_assayTarget.description = "Protein Subunit";
var isoformsub_assayTarget = fields.getField("1-Isoform");
isoformsub_assayTarget.label = "Assay Target Protein Subunit Isoform";
isoformsub_assayTarget.type = "pharmaWien:assayTarget_isoform_protSub";
isoformsub_assayTarget.category = ["assayTarget"];
isoformsub_assayTarget.description = "Protein Subunit";
var seqAltsub_assayTarget = fields.getField(
"1-Protein-sequence-alteration"
);
seqAltsub_assayTarget.label =
"Assay Target Protein Subunit sequence alteration";
seqAltsub_assayTarget.type = "pharmaWien:assayTarget_seqAlt_protSub";
seqAltsub_assayTarget.category = ["assayTarget"];
seqAltsub_assayTarget.description = "Protein Subunit";
var protModsub_assayTarget = fields.getField("1-Protein-modification");
protModsub_assayTarget.label =
"Assay Target Protein Subunit modification";
protModsub_assayTarget.type = "pharmaWien:assayTarget_protMod_protSub";
protModsub_assayTarget.category = ["assayTarget"];
protModsub_assayTarget.description = "Protein Subunit";
this.form.sections[2].categories[2].fields.push(uniprotsub_assayTarget);
this.form.sections[2].categories[2].fields.push(isoformsub_assayTarget);
this.form.sections[2].categories[2].fields.push(seqAltsub_assayTarget);
this.form.sections[2].categories[2].fields.push(protModsub_assayTarget);
var protcomplex_assayTarget = fields.getField(
"1-Complex-portal-accession"
);
protcomplex_assayTarget.label =
"Assay Target Protein Complex-Portal Accession";
protcomplex_assayTarget.type =
"pharmaWien:assayTarget_portalAcc_protComplex";
protcomplex_assayTarget.category = ["assayTarget"];
this.form.sections[2].categories[2].fields.push(protcomplex_assayTarget);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-carbohydrate")
);
var lipid_assayTarget = fields.getField("1-Lipid");
lipid_assayTarget.label = "Assay Target Lipid";
lipid_assayTarget.type = "pharmaWien:assayTarget_lipid";
lipid_assayTarget.category = ["assayTarget"];
this.form.sections[2].categories[2].fields.push(lipid_assayTarget);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Small-molecule")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-Organism-assayTarget")
);
var cell_organism_assayTarget = fields.getField("0-Cellular-organism");
//cell_organism_assayTarget.description = ["Cellular organism", "Organism"];
cell_organism_assayTarget.label = "Assay Target Cellular Organism";
cell_organism_assayTarget.type =
"pharmaWien:assayTarget_cellular_organism";
cell_organism_assayTarget.category = ["organismAssayTarget"];
// cell_organism_assayTarget.topcategory = "assayTarget";
cell_organism_assayTarget.visible = false;
this.form.sections[2].categories[2].fields.push(
cell_organism_assayTarget
);
var viruses_organism_assayTarget = fields.getField("0-Viruses");
//viruses_organism_assayTarget.description = ["Viruses", "Organism"];
viruses_organism_assayTarget.label = "Assay Target Viruses";
viruses_organism_assayTarget.type =
"pharmaWien:assayTarget_viruses_organism";
// cell_organism_assayTarget.topcategory = "assayTarget";
viruses_organism_assayTarget.category = ["organismAssayTarget"];
viruses_organism_assayTarget.visible = false;
this.form.sections[2].categories[2].fields.push(
viruses_organism_assayTarget
);
var viroids_organism_assayTarget = fields.getField("0-Viroids");
//viroids_organism_assayTarget.description = ["Viroids", "Organism"];
viroids_organism_assayTarget.label = "Assay Target Viroids";
viroids_organism_assayTarget.subjectType =
"pharmaWien:assayTarget_viroids_organism";
viroids_organism_assayTarget.category = ["organismAssayTarget"];
// cell_organism_assayTarget.topcategory = "assayTarget";
viroids_organism_assayTarget.visible = false;
this.form.sections[2].categories[2].fields.push(
viroids_organism_assayTarget
);
var cell_line_assayTarget = fields.getField("0-cell-line");
cell_line_assayTarget.label = "Assay Target Cell line (cellosaurus)";
cell_line_assayTarget.type = "pharmaWien:assayTarget_cellosaurus";
cell_line_assayTarget.visible = false;
cell_line_assayTarget.category = ["assayTarget"];
this.form.sections[2].categories[2].fields.push(cell_line_assayTarget);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-cellular-anatomical-entity")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-tissue")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-detection")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-detection_method")
);
this.form.sections[2].categories[2].fields.push(
fields.getField("0-detection_instrument")
);
//push to biological macromolecule
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Biological-macromolecule")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Uniprot")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Isoform")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Protein-sequence-alteration")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Protein-modification")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Entrez-gene-ID")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Gene-modification")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Nucleic-acid-type")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-RefSeq-accession")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-PFAM-accession")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Uniprot-protein-subunit")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Isoform-protein-subunit")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Protein-sequence-alteration-protein-subunit")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Protein-modification-protein-subunit")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Complex-portal-accession")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Polysaccharide")
);
this.form.sections[2].categories[0].fields.push(
fields.getField("1-Lipid")
);
//push to living organism
this.form.sections[2].categories[1].fields.push(
fields.getField("2-Life")
);
// this.form.sections[2].categories[1].fields.push(
// fields.getField("2-Living-organism")
// );
this.form.sections[2].categories[1].fields.push(
fields.getField("2-Viruses")
);
this.form.sections[2].categories[1].fields.push(
fields.getField("2-Viroids")
);
this.form.sections[2].categories[1].fields.push(
fields.getField("2-cellular-organisms")
);
this.form.sections[2].categories[1].fields.push(
fields.getField("2-otherSequences")
);
this.form.sections[2].categories[1].fields.push(
fields.getField("2-unclassifiedSequences")
);
this.form.sections[2].categories[1].fields.push(
fields.getField("2-cellosaurus")
);
//this.form.sections[2].categories[1].fields.push(
// fields.getField("2-cultured-cell")
//);
//push to diseases
this.form.sections[2].categories[3].fields.push(
fields.getField("3-Disease")
);
//push to anatomical entity
this.form.sections[2].categories[4].fields.push(
fields.getField("4-Anatomical-category")
);
this.form.sections[2].categories[4].fields.push(
fields.getField("4-Anatomical-entity")
);
this.form.sections[2].categories[4].fields.push(
fields.getField("4-Plant-anatomical-entity")
);
this.form.sections[2].categories[4].fields.push(
fields.getField("4-Fungal-structure")
);
this.form.sections[2].categories[4].fields.push(
fields.getField("4-Bacterial-structures")
);
//this.form.sections[2].categories[4].fields.push(
// fields.getField("4-Viral-structures")
//);
//push to go
this.form.sections[2].categories[5].fields.push(
fields.getField("5-Molecular-function")
);
this.form.sections[2].categories[5].fields.push(
fields.getField("5-Biological-process")
);
this.form.sections[2].categories[5].fields.push(
fields.getField("5-Cellular-component")
);
//push to chebi
this.form.sections[2].categories[6].fields.push(
fields.getField("6-Chemical-entities")
);
// this.form.sections[2].categories[6].fields.push(
// fields.getField("6-Atom")
// );
// this.form.sections[2].categories[6].fields.push(
// fields.getField("6-chemical-substance")
// );
this.form.sections[2].categories[6].fields.push(
fields.getField("6-Role")
);
this.form.sections[2].categories[6].fields.push(
fields.getField("6-Subatomic-particle")
);
//push to technique
this.form.sections[2].categories[7].fields.push(
fields.getField("7-Technique")
);
//push to discipline
this.form.sections[2].categories[8].fields.push(
fields.getField("8-Discipline")
);
},
createContainerForm: function() {
this.createSimpleForm();
/* this.form.sections[1] = {
title: "File",
id: "file",
type: "member",
fields: []
};
var rt = fields.getField("resource-type");
rt.value = "https://pid.phaidra.org/vocabulary/8MY0-BQDQ";
this.form.sections[1].fields.push(rt);
this.form.sections[3].fields.push(fields.getField("file"));
this.form.sections[3].fields.push(fields.getField("title"));
this.form.sections[3].fields.push(fields.getField("description"));
var mt = fields.getField("mime-type");
mt.required = true;
this.form.sections[3].fields.push(mt);
this.form.sections[3].fields.push(fields.getField("digitization-note"));
this.form.sections[3].fields.push(fields.getField("role"));
this.form.sections[3].fields.push(fields.getField("license"));
this.form.sections[3].fields.push(fields.getField("rights"));*/
},
loadTracking: async function() {
const scriptPromise = new Promise((resolve, reject) => {
const script = document.createElement("script");
script.async = true;
script.defer = true;
script.src = "//" + this.trackerbaseurl + "/matomo.js";
const head = document.head || document.getElementsByTagName("head")[0];
head.appendChild(script);
script.onload = resolve;
script.onerror = reject;
});
scriptPromise.catch(error => {
console.error(
"An error occurred trying to load " +
error.target.src +
". If the file exists you may have an ad- or trackingblocker enabled."
);
});
return scriptPromise;
}
},
mounted: async function() {
await this.loadTracking();
const Matomo = window.Piwik.getTracker(
"https://" + this.trackerbaseurl + "/matomo.php",
this.siteid
);
Matomo.trackPageView();
Matomo.enableLinkTracking();
Vue.prototype.$matomo = Matomo;
this.$router.afterEach((to, from) => {
this.$matomo.setCustomUrl("ExtService");
this.$matomo.setDocumentTitle("Pharma_try");
this.$matomo.trackPageView();
});
var signedin = this.getCookie("X-XSRF-TOKEN");
if (signedin) {
// TODO init userdata if setting signedin from cookie
this.$store.commit("setToken", signedin);
}
this.$store.commit("setInstanceApi", this.apibaseurl);
this.$store.commit("setInstanceSolr", this.solrbaseurl);
this.$store.commit("setInstancePhaidra", this.phaidrabaseurl);
this.$store.commit("setSuggester", {
suggester: "ExtServiceSuggest",
url: "https://fair01a.phaidra.at/"
});
this.$store.commit("setSuggester", {
suggester: "ols",
url: "ols: 'http://www.ebi.ac.uk/ols/api/"
});
this.$store.commit("initStore"); // this commits initStore in every store module which has it
this.createContainerForm();
}
};
</script>
<style>
#app {
font-family: "Roboto", sans-serif, Arial, Helvetica, sans-serif;
font-size: 11.5pt;
line-height: 1.42857143;
color: black;
background-color: white;
font-weight: 300;
text-rendering: optimizeLegibility;
}
.right {
float: right;
}
.pdlabel {
max-width: 100%;
}
#app .v-btn {
text-transform: none;
}
#app .v-tabs__div {
text-transform: none;
font-weight: 300;
}
.logo {
height: auto;
width: auto;
max-width: 250px;
max-height: 150px;
}
.v-align-top {
vertical-align: top;
}
.top-margin-3 {
margin-top: 3px;
}
.lang-icon {
margin-left: 5px;
}
.displayname {
vertical-align: top;
display: inline-block;
margin-top: 10px;
}
</style>
<style lang="stylus">
@require './stylus/main';
</style>