diff --git a/package-lock.json b/package-lock.json index d3f56da..b197bb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { "name": "mutalyzer_website", - "version": "0.1.0", + "version": "0.1.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mutalyzer_website", - "version": "0.1.0", + "version": "0.1.3", "dependencies": { "core-js": "^3.9.1", + "postgresql-client": "^1.16.4", "v-clipboard": "^2.2.3", "vue": "^2.6.12", "vue-json-pretty": "^1.7.1", @@ -6337,12 +6338,19 @@ "dev": true }, "node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decache": { @@ -6873,6 +6881,14 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "node_modules/doublylinked": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/doublylinked/-/doublylinked-2.4.3.tgz", + "integrity": "sha512-IQQfqVWvkNqFDOirgiAN3FfEYbIu/a1QwQl8hUfaw6e30p7KlUkZaX3ke7h5QNM7+tGZ3s49/SzWjuxtc/wu3Q==", + "engines": { + "node": ">= 10.0" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -6932,18 +6948,18 @@ "dev": true }, "node_modules/elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, "node_modules/elliptic/node_modules/bn.js": { @@ -10010,6 +10026,18 @@ "node": ">= 0.8.0" } }, + "node_modules/lightning-pool": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lightning-pool/-/lightning-pool-3.1.1.tgz", + "integrity": "sha512-KxGPdtBc6lFEdBBD/4RJI9G+INtIvN++gkMYx4pYMEYynqfbbNNPf3ls1TmJXStkuZDYq/C//WRfbQ0Uhq8J8A==", + "dependencies": { + "doublylinked": "^2.4.3", + "putil-promisify": "^1.8.2" + }, + "engines": { + "node": ">= 10.0" + } + }, "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -10615,8 +10643,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "version": "6.2.3", @@ -11185,8 +11212,7 @@ "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" }, "node_modules/on-finished": { "version": "2.3.0", @@ -12365,6 +12391,35 @@ "node": ">=6" } }, + "node_modules/postgres-bytea": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "dependencies": { + "obuf": "~1.1.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postgresql-client": { + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/postgresql-client/-/postgresql-client-1.16.4.tgz", + "integrity": "sha512-RYxQPE4WWD65TqU8OLIxlGtzKTyHSmMMrb+QEfvfwCkEifnJfD8pikaRoXkZpHzqo1aN2ZfckHnnKIJxXqPPRQ==", + "dependencies": { + "debug": "^4.3.1", + "doublylinked": "^2.4.3", + "lightning-pool": "^3.1.0", + "postgres-bytea": "^3.0.0", + "putil-merge": "^3.6.4", + "putil-promisify": "^1.8.2", + "putil-taskqueue": "^2.5.1", + "putil-varhelpers": "^1.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -12538,6 +12593,41 @@ "node": ">=6" } }, + "node_modules/putil-merge": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/putil-merge/-/putil-merge-3.6.4.tgz", + "integrity": "sha512-XDQ0Apgo29sgWCzh3OwNC4DaAHyMMyq3kemzv9bps1IjrpFrUte8hU9Bk1rJ2Jf0lwIPU6G60c9kcVg7cm3YYg==", + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/putil-promisify": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/putil-promisify/-/putil-promisify-1.8.3.tgz", + "integrity": "sha512-53ItINrlotcaLRy0Ak5OuysZvuLRQ/r33joTOwc+inyqzj2de2kbPae6a8hurG/EqQbYFgl2XHcCKkQ/7WedKQ==", + "engines": { + "node": ">= 6.0" + } + }, + "node_modules/putil-taskqueue": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/putil-taskqueue/-/putil-taskqueue-2.5.3.tgz", + "integrity": "sha512-3VFdeU9OgFqBJq3O08wBCrpEvkrfl4eOyZMDkCQ80rdImFbBNhNGDfB2+lSMtzJdM3ivTUBThd0AsVIfqs3uaA==", + "dependencies": { + "doublylinked": "^2.4.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/putil-varhelpers": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/putil-varhelpers/-/putil-varhelpers-1.6.1.tgz", + "integrity": "sha512-nY7F8qkIbwKUAgM43abj6j2D6aqcE2UOlobM2ihkOJKUIPW3VQn5cEllCARCQNN4bdasEJHxOo5XfpPFhj23jA==", + "engines": { + "node": ">= 6.0" + } + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -16077,9 +16167,9 @@ } }, "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "node_modules/yallist": { @@ -21968,12 +22058,11 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decache": { @@ -22416,6 +22505,11 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "doublylinked": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/doublylinked/-/doublylinked-2.4.3.tgz", + "integrity": "sha512-IQQfqVWvkNqFDOirgiAN3FfEYbIu/a1QwQl8hUfaw6e30p7KlUkZaX3ke7h5QNM7+tGZ3s49/SzWjuxtc/wu3Q==" + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -22469,18 +22563,18 @@ "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { @@ -24976,6 +25070,15 @@ "type-check": "~0.4.0" } }, + "lightning-pool": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lightning-pool/-/lightning-pool-3.1.1.tgz", + "integrity": "sha512-KxGPdtBc6lFEdBBD/4RJI9G+INtIvN++gkMYx4pYMEYynqfbbNNPf3ls1TmJXStkuZDYq/C//WRfbQ0Uhq8J8A==", + "requires": { + "doublylinked": "^2.4.3", + "putil-promisify": "^1.8.2" + } + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -25487,8 +25590,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { "version": "6.2.3", @@ -25977,8 +26079,7 @@ "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" }, "on-finished": { "version": "2.3.0", @@ -26990,6 +27091,29 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, + "postgres-bytea": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "requires": { + "obuf": "~1.1.2" + } + }, + "postgresql-client": { + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/postgresql-client/-/postgresql-client-1.16.4.tgz", + "integrity": "sha512-RYxQPE4WWD65TqU8OLIxlGtzKTyHSmMMrb+QEfvfwCkEifnJfD8pikaRoXkZpHzqo1aN2ZfckHnnKIJxXqPPRQ==", + "requires": { + "debug": "^4.3.1", + "doublylinked": "^2.4.3", + "lightning-pool": "^3.1.0", + "postgres-bytea": "^3.0.0", + "putil-merge": "^3.6.4", + "putil-promisify": "^1.8.2", + "putil-taskqueue": "^2.5.1", + "putil-varhelpers": "^1.6.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -27140,6 +27264,29 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "putil-merge": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/putil-merge/-/putil-merge-3.6.4.tgz", + "integrity": "sha512-XDQ0Apgo29sgWCzh3OwNC4DaAHyMMyq3kemzv9bps1IjrpFrUte8hU9Bk1rJ2Jf0lwIPU6G60c9kcVg7cm3YYg==" + }, + "putil-promisify": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/putil-promisify/-/putil-promisify-1.8.3.tgz", + "integrity": "sha512-53ItINrlotcaLRy0Ak5OuysZvuLRQ/r33joTOwc+inyqzj2de2kbPae6a8hurG/EqQbYFgl2XHcCKkQ/7WedKQ==" + }, + "putil-taskqueue": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/putil-taskqueue/-/putil-taskqueue-2.5.3.tgz", + "integrity": "sha512-3VFdeU9OgFqBJq3O08wBCrpEvkrfl4eOyZMDkCQ80rdImFbBNhNGDfB2+lSMtzJdM3ivTUBThd0AsVIfqs3uaA==", + "requires": { + "doublylinked": "^2.4.0" + } + }, + "putil-varhelpers": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/putil-varhelpers/-/putil-varhelpers-1.6.1.tgz", + "integrity": "sha512-nY7F8qkIbwKUAgM43abj6j2D6aqcE2UOlobM2ihkOJKUIPW3VQn5cEllCARCQNN4bdasEJHxOo5XfpPFhj23jA==" + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -30145,9 +30292,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/package.json b/package.json index 1482050..ed6d6b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mutalyzer_website", - "version": "0.1.2", + "version": "0.1.3", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -9,6 +9,7 @@ }, "dependencies": { "core-js": "^3.9.1", + "postgresql-client": "^1.16.4", "v-clipboard": "^2.2.3", "vue": "^2.6.12", "vue-json-pretty": "^1.7.1", diff --git a/src/App.vue b/src/App.vue index 2deab1d..2689d6c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,6 +9,14 @@ Alpha + + + Feedback + @@ -89,6 +177,7 @@ export default { data: () => ({ drawer: false, apiBaseUrl: apiBaseUrl, + feedback: false, }), }; diff --git a/src/assets/hvp_recommended_system.png b/src/assets/hvp_recommended_system.png new file mode 100644 index 0000000..828232e Binary files /dev/null and b/src/assets/hvp_recommended_system.png differ diff --git a/src/assets/irdirc_recognized_resource.jpg b/src/assets/irdirc_recognized_resource.jpg new file mode 100644 index 0000000..7024e45 Binary files /dev/null and b/src/assets/irdirc_recognized_resource.jpg differ diff --git a/src/assets/main.css b/src/assets/main.css index d4f8076..7e3f323 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -1,8 +1,17 @@ :root { --green: #4CAF50; + --green-lighten-5: #E8F5E9; --light-blue-lighten-5: #E1F5FE; --red-accent-4: #D50000; --red-lighten-5: #FFEBEE; + --blue: #2196F3; + --blue-lighten-5: #E3F2FD; + --blue-grey-lighten-5: #ECEFF1; + --blue-grey-lighten-4: #CFD8DC; + --grey-lighten-5: #FAFAFA; + --grey-lighten-3: #EEEEEE; + --grey-lighten-2: #E0E0E0; + --grey-lighten-1: #BDBDBD; } ul { @@ -38,13 +47,11 @@ li { .examples-list { margin-top: 5px; - background-color: #ffffff; } .example-item { display: inline-block; color: #1e90ff; - background-color: #ffffff; padding: 5px 10px; margin-left: 2px; font-family: monospace; @@ -58,8 +65,6 @@ li { } .description { - padding: 0 1px; - padding: 5px 10px; font-family: monospace; } @@ -75,6 +80,22 @@ li { font-family: monospace; } +.corrected-description-link-reverse { + text-decoration: none; + margin-top: 2px; + padding: 5px 10px; + font-family: monospace; + display: inline-block; + color: #ffffff; + background-color: var(--blue); +} + +.corrected-description-link-reverse:hover { + color: var(--blue-lighten-5); + background-color: var(--blue); + cursor: pointer; +} + .normalized-description { color: #000399; padding: 5px 10px; @@ -104,6 +125,38 @@ li { cursor: pointer; } +.ok-description-link-reverse { + text-decoration: none; + margin-top: 2px; + padding: 5px 10px; + font-family: monospace; + display: inline-block; + color: #ffffff; + background-color: var(--green); +} + +.ok-description-link-reverse:hover { + color: var(--green-lighten-5); + background-color: var(--green); + cursor: pointer; +} + +.ex-description-link { + text-decoration: none; + margin-top: 2px; + padding: 5px 10px; + font-family: monospace; + display: inline-block; + color: var(--blue); + background-color: #ffffff; +} + +.ex-description-link:hover { + color: #ffffff; + background-color: var(--blue); + cursor: pointer; +} + .other-description-link { text-decoration: none; margin-top: 2px; @@ -116,7 +169,7 @@ li { .other-description-link:hover { color: #ffffff; - background-color: #1e90ff; + background-color:var(--blue); cursor: pointer; } @@ -154,6 +207,24 @@ li { cursor: pointer; } +.map-link { + text-decoration: none; + margin: 0; + padding: 0 1px; + font-family: monospace; + display: inline-block; + color:var(--blue); + background-color: #ffffff; + padding: 5px 10px; +} + +.map-link:hover { + color: #f2f9f3; + background-color: var(--blue); + cursor: pointer; +} + + .protein-description { text-decoration: none; margin: 0; @@ -202,3 +273,7 @@ li { background-color: #ffcdd2; display: inline-block; } + +.pointer:hover { + cursor: pointer; +} diff --git a/src/components/AffectedProtein.vue b/src/components/AffectedProtein.vue index eeb69b5..794842f 100644 --- a/src/components/AffectedProtein.vue +++ b/src/components/AffectedProtein.vue @@ -1,8 +1,13 @@ + diff --git a/src/components/LiftOver.vue b/src/components/LiftOver.vue deleted file mode 100644 index 32fa706..0000000 --- a/src/components/LiftOver.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - - - diff --git a/src/components/ReferenceInformation.vue b/src/components/ReferenceInformation.vue index 25eea0e..92a8598 100644 --- a/src/components/ReferenceInformation.vue +++ b/src/components/ReferenceInformation.vue @@ -1,83 +1,96 @@ @@ -100,6 +113,8 @@ export default { record: null, gene: null, selector: null, + progress: true, + no_response: true, }; }, created: function () { @@ -122,19 +137,20 @@ export default { }; } MutalyzerService.referenceModel(params).then((response) => { + this.progress = false; if (response.data) { this.reference_model = response.data; this.record = this.getRecord(this.reference_model); this.gene = this.getGene(this.reference_model); this.selector = this.getSelector(this.reference_model); + this.no_response = false; + } else { + this.no_response = true; } }); }, methods: { getRecord(annotations) { - if (annotations.type != "record") { - return; - } let output = { id: annotations.id }; if (annotations.qualifiers) { output.details = this.extractQualifiers(annotations.qualifiers); diff --git a/src/components/Related.vue b/src/components/Related.vue new file mode 100644 index 0000000..d85387b --- /dev/null +++ b/src/components/Related.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/src/components/SelectorShort.vue b/src/components/SelectorShort.vue index a88bd53..ea6bc72 100644 --- a/src/components/SelectorShort.vue +++ b/src/components/SelectorShort.vue @@ -65,7 +65,7 @@ export default { for (var i = 0; i < this.selector.exon.g.length; i++) { if (this.selector.exon.c) { output.push({ - name: i, + name: i + 1, g_s: this.selector.exon.g[i][0], g_e: this.selector.exon.g[i][1], c_s: this.selector.exon.c[i][0], @@ -73,7 +73,7 @@ export default { }); } else if (this.selector.exon.n) { output.push({ - name: i, + name: i + 1, g_s: this.selector.exon.g[i][0], g_e: this.selector.exon.g[i][1], n_s: this.selector.exon.n[i][0], @@ -81,7 +81,7 @@ export default { }); } else { output.push({ - name: i, + name: i + 1, g_s: this.selector.exon.g[i][0], g_e: this.selector.exon.g[i][1], }); @@ -94,7 +94,6 @@ export default { var output = []; if (this.selector.cds) { output.push({ - name: "0", g_s: this.selector.cds.g[0][0], g_e: this.selector.cds.g[0][1], c_s: this.selector.cds.c[0][0], @@ -143,11 +142,6 @@ export default { if (this.selector.exon.c) { output.push( ...[ - { - text: "Number", - value: "name", - sortable: false, - }, { text: "Start (g.)", value: "g_s", sortable: false }, { text: "End (g.)", value: "g_e", sortable: false }, { text: "Start (c.)", value: "c_s", sortable: false }, diff --git a/src/components/ViewVariants.vue b/src/components/ViewVariants.vue new file mode 100644 index 0000000..d2d3d1e --- /dev/null +++ b/src/components/ViewVariants.vue @@ -0,0 +1,122 @@ + + + + + + diff --git a/src/components/ViewVariantsCore.vue b/src/components/ViewVariantsCore.vue new file mode 100644 index 0000000..e2326c7 --- /dev/null +++ b/src/components/ViewVariantsCore.vue @@ -0,0 +1,441 @@ + + + + + + diff --git a/src/router/index.js b/src/router/index.js index 0d775ff..e1a0c7d 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -5,6 +5,9 @@ import About from "../views/About.vue"; import NameChecker from "../views/NameChecker.vue"; import PositionConverter from "../views/PositionConverter.vue"; import DescriptionExtractor from "../views/DescriptionExtractor.vue"; +import Mapper from "../views/Mapper.vue"; +import BatchChecker from "../views/BatchChecker.vue"; +import Algebra from "../views/Algebra.vue"; Vue.use(VueRouter); @@ -36,6 +39,24 @@ const routes = [ name: "DescriptionExtractor", component: DescriptionExtractor, }, + { + path: "/mapper", + props: true, + name: "Mapper", + component: Mapper, + }, + { + path: "/batchchecker", + props: true, + name: "BatchChecker", + component: BatchChecker, + }, + { + path: "/algebra", + props: true, + name: "Algebra", + component: Algebra, + }, { path: "/api", }, diff --git a/src/services/MutalyzerService.js b/src/services/MutalyzerService.js index 06dc7d8..92bb900 100644 --- a/src/services/MutalyzerService.js +++ b/src/services/MutalyzerService.js @@ -12,9 +12,17 @@ const apiClient = axios.create({ }); export default { - nameCheck(description) { + compare(params) { + return apiClient.get("/compare/", { params }); + }, + nameCheckHgvs(description) { return apiClient.get("/name_check/" + encodeURIComponent(description)); }, + nameCheckSequence(description, params) { + return apiClient.get("/name_check/" + encodeURIComponent(description), { + params, + }); + }, positionConvert(params) { return apiClient.get("/position_convert/", { params }); }, @@ -27,7 +35,17 @@ export default { getSelectors(referenceId) { return apiClient.get("/get_selectors/" + encodeURIComponent(referenceId)); }, - lift(params) { - return apiClient.get("/lift/", { params }); + map(params) { + return apiClient.get("/map/", { params }); + }, + view(description, params) { + return apiClient.get("/view_variants/" + encodeURIComponent(description), { + params, + }); + }, + relatedReferences(reference_id) { + return apiClient.get( + "/related_references/" + encodeURIComponent(reference_id) + ); }, }; diff --git a/src/services/NcbiEutils.js b/src/services/NcbiEutils.js new file mode 100644 index 0000000..05e5729 --- /dev/null +++ b/src/services/NcbiEutils.js @@ -0,0 +1,18 @@ +import axios from "axios"; + +const ncbiDatasetsBaseUrl = `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/`; + +const apiClient = axios.create({ + baseURL: ncbiDatasetsBaseUrl, + withCredentials: false, // This is the default + headers: { + Accept: "application/json", + "Content-Type": "application/json", + }, +}); + +export default { + get_gene_summary(id) { + return apiClient.get("/esummary.fcgi?db=gene&id=" + id + "&retmode=json"); + }, +}; diff --git a/src/views/About.vue b/src/views/About.vue index 3cc3ad9..5e4750f 100644 --- a/src/views/About.vue +++ b/src/views/About.vue @@ -2,9 +2,56 @@ -

About Page

-
-

Website version: {{ version }}

+

About Mutalyzer

+

Website version: {{ version }}

+ +

Contact

+

+ If you have a private question or a security related issue to discuss, + please use the private address + info@mutalyzer.nl. +

+ +

Funding

+

+ This project was supported by the Fair Genomes project as financed in + the Personalised Medicine program from the the Netherlands + Organization for Health Research and Development (ZonMw) under grant + number + 846003201. +

+

Recommended by

+ + + + HVP + + + + IRDiRC + +
diff --git a/src/views/Algebra.vue b/src/views/Algebra.vue new file mode 100644 index 0000000..94cc853 --- /dev/null +++ b/src/views/Algebra.vue @@ -0,0 +1,575 @@ + + + + + + diff --git a/src/views/BatchChecker.vue b/src/views/BatchChecker.vue new file mode 100644 index 0000000..2e44337 --- /dev/null +++ b/src/views/BatchChecker.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/src/views/DescriptionExtractor.vue b/src/views/DescriptionExtractor.vue index 766b5ce..afb63eb 100644 --- a/src/views/DescriptionExtractor.vue +++ b/src/views/DescriptionExtractor.vue @@ -40,7 +40,13 @@ class="mt-5" color="primary" :disabled="!valid" - @click.prevent="descriptionExtract()" + :to="{ + name: 'DescriptionExtractor', + query: { + reference: reference, + observed: observed, + }, + }" > Extract @@ -52,7 +58,7 @@ - {{ summary }} + @@ -61,8 +67,12 @@ diff --git a/src/views/Mapper.vue b/src/views/Mapper.vue new file mode 100644 index 0000000..89ceeba --- /dev/null +++ b/src/views/Mapper.vue @@ -0,0 +1,514 @@ + + + + + diff --git a/src/views/NameChecker.vue b/src/views/NameChecker.vue index ae7d505..f8080fe 100644 --- a/src/views/NameChecker.vue +++ b/src/views/NameChecker.vue @@ -7,44 +7,101 @@ The Name Checker takes the variant description as input and checks whether it is correct.

- - + + + + + + + + {{ + getSwitchText() + }} + + + + + + + + + +
+ Examples: + {{ example }} +
+
+ + + + + + + + + + +
- -
- Examples: - {{ example }} -
- - - Normalize - + Normalize + + + + Example + +
@@ -63,30 +120,30 @@ prominent tile v-if="isNormalized()" + :color="getNormalizedColor()" type="success" > - {{ response.normalized_description }} - - - - - - Copy - + - +