From 67ac04ec8767f2a232ad661117f3b4c182e17569 Mon Sep 17 00:00:00 2001 From: chgibb Date: Mon, 12 Aug 2019 22:48:46 -0400 Subject: [PATCH 01/30] initial prototyping --- package-lock.json | 629 +++++++++++++++++- package.json | 6 +- .../renderer/views/outputView/outputView.tsx | 64 +- 3 files changed, 689 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9545f7ed..facc6e29a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "phat", - "version": "0.10.1", + "version": "0.12.0-beta.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -108,12 +108,6 @@ "jsdom": "^5.0.0" } }, - "@chgibb/unmappedcigarfragments": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@chgibb/unmappedcigarfragments/-/unmappedcigarfragments-0.0.7.tgz", - "integrity": "sha512-3797WFm9ObwYZ+1ghIJeJ05dw7W1aPhWtfqgZ/ioGarrtMsU6z56LlyrTYFvpsPACoPO28X9Mf2E/8WL0ISypQ==", - "dev": true - }, "@claviska/jquery-minicolors": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@claviska/jquery-minicolors/-/jquery-minicolors-2.3.4.tgz", @@ -308,6 +302,12 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", "dev": true }, + "@types/chart.js": { + "version": "2.7.56", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.56.tgz", + "integrity": "sha512-toWLqetzDO32PtrDCRKCsMmOYgHzOQUbWh3h7dGuupDpxoyx+o33lZkBBXFV0FoOUuMMEHluZBjw9Xye9ubYvg==", + "dev": true + }, "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -2171,6 +2171,52 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "chart.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.8.0.tgz", + "integrity": "sha512-Di3wUL4BFvqI5FB5K26aQ+hvWh8wnP9A3DWGvXHVkO13D3DSnaSsdZx29cXlEsYKVkn1E2az+ZYFS4t0zi8x0w==", + "dev": true, + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "chartjs-color": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.3.0.tgz", + "integrity": "sha512-hEvVheqczsoHD+fZ+tfPUE+1+RbV6b+eksp2LwAhwRTVXEjCSEavvk+Hg3H6SZfGlPh/UfmWKGIvZbtobOEm3g==", + "dev": true, + "requires": { + "chartjs-color-string": "^0.6.0", + "color-convert": "^0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=", + "dev": true + } + } + }, + "chartjs-color-string": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", + "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "chartjs-plugin-annotation": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-0.5.7.tgz", + "integrity": "sha1-G/DjAZmmqf+Yic4PN6HnVagNEL8=", + "dev": true, + "requires": { + "chart.js": "^2.4.0" + } + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -2180,6 +2226,7 @@ "requires": { "anymatch": "^1.3.0", "async-each": "^1.0.0", + "fsevents": "^1.0.0", "glob-parent": "^2.0.0", "inherits": "^2.0.1", "is-binary-path": "^1.0.0", @@ -5035,6 +5082,554 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -8883,6 +9478,12 @@ } } }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -8894,6 +9495,13 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -9930,6 +10538,12 @@ "safe-buffer": "^5.1.0" } }, + "randomcolor": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/randomcolor/-/randomcolor-0.5.4.tgz", + "integrity": "sha512-nYd4nmTuuwMFzHL6W+UWR5fNERGZeVauho8mrJDUSXdNDbao4rbrUwhuLgKC/j8VCS5+34Ria8CsTDuBjrIrQA==", + "dev": true + }, "randomfill": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", @@ -11054,6 +11668,7 @@ "capture-exit": "^1.2.0", "exec-sh": "^0.2.0", "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", "micromatch": "^3.1.4", "minimist": "^1.1.1", "walker": "~1.0.5", diff --git a/package.json b/package.json index 32b5ccfce..2a196fd8c 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@claviska/jquery-minicolors": "^2.2.6", "@material-ui/core": "^4.0.2", "@material-ui/icons": "^4.0.1", + "@types/chart.js": "2.7.56", "@types/fs-extra": "0.0.37", "@types/jest": "^22.2.2", "@types/jquery": "^2.0.40", @@ -70,6 +71,8 @@ "browserify": "^13.1.0", "builtin-modules": "^3.1.0", "bundle-collapser": "^1.2.1", + "chart.js": "2.8.0", + "chartjs-plugin-annotation": "^0.5.7", "csx": "^9.0.0", "delete-empty": "^1.0.1", "dialogs": "^1.1.19", @@ -102,6 +105,7 @@ "popper.js": "1.14.4", "protobufjs": "^6.8.3", "ps-node": "^0.1.6", + "randomcolor": "^0.5.4", "react": "^16.7.0", "react-beautiful-dnd": "^11.0.4", "react-dom": "^16.7.0", @@ -136,4 +140,4 @@ "resources/app" ] } -} \ No newline at end of file +} diff --git a/src/req/renderer/views/outputView/outputView.tsx b/src/req/renderer/views/outputView/outputView.tsx index 47623b930..bed7dd3af 100644 --- a/src/req/renderer/views/outputView/outputView.tsx +++ b/src/req/renderer/views/outputView/outputView.tsx @@ -1,6 +1,7 @@ import * as electron from "electron"; const ipc = electron.ipcRenderer; import * as React from "react"; +import {Chart} from "chart.js"; import {Fasta} from "../../../fasta"; import {AlignData} from "../../../alignData"; @@ -16,6 +17,8 @@ import {DialogActions} from "../../components/dialogActions"; import {ReadsPerContigTable} from "../../containers/tables/readsPerContigTable"; import {BLASTRunsTable} from "../../containers/tables/BLASTRunsTable"; import {enQueueOperation} from "../../enQueueOperation"; +import { GridWrapper } from '../../containers/gridWrapper'; +import { Grid } from '../../components/grid'; export interface OutputViewState { @@ -33,6 +36,8 @@ export interface OutputViewProps export class OutputView extends React.Component { + private alignerChartRef = React.createRef(); + private alignerChart : Chart | undefined; public constructor(props : OutputViewProps) { super(props); @@ -42,6 +47,44 @@ export class OutputView extends React.Component } as OutputViewState; } + /* public componentDidUpdate() + { + this.componentDidMount(); + }*/ + + public componentDidUpdate() + { + const randomColour = require("randomcolor"); + if(this.alignerChartRef.current && !this.alignerChart){ + this.alignerChart = new Chart(this.alignerChartRef.current.getContext("2d")!,{ + type: "doughnut", + data : { + datasets:[ + { + data:[10,20,30], + backgroundColor:[ + randomColour(), + randomColour(), + randomColour() + ] + } + ], + labels:[ + "Red", + "Yellow", + "Blue" + ] + }, + options:{ + animation:{ + animateRotate:true, + + } + } + }); + } + } + public render() : JSX.Element { return ( @@ -103,6 +146,21 @@ export class OutputView extends React.Component } { this.state.currentTable == "reports" ? +
+ {this.props.aligns && this.props.aligns.length > 0 ? + + +
+ +
+
+
+ :''} { @@ -184,8 +242,10 @@ export class OutputView extends React.Component }); } } - }} - /> : this.state.currentTable == "snps" ? + + } + } + />
: this.state.currentTable == "snps" ?
: null } From b6cf7be7e06771207dce32baa4c63a96f71e5824 Mon Sep 17 00:00:00 2001 From: chgibb Date: Wed, 14 Aug 2019 20:39:34 -0400 Subject: [PATCH 10/30] bumped mui version --- package-lock.json | 206 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 97 insertions(+), 111 deletions(-) diff --git a/package-lock.json b/package-lock.json index facc6e29a..3fae082ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -130,34 +130,31 @@ } }, "@emotion/hash": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.1.tgz", - "integrity": "sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.2.tgz", + "integrity": "sha512-RMtr1i6E8MXaBWwhXL3yeOU8JXRnz8GNxHvaUfVvwxokvayUY0zoBeWbKw1S9XkufmGEEdQd228pSZXFkAln8Q==", "dev": true }, "@material-ui/core": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.0.2.tgz", - "integrity": "sha512-k7o95UIupTp14lsO9hejmswuPZsmWUafOBNaptHN+Pv8CBp/vW+hD6peuThgUpeGesrCuL2/yTpHB/9JkO9rNg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.3.2.tgz", + "integrity": "sha512-TLKEUw3/R/pOInnJkx0x78zqMos34SPL3HfuRRZMxInRQ6AKUlyglOFyvSwFITknTmc8AGRFknGpZt05g2XFTg==", "dev": true, "requires": { - "@babel/runtime": "^7.2.0", - "@material-ui/styles": "^4.0.2", - "@material-ui/system": "^4.0.2", - "@material-ui/types": "^4.0.1", - "@material-ui/utils": "^4.0.1", - "@types/react-transition-group": "^2.0.16", + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.3.0", + "@material-ui/system": "^4.3.3", + "@material-ui/types": "^4.1.1", + "@material-ui/utils": "^4.3.0", + "@types/react-transition-group": "^4.2.0", "clsx": "^1.0.2", - "convert-css-length": "^2.0.0", - "csstype": "^2.5.2", - "debounce": "^1.1.0", - "deepmerge": "^3.0.0", + "convert-css-length": "^2.0.1", + "deepmerge": "^4.0.0", "hoist-non-react-statics": "^3.2.1", "is-plain-object": "^3.0.0", "normalize-scroll-left": "^0.2.0", "popper.js": "^1.14.1", "prop-types": "^15.7.2", - "react-event-listener": "^0.6.6", "react-transition-group": "^4.0.0", "warning": "^4.0.1" } @@ -185,57 +182,61 @@ } }, "@material-ui/styles": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.0.2.tgz", - "integrity": "sha512-RUM+2G++2X4M6cbZ/K/PzAdxdSdqIU4zhZ82YYIcEz/OgCx72HC68+VrYxoy7nEjZ9E6R+9JmPPS7CO8O1oPmw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.3.0.tgz", + "integrity": "sha512-7yOu+IOvbTVM+LfFJ0c7RZKksSpi2PmPwMhVnAKo1Ca3Nadjd950ALL6WG+R/W3C3GqakUvOqA5OLMvN/8N2jg==", "dev": true, "requires": { - "@babel/runtime": "^7.2.0", + "@babel/runtime": "^7.4.4", "@emotion/hash": "^0.7.1", - "@material-ui/types": "^4.0.1", - "@material-ui/utils": "^4.0.1", + "@material-ui/types": "^4.1.1", + "@material-ui/utils": "^4.1.0", "clsx": "^1.0.2", - "deepmerge": "^3.0.0", + "csstype": "^2.5.2", + "deepmerge": "^4.0.0", "hoist-non-react-statics": "^3.2.1", - "jss": "^10.0.0-alpha.16", - "jss-plugin-camel-case": "^10.0.0-alpha.16", - "jss-plugin-default-unit": "^10.0.0-alpha.16", - "jss-plugin-global": "^10.0.0-alpha.16", - "jss-plugin-nested": "^10.0.0-alpha.16", - "jss-plugin-props-sort": "^10.0.0-alpha.16", - "jss-plugin-rule-value-function": "^10.0.0-alpha.16", - "jss-plugin-vendor-prefixer": "^10.0.0-alpha.16", + "jss": "10.0.0-alpha.23", + "jss-plugin-camel-case": "10.0.0-alpha.23", + "jss-plugin-default-unit": "10.0.0-alpha.23", + "jss-plugin-global": "10.0.0-alpha.23", + "jss-plugin-nested": "10.0.0-alpha.23", + "jss-plugin-props-sort": "10.0.0-alpha.23", + "jss-plugin-rule-value-function": "10.0.0-alpha.23", + "jss-plugin-vendor-prefixer": "10.0.0-alpha.23", "prop-types": "^15.7.2", "warning": "^4.0.1" } }, "@material-ui/system": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.0.2.tgz", - "integrity": "sha512-gpLYcDycJjK8tvWI9ZKrVLdGjFQ/YJM74TvhIMkP5ML453ZtPuFzMLt6FVEKp8okWxFEgYXVBNNSB4IF3Yig8g==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.3.3.tgz", + "integrity": "sha512-j7JyvlhcTdc1wV6HzrDTU7XXlarxYXEUyzyHawOA0kCGmYVN2uFHENQRARLUdl+mEmuXO4TsAhNAiqiKakkFMg==", "dev": true, "requires": { - "@babel/runtime": "^7.2.0", - "deepmerge": "^3.0.0", + "@babel/runtime": "^7.4.4", + "deepmerge": "^4.0.0", "prop-types": "^15.7.2", "warning": "^4.0.1" } }, "@material-ui/types": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-4.0.1.tgz", - "integrity": "sha512-FGhogU9l4s+ycMcC3hhOAvu5hcWa5TVSCCGUf4NOUF904ythroWSAvcCHn92NjftXZ8WZqmtPjL1K/d90Pq/3Q==", - "dev": true + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-4.1.1.tgz", + "integrity": "sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ==", + "dev": true, + "requires": { + "@types/react": "*" + } }, "@material-ui/utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.0.1.tgz", - "integrity": "sha512-mWRcMQIrqsXGze73tx3hNfB1NUu+BL/oIQI7TImyuhsia1EQXw3bPVBjgwTzqM6MqfXw6eh1fR45Di+WN5hASA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.3.0.tgz", + "integrity": "sha512-tK3Z/ap5ifPQwIryuGQ+AHLh2hEyBLRPj4NCMcqVrQfD+0KH2IP5BXR4A+wGVsyamKfLaOc8tz1fzxZblsztpw==", "dev": true, "requires": { - "@babel/runtime": "^7.2.0", + "@babel/runtime": "^7.4.4", "prop-types": "^15.7.2", - "react-is": "^16.8.0" + "react-is": "^16.8.6" } }, "@protobufjs/aspromise": { @@ -407,9 +408,9 @@ } }, "@types/react-transition-group": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.9.1.tgz", - "integrity": "sha512-1usq4DRUVBFnxc9KGJAlJO9EpQrLZGDDEC8wDOn2+2ODSyudYo8FiIzPDRaX/hfQjHqGeeoNaNdA2bj0l35hZQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.2.tgz", + "integrity": "sha512-YfoaTNqBwbIqpiJ5NNfxfgg5kyFP1Hqf/jqBtSWNv0E+EkkxmN+3VD6U2fu86tlQvdAc1o0SdWhnWFwcRMTn9A==", "dev": true, "requires": { "@types/react": "*" @@ -2512,12 +2513,6 @@ "date-now": "^0.1.4" } }, - "console-polyfill": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.1.2.tgz", - "integrity": "sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA=", - "dev": true - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2541,14 +2536,10 @@ } }, "convert-css-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-2.0.0.tgz", - "integrity": "sha512-ygBgHNzImHJ/kjgqdzC0oaY2+EMID3s88/CZD2C9O1stM3PwsOwXzzlFTTkZy/bPZe0wjyt1UoYjilfunQGjlw==", - "dev": true, - "requires": { - "console-polyfill": "^0.1.2", - "parse-unit": "^1.0.1" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-2.0.1.tgz", + "integrity": "sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg==", + "dev": true }, "convert-source-map": { "version": "1.6.0", @@ -2686,9 +2677,9 @@ } }, "css-vendor": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.2.tgz", - "integrity": "sha512-Xn5ZAlI00d8HaQ8/oQ8d+iBzSF//NCc77LPzsucM32X/R/yTqmXy6otVsAM0XleXk6HjPuXoVZwXsayky/fsFQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.5.tgz", + "integrity": "sha512-36w+4Cg0zqFIt5TAkaM3proB6XWh5kSGmbddRCPdrRLQiYNfHPTgaWPOlCrcuZIO0iAtrG+5wsHJZ6jj8AUULA==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", @@ -2890,9 +2881,9 @@ "dev": true }, "deepmerge": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz", - "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.0.0.tgz", + "integrity": "sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww==", "dev": true }, "default-require-extensions": { @@ -8756,87 +8747,88 @@ } }, "jss": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0-alpha.16.tgz", - "integrity": "sha512-HmKNNnr82TR5jkWjBcbrx/uim2ief588pWp7zsf4GQpL125zRkEaWYL1SXv5bR6bBvAoTtvJsTAOxDIlLxUNZg==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0-alpha.23.tgz", + "integrity": "sha512-r3fg6nrNdqxhaE4s3ZkyEmpVTb2UUmSu0uhKrvfSAy+N45MmlLmhgyFFaUyJOvFJzm69XYXM2Q62VhGccV6qMA==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", "is-in-browser": "^1.1.3", "tiny-warning": "^1.0.2" } }, "jss-plugin-camel-case": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0-alpha.16.tgz", - "integrity": "sha512-nki+smHEsFyoZ0OlOYtaxVqcQA0ZHVJCE1slRnk+1TklbmxbBiO4TwITMTEaNIDv0U0Uyb0Z8wVgFgRwCCIFog==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0-alpha.23.tgz", + "integrity": "sha512-QaXi/t4Efx0BhwbVf6GCcpn/IDAP9cK/GJoWBoAIVM9BAj7RXBU0UifFojRbeDGDtpf5djDWCOMviydYiWYYWg==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.23" } }, "jss-plugin-default-unit": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0-alpha.16.tgz", - "integrity": "sha512-jjGW4F/r9yKvoyUk22M8nWhdMfvoWzJw/oFO2cDRXCk2onnWFiRALfqeUsEDyocwdZbyVF9WhZbSHn4GL03kSw==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0-alpha.23.tgz", + "integrity": "sha512-XE4CcrQMF2rI6TL+/bJUDVlmgIqOax8uCPLZxZnqUFTbH0cM9f66OhRIe51yECfAb1nAiHalZtkUv2kfycLVjQ==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.23" } }, "jss-plugin-global": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0-alpha.16.tgz", - "integrity": "sha512-B1mm2ZF9OEsWPmzkG5ZUXqV88smDqpc4unILLXhWVuj0U5JeT0DNitH+QbXFrSueDJzkWVfvqyckvWDR/0qeDg==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0-alpha.23.tgz", + "integrity": "sha512-uaoO4yp24dtvKiMd8fLzy2Of3rDSzA9e1y8mHw4vNDTPDSF39pYfpAxxnGnvRadsAVlZGgj4Ro+LveLz8ZUHgw==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.23" } }, "jss-plugin-nested": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0-alpha.16.tgz", - "integrity": "sha512-3l/MB6COnIpq4GOXQFae6UydoaIPa81UxhuBTEQuiAojgTeUla9L7nB3h18Q4zAhQQpjxaEsyppAKuEzIP7kPQ==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0-alpha.23.tgz", + "integrity": "sha512-xHoBBUz9U8INvizthl0k9u79z+ObzY0HvzPy7+BKxySQzHSTLG40iRYizJo7Antq7uH8i8uI/5RgS/7dy+YVSQ==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16", + "jss": "10.0.0-alpha.23", "tiny-warning": "^1.0.2" } }, "jss-plugin-props-sort": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0-alpha.16.tgz", - "integrity": "sha512-+Yn9nugHAH58nf/d43H2uxMvlCFPDgLKRSmKO4Q4m1IGYjMbHsWt1Rk2HfC9IiCanqcqpc8hstwtzf+HG7PWFQ==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0-alpha.23.tgz", + "integrity": "sha512-/h6epoQ/ta61e6rG3/Pq47qPlg9YX5t2rSKJBLzaASEe/KfxjVvnbJKC8tE27lG6TjwbeWpKONuJfZxjWKLnDg==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.23" } }, "jss-plugin-rule-value-function": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0-alpha.16.tgz", - "integrity": "sha512-MQap9ne6ZGZH0NlpSQTMSm6QalBTF0hYpd2uaGQwam+GlT7IKeO+sTjd46I1WgO3kyOmwb0pIY6CnuLQGXKtSA==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0-alpha.23.tgz", + "integrity": "sha512-N0g7x6RzeEj+GI5303JOUTyo5x7/F+0SRJv3R0lAUSS782mZipcvpFzHlEz3q5g+0t/bhbOLT6i0RYAhN3IW7g==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.23" } }, "jss-plugin-vendor-prefixer": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0-alpha.16.tgz", - "integrity": "sha512-70yJ6QE5dN8VlPUGKld5jK2SKyrteheEL/ismexpybIufunMs6iJgkhDndbOfv8ia13yZgUVqeakMdhRKYwK1A==", + "version": "10.0.0-alpha.23", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0-alpha.23.tgz", + "integrity": "sha512-WtTXR+H1tGGhmEP3kqDawxnV1tbXboxtJ93A1O9p+7OLseafIaQoPkMPKEh5a+P4jzETIqmQoJJoG5KmT/Tgsg==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.1", - "jss": "10.0.0-alpha.16" + "css-vendor": "^2.0.5", + "jss": "10.0.0-alpha.23" } }, "keycode": { @@ -10036,12 +10028,6 @@ "error-ex": "^1.2.0" } }, - "parse-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", - "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=", - "dev": true - }, "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", @@ -13497,9 +13483,9 @@ "dev": true }, "tiny-warning": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.2.tgz", - "integrity": "sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "dev": true }, "tmp": { diff --git a/package.json b/package.json index 2a196fd8c..58660cdfc 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@chgibb/electron-tabs": "^0.8.0", "@chgibb/ng-node-compile": "^1.0.6", "@claviska/jquery-minicolors": "^2.2.6", - "@material-ui/core": "^4.0.2", + "@material-ui/core": "^4.3.2", "@material-ui/icons": "^4.0.1", "@types/chart.js": "2.7.56", "@types/fs-extra": "0.0.37", From 419d28d8883d7a8107c747a02f2930d3ce6c232a Mon Sep 17 00:00:00 2001 From: chgibb Date: Thu, 15 Aug 2019 22:13:49 -0400 Subject: [PATCH 11/30] show scanned reads progress and approximate amount to BLAST --- .../containers/forms/BLASTRunForm.tsx | 53 +++++++++++++++++-- .../containers/forms/BLASTRunForm/step2.tsx | 40 ++++++++++++-- 2 files changed, 84 insertions(+), 9 deletions(-) diff --git a/src/req/renderer/containers/forms/BLASTRunForm.tsx b/src/req/renderer/containers/forms/BLASTRunForm.tsx index 342ae81c8..8b591288c 100644 --- a/src/req/renderer/containers/forms/BLASTRunForm.tsx +++ b/src/req/renderer/containers/forms/BLASTRunForm.tsx @@ -2,8 +2,9 @@ import * as React from "react"; import { Form, FullWidthStepperForm, FullWidthFormStep } from '../fullWidthStepperForm'; import { step1 } from './BLASTRunForm/step1'; import { step2 } from './BLASTRunForm/step2'; -import { AlignData } from '../../../alignData'; +import { AlignData, getSam } from '../../../alignData'; import { ReadWithFragments } from '../../../readWithFragments'; +import { getReadWithFragments } from '../../../getReadWithFragments'; export interface BLASTRunFormProps { @@ -15,7 +16,9 @@ export interface BLASTRunFormState start? : number; stop? : number; readsWithFragments? : Array | undefined; - searchForReadsWithFragments? : Promise | undefined; + readsScanned? : number; + searchForReadsWithFragmentsPromise? : Promise | undefined; + searchingForReadsWithFragments : boolean; errors : Array; currentStep : number; } @@ -29,7 +32,8 @@ export class BLASTRunForm extends React.Component + { + return new Promise(async () => { + if(!this.props.align || this.state.start === undefined || this.state.stop === undefined) + { + this.setState({ + searchingForReadsWithFragments : false, + }); + return resolve(); + } + let readsWithFragments = await getReadWithFragments( + getSam(this.props.align), + this.state.start, + this.state.stop, + (readsScanned : number) => { + this.setState({ + readsScanned : readsScanned + }); + } + ); + + this.setState({ + searchingForReadsWithFragments : false, + readsWithFragments : readsWithFragments + }) + }); + } + public onAdvance(step : number) : Promise { return new Promise((resolve : (val : boolean) => void) : void => { @@ -51,6 +83,11 @@ export class BLASTRunForm extends React.Component { return new Promise((resolve : (val : boolean) => void) : void => { + if(step == 1) + { + this.setState({ + searchingForReadsWithFragments : false, + searchForReadsWithFragmentsPromise : undefined, + readsWithFragments : undefined + }); + } return resolve(true); }); } @@ -120,7 +165,7 @@ export class BLASTRunForm extends React.Component diff --git a/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx b/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx index 9cfb8106d..e77105dc2 100644 --- a/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx +++ b/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx @@ -2,16 +2,46 @@ import * as React from "react"; import { BLASTRunForm } from '../BLASTRunForm'; import { FullWidthFormStep } from '../../fullWidthStepperForm'; +import { GridWrapper } from '../../gridWrapper'; +import { Grid } from '../../../components/grid'; +import { Paper } from '../../../components/paper'; +import { Typography } from '../../../components/typography'; -export function step2(form : BLASTRunForm) : FullWidthFormStep -{ +export function step2(form: BLASTRunForm): FullWidthFormStep { let label = "Identify Reads and Fragments to BLAST"; return { - label : label, - body : ( + label: label, + body: (
- + + + + + + + + + Scanned {form.state.readsScanned ? form.state.readsScanned : 0} reads + + + + + {form.state.readsWithFragments ? + + + + + {form.state.readsWithFragments.length} potential BLAST candidates + + + + : ""} + + + + +
) }; From 671e077bea2a95a2041defb410711214b09ef46f Mon Sep 17 00:00:00 2001 From: chgibb Date: Thu, 15 Aug 2019 22:14:01 -0400 Subject: [PATCH 12/30] index refs for vis before alignments --- .../containers/forms/runAlignmentForm/publish.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/req/renderer/containers/forms/runAlignmentForm/publish.ts b/src/req/renderer/containers/forms/runAlignmentForm/publish.ts index 3b591d081..f61e2e7a5 100644 --- a/src/req/renderer/containers/forms/runAlignmentForm/publish.ts +++ b/src/req/renderer/containers/forms/runAlignmentForm/publish.ts @@ -8,6 +8,11 @@ const ipc = electron.ipcRenderer; export function triggerHisat2Alignment(fasta : Fasta,fastq1 : Fastq,fastq2 : Fastq | undefined) : void { + enQueueOperation({ + opName : "indexFastaForVisualization", + data : fasta + }); + if(!fasta.indexedForHisat2) { enQueueOperation({ @@ -28,6 +33,11 @@ export function triggerHisat2Alignment(fasta : Fasta,fastq1 : Fastq,fastq2 : Fas export function triggerBowtie2Alignment(fasta : Fasta,fastq1 : Fastq,fastq2 : Fastq | undefined) : void { + enQueueOperation({ + opName : "indexFastaForVisualization", + data : fasta + }); + if(!fasta.indexed) { enQueueOperation({ From cfa0700a9a3994880bf5306a5f53a4152b96322f Mon Sep 17 00:00:00 2001 From: chgibb Date: Fri, 16 Aug 2019 18:54:56 -0400 Subject: [PATCH 13/30] outlined input based on mui docs --- src/req/renderer/components/outlinedInput.tsx | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/req/renderer/components/outlinedInput.tsx diff --git a/src/req/renderer/components/outlinedInput.tsx b/src/req/renderer/components/outlinedInput.tsx new file mode 100644 index 000000000..dbc54c549 --- /dev/null +++ b/src/req/renderer/components/outlinedInput.tsx @@ -0,0 +1,40 @@ +import * as React from "react"; +import { FormControl } from './formControl'; +import { InputLabel } from './inputLabel'; + +const MuiOutlinedInput: typeof import("@material-ui/core/OutlinedInput").default = require("@material-ui/core/OutlinedInput").default; + +type MuiOutlinedInputProps = import("@material-ui/core/OutlinedInput/index").OutlinedInputProps; + +export interface OutlinedInputProps { + label: string; + inputProps: Omit; +} + +export function OutlinedInput(props: OutlinedInputProps +): JSX.Element { + const [labelWidth, setLabelWidth] = React.useState(0); + const labelRef = React.useRef(null); + + React.useEffect(() => { + setLabelWidth(labelRef.current!.offsetWidth); + }, []); + + return ( +
+ + + {props.label} + + + +
+ ); +} From 5aee6391081374af1eab8c56b3561ab7b53953dd Mon Sep 17 00:00:00 2001 From: chgibb Date: Fri, 16 Aug 2019 18:58:03 -0400 Subject: [PATCH 14/30] mui component wrappers --- src/req/renderer/components/input.ts | 1 + src/req/renderer/components/inputLabel.ts | 1 + 2 files changed, 2 insertions(+) create mode 100644 src/req/renderer/components/input.ts create mode 100644 src/req/renderer/components/inputLabel.ts diff --git a/src/req/renderer/components/input.ts b/src/req/renderer/components/input.ts new file mode 100644 index 000000000..2e6b9635c --- /dev/null +++ b/src/req/renderer/components/input.ts @@ -0,0 +1 @@ +export const Input : typeof import("@material-ui/core/Input").default = require("@material-ui/core/Input").default; diff --git a/src/req/renderer/components/inputLabel.ts b/src/req/renderer/components/inputLabel.ts new file mode 100644 index 000000000..98083ea88 --- /dev/null +++ b/src/req/renderer/components/inputLabel.ts @@ -0,0 +1 @@ +export const InputLabel : typeof import("@material-ui/core/InputLabel").default = require("@material-ui/core/InputLabel").default; From 0277657d3fef79cbff0150018f964e647141213d Mon Sep 17 00:00:00 2001 From: chgibb Date: Fri, 16 Aug 2019 18:58:38 -0400 Subject: [PATCH 15/30] stylize inputs --- .../containers/forms/BLASTRunForm/step1.tsx | 51 +++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx b/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx index 30b93f7a5..42e76d3c8 100644 --- a/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx +++ b/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx @@ -2,21 +2,54 @@ import * as React from "react"; import { BLASTRunForm } from '../BLASTRunForm'; import { FullWidthFormStep } from '../../fullWidthStepperForm'; +import { GridWrapper } from '../../gridWrapper'; +import { Grid } from '../../../components/grid'; +import { FormControl } from '../../../components/formControl'; +import { InputLabel } from '../../../components/inputLabel'; +import { OutlinedInput } from '../../../components/outlinedInput'; -export function step1(form : BLASTRunForm) : FullWidthFormStep -{ +export function step1(form: BLASTRunForm): FullWidthFormStep { let label = "Select Range to BLAST"; - if(form.validateSelectedRange()) - { + if (form.validateSelectedRange()) { label = `Search From ${form.state.start} to ${form.state.stop}`; } + if (form.props.align && form.props.align.fasta) { + return { + label: label, + body: (
+ + +
+ + + + + + + + + + +
) + }; + } + return { - label : label, - body : (
- - -
) + label: "This Alignment Must be Linked to a Reference", + body: (
) }; } From 8291268e9789fe9d8f899dd8b9ebd32199c3a779 Mon Sep 17 00:00:00 2001 From: chgibb Date: Fri, 16 Aug 2019 18:58:51 -0400 Subject: [PATCH 16/30] get total bp from reference --- src/req/fasta.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/req/fasta.ts b/src/req/fasta.ts index 1f3c7f52f..84e918f54 100644 --- a/src/req/fasta.ts +++ b/src/req/fasta.ts @@ -57,4 +57,16 @@ export function getFaiPath(fasta : Fasta) : string export function get2BitPath(fasta : Fasta) : string { return getReadableAndWritable(`rt/indexes/${fasta.uuid}.2bit`); -} \ No newline at end of file +} + +export function totalBP(fasta : Fasta) : number +{ + let res = 0; + + for(let i = 0; i != fasta.contigs.length; ++i) + { + res += fasta.contigs[i].bp; + } + + return res; +} From 43efd186f033c644dc24b29f413a3a08f921b20b Mon Sep 17 00:00:00 2001 From: chgibb Date: Fri, 16 Aug 2019 22:52:42 -0400 Subject: [PATCH 17/30] lint --- src/req/renderer/components/outlinedInput.tsx | 12 +++-- .../containers/forms/BLASTRunForm.tsx | 38 ++++++++------- .../containers/forms/BLASTRunForm/step1.tsx | 25 +++++----- .../containers/forms/BLASTRunForm/step2.tsx | 33 ++++++------- .../runAlignmentForm/runAlignmentForm.tsx | 3 +- .../containers/fullWidthStepperForm.tsx | 48 +++++++++---------- .../renderer/views/outputView/outputView.tsx | 15 +++--- 7 files changed, 94 insertions(+), 80 deletions(-) diff --git a/src/req/renderer/components/outlinedInput.tsx b/src/req/renderer/components/outlinedInput.tsx index dbc54c549..a17b6bf06 100644 --- a/src/req/renderer/components/outlinedInput.tsx +++ b/src/req/renderer/components/outlinedInput.tsx @@ -1,6 +1,7 @@ import * as React from "react"; -import { FormControl } from './formControl'; -import { InputLabel } from './inputLabel'; + +import {FormControl} from "./formControl"; +import {InputLabel} from "./inputLabel"; const MuiOutlinedInput: typeof import("@material-ui/core/OutlinedInput").default = require("@material-ui/core/OutlinedInput").default; @@ -11,12 +12,13 @@ export interface OutlinedInputProps { inputProps: Omit; } -export function OutlinedInput(props: OutlinedInputProps -): JSX.Element { +export function OutlinedInput(props: OutlinedInputProps): JSX.Element +{ const [labelWidth, setLabelWidth] = React.useState(0); const labelRef = React.useRef(null); - React.useEffect(() => { + React.useEffect(() => + { setLabelWidth(labelRef.current!.offsetWidth); }, []); diff --git a/src/req/renderer/containers/forms/BLASTRunForm.tsx b/src/req/renderer/containers/forms/BLASTRunForm.tsx index 8b591288c..f3246fa69 100644 --- a/src/req/renderer/containers/forms/BLASTRunForm.tsx +++ b/src/req/renderer/containers/forms/BLASTRunForm.tsx @@ -1,10 +1,12 @@ import * as React from "react"; -import { Form, FullWidthStepperForm, FullWidthFormStep } from '../fullWidthStepperForm'; -import { step1 } from './BLASTRunForm/step1'; -import { step2 } from './BLASTRunForm/step2'; -import { AlignData, getSam } from '../../../alignData'; -import { ReadWithFragments } from '../../../readWithFragments'; -import { getReadWithFragments } from '../../../getReadWithFragments'; + +import {Form, FullWidthStepperForm, FullWidthFormStep} from "../fullWidthStepperForm"; +import {AlignData, getSam} from "../../../alignData"; +import {ReadWithFragments} from "../../../readWithFragments"; +import {getReadWithFragments} from "../../../getReadWithFragments"; + +import {step2} from "./BLASTRunForm/step2"; +import {step1} from "./BLASTRunForm/step1"; export interface BLASTRunFormProps { @@ -45,7 +47,8 @@ export class BLASTRunForm extends React.Component { - return new Promise(async () => { + return new Promise(async () => + { if(!this.props.align || this.state.start === undefined || this.state.stop === undefined) { this.setState({ @@ -57,7 +60,8 @@ export class BLASTRunForm extends React.Component { + (readsScanned : number) => + { this.setState({ readsScanned : readsScanned }); @@ -67,13 +71,14 @@ export class BLASTRunForm extends React.Component { - return new Promise((resolve : (val : boolean) => void) : void => { + return new Promise((resolve : (val : boolean) => void) : void => + { if(step == 0) { if(!this.validateSelectedRange()) @@ -92,14 +97,15 @@ export class BLASTRunForm extends React.Component { - return new Promise((resolve : (val : boolean) => void) : void => { + return new Promise((resolve : (val : boolean) => void) : void => + { if(step == 1) { this.setState({ @@ -138,14 +144,14 @@ export class BLASTRunForm extends React.Component) : void { this.setState({ stop : parseInt(event.target.value) - }) + }); } public render() : JSX.Element | null @@ -169,6 +175,6 @@ export class BLASTRunForm extends React.Component
- ) + ); } } \ No newline at end of file diff --git a/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx b/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx index 42e76d3c8..d378bc789 100644 --- a/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx +++ b/src/req/renderer/containers/forms/BLASTRunForm/step1.tsx @@ -1,27 +1,30 @@ import * as React from "react"; -import { BLASTRunForm } from '../BLASTRunForm'; -import { FullWidthFormStep } from '../../fullWidthStepperForm'; -import { GridWrapper } from '../../gridWrapper'; -import { Grid } from '../../../components/grid'; -import { FormControl } from '../../../components/formControl'; -import { InputLabel } from '../../../components/inputLabel'; -import { OutlinedInput } from '../../../components/outlinedInput'; +import {BLASTRunForm} from "../BLASTRunForm"; +import {FullWidthFormStep} from "../../fullWidthStepperForm"; +import {GridWrapper} from "../../gridWrapper"; +import {Grid} from "../../../components/grid"; +import {FormControl} from "../../../components/formControl"; +import {InputLabel} from "../../../components/inputLabel"; +import {OutlinedInput} from "../../../components/outlinedInput"; -export function step1(form: BLASTRunForm): FullWidthFormStep { +export function step1(form: BLASTRunForm): FullWidthFormStep +{ let label = "Select Range to BLAST"; - if (form.validateSelectedRange()) { + if (form.validateSelectedRange()) + { label = `Search From ${form.state.start} to ${form.state.stop}`; } - if (form.props.align && form.props.align.fasta) { + if (form.props.align && form.props.align.fasta) + { return { label: label, body: (
-
+
Scanned {form.state.readsScanned ? form.state.readsScanned : 0} reads - + {form.state.readsWithFragments ? - - - - - {form.state.readsWithFragments.length} potential BLAST candidates - - - + + + + + {form.state.readsWithFragments.length} potential BLAST candidates + + + : ""} diff --git a/src/req/renderer/containers/forms/runAlignmentForm/runAlignmentForm.tsx b/src/req/renderer/containers/forms/runAlignmentForm/runAlignmentForm.tsx index aeb5db9b4..3e1fc7901 100644 --- a/src/req/renderer/containers/forms/runAlignmentForm/runAlignmentForm.tsx +++ b/src/req/renderer/containers/forms/runAlignmentForm/runAlignmentForm.tsx @@ -114,7 +114,8 @@ export class RunAlignmentForm public onRetreat(step : number) : Promise { - return new Promise((resolve : (val : boolean) => void) : void => { + return new Promise((resolve : (val : boolean) => void) : void => + { return resolve(true); }); } diff --git a/src/req/renderer/containers/fullWidthStepperForm.tsx b/src/req/renderer/containers/fullWidthStepperForm.tsx index c3608069e..5bdae940d 100644 --- a/src/req/renderer/containers/fullWidthStepperForm.tsx +++ b/src/req/renderer/containers/fullWidthStepperForm.tsx @@ -89,35 +89,35 @@ export function FullWidthStepperForm(props : FullWidthStepperFormProps) : JSX.El {!props.disableNavigation ? -
: null }
From aa381be5037e7eb3af6d16677aa4e4e9561a91c2 Mon Sep 17 00:00:00 2001 From: chgibb Date: Fri, 16 Aug 2019 22:53:07 -0400 Subject: [PATCH 18/30] set cache locations seperately --- scripts/fix.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/fix.bash b/scripts/fix.bash index 4b55c7725..1c6b3f4f0 100644 --- a/scripts/fix.bash +++ b/scripts/fix.bash @@ -1,3 +1,3 @@ -./node_modules/.bin/eslint "src/**/*.ts" --cache --fix +./node_modules/.bin/eslint "src/**/*.tsx" --fix --cache-location ".eslintcache-tsx" -./node_modules/.bin/eslint "src/**/*.tsx" --cache --fix +./node_modules/.bin/eslint "src/**/*.ts" --fix --cache-location ".eslintcache-ts" From b45c727301fbad64fbf90043b4e54542855895d9 Mon Sep 17 00:00:00 2001 From: chgibb Date: Mon, 19 Aug 2019 17:49:08 -0400 Subject: [PATCH 19/30] fixed flag pass through --- src/req/renderer/QCRenderer/QCView.tsx | 2 +- src/req/renderer/views/alignView/alignView.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/req/renderer/QCRenderer/QCView.tsx b/src/req/renderer/QCRenderer/QCView.tsx index 75d6da439..09f9531e8 100644 --- a/src/req/renderer/QCRenderer/QCView.tsx +++ b/src/req/renderer/QCRenderer/QCView.tsx @@ -64,7 +64,7 @@ export class QCView extends React.Component {!this.state.viewingReport ? { event; diff --git a/src/req/renderer/views/alignView/alignView.tsx b/src/req/renderer/views/alignView/alignView.tsx index e15a0085b..e1d7c773f 100644 --- a/src/req/renderer/views/alignView/alignView.tsx +++ b/src/req/renderer/views/alignView/alignView.tsx @@ -62,7 +62,7 @@ export class AlignView extends React.Component
); From 935814eb8eeabd58561965f6bfe792b4d26bda54 Mon Sep 17 00:00:00 2001 From: chgibb Date: Mon, 19 Aug 2019 18:02:00 -0400 Subject: [PATCH 20/30] pad out text in cards --- src/req/renderer/containers/forms/BLASTRunForm/step2.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx b/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx index bf10212fd..9ca7bc5e3 100644 --- a/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx +++ b/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx @@ -20,6 +20,7 @@ export function step2(form: BLASTRunForm): FullWidthFormStep +
@@ -27,9 +28,11 @@ export function step2(form: BLASTRunForm): FullWidthFormStep +
{form.state.readsWithFragments ? +
@@ -37,6 +40,7 @@ export function step2(form: BLASTRunForm): FullWidthFormStep +
: ""}
From b022bf6733aa3d99fc4632157c5ee07c32fb5703 Mon Sep 17 00:00:00 2001 From: chgibb Date: Mon, 19 Aug 2019 18:11:56 -0400 Subject: [PATCH 21/30] stop enabling form by default --- src/req/renderer/views/outputView/outputView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/req/renderer/views/outputView/outputView.tsx b/src/req/renderer/views/outputView/outputView.tsx index 541f92cc9..1380e4c56 100644 --- a/src/req/renderer/views/outputView/outputView.tsx +++ b/src/req/renderer/views/outputView/outputView.tsx @@ -41,7 +41,7 @@ export class OutputView extends React.Component this.state = { currentTable : "reports", - showBLASTForm : true, + showBLASTForm : false, } as OutputViewState; } From a7e2e5bba1f8c5dce5b8c59783701c54f478b2a3 Mon Sep 17 00:00:00 2001 From: chgibb Date: Mon, 19 Aug 2019 18:12:17 -0400 Subject: [PATCH 22/30] added start button and fixed spacing --- .../containers/forms/BLASTRunForm/step2.tsx | 59 +++++++++++-------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx b/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx index 9ca7bc5e3..7706d4c54 100644 --- a/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx +++ b/src/req/renderer/containers/forms/BLASTRunForm/step2.tsx @@ -1,14 +1,14 @@ import * as React from "react"; -import {BLASTRunForm} from "../BLASTRunForm"; -import {FullWidthFormStep} from "../../fullWidthStepperForm"; -import {GridWrapper} from "../../gridWrapper"; -import {Grid} from "../../../components/grid"; -import {Paper} from "../../../components/paper"; -import {Typography} from "../../../components/typography"; +import { BLASTRunForm } from "../BLASTRunForm"; +import { FullWidthFormStep } from "../../fullWidthStepperForm"; +import { GridWrapper } from "../../gridWrapper"; +import { Grid } from "../../../components/grid"; +import { Paper } from "../../../components/paper"; +import { Typography } from "../../../components/typography"; +import { Button } from '../../../components/button'; -export function step2(form: BLASTRunForm): FullWidthFormStep -{ +export function step2(form: BLASTRunForm): FullWidthFormStep { let label = "Identify Reads and Fragments to BLAST"; return { @@ -20,28 +20,41 @@ export function step2(form: BLASTRunForm): FullWidthFormStep -
- - - - Scanned {form.state.readsScanned ? form.state.readsScanned : 0} reads +
+ + + + Scanned {form.state.readsScanned ? form.state.readsScanned : 0} reads + -
{form.state.readsWithFragments ? - -
- - - - {form.state.readsWithFragments.length} potential BLAST candidates + + +
+ + + + {form.state.readsWithFragments.length} potential BLAST candidates + + +
+
+ + + +
-
: ""} + + + : ""}
From 986732c6b68c4c4c03cd1dc9069259f268cf64d2 Mon Sep 17 00:00:00 2001 From: chgibb Date: Mon, 19 Aug 2019 18:15:28 -0400 Subject: [PATCH 23/30] fixed button spacing --- src/req/renderer/views/outputView/outputView.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/req/renderer/views/outputView/outputView.tsx b/src/req/renderer/views/outputView/outputView.tsx index 1380e4c56..05ad20c5b 100644 --- a/src/req/renderer/views/outputView/outputView.tsx +++ b/src/req/renderer/views/outputView/outputView.tsx @@ -236,6 +236,9 @@ export class OutputView extends React.Component />
: this.state.currentTable == "blastRuns" ?
+ + +