@jbrowse/plugin-data-management 1.6.9 → 1.7.0
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/AddConnectionWidget/components/AddConnectionWidget.js +178 -0
- package/dist/AddConnectionWidget/components/AddConnectionWidget.test.js +270 -0
- package/dist/AddConnectionWidget/components/ConfigureConnection.js +35 -0
- package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +70 -0
- package/dist/AddConnectionWidget/index.js +21 -0
- package/dist/AddConnectionWidget/model.js +17 -0
- package/dist/AddTrackWidget/components/AddTrackWidget.js +215 -0
- package/dist/AddTrackWidget/components/AddTrackWidget.test.js +218 -0
- package/dist/AddTrackWidget/components/ConfirmTrack.js +277 -0
- package/dist/AddTrackWidget/components/TrackSourceSelect.js +60 -0
- package/dist/AddTrackWidget/index.js +21 -0
- package/dist/AddTrackWidget/index.test.js +291 -0
- package/dist/AddTrackWidget/model.js +167 -0
- package/dist/AssemblyManager/AssemblyAddForm.js +299 -0
- package/dist/AssemblyManager/AssemblyEditor.js +25 -0
- package/dist/AssemblyManager/AssemblyManager.js +144 -0
- package/dist/AssemblyManager/AssemblyManager.test.js +113 -0
- package/dist/AssemblyManager/AssemblyTable.js +92 -0
- package/dist/AssemblyManager/index.js +15 -0
- package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +55 -0
- package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js +46 -0
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +648 -0
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +191 -0
- package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js +80 -0
- package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +98 -0
- package/dist/HierarchicalTrackSelectorWidget/index.js +21 -0
- package/dist/HierarchicalTrackSelectorWidget/model.js +306 -0
- package/dist/HierarchicalTrackSelectorWidget/model.test.js +28 -0
- package/dist/PluginStoreWidget/components/CustomPluginForm.js +217 -0
- package/dist/PluginStoreWidget/components/InstalledPlugin.js +138 -0
- package/dist/PluginStoreWidget/components/InstalledPluginsList.js +47 -0
- package/dist/PluginStoreWidget/components/PluginCard.js +121 -0
- package/dist/PluginStoreWidget/components/PluginStoreWidget.js +240 -0
- package/dist/PluginStoreWidget/components/PluginStoreWidget.test.js +201 -0
- package/dist/PluginStoreWidget/index.js +29 -0
- package/dist/PluginStoreWidget/model.js +28 -0
- package/dist/PluginStoreWidget/model.test.js +17 -0
- package/dist/SetDefaultSession/SetDefaultSession.js +64 -0
- package/dist/SetDefaultSession/SetDefaultSession.test.js +75 -0
- package/dist/SetDefaultSession/index.js +15 -0
- package/dist/index.js +159 -6
- package/dist/index.test.js +56 -0
- package/dist/ucsc-trackhub/configSchema.js +30 -0
- package/dist/ucsc-trackhub/index.js +23 -0
- package/dist/ucsc-trackhub/model.js +130 -0
- package/dist/ucsc-trackhub/ucscAssemblies.js +13 -0
- package/dist/ucsc-trackhub/ucscTrackHub.js +503 -0
- package/package.json +3 -6
- package/src/AddConnectionWidget/components/AddConnectionWidget.test.js +1 -0
- package/src/AddTrackWidget/components/AddTrackWidget.test.js +1 -0
- package/src/AddTrackWidget/components/AddTrackWidget.tsx +1 -1
- package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +1 -0
- package/src/PluginStoreWidget/components/CustomPluginForm.tsx +1 -1
- package/src/PluginStoreWidget/components/InstalledPlugin.tsx +4 -2
- package/src/PluginStoreWidget/components/PluginCard.tsx +4 -2
- package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +1 -0
- package/src/PluginStoreWidget/model.test.js +1 -0
- package/src/SetDefaultSession/SetDefaultSession.tsx +4 -3
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _util = require("@jbrowse/core/util");
|
|
15
|
+
|
|
16
|
+
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
|
17
|
+
|
|
18
|
+
var _Step = _interopRequireDefault(require("@material-ui/core/Step"));
|
|
19
|
+
|
|
20
|
+
var _StepContent = _interopRequireDefault(require("@material-ui/core/StepContent"));
|
|
21
|
+
|
|
22
|
+
var _StepLabel = _interopRequireDefault(require("@material-ui/core/StepLabel"));
|
|
23
|
+
|
|
24
|
+
var _Stepper = _interopRequireDefault(require("@material-ui/core/Stepper"));
|
|
25
|
+
|
|
26
|
+
var _styles = require("@material-ui/core/styles");
|
|
27
|
+
|
|
28
|
+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
29
|
+
|
|
30
|
+
var _mobxReact = require("mobx-react");
|
|
31
|
+
|
|
32
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
33
|
+
|
|
34
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
35
|
+
|
|
36
|
+
var _ConfigureConnection = _interopRequireDefault(require("./ConfigureConnection"));
|
|
37
|
+
|
|
38
|
+
var _ConnectionTypeSelect = _interopRequireDefault(require("./ConnectionTypeSelect"));
|
|
39
|
+
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
|
|
44
|
+
var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
45
|
+
return {
|
|
46
|
+
root: {
|
|
47
|
+
marginTop: theme.spacing(1)
|
|
48
|
+
},
|
|
49
|
+
stepper: {
|
|
50
|
+
backgroundColor: theme.palette.background["default"]
|
|
51
|
+
},
|
|
52
|
+
button: {
|
|
53
|
+
marginTop: theme.spacing(1),
|
|
54
|
+
marginRight: theme.spacing(1)
|
|
55
|
+
},
|
|
56
|
+
actionsContainer: {
|
|
57
|
+
marginBottom: theme.spacing(2)
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
var steps = ['Select a Connection Type', 'Configure Connection'];
|
|
62
|
+
|
|
63
|
+
function AddConnectionWidget(_ref) {
|
|
64
|
+
var model = _ref.model;
|
|
65
|
+
|
|
66
|
+
var _useState = (0, _react.useState)({}),
|
|
67
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
68
|
+
connectionType = _useState2[0],
|
|
69
|
+
setConnectionType = _useState2[1];
|
|
70
|
+
|
|
71
|
+
var _useState3 = (0, _react.useState)({}),
|
|
72
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
73
|
+
configModel = _useState4[0],
|
|
74
|
+
setConfigModel = _useState4[1];
|
|
75
|
+
|
|
76
|
+
var _useState5 = (0, _react.useState)(true),
|
|
77
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
78
|
+
configModelReady = _useState6[0],
|
|
79
|
+
setConfigModelReady = _useState6[1];
|
|
80
|
+
|
|
81
|
+
var _useState7 = (0, _react.useState)(0),
|
|
82
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
83
|
+
activeStep = _useState8[0],
|
|
84
|
+
setActiveStep = _useState8[1];
|
|
85
|
+
|
|
86
|
+
var classes = useStyles();
|
|
87
|
+
var session = (0, _util.getSession)(model);
|
|
88
|
+
|
|
89
|
+
var _getEnv = (0, _mobxStateTree.getEnv)(session),
|
|
90
|
+
pluginManager = _getEnv.pluginManager;
|
|
91
|
+
|
|
92
|
+
function handleSetConnectionType(newConnectionType) {
|
|
93
|
+
setConnectionType(newConnectionType);
|
|
94
|
+
setConfigModel(newConnectionType.configSchema.create({
|
|
95
|
+
connectionId: "".concat(newConnectionType.name, "-").concat(Date.now())
|
|
96
|
+
}, (0, _mobxStateTree.getEnv)(model)));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function stepContent() {
|
|
100
|
+
switch (activeStep) {
|
|
101
|
+
case 0:
|
|
102
|
+
return /*#__PURE__*/_react["default"].createElement(_ConnectionTypeSelect["default"], {
|
|
103
|
+
connectionTypeChoices: pluginManager.getElementTypesInGroup('connection'),
|
|
104
|
+
connectionType: connectionType,
|
|
105
|
+
setConnectionType: handleSetConnectionType
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
case 1:
|
|
109
|
+
return /*#__PURE__*/_react["default"].createElement(_ConfigureConnection["default"], {
|
|
110
|
+
connectionType: connectionType,
|
|
111
|
+
model: configModel,
|
|
112
|
+
setModelReady: setConfigModelReady
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
default:
|
|
116
|
+
return /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, "Unknown step");
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function handleNext() {
|
|
121
|
+
if (activeStep === steps.length - 1) {
|
|
122
|
+
handleFinish();
|
|
123
|
+
} else {
|
|
124
|
+
setActiveStep(activeStep + 1);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function handleBack() {
|
|
129
|
+
setActiveStep(activeStep - 1);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function handleFinish() {
|
|
133
|
+
var connectionConf = session.addConnectionConf(configModel);
|
|
134
|
+
session.makeConnection(connectionConf);
|
|
135
|
+
session.hideWidget(model);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function checkNextEnabled() {
|
|
139
|
+
if (activeStep === 0 && connectionType.name || activeStep === 1 && configModel && configModelReady) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
147
|
+
className: classes.root
|
|
148
|
+
}, /*#__PURE__*/_react["default"].createElement(_Stepper["default"], {
|
|
149
|
+
className: classes.stepper,
|
|
150
|
+
activeStep: activeStep,
|
|
151
|
+
orientation: "vertical"
|
|
152
|
+
}, steps.map(function (label) {
|
|
153
|
+
return /*#__PURE__*/_react["default"].createElement(_Step["default"], {
|
|
154
|
+
key: label
|
|
155
|
+
}, /*#__PURE__*/_react["default"].createElement(_StepLabel["default"], null, label), /*#__PURE__*/_react["default"].createElement(_StepContent["default"], null, stepContent(), /*#__PURE__*/_react["default"].createElement("div", {
|
|
156
|
+
className: classes.actionsContainer
|
|
157
|
+
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
158
|
+
disabled: activeStep === 0,
|
|
159
|
+
onClick: handleBack,
|
|
160
|
+
className: classes.button
|
|
161
|
+
}, "Back"), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
162
|
+
disabled: !checkNextEnabled(),
|
|
163
|
+
variant: "contained",
|
|
164
|
+
color: "primary",
|
|
165
|
+
onClick: handleNext,
|
|
166
|
+
className: classes.button,
|
|
167
|
+
"data-testid": "addConnectionNext"
|
|
168
|
+
}, activeStep === steps.length - 1 ? 'Connect' : 'Next'))));
|
|
169
|
+
})));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
AddConnectionWidget.propTypes = {
|
|
173
|
+
model: _mobxReact.PropTypes.observableObject.isRequired
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
var _default = (0, _mobxReact.observer)(AddConnectionWidget);
|
|
177
|
+
|
|
178
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
|
|
9
|
+
var _react = require("@testing-library/react");
|
|
10
|
+
|
|
11
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
12
|
+
|
|
13
|
+
var _rootModel = require("@jbrowse/web/src/rootModel");
|
|
14
|
+
|
|
15
|
+
var _AddConnectionWidget = _interopRequireDefault(require("./AddConnectionWidget"));
|
|
16
|
+
|
|
17
|
+
jest.mock('@jbrowse/web/src/makeWorkerInstance', function () {
|
|
18
|
+
return function () {};
|
|
19
|
+
});
|
|
20
|
+
window.fetch = jest.fn(function () {
|
|
21
|
+
return new Promise(function (resolve) {
|
|
22
|
+
return resolve();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('<AddConnectionWidget />', function () {
|
|
26
|
+
var model;
|
|
27
|
+
var session;
|
|
28
|
+
beforeEach(function () {
|
|
29
|
+
session = (0, _rootModel.createTestSession)();
|
|
30
|
+
session.addAssemblyConf({
|
|
31
|
+
name: 'volMyt1',
|
|
32
|
+
sequence: {
|
|
33
|
+
trackId: 'ref0',
|
|
34
|
+
type: 'ReferenceSequenceTrack',
|
|
35
|
+
adapter: {
|
|
36
|
+
type: 'FromConfigSequenceAdapter',
|
|
37
|
+
features: [{
|
|
38
|
+
refName: 'ctgA',
|
|
39
|
+
uniqueId: 'firstId',
|
|
40
|
+
start: 0,
|
|
41
|
+
end: 1000,
|
|
42
|
+
seq: 'cattgttgcggagttgaacaACGGCATTAGGAACACTTCCGTCTCtcacttttatacgattatgattggttctttagccttggtttagattggtagtagtagcggcgctaatgctacctgaattgagaactcgagcgggggctaggcaaattctgattcagcctgacttctcttggaaccctgcccataaatcaaagggttagtgcggccaaaacgttggacaacggtattagaagaccaacctgaccaccaaaccgtcaattaaccggtatcttctcggaaacggcggttctctcctagatagcgatctgtggtctcaccatgcaatttaaacaggtgagtaaagattgctacaaatacgagactagctgtcaccagatgctgttcatctgttggctccttggtcgctccgttgtacccaggctactttgaaagagcgcagaatacttagacggtatcgatcatggtagcatagcattctgataacatgtatggagttcgaacatccgtctggggccggacggtccgtttgaggttggttgatctgggtgatagtcagcaagatagacgttagataacaaattaaaggattttaccttagattgcgactagtacaacggtacatcggtgattcgcgctctactagatcacgctatgggtaccataaacaaacggtggaccttctcaagctggttgacgcctcagcaacataggcttcctcctccacgcatctcagcataaaaggcttataaactgcttctttgtgccagagcaactcaattaagcccttggtaccgtgggcacgcattctgtcacggtgaccaactgttcatcctgaatcgccgaatgggactatttggtacaggaatcaagcggatggcactactgcagcttatttacgacggtattcttaaagtttttaagacaatgtatttcatgggtagttcggtttgttttattgctacacaggctcttgtagacgacctacttagcactacgg'
|
|
43
|
+
}]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
model = session.addWidget('AddConnectionWidget', 'addConnectionWidget');
|
|
48
|
+
});
|
|
49
|
+
afterEach(_react.cleanup);
|
|
50
|
+
it('renders', function () {
|
|
51
|
+
var _render = (0, _react.render)( /*#__PURE__*/_react2["default"].createElement(_AddConnectionWidget["default"], {
|
|
52
|
+
model: model
|
|
53
|
+
})),
|
|
54
|
+
container = _render.container;
|
|
55
|
+
|
|
56
|
+
expect(container.firstChild).toMatchSnapshot();
|
|
57
|
+
});
|
|
58
|
+
it('can handle a custom UCSC trackHub URL', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
59
|
+
var mockFetch, _render2, findByTestId, getAllByRole, findAllByText, findByDisplayValue, ucscTrackHubSelection;
|
|
60
|
+
|
|
61
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
62
|
+
while (1) {
|
|
63
|
+
switch (_context.prev = _context.next) {
|
|
64
|
+
case 0:
|
|
65
|
+
mockFetch = function mockFetch(url) {
|
|
66
|
+
var urlText = url.href ? url.href : url;
|
|
67
|
+
var responseText = '';
|
|
68
|
+
|
|
69
|
+
if (urlText.endsWith('hub.txt')) {
|
|
70
|
+
responseText = "hub TestHub\nshortLabel Test Hub\nlongLabel Test Genome Informatics Hub for human DNase and RNAseq data\ngenomesFile genomes.txt\nemail genome@test.com\ndescriptionUrl test.html\n";
|
|
71
|
+
} else if (urlText.endsWith('genomes.txt')) {
|
|
72
|
+
responseText = "genome volMyt1\ntrackDb hg19/trackDb.txt\n";
|
|
73
|
+
} else if (urlText.endsWith('trackDb.txt')) {
|
|
74
|
+
responseText = "track dnaseSignal\nbigDataUrl dnaseSignal.bigWig\nshortLabel DNAse Signal\nlongLabel Depth of alignments of DNAse reads\ntype bigWig\n";
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return Promise.resolve(new Response(responseText, {
|
|
78
|
+
url: urlText
|
|
79
|
+
}));
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
jest.spyOn(global, 'fetch').mockImplementation(mockFetch);
|
|
83
|
+
_render2 = (0, _react.render)( /*#__PURE__*/_react2["default"].createElement(_AddConnectionWidget["default"], {
|
|
84
|
+
model: model
|
|
85
|
+
})), findByTestId = _render2.findByTestId, getAllByRole = _render2.getAllByRole, findAllByText = _render2.findAllByText, findByDisplayValue = _render2.findByDisplayValue;
|
|
86
|
+
expect(session.connections.length).toBe(0);
|
|
87
|
+
|
|
88
|
+
_react.fireEvent.mouseDown(getAllByRole('button')[0]);
|
|
89
|
+
|
|
90
|
+
_context.next = 7;
|
|
91
|
+
return findAllByText('UCSC Track Hub');
|
|
92
|
+
|
|
93
|
+
case 7:
|
|
94
|
+
ucscTrackHubSelection = _context.sent;
|
|
95
|
+
|
|
96
|
+
_react.fireEvent.click(ucscTrackHubSelection[ucscTrackHubSelection.length - 1]);
|
|
97
|
+
|
|
98
|
+
_context.t0 = _react.fireEvent;
|
|
99
|
+
_context.next = 12;
|
|
100
|
+
return findByTestId('addConnectionNext');
|
|
101
|
+
|
|
102
|
+
case 12:
|
|
103
|
+
_context.t1 = _context.sent;
|
|
104
|
+
|
|
105
|
+
_context.t0.click.call(_context.t0, _context.t1);
|
|
106
|
+
|
|
107
|
+
_context.t2 = _react.fireEvent;
|
|
108
|
+
_context.next = 17;
|
|
109
|
+
return findByDisplayValue('nameOfConnection');
|
|
110
|
+
|
|
111
|
+
case 17:
|
|
112
|
+
_context.t3 = _context.sent;
|
|
113
|
+
_context.t4 = {
|
|
114
|
+
target: {
|
|
115
|
+
value: 'Test UCSC connection name'
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
_context.t2.change.call(_context.t2, _context.t3, _context.t4);
|
|
120
|
+
|
|
121
|
+
_context.t5 = _react.fireEvent;
|
|
122
|
+
_context.next = 23;
|
|
123
|
+
return findByDisplayValue('http://mysite.com/path/to/hub.txt');
|
|
124
|
+
|
|
125
|
+
case 23:
|
|
126
|
+
_context.t6 = _context.sent;
|
|
127
|
+
_context.t7 = {
|
|
128
|
+
target: {
|
|
129
|
+
value: 'http://test.com/hub.txt'
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
_context.t5.change.call(_context.t5, _context.t6, _context.t7);
|
|
134
|
+
|
|
135
|
+
_context.t8 = _react.fireEvent;
|
|
136
|
+
_context.next = 29;
|
|
137
|
+
return findByTestId('addConnectionNext');
|
|
138
|
+
|
|
139
|
+
case 29:
|
|
140
|
+
_context.t9 = _context.sent;
|
|
141
|
+
|
|
142
|
+
_context.t8.click.call(_context.t8, _context.t9);
|
|
143
|
+
|
|
144
|
+
expect(session.sessionConnections.length).toBe(1);
|
|
145
|
+
|
|
146
|
+
case 32:
|
|
147
|
+
case "end":
|
|
148
|
+
return _context.stop();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}, _callee);
|
|
152
|
+
})));
|
|
153
|
+
it('can handle a custom JBrowse 1 data directory URL', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
154
|
+
var mockFetch, _render3, findByTestId, getAllByRole, findByPlaceholderText, findByText, findByDisplayValue;
|
|
155
|
+
|
|
156
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
157
|
+
while (1) {
|
|
158
|
+
switch (_context2.prev = _context2.next) {
|
|
159
|
+
case 0:
|
|
160
|
+
mockFetch = function mockFetch(url) {
|
|
161
|
+
var urlText = url.href ? url.href : url;
|
|
162
|
+
var responseText = '';
|
|
163
|
+
|
|
164
|
+
if (urlText.endsWith('trackList.json')) {
|
|
165
|
+
responseText = '{}';
|
|
166
|
+
} else if (urlText.endsWith('refSeqs.json')) {
|
|
167
|
+
responseText = '[]';
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return Promise.resolve(new Response(responseText, {
|
|
171
|
+
url: urlText
|
|
172
|
+
}));
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
jest.spyOn(global, 'fetch').mockImplementation(mockFetch);
|
|
176
|
+
_render3 = (0, _react.render)( /*#__PURE__*/_react2["default"].createElement(_AddConnectionWidget["default"], {
|
|
177
|
+
model: model
|
|
178
|
+
})), findByTestId = _render3.findByTestId, getAllByRole = _render3.getAllByRole, findByPlaceholderText = _render3.findByPlaceholderText, findByText = _render3.findByText, findByDisplayValue = _render3.findByDisplayValue;
|
|
179
|
+
expect(session.connections.length).toBe(0);
|
|
180
|
+
|
|
181
|
+
_react.fireEvent.mouseDown(getAllByRole('button')[0]);
|
|
182
|
+
|
|
183
|
+
_context2.t0 = _react.fireEvent;
|
|
184
|
+
_context2.next = 8;
|
|
185
|
+
return findByText('JBrowse 1 Data');
|
|
186
|
+
|
|
187
|
+
case 8:
|
|
188
|
+
_context2.t1 = _context2.sent;
|
|
189
|
+
|
|
190
|
+
_context2.t0.click.call(_context2.t0, _context2.t1);
|
|
191
|
+
|
|
192
|
+
_context2.t2 = _react.fireEvent;
|
|
193
|
+
_context2.next = 13;
|
|
194
|
+
return findByTestId('addConnectionNext');
|
|
195
|
+
|
|
196
|
+
case 13:
|
|
197
|
+
_context2.t3 = _context2.sent;
|
|
198
|
+
|
|
199
|
+
_context2.t2.click.call(_context2.t2, _context2.t3);
|
|
200
|
+
|
|
201
|
+
_context2.t4 = _react.fireEvent;
|
|
202
|
+
_context2.next = 18;
|
|
203
|
+
return findByDisplayValue('nameOfConnection');
|
|
204
|
+
|
|
205
|
+
case 18:
|
|
206
|
+
_context2.t5 = _context2.sent;
|
|
207
|
+
_context2.t6 = {
|
|
208
|
+
target: {
|
|
209
|
+
value: 'Test JBrowse 1 connection name'
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
_context2.t4.change.call(_context2.t4, _context2.t5, _context2.t6);
|
|
214
|
+
|
|
215
|
+
_context2.t7 = _react.fireEvent;
|
|
216
|
+
_context2.next = 24;
|
|
217
|
+
return findByDisplayValue('http://mysite.com/jbrowse/data/');
|
|
218
|
+
|
|
219
|
+
case 24:
|
|
220
|
+
_context2.t8 = _context2.sent;
|
|
221
|
+
_context2.t9 = {
|
|
222
|
+
target: {
|
|
223
|
+
value: 'http://test.com/jbrowse/data/'
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
_context2.t7.change.call(_context2.t7, _context2.t8, _context2.t9);
|
|
228
|
+
|
|
229
|
+
_context2.t10 = _react.fireEvent;
|
|
230
|
+
_context2.next = 30;
|
|
231
|
+
return findByPlaceholderText('add new');
|
|
232
|
+
|
|
233
|
+
case 30:
|
|
234
|
+
_context2.t11 = _context2.sent;
|
|
235
|
+
_context2.t12 = {
|
|
236
|
+
target: {
|
|
237
|
+
value: 'volMyt1'
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
_context2.t10.change.call(_context2.t10, _context2.t11, _context2.t12);
|
|
242
|
+
|
|
243
|
+
_context2.t13 = _react.fireEvent;
|
|
244
|
+
_context2.next = 36;
|
|
245
|
+
return findByTestId('stringArrayAdd-assemblyNames');
|
|
246
|
+
|
|
247
|
+
case 36:
|
|
248
|
+
_context2.t14 = _context2.sent;
|
|
249
|
+
|
|
250
|
+
_context2.t13.click.call(_context2.t13, _context2.t14);
|
|
251
|
+
|
|
252
|
+
_context2.t15 = _react.fireEvent;
|
|
253
|
+
_context2.next = 41;
|
|
254
|
+
return findByTestId('addConnectionNext');
|
|
255
|
+
|
|
256
|
+
case 41:
|
|
257
|
+
_context2.t16 = _context2.sent;
|
|
258
|
+
|
|
259
|
+
_context2.t15.click.call(_context2.t15, _context2.t16);
|
|
260
|
+
|
|
261
|
+
expect(session.sessionConnections.length).toBe(1);
|
|
262
|
+
|
|
263
|
+
case 44:
|
|
264
|
+
case "end":
|
|
265
|
+
return _context2.stop();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}, _callee2);
|
|
269
|
+
})));
|
|
270
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _pluginConfig = require("@jbrowse/plugin-config");
|
|
13
|
+
|
|
14
|
+
var _mobxReact = require("mobx-react");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
var ConfigureConnection = (0, _mobxReact.observer)(function (props) {
|
|
21
|
+
var connectionType = props.connectionType,
|
|
22
|
+
model = props.model,
|
|
23
|
+
setModelReady = props.setModelReady;
|
|
24
|
+
var ConfigEditorComponent = connectionType.configEditorComponent || _pluginConfig.ConfigurationEditor;
|
|
25
|
+
return /*#__PURE__*/_react["default"].createElement(_react.Suspense, {
|
|
26
|
+
fallback: /*#__PURE__*/_react["default"].createElement("div", null, "Loading...")
|
|
27
|
+
}, /*#__PURE__*/_react["default"].createElement(ConfigEditorComponent, {
|
|
28
|
+
model: {
|
|
29
|
+
target: model
|
|
30
|
+
},
|
|
31
|
+
setModelReady: setModelReady
|
|
32
|
+
}));
|
|
33
|
+
});
|
|
34
|
+
var _default = ConfigureConnection;
|
|
35
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
|
13
|
+
|
|
14
|
+
var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
|
|
15
|
+
|
|
16
|
+
var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _OpenInNew = _interopRequireDefault(require("@material-ui/icons/OpenInNew"));
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
function ConnectionTypeSelect(props) {
|
|
27
|
+
var connectionTypeChoices = props.connectionTypeChoices,
|
|
28
|
+
connectionType = props.connectionType,
|
|
29
|
+
setConnectionType = props.setConnectionType;
|
|
30
|
+
(0, _react.useEffect)(function () {
|
|
31
|
+
if (!connectionType.name) {
|
|
32
|
+
setConnectionType(connectionTypeChoices[0]);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
function handleChange(event) {
|
|
37
|
+
setConnectionType(connectionTypeChoices.find(function (connectionTypeChoice) {
|
|
38
|
+
return connectionTypeChoice.name === event.target.value;
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (!connectionType.name) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return /*#__PURE__*/_react["default"].createElement("form", {
|
|
47
|
+
autoComplete: "off"
|
|
48
|
+
}, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
|
|
49
|
+
value: connectionType.name,
|
|
50
|
+
label: "connectionType",
|
|
51
|
+
helperText: connectionType.description ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, connectionType.description, connectionType.url ? /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
|
|
52
|
+
href: connectionType.url,
|
|
53
|
+
rel: "noopener noreferrer",
|
|
54
|
+
target: "_blank",
|
|
55
|
+
color: "secondary"
|
|
56
|
+
}, /*#__PURE__*/_react["default"].createElement(_OpenInNew["default"], null)) : null) : null,
|
|
57
|
+
select: true,
|
|
58
|
+
fullWidth: true,
|
|
59
|
+
onChange: handleChange,
|
|
60
|
+
variant: "outlined"
|
|
61
|
+
}, connectionTypeChoices.map(function (connectionTypeChoice) {
|
|
62
|
+
return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
|
|
63
|
+
key: connectionTypeChoice.name,
|
|
64
|
+
value: connectionTypeChoice.name
|
|
65
|
+
}, connectionTypeChoice.displayName || connectionTypeChoice.name);
|
|
66
|
+
})));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var _default = ConnectionTypeSelect;
|
|
70
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.configSchema = void 0;
|
|
9
|
+
Object.defineProperty(exports, "stateModel", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function get() {
|
|
12
|
+
return _model["default"];
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
17
|
+
|
|
18
|
+
var _model = _interopRequireDefault(require("./model"));
|
|
19
|
+
|
|
20
|
+
var configSchema = (0, _configuration.ConfigurationSchema)('AddConnectionWidget', {});
|
|
21
|
+
exports.configSchema = configSchema;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
9
|
+
|
|
10
|
+
var _mst = require("@jbrowse/core/util/types/mst");
|
|
11
|
+
|
|
12
|
+
var _default = _mobxStateTree.types.model('AddConnectionModel', {
|
|
13
|
+
id: _mst.ElementId,
|
|
14
|
+
type: _mobxStateTree.types.literal('AddConnectionWidget')
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
exports["default"] = _default;
|