Gitlab is now using https://gitlab.lcsb.uni.lu as it's primary address. Please update your bookmarks. FAQ.

Commit ba6144ff authored by Sascha Herzinger's avatar Sascha Herzinger
Browse files

Fixed many issues after introducing new API and fixed #32 (inline font)

parent 560b6bfd
Pipeline #6736 failed with stages
in 6 minutes and 37 seconds
{
"name": "fractalis",
"version": "1.2.10-test",
"version": "1.2.12",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......@@ -2170,6 +2170,78 @@
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
"integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
},
"base64-inline-loader": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/base64-inline-loader/-/base64-inline-loader-1.1.1.tgz",
"integrity": "sha512-v/bHvXQ8sW28t9ZwBsFGgyqZw2bpT49/dtPTtlmixoSM/s9wnOngOKFVQLRH8BfMTy6jTl5m5CdvqpZt8y5d6g==",
"dev": true,
"requires": {
"file-loader": "^1.1.11",
"loader-utils": "^1.1.0",
"mime-types": "^2.1.18"
},
"dependencies": {
"ajv": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz",
"integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
"dev": true
},
"file-loader": {
"version": "1.1.11",
"resolved": "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz",
"integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==",
"dev": true,
"requires": {
"loader-utils": "^1.0.2",
"schema-utils": "^0.4.5"
}
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"schema-utils": {
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
"integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
"dev": true,
"requires": {
"ajv": "^6.1.0",
"ajv-keywords": "^3.1.0"
}
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": {
"punycode": "^2.1.0"
}
}
}
},
"base64-js": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
......@@ -4328,21 +4400,6 @@
"is-symbol": "^1.0.1"
}
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
"dev": true
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"dev": true,
"requires": {
"es6-promise": "^4.0.3"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
......@@ -4925,49 +4982,6 @@
"is-extglob": "^1.0.0"
}
},
"extract-zip": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
"integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
"dev": true,
"requires": {
"concat-stream": "1.6.0",
"debug": "2.6.9",
"mkdirp": "0.5.0",
"yauzl": "2.4.1"
},
"dependencies": {
"concat-stream": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
"integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
"dev": true,
"requires": {
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"mkdirp": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
"integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
"dev": true,
"requires": {
"minimist": "0.0.8"
}
}
}
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
......@@ -5007,15 +5021,6 @@
"websocket-driver": ">=0.5.1"
}
},
"fd-slicer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
"dev": true,
"requires": {
"pend": "~1.2.0"
}
},
"figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
......@@ -5218,25 +5223,6 @@
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
"dev": true
},
"fractalis": {
"version": "1.2.10-test",
"resolved": "https://registry.npmjs.org/fractalis/-/fractalis-1.2.10-test.tgz",
"integrity": "sha512-BMaa6Ol/36nv+uKWrIMKSZoKiSAlpI03tBa0Yk6Bp2aUF0AxWpfTlTblRftvF2EcB3bQ8FpydHvlae3nkErj+A==",
"requires": {
"@babel/runtime": "7.0.0-beta.46",
"axios": "0.16.1",
"d3": "4.13.0",
"deep-freeze-strict": "1.1.1",
"html2canvas": "1.0.0-alpha.12",
"lodash": "4.17.5",
"resize-observer-polyfill": "1.5.0",
"tippy.js": "2.2.2",
"uuid": "3.2.1",
"vue": "2.5.13",
"vue-async-computed": "3.3.1",
"vuex": "3.0.1"
}
},
"fragment-cache": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
......@@ -5262,15 +5248,6 @@
"readable-stream": "^2.0.0"
}
},
"fs-access": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
"integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
"dev": true,
"requires": {
"null-check": "^1.0.0"
}
},
"fs-write-stream-atomic": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
......@@ -8276,16 +8253,6 @@
}
}
},
"karma-chrome-launcher": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
"integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==",
"dev": true,
"requires": {
"fs-access": "^1.0.0",
"which": "^1.2.1"
}
},
"karma-firefox-launcher": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz",
......@@ -9188,6 +9155,12 @@
"integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==",
"dev": true
},
"materialize-css": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/materialize-css/-/materialize-css-1.0.0.tgz",
"integrity": "sha512-4/oecXl8y/1i8RDZvyvwAICyqwNoKU4or5uf8uoAd74k76KzZ0Llym4zhJ5lLNUskcqjO0AuMcvNyDkpz8Z6zw==",
"dev": true
},
"md5.js": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
......@@ -16647,12 +16620,6 @@
"set-blocking": "~2.0.0"
}
},
"null-check": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
"integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
"dev": true
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
......@@ -17272,12 +17239,6 @@
"sha.js": "^2.4.8"
}
},
"pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
......@@ -17592,12 +17553,6 @@
}
}
},
"proxy-from-env": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
"integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
"dev": true
},
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
......@@ -17650,63 +17605,6 @@
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
},
"puppeteer": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.3.0.tgz",
"integrity": "sha512-wx10aPQPpGJVxdB6yoDSLm9p4rCwARUSLMVV0bx++owuqkvviXKyiFM3EWsywaFmjOKNPXacIjplF7xhHiFP3w==",
"dev": true,
"requires": {
"debug": "^2.6.8",
"extract-zip": "^1.6.5",
"https-proxy-agent": "^2.1.0",
"mime": "^1.3.4",
"progress": "^2.0.0",
"proxy-from-env": "^1.0.0",
"rimraf": "^2.6.1",
"ws": "^3.0.0"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz",
"integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==",
"dev": true,
"requires": {
"es6-promisify": "^5.0.0"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"dev": true,
"requires": {
"agent-base": "^4.1.0",
"debug": "^3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
}
}
}
}
},
"qjobs": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
......@@ -22360,15 +22258,6 @@
}
}
},
"yauzl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
"dev": true,
"requires": {
"fd-slicer": "~1.0.1"
}
},
"yeast": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
......
@import url('https://fonts.googleapis.com/icon?family=Material+Icons')
@import '~tippy.js/dist/tippy.css'
@font-face
font-family: 'Roboto'
font-style: normal
font-weight: 400
font-size: 1rem
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v15/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2) format('woff2')
*
font-family: Roboto, sans-serif
font-size: 1em
.material-icons
font-family: 'Material Icons'
font-weight: normal
font-style: normal
font-size: 24px /* Preferred icon size */
display: inline-block
line-height: 1
text-transform: none
letter-spacing: normal
word-wrap: normal
white-space: nowrap
direction: ltr
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale
/* Support for IE. */
font-feature-settings: 'liga'
.fjs-seperator
width: 100%
margin: 20px 0 20px 0
.fjs-fieldset
display: flex
flex-direction: row
flex-direction: column
flex-wrap: nowrap
justify-content: flex-start
margin: 0.4vh 0 0.4vh 0
......@@ -26,4 +42,4 @@
padding: 0.4vw
.fjs-brush
stroke-width: 0
\ No newline at end of file
stroke-width: 0
@font-face
font-family: 'Material Icons'
font-style: normal
font-weight: 400
src: url(MaterialIcons-Regular.woff2) format('woff2')
@font-face
font-family: 'Roboto'
font-style: normal
font-weight: 400
font-size: 1rem
src: url(Roboto.woff2) format('woff2')
......@@ -3,6 +3,8 @@ import store from './store/store'
import RequestManager from './services/request-manager'
import ChartManager from './services/chart-manager'
import StateManager from './services/state-manager'
require('./assets/fonts/Roboto/Roboto.sass')
require('./assets/fonts/MaterialIcons/MaterialIcons.sass')
class FractalJS {
constructor (handler, dataSource, fractalisNode, getAuth, options) {
......
......@@ -21,7 +21,8 @@ const state = {
},
options: {
controlPanelPosition: 'left',
controlPanelExpanded: false
controlPanelExpanded: false,
showDataBox: true
},
init () {
this.controlPanel.expanded = this.controlPanel.locked = this.options.controlPanelExpanded
......
......@@ -5,13 +5,13 @@
<data-box :header="params.numVars.label"
:dataTypes="['numerical', 'numerical_array']"
:validRange="[params.numVars.minLength, params.numVars.maxLength]"
v-on:select="updateNumVarsSelection"
v-model="params.numVars.value"
v-on:update="updateNumVars">
</data-box>
<data-box :header="params.catVars.label"
:dataTypes="['categorical']"
:validRange="[params.catVars.minLength, params.catVars.maxLength]"
v-on:select="updateCatVarsSelection"
v-model="params.catVars.value"
v-on:update="updateCatVars">
</data-box>
<hr class="fjs-seperator"/>
......@@ -255,8 +255,8 @@
},
args () {
return {
features: this.numData,
categories: this.catData,
features: this.params.numVars.value,
categories: this.params.catVars.value,
id_filter: this.idFilter.value,
transformation: this.params.transformation.value,
subsets: this.params.ignoreSubsets.value ? [] : store.getters.subsets
......@@ -266,7 +266,7 @@
return this.width / 150
},
validArgs () {
return this.numData.length > 0
return this.params.numVars.value.length > 0
},
margin () {
const left = 10
......@@ -488,12 +488,6 @@
},
updateCatVars (ids) {
this.params.catVars.validValues = ids
},
updateNumVarsSelection (ids) {
this.params.numVars.value = ids
},
updateCatVarsSelection (ids) {
this.params.catVars.value = ids
}
},
components: {
......
......@@ -4,26 +4,39 @@
<data-box :header="params.numVars.label"
:dataTypes="['numerical_array']"
:validRange="[params.numVars.minLength, params.numVars.maxLength]"
v-on:select="updateNumVarsSelection"
v-model="params.numVars.value"
v-on:update="updateNumVars">
</data-box>
<hr class="fjs-seperator"/>
<div class="fjs-ranking-params">
<div>
<label>
{{ params.maxRows.label }}:
<input class="fjs-max-rows-input"
:min="params.maxRows.min"
:max="params.maxRows.max"
v-model.lazy.number="params.maxRows.value"/>
</label>
</div>
<br/>
<br/>
<div>
<span class="fjs-param-header">{{ params.rankingMethod.label }}</span>
<fieldset class="fjs-expression-ranking fjs-fieldset">
<fieldset class="fjs-ranking-params fjs-fieldset">
<legend>Differential Expression Methods</legend>
<div v-for="method in params.rankingMethod.validValues">
<label>
<input type="radio" :value="method" v-model="params.rankingMethod.value">
Mean
{{ method }}
</label>
</div>
</fieldset>
</div>
<div class="fjs-clustering-params">
<br/>
<br/>
<div>
<span class="fjs-param-header">{{ params.clusterAlgorithm.label }}</span>
<fieldset class="fjs-fieldset">
<fieldset class="fjs-clustering-params fjs-fieldset">
<legend>Algorithm</legend>
<div v-for="algorithm in params.clusterAlgorithm.validValues">
<label>
......@@ -57,7 +70,7 @@
<label>
<input type="range"
:min="params.nRowClusters.min" :max="params.nRowClusters.max"
v-model="params.nRowClusters.value"/>
v-model.lazy.number="params.nRowClusters.value"/>
{{ params.nRowClusters.value }} {{ params.nRowClusters.label }}
</label>
</div>
......@@ -65,7 +78,7 @@
<label>
<input type="range"
:min="params.nColClusters.min" :max="params.nColClusters.max"
v-model="params.nColClusters.value"/>
v-model.lazy.number="params.nColClusters.value"/>
{{ params.nColClusters.value }} {{ params.nColClusters.label }}
</label>
</div>
......@@ -77,7 +90,7 @@
<label>
<input type="range"
:min="params.nRowCentroids.min" :max="params.nRowCentroids.max"
v-model="params.nRowCentroids.value"/>
v-model.lazy.number="params.nRowCentroids.value"/>
{{ params.nRowCentroids.value }} {{ params.nRowCentroids.label }}
</label>
</div>
......@@ -85,7 +98,7 @@
<label>
<input type="range"
:min="params.nColCentroids.min" :max="params.nColCentroids.max"
v-model="params.nColCentroids.value"/>
v-model.lazy.number="params.nColCentroids.value"/>
{{ params.nColCentroids.value }} {{ params.nColCentroids.label }}
</label>
</div>
......@@ -141,11 +154,18 @@
maxLength: Infinity,
value: []
},
maxRows: {
label: 'Max Rows',
type: Number,
min: 10,
max: Infinity,
value: 100
},
rankingMethod: {
label: 'Ranking Criteria',
type: String,
validValues: [],
value: 'mean'
value: 'logFC'
},
clusterAlgorithm: {
label: 'Heatmap Clustering',
......@@ -221,7 +241,7 @@
ranking_method: this.params.rankingMethod.value,
params: {},
id_filter: this.idFilter.value,
max_rows: 100, // FIXME: make this configurable
max_rows: this.params.maxRows.value,
subsets: store.getters.subsets
}
},
......@@ -267,12 +287,12 @@
return getHDPICanvas(this.padded.width, this.padded.height)
},
statistics () {
if ((this.params.rankingMethod.value === 'limma') && (store.getters.subsets.length === 2)) {
return ['logFC', 'P.Value', 'feature', 'AveExpr', 't', 'adj.P.Val', 'B']
} else if ((this.params.rankingMethod.value === 'limma') && (store.getters.subsets.length > 2)) {
return ['F', 'P.Value', 'feature', 'AveExpr', 'adj.P.Val']
if (store.getters.subsets.length === 2) {
return ['logFC', 'P.Value', 'AveExpr', 't', 'adj.P.Val', 'B']