@jbrowse/plugin-data-management 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AddTrackWidget/components/AddTrackWidget.js +2 -0
- package/dist/AddTrackWidget/components/AddTrackWidget.js.map +1 -1
- package/dist/AddTrackWidget/components/PasteConfigWorkflow.d.ts +7 -0
- package/dist/AddTrackWidget/components/PasteConfigWorkflow.js +66 -0
- package/dist/AddTrackWidget/components/PasteConfigWorkflow.js.map +1 -0
- package/dist/AddTrackWidget/model.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/model.d.ts +3 -3
- package/dist/PluginStoreWidget/model.d.ts +2 -2
- package/esm/AddTrackWidget/components/AddTrackWidget.js +2 -0
- package/esm/AddTrackWidget/components/AddTrackWidget.js.map +1 -1
- package/esm/AddTrackWidget/components/PasteConfigWorkflow.d.ts +7 -0
- package/esm/AddTrackWidget/components/PasteConfigWorkflow.js +41 -0
- package/esm/AddTrackWidget/components/PasteConfigWorkflow.js.map +1 -0
- package/esm/AddTrackWidget/model.d.ts +2 -2
- package/esm/AddTrackWidget/model.js +1 -1
- package/esm/HierarchicalTrackSelectorWidget/model.d.ts +3 -3
- package/esm/PluginStoreWidget/model.d.ts +2 -2
- package/package.json +2 -2
- package/src/AddTrackWidget/components/AddTrackWidget.tsx +2 -0
- package/src/AddTrackWidget/components/PasteConfigWorkflow.tsx +64 -0
- package/src/AddTrackWidget/model.ts +1 -1
- package/src/PluginStoreWidget/components/__snapshots__/PluginStoreWidget.test.js.snap +22 -0
- package/src/__snapshots__/index.test.js.snap +4 -4
|
@@ -8,12 +8,14 @@ const mobx_react_1 = require("mobx-react");
|
|
|
8
8
|
const material_1 = require("@mui/material");
|
|
9
9
|
const util_1 = require("@jbrowse/core/util");
|
|
10
10
|
const DefaultAddTrackWorkflow_1 = __importDefault(require("./DefaultAddTrackWorkflow"));
|
|
11
|
+
const PasteConfigWorkflow_1 = __importDefault(require("./PasteConfigWorkflow"));
|
|
11
12
|
function AddTrackSelector({ model }) {
|
|
12
13
|
const [val, setVal] = (0, util_1.useLocalStorage)('trackSelector-choice', 'Default');
|
|
13
14
|
const { pluginManager } = (0, util_1.getEnv)(model);
|
|
14
15
|
const widgets = pluginManager.getElementTypesInGroup('add track workflow');
|
|
15
16
|
const ComponentMap = {
|
|
16
17
|
Default: DefaultAddTrackWorkflow_1.default,
|
|
18
|
+
'Add track JSON': PasteConfigWorkflow_1.default,
|
|
17
19
|
...Object.fromEntries(widgets.map(w => [w.name, w.ReactComponent])),
|
|
18
20
|
};
|
|
19
21
|
// make sure the selected value is in the list
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddTrackWidget.js","sourceRoot":"","sources":["../../../src/AddTrackWidget/components/AddTrackWidget.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,2CAAqC;AACrC,4CAA6E;AAE7E,6CAA4D;AAI5D,wFAA+D;
|
|
1
|
+
{"version":3,"file":"AddTrackWidget.js","sourceRoot":"","sources":["../../../src/AddTrackWidget/components/AddTrackWidget.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,2CAAqC;AACrC,4CAA6E;AAE7E,6CAA4D;AAI5D,wFAA+D;AAC/D,gFAAuD;AAEvD,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAA4B;IAC3D,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,sBAAe,EAAC,sBAAsB,EAAE,SAAS,CAAC,CAAA;IACxE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,aAAM,EAAC,KAAK,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAsB,CAClD,oBAAoB,CACK,CAAA;IAC3B,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,iCAAuB;QAChC,gBAAgB,EAAE,6BAAmB;QACrC,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KACX,CAAA;IAE1D,8CAA8C;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,CACL;QACE,8BAAC,sBAAW;YACV,8BAAC,iBAAM,IAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAC/D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAClC,8BAAC,mBAAQ,IAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IACvB,CAAC,CACO,CACZ,CAAC,CACK;YACT,8BAAC,yBAAc,qCAA4C,CAC/C;QAEd,yCAAM;QACN,8BAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI,CAC1B,CACJ,CAAA;AACH,CAAC;AAED,kBAAe,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const react_1 = __importStar(require("react"));
|
|
27
|
+
const material_1 = require("@mui/material");
|
|
28
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
29
|
+
const mui_1 = require("tss-react/mui");
|
|
30
|
+
const util_1 = require("@jbrowse/core/util");
|
|
31
|
+
const mobx_react_1 = require("mobx-react");
|
|
32
|
+
const useStyles = (0, mui_1.makeStyles)()({
|
|
33
|
+
textbox: {
|
|
34
|
+
width: '100%',
|
|
35
|
+
},
|
|
36
|
+
submit: {
|
|
37
|
+
marginTop: 25,
|
|
38
|
+
marginBottom: 100,
|
|
39
|
+
display: 'block',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
function AddTrackWorkflow({ model }) {
|
|
43
|
+
const { classes } = useStyles();
|
|
44
|
+
const [val, setVal] = (0, react_1.useState)('');
|
|
45
|
+
const [error, setError] = (0, react_1.useState)();
|
|
46
|
+
return (react_1.default.createElement("div", null,
|
|
47
|
+
error ? react_1.default.createElement(ui_1.ErrorMessage, { error: error }) : null,
|
|
48
|
+
react_1.default.createElement(material_1.TextField, { multiline: true, rows: 10, value: val, onChange: event => setVal(event.target.value), placeholder: 'Paste track config or array of track configs in JSON format', variant: "outlined", className: classes.textbox }),
|
|
49
|
+
react_1.default.createElement(material_1.Button, { variant: "contained", className: classes.submit, onClick: () => {
|
|
50
|
+
try {
|
|
51
|
+
setError(undefined);
|
|
52
|
+
const session = (0, util_1.getSession)(model);
|
|
53
|
+
const conf = JSON.parse(val);
|
|
54
|
+
const confs = Array.isArray(conf) ? conf : [conf];
|
|
55
|
+
confs.forEach(c => session.addTrackConf(c));
|
|
56
|
+
confs.forEach(c => c.trackId);
|
|
57
|
+
model.clearData();
|
|
58
|
+
session.hideWidget(model);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
setError(e);
|
|
62
|
+
}
|
|
63
|
+
} }, "Submit")));
|
|
64
|
+
}
|
|
65
|
+
exports.default = (0, mobx_react_1.observer)(AddTrackWorkflow);
|
|
66
|
+
//# sourceMappingURL=PasteConfigWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasteConfigWorkflow.js","sourceRoot":"","sources":["../../../src/AddTrackWidget/components/PasteConfigWorkflow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuC;AACvC,4CAAiD;AACjD,yCAA+C;AAC/C,uCAA0C;AAC1C,6CAA+C;AAC/C,2CAAqC;AAKrC,MAAM,SAAS,GAAG,IAAA,gBAAU,GAAE,CAAC;IAC7B,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;KACd;IACD,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE,OAAO;KACjB;CACF,CAAC,CAAA;AAEF,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAA4B;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAA;IAClC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAW,CAAA;IAE7C,OAAO,CACL;QACG,KAAK,CAAC,CAAC,CAAC,8BAAC,iBAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI;QAC9C,8BAAC,oBAAS,IACR,SAAS,QACT,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,WAAW,EACT,6DAA6D,EAE/D,OAAO,EAAC,UAAU,EAClB,SAAS,EAAE,OAAO,CAAC,OAAO,GAC1B;QACF,8BAAC,iBAAM,IACL,OAAO,EAAC,WAAW,EACnB,SAAS,EAAE,OAAO,CAAC,MAAM,EACzB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI;oBACF,QAAQ,CAAC,SAAS,CAAC,CAAA;oBACnB,MAAM,OAAO,GAAG,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAA;oBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBACjD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;oBAC7B,KAAK,CAAC,SAAS,EAAE,CAAA;oBACjB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;iBAC1B;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,CAAC,CAAC,CAAC,CAAA;iBACZ;YACH,CAAC,aAGM,CACL,CACP,CAAA;AACH,CAAC;AACD,kBAAe,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAA"}
|
|
@@ -46,6 +46,6 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
46
46
|
} & {
|
|
47
47
|
readonly warningMessage: "" | "Warning: JBrowse cannot access files using the ftp protocol" | "Warning: one or more of your files do not provide the protocol e.g.\n https://, please provide an absolute URL unless you are sure a\n relative URL is intended." | "Warning: You entered a http:// resources but we cannot access HTTP\n resources from JBrowse when it is running on https. Please use an\n https URL for your track, or access the JBrowse app from the http\n protocol";
|
|
48
48
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
49
|
-
export
|
|
50
|
-
export
|
|
49
|
+
export type AddTrackStateModel = ReturnType<typeof f>;
|
|
50
|
+
export type AddTrackModel = Instance<AddTrackStateModel>;
|
|
51
51
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Instance } from 'mobx-state-tree';
|
|
2
2
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
3
|
import PluginManager from '@jbrowse/core/PluginManager';
|
|
4
|
-
export
|
|
4
|
+
export type TreeNode = {
|
|
5
5
|
name: string;
|
|
6
6
|
id: string;
|
|
7
7
|
conf?: AnyConfigurationModel;
|
|
@@ -65,5 +65,5 @@ export default function stateTreeFactory(pluginManager: PluginManager): import("
|
|
|
65
65
|
tracks: AnyConfigurationModel[];
|
|
66
66
|
}): TreeNode[];
|
|
67
67
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
68
|
-
export
|
|
69
|
-
export
|
|
68
|
+
export type HierarchicalTrackSelectorStateModel = ReturnType<typeof stateTreeFactory>;
|
|
69
|
+
export type HierarchicalTrackSelectorModel = Instance<HierarchicalTrackSelectorStateModel>;
|
|
@@ -9,5 +9,5 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
9
9
|
clearFilterText(): void;
|
|
10
10
|
setFilterText(newText: string): void;
|
|
11
11
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
12
|
-
export
|
|
13
|
-
export
|
|
12
|
+
export type PluginStoreStateModel = ReturnType<typeof f>;
|
|
13
|
+
export type PluginStoreModel = Instance<PluginStoreStateModel>;
|
|
@@ -3,12 +3,14 @@ import { observer } from 'mobx-react';
|
|
|
3
3
|
import { FormControl, FormHelperText, Select, MenuItem } from '@mui/material';
|
|
4
4
|
import { getEnv, useLocalStorage } from '@jbrowse/core/util';
|
|
5
5
|
import DefaultAddTrackWorkflow from './DefaultAddTrackWorkflow';
|
|
6
|
+
import PasteConfigWorkflow from './PasteConfigWorkflow';
|
|
6
7
|
function AddTrackSelector({ model }) {
|
|
7
8
|
const [val, setVal] = useLocalStorage('trackSelector-choice', 'Default');
|
|
8
9
|
const { pluginManager } = getEnv(model);
|
|
9
10
|
const widgets = pluginManager.getElementTypesInGroup('add track workflow');
|
|
10
11
|
const ComponentMap = {
|
|
11
12
|
Default: DefaultAddTrackWorkflow,
|
|
13
|
+
'Add track JSON': PasteConfigWorkflow,
|
|
12
14
|
...Object.fromEntries(widgets.map(w => [w.name, w.ReactComponent])),
|
|
13
15
|
};
|
|
14
16
|
// make sure the selected value is in the list
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddTrackWidget.js","sourceRoot":"","sources":["../../../src/AddTrackWidget/components/AddTrackWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7E,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAI5D,OAAO,uBAAuB,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"AddTrackWidget.js","sourceRoot":"","sources":["../../../src/AddTrackWidget/components/AddTrackWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7E,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAI5D,OAAO,uBAAuB,MAAM,2BAA2B,CAAA;AAC/D,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAA4B;IAC3D,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAA;IACxE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAsB,CAClD,oBAAoB,CACK,CAAA;IAC3B,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,uBAAuB;QAChC,gBAAgB,EAAE,mBAAmB;QACrC,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KACX,CAAA;IAE1D,8CAA8C;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,CACL;QACE,oBAAC,WAAW;YACV,oBAAC,MAAM,IAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAC/D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAClC,oBAAC,QAAQ,IAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IACvB,CAAC,CACO,CACZ,CAAC,CACK;YACT,oBAAC,cAAc,qCAA4C,CAC/C;QAEd,+BAAM;QACN,oBAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI,CAC1B,CACJ,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,gBAAgB,CAAC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Button, TextField } from '@mui/material';
|
|
3
|
+
import { ErrorMessage } from '@jbrowse/core/ui';
|
|
4
|
+
import { makeStyles } from 'tss-react/mui';
|
|
5
|
+
import { getSession } from '@jbrowse/core/util';
|
|
6
|
+
import { observer } from 'mobx-react';
|
|
7
|
+
const useStyles = makeStyles()({
|
|
8
|
+
textbox: {
|
|
9
|
+
width: '100%',
|
|
10
|
+
},
|
|
11
|
+
submit: {
|
|
12
|
+
marginTop: 25,
|
|
13
|
+
marginBottom: 100,
|
|
14
|
+
display: 'block',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
function AddTrackWorkflow({ model }) {
|
|
18
|
+
const { classes } = useStyles();
|
|
19
|
+
const [val, setVal] = useState('');
|
|
20
|
+
const [error, setError] = useState();
|
|
21
|
+
return (React.createElement("div", null,
|
|
22
|
+
error ? React.createElement(ErrorMessage, { error: error }) : null,
|
|
23
|
+
React.createElement(TextField, { multiline: true, rows: 10, value: val, onChange: event => setVal(event.target.value), placeholder: 'Paste track config or array of track configs in JSON format', variant: "outlined", className: classes.textbox }),
|
|
24
|
+
React.createElement(Button, { variant: "contained", className: classes.submit, onClick: () => {
|
|
25
|
+
try {
|
|
26
|
+
setError(undefined);
|
|
27
|
+
const session = getSession(model);
|
|
28
|
+
const conf = JSON.parse(val);
|
|
29
|
+
const confs = Array.isArray(conf) ? conf : [conf];
|
|
30
|
+
confs.forEach(c => session.addTrackConf(c));
|
|
31
|
+
confs.forEach(c => c.trackId);
|
|
32
|
+
model.clearData();
|
|
33
|
+
session.hideWidget(model);
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
setError(e);
|
|
37
|
+
}
|
|
38
|
+
} }, "Submit")));
|
|
39
|
+
}
|
|
40
|
+
export default observer(AddTrackWorkflow);
|
|
41
|
+
//# sourceMappingURL=PasteConfigWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasteConfigWorkflow.js","sourceRoot":"","sources":["../../../src/AddTrackWidget/components/PasteConfigWorkflow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKrC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;KACd;IACD,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE,OAAO;KACjB;CACF,CAAC,CAAA;AAEF,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAA4B;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAA;IAE7C,OAAO,CACL;QACG,KAAK,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI;QAC9C,oBAAC,SAAS,IACR,SAAS,QACT,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,WAAW,EACT,6DAA6D,EAE/D,OAAO,EAAC,UAAU,EAClB,SAAS,EAAE,OAAO,CAAC,OAAO,GAC1B;QACF,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,SAAS,EAAE,OAAO,CAAC,MAAM,EACzB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI;oBACF,QAAQ,CAAC,SAAS,CAAC,CAAA;oBACnB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;oBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBACjD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;oBAC7B,KAAK,CAAC,SAAS,EAAE,CAAA;oBACjB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;iBAC1B;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,CAAC,CAAC,CAAC,CAAA;iBACZ;YACH,CAAC,aAGM,CACL,CACP,CAAA;AACH,CAAC;AACD,eAAe,QAAQ,CAAC,gBAAgB,CAAC,CAAA"}
|
|
@@ -46,6 +46,6 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
46
46
|
} & {
|
|
47
47
|
readonly warningMessage: "" | "Warning: JBrowse cannot access files using the ftp protocol" | "Warning: one or more of your files do not provide the protocol e.g.\n https://, please provide an absolute URL unless you are sure a\n relative URL is intended." | "Warning: You entered a http:// resources but we cannot access HTTP\n resources from JBrowse when it is running on https. Please use an\n https URL for your track, or access the JBrowse app from the http\n protocol";
|
|
48
48
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
49
|
-
export
|
|
50
|
-
export
|
|
49
|
+
export type AddTrackStateModel = ReturnType<typeof f>;
|
|
50
|
+
export type AddTrackModel = Instance<AddTrackStateModel>;
|
|
51
51
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { types } from 'mobx-state-tree';
|
|
2
2
|
import { ElementId } from '@jbrowse/core/util/types/mst';
|
|
3
|
-
import { guessAdapter, guessTrackType,
|
|
3
|
+
import { guessAdapter, guessTrackType, getFileName, UNSUPPORTED, } from '@jbrowse/core/util/tracks';
|
|
4
4
|
function isAbsoluteUrl(url = '') {
|
|
5
5
|
try {
|
|
6
6
|
new URL(url);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Instance } from 'mobx-state-tree';
|
|
2
2
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
3
|
import PluginManager from '@jbrowse/core/PluginManager';
|
|
4
|
-
export
|
|
4
|
+
export type TreeNode = {
|
|
5
5
|
name: string;
|
|
6
6
|
id: string;
|
|
7
7
|
conf?: AnyConfigurationModel;
|
|
@@ -65,5 +65,5 @@ export default function stateTreeFactory(pluginManager: PluginManager): import("
|
|
|
65
65
|
tracks: AnyConfigurationModel[];
|
|
66
66
|
}): TreeNode[];
|
|
67
67
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
68
|
-
export
|
|
69
|
-
export
|
|
68
|
+
export type HierarchicalTrackSelectorStateModel = ReturnType<typeof stateTreeFactory>;
|
|
69
|
+
export type HierarchicalTrackSelectorModel = Instance<HierarchicalTrackSelectorStateModel>;
|
|
@@ -9,5 +9,5 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
9
9
|
clearFilterText(): void;
|
|
10
10
|
setFilterText(newText: string): void;
|
|
11
11
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
12
|
-
export
|
|
13
|
-
export
|
|
12
|
+
export type PluginStoreStateModel = ReturnType<typeof f>;
|
|
13
|
+
export type PluginStoreModel = Instance<PluginStoreStateModel>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-data-management",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "JBrowse 2 linear genome view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"distModule": "esm/index.js",
|
|
62
62
|
"srcModule": "src/index.ts",
|
|
63
63
|
"module": "esm/index.js",
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "896d175c5d9345049faea8e1155f243c912aac42"
|
|
65
65
|
}
|
|
@@ -7,6 +7,7 @@ import { getEnv, useLocalStorage } from '@jbrowse/core/util'
|
|
|
7
7
|
// locals
|
|
8
8
|
import { AddTrackModel } from '../model'
|
|
9
9
|
import DefaultAddTrackWorkflow from './DefaultAddTrackWorkflow'
|
|
10
|
+
import PasteConfigWorkflow from './PasteConfigWorkflow'
|
|
10
11
|
|
|
11
12
|
function AddTrackSelector({ model }: { model: AddTrackModel }) {
|
|
12
13
|
const [val, setVal] = useLocalStorage('trackSelector-choice', 'Default')
|
|
@@ -16,6 +17,7 @@ function AddTrackSelector({ model }: { model: AddTrackModel }) {
|
|
|
16
17
|
) as AddTrackWorkflowType[]
|
|
17
18
|
const ComponentMap = {
|
|
18
19
|
Default: DefaultAddTrackWorkflow,
|
|
20
|
+
'Add track JSON': PasteConfigWorkflow,
|
|
19
21
|
...Object.fromEntries(widgets.map(w => [w.name, w.ReactComponent])),
|
|
20
22
|
} as { [key: string]: React.FC<{ model: AddTrackModel }> }
|
|
21
23
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import { Button, TextField } from '@mui/material'
|
|
3
|
+
import { ErrorMessage } from '@jbrowse/core/ui'
|
|
4
|
+
import { makeStyles } from 'tss-react/mui'
|
|
5
|
+
import { getSession } from '@jbrowse/core/util'
|
|
6
|
+
import { observer } from 'mobx-react'
|
|
7
|
+
|
|
8
|
+
// locals
|
|
9
|
+
import { AddTrackModel } from '../model'
|
|
10
|
+
|
|
11
|
+
const useStyles = makeStyles()({
|
|
12
|
+
textbox: {
|
|
13
|
+
width: '100%',
|
|
14
|
+
},
|
|
15
|
+
submit: {
|
|
16
|
+
marginTop: 25,
|
|
17
|
+
marginBottom: 100,
|
|
18
|
+
display: 'block',
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
function AddTrackWorkflow({ model }: { model: AddTrackModel }) {
|
|
23
|
+
const { classes } = useStyles()
|
|
24
|
+
const [val, setVal] = useState('')
|
|
25
|
+
const [error, setError] = useState<unknown>()
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<div>
|
|
29
|
+
{error ? <ErrorMessage error={error} /> : null}
|
|
30
|
+
<TextField
|
|
31
|
+
multiline
|
|
32
|
+
rows={10}
|
|
33
|
+
value={val}
|
|
34
|
+
onChange={event => setVal(event.target.value)}
|
|
35
|
+
placeholder={
|
|
36
|
+
'Paste track config or array of track configs in JSON format'
|
|
37
|
+
}
|
|
38
|
+
variant="outlined"
|
|
39
|
+
className={classes.textbox}
|
|
40
|
+
/>
|
|
41
|
+
<Button
|
|
42
|
+
variant="contained"
|
|
43
|
+
className={classes.submit}
|
|
44
|
+
onClick={() => {
|
|
45
|
+
try {
|
|
46
|
+
setError(undefined)
|
|
47
|
+
const session = getSession(model)
|
|
48
|
+
const conf = JSON.parse(val)
|
|
49
|
+
const confs = Array.isArray(conf) ? conf : [conf]
|
|
50
|
+
confs.forEach(c => session.addTrackConf(c))
|
|
51
|
+
confs.forEach(c => c.trackId)
|
|
52
|
+
model.clearData()
|
|
53
|
+
session.hideWidget(model)
|
|
54
|
+
} catch (e) {
|
|
55
|
+
setError(e)
|
|
56
|
+
}
|
|
57
|
+
}}
|
|
58
|
+
>
|
|
59
|
+
Submit
|
|
60
|
+
</Button>
|
|
61
|
+
</div>
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
export default observer(AddTrackWorkflow)
|
|
@@ -567,6 +567,28 @@ exports[`<PluginStoreWidget /> renders with the available plugins 1`] = `
|
|
|
567
567
|
WigglePlugin
|
|
568
568
|
</p>
|
|
569
569
|
</li>
|
|
570
|
+
<li
|
|
571
|
+
class="MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-ypie1g-MuiListItem-root"
|
|
572
|
+
>
|
|
573
|
+
<svg
|
|
574
|
+
aria-hidden="true"
|
|
575
|
+
aria-label="This plugin was installed by an administrator, you cannot remove it."
|
|
576
|
+
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1a34d00-MuiSvgIcon-root-lockedPluginTooltip"
|
|
577
|
+
data-mui-internal-clone-element="true"
|
|
578
|
+
data-testid="LockIcon"
|
|
579
|
+
focusable="false"
|
|
580
|
+
viewBox="0 0 24 24"
|
|
581
|
+
>
|
|
582
|
+
<path
|
|
583
|
+
d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"
|
|
584
|
+
/>
|
|
585
|
+
</svg>
|
|
586
|
+
<p
|
|
587
|
+
class="MuiTypography-root MuiTypography-body1 css-k0xfey-MuiTypography-root"
|
|
588
|
+
>
|
|
589
|
+
GCContentPlugin
|
|
590
|
+
</p>
|
|
591
|
+
</li>
|
|
570
592
|
<li
|
|
571
593
|
class="MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-ypie1g-MuiListItem-root"
|
|
572
594
|
>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Data management adds config editor widget 1`] = `
|
|
3
|
+
exports[`Data management adds config editor widget 1`] = `{}`;
|
|
4
4
|
|
|
5
|
-
exports[`Data management adds connection add widget 1`] = `
|
|
5
|
+
exports[`Data management adds connection add widget 1`] = `{}`;
|
|
6
6
|
|
|
7
|
-
exports[`Data management adds hierarchical track selector 1`] = `
|
|
7
|
+
exports[`Data management adds hierarchical track selector 1`] = `{}`;
|
|
8
8
|
|
|
9
|
-
exports[`Data management adds track add widget 1`] = `
|
|
9
|
+
exports[`Data management adds track add widget 1`] = `{}`;
|