@jbrowse/plugin-data-management 1.7.8 → 1.7.11
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.test.js +25 -16
- package/dist/AddConnectionWidget/model.d.ts +1 -1
- package/dist/AddTrackWidget/index.test.js +1 -0
- package/dist/AddTrackWidget/model.js +1 -1
- package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.d.ts +7 -1
- package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +2 -5
- package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.d.ts +1 -1
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.d.ts +9 -5
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +67 -51
- package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.d.ts +2 -1
- package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.d.ts +2 -1
- package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +10 -11
- package/dist/HierarchicalTrackSelectorWidget/index.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/model.d.ts +38 -16
- package/dist/HierarchicalTrackSelectorWidget/model.js +89 -97
- package/dist/ucsc-trackhub/configSchema.d.ts +1 -1
- package/dist/ucsc-trackhub/ucscAssemblies.d.ts +1 -1
- package/package.json +2 -2
- package/src/AddConnectionWidget/components/AddConnectionWidget.test.js +2 -1
- package/src/AddTrackWidget/index.test.jsx +1 -0
- package/src/AddTrackWidget/model.ts +1 -1
- package/src/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.tsx +7 -11
- package/src/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.tsx +1 -1
- package/src/HierarchicalTrackSelectorWidget/components/{HierarchicalTrackSelector.js → HierarchicalTrackSelector.tsx} +247 -135
- package/src/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.tsx +5 -2
- package/src/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.tsx +24 -26
- package/src/HierarchicalTrackSelectorWidget/{index.js → index.ts} +0 -0
- package/src/HierarchicalTrackSelectorWidget/{model.js → model.ts} +113 -105
|
@@ -151,7 +151,7 @@ describe('<AddConnectionWidget />', function () {
|
|
|
151
151
|
}, _callee);
|
|
152
152
|
})));
|
|
153
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,
|
|
154
|
+
var mockFetch, _render3, findByTestId, getAllByRole, findByText, findByPlaceholderText, findByDisplayValue;
|
|
155
155
|
|
|
156
156
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
157
157
|
while (1) {
|
|
@@ -175,7 +175,7 @@ describe('<AddConnectionWidget />', function () {
|
|
|
175
175
|
jest.spyOn(global, 'fetch').mockImplementation(mockFetch);
|
|
176
176
|
_render3 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_AddConnectionWidget.default, {
|
|
177
177
|
model: model
|
|
178
|
-
})), findByTestId = _render3.findByTestId, getAllByRole = _render3.getAllByRole,
|
|
178
|
+
})), findByTestId = _render3.findByTestId, getAllByRole = _render3.getAllByRole, findByText = _render3.findByText, findByPlaceholderText = _render3.findByPlaceholderText, findByDisplayValue = _render3.findByDisplayValue;
|
|
179
179
|
expect(session.connections.length).toBe(0);
|
|
180
180
|
|
|
181
181
|
_react.fireEvent.mouseDown(getAllByRole('button')[0]);
|
|
@@ -228,39 +228,48 @@ describe('<AddConnectionWidget />', function () {
|
|
|
228
228
|
|
|
229
229
|
_context2.t10 = _react.fireEvent;
|
|
230
230
|
_context2.next = 30;
|
|
231
|
-
return
|
|
231
|
+
return findByText('Add item');
|
|
232
232
|
|
|
233
233
|
case 30:
|
|
234
234
|
_context2.t11 = _context2.sent;
|
|
235
|
-
|
|
235
|
+
|
|
236
|
+
_context2.t10.click.call(_context2.t10, _context2.t11);
|
|
237
|
+
|
|
238
|
+
_context2.t12 = _react.fireEvent;
|
|
239
|
+
_context2.next = 35;
|
|
240
|
+
return findByPlaceholderText('add new');
|
|
241
|
+
|
|
242
|
+
case 35:
|
|
243
|
+
_context2.t13 = _context2.sent;
|
|
244
|
+
_context2.t14 = {
|
|
236
245
|
target: {
|
|
237
246
|
value: 'volMyt1'
|
|
238
247
|
}
|
|
239
248
|
};
|
|
240
249
|
|
|
241
|
-
_context2.
|
|
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);
|
|
250
|
+
_context2.t12.change.call(_context2.t12, _context2.t13, _context2.t14);
|
|
251
251
|
|
|
252
252
|
_context2.t15 = _react.fireEvent;
|
|
253
253
|
_context2.next = 41;
|
|
254
|
-
return findByTestId('
|
|
254
|
+
return findByTestId('stringArrayAdd-assemblyNames');
|
|
255
255
|
|
|
256
256
|
case 41:
|
|
257
257
|
_context2.t16 = _context2.sent;
|
|
258
258
|
|
|
259
259
|
_context2.t15.click.call(_context2.t15, _context2.t16);
|
|
260
260
|
|
|
261
|
+
_context2.t17 = _react.fireEvent;
|
|
262
|
+
_context2.next = 46;
|
|
263
|
+
return findByTestId('addConnectionNext');
|
|
264
|
+
|
|
265
|
+
case 46:
|
|
266
|
+
_context2.t18 = _context2.sent;
|
|
267
|
+
|
|
268
|
+
_context2.t17.click.call(_context2.t17, _context2.t18);
|
|
269
|
+
|
|
261
270
|
expect(session.sessionConnections.length).toBe(1);
|
|
262
271
|
|
|
263
|
-
case
|
|
272
|
+
case 49:
|
|
264
273
|
case "end":
|
|
265
274
|
return _context2.stop();
|
|
266
275
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare
|
|
1
|
+
declare const _default: import("mobx-state-tree").IModelType<{
|
|
2
2
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
3
3
|
type: import("mobx-state-tree").ISimpleType<"AddConnectionWidget">;
|
|
4
4
|
}, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
@@ -133,6 +133,7 @@ describe('tests on an LGV type system with view.assemblyNames, using URL', funct
|
|
|
133
133
|
window.location = realLocation;
|
|
134
134
|
});
|
|
135
135
|
it('adds relative URL (BAM)', function () {
|
|
136
|
+
console.warn = jest.fn();
|
|
136
137
|
var _session = session,
|
|
137
138
|
widget = _session.widget;
|
|
138
139
|
widget.setTrackData({
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
declare function CloseConnectionDialog({ modalInfo, setModalInfo, }: {
|
|
3
|
-
modalInfo
|
|
3
|
+
modalInfo?: {
|
|
4
|
+
name?: string;
|
|
5
|
+
dereferenceTypeCount?: {
|
|
6
|
+
[key: string]: number;
|
|
7
|
+
};
|
|
8
|
+
safelyBreakConnection?: Function;
|
|
9
|
+
};
|
|
4
10
|
setModalInfo: Function;
|
|
5
11
|
}): JSX.Element;
|
|
6
12
|
declare const _default: typeof CloseConnectionDialog;
|
|
@@ -34,16 +34,13 @@ function CloseConnectionDialog(_ref) {
|
|
|
34
34
|
}, "".concat(value, " ").concat(key));
|
|
35
35
|
}))) : null, /*#__PURE__*/_react.default.createElement(_core.DialogContentText, null, "Are you sure you want to close this connection?")), /*#__PURE__*/_react.default.createElement(_core.DialogActions, null, /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
36
36
|
onClick: function onClick() {
|
|
37
|
-
setModalInfo();
|
|
37
|
+
return setModalInfo();
|
|
38
38
|
},
|
|
39
39
|
color: "primary"
|
|
40
40
|
}, "Cancel"), /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
41
41
|
variant: "contained",
|
|
42
42
|
onClick: modalInfo ? function () {
|
|
43
|
-
|
|
44
|
-
safelyBreakConnection();
|
|
45
|
-
}
|
|
46
|
-
|
|
43
|
+
safelyBreakConnection === null || safelyBreakConnection === void 0 ? void 0 : safelyBreakConnection();
|
|
47
44
|
setModalInfo();
|
|
48
45
|
} : function () {},
|
|
49
46
|
color: "primary"
|
|
@@ -7,7 +7,7 @@ declare function DeleteConnectionDialog({ deleteDialogDetails, session, handleCl
|
|
|
7
7
|
connectionConf: AnyConfigurationModel;
|
|
8
8
|
};
|
|
9
9
|
session: AbstractSessionModel;
|
|
10
|
-
handleClose:
|
|
10
|
+
handleClose: () => void;
|
|
11
11
|
}): JSX.Element;
|
|
12
12
|
declare const _default: typeof DeleteConnectionDialog;
|
|
13
13
|
export default _default;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { HierarchicalTrackSelectorModel } from '../model';
|
|
2
|
+
declare const HierarchicalTrackSelectorContainer: ({ model, toolbarHeight, overrideDimensions, }: {
|
|
3
|
+
model: HierarchicalTrackSelectorModel;
|
|
4
|
+
toolbarHeight: number;
|
|
5
|
+
overrideDimensions?: {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
} | undefined;
|
|
9
|
+
}) => JSX.Element;
|
|
1
10
|
export default HierarchicalTrackSelectorContainer;
|
|
2
|
-
declare function HierarchicalTrackSelectorContainer({ model, toolbarHeight, overrideDimensions }: {
|
|
3
|
-
model: any;
|
|
4
|
-
toolbarHeight: any;
|
|
5
|
-
overrideDimensions: any;
|
|
6
|
-
}): JSX.Element;
|
|
@@ -53,6 +53,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
53
53
|
|
|
54
54
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(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; }
|
|
55
55
|
|
|
56
|
+
// lazy components
|
|
56
57
|
var CloseConnectionDialog = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
57
58
|
return Promise.resolve().then(function () {
|
|
58
59
|
return _interopRequireWildcard(require('./CloseConnectionDialog'));
|
|
@@ -127,10 +128,11 @@ var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
|
127
128
|
margin: 'auto 0'
|
|
128
129
|
}
|
|
129
130
|
};
|
|
130
|
-
});
|
|
131
|
-
// pointer improves usability for what can be clicked
|
|
131
|
+
});
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
// An individual node in the track selector. Note: manually sets cursor:
|
|
134
|
+
// pointer improves usability for what can be clicked
|
|
135
|
+
function Node(props) {
|
|
134
136
|
var data = props.data,
|
|
135
137
|
isOpen = props.isOpen,
|
|
136
138
|
style = props.style,
|
|
@@ -148,7 +150,7 @@ var Node = function Node(props) {
|
|
|
148
150
|
var classes = useStyles();
|
|
149
151
|
var width = 10;
|
|
150
152
|
var marginLeft = nestingLevel * width + (isLeaf ? width : 0);
|
|
151
|
-
var unsupported = name
|
|
153
|
+
var unsupported = (name === null || name === void 0 ? void 0 : name.endsWith('(Unsupported)')) || (name === null || name === void 0 ? void 0 : name.endsWith('(Unknown)'));
|
|
152
154
|
var description = conf && (0, _configuration.readConfObject)(conf, ['description']) || '';
|
|
153
155
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
154
156
|
style: style,
|
|
@@ -158,7 +160,7 @@ var Node = function Node(props) {
|
|
|
158
160
|
key: "mark-".concat(idx),
|
|
159
161
|
style: {
|
|
160
162
|
left: idx * width + 4,
|
|
161
|
-
height: style.height
|
|
163
|
+
height: style === null || style === void 0 ? void 0 : style.height
|
|
162
164
|
},
|
|
163
165
|
className: classes.nestingLevelMarker
|
|
164
166
|
});
|
|
@@ -191,6 +193,7 @@ var Node = function Node(props) {
|
|
|
191
193
|
color: "primary",
|
|
192
194
|
disabled: unsupported,
|
|
193
195
|
inputProps: {
|
|
196
|
+
// @ts-ignore
|
|
194
197
|
'data-testid': "htsTrackEntry-".concat(id)
|
|
195
198
|
}
|
|
196
199
|
}),
|
|
@@ -206,9 +209,9 @@ var Node = function Node(props) {
|
|
|
206
209
|
color: "secondary",
|
|
207
210
|
"data-testid": "htsTrackEntryMenu-".concat(id)
|
|
208
211
|
}, /*#__PURE__*/_react.default.createElement(_MoreHoriz.default, null))))));
|
|
209
|
-
}
|
|
212
|
+
}
|
|
210
213
|
|
|
211
|
-
|
|
214
|
+
function getNodeData(node, nestingLevel, extra) {
|
|
212
215
|
var isLeaf = !!node.conf;
|
|
213
216
|
return {
|
|
214
217
|
data: _objectSpread(_objectSpread({
|
|
@@ -220,11 +223,11 @@ var getNodeData = function getNodeData(node, nestingLevel, extra) {
|
|
|
220
223
|
nestingLevel: nestingLevel,
|
|
221
224
|
node: node
|
|
222
225
|
};
|
|
223
|
-
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// this is the main tree component for the hierarchical track selector in note:
|
|
224
229
|
// in jbrowse-web the toolbar is position="sticky" which means the autosizer
|
|
225
230
|
// includes the height of the toolbar, so we subtract the given offsets
|
|
226
|
-
|
|
227
|
-
|
|
228
231
|
var HierarchicalTree = (0, _mobxReact.observer)(function (_ref) {
|
|
229
232
|
var _session$getTrackActi;
|
|
230
233
|
|
|
@@ -255,7 +258,7 @@ var HierarchicalTree = (0, _mobxReact.observer)(function (_ref) {
|
|
|
255
258
|
};
|
|
256
259
|
}, [view, model, drawerPosition]);
|
|
257
260
|
var treeWalker = (0, _react.useCallback)( /*#__PURE__*/_regenerator.default.mark(function treeWalker() {
|
|
258
|
-
var i, parentMeta, _i, curr;
|
|
261
|
+
var i, r, parentMeta, _i, curr;
|
|
259
262
|
|
|
260
263
|
return _regenerator.default.wrap(function treeWalker$(_context) {
|
|
261
264
|
while (1) {
|
|
@@ -265,51 +268,52 @@ var HierarchicalTree = (0, _mobxReact.observer)(function (_ref) {
|
|
|
265
268
|
|
|
266
269
|
case 1:
|
|
267
270
|
if (!(i < tree.children.length)) {
|
|
268
|
-
_context.next =
|
|
271
|
+
_context.next = 8;
|
|
269
272
|
break;
|
|
270
273
|
}
|
|
271
274
|
|
|
272
|
-
|
|
273
|
-
|
|
275
|
+
r = tree.children[i];
|
|
276
|
+
_context.next = 5;
|
|
277
|
+
return getNodeData(r, 0, extra);
|
|
274
278
|
|
|
275
|
-
case
|
|
279
|
+
case 5:
|
|
276
280
|
i++;
|
|
277
281
|
_context.next = 1;
|
|
278
282
|
break;
|
|
279
283
|
|
|
280
|
-
case
|
|
284
|
+
case 8:
|
|
281
285
|
if (!true) {
|
|
282
|
-
_context.next =
|
|
286
|
+
_context.next = 22;
|
|
283
287
|
break;
|
|
284
288
|
}
|
|
285
289
|
|
|
286
|
-
_context.next =
|
|
290
|
+
_context.next = 11;
|
|
287
291
|
return;
|
|
288
292
|
|
|
289
|
-
case
|
|
293
|
+
case 11:
|
|
290
294
|
parentMeta = _context.sent;
|
|
291
295
|
_i = 0;
|
|
292
296
|
|
|
293
|
-
case
|
|
297
|
+
case 13:
|
|
294
298
|
if (!(_i < parentMeta.node.children.length)) {
|
|
295
|
-
_context.next =
|
|
299
|
+
_context.next = 20;
|
|
296
300
|
break;
|
|
297
301
|
}
|
|
298
302
|
|
|
299
303
|
curr = parentMeta.node.children[_i];
|
|
300
|
-
_context.next =
|
|
304
|
+
_context.next = 17;
|
|
301
305
|
return getNodeData(curr, parentMeta.nestingLevel + 1, extra);
|
|
302
306
|
|
|
303
|
-
case
|
|
307
|
+
case 17:
|
|
304
308
|
_i++;
|
|
305
|
-
_context.next =
|
|
309
|
+
_context.next = 13;
|
|
306
310
|
break;
|
|
307
311
|
|
|
308
|
-
case
|
|
309
|
-
_context.next =
|
|
312
|
+
case 20:
|
|
313
|
+
_context.next = 8;
|
|
310
314
|
break;
|
|
311
315
|
|
|
312
|
-
case
|
|
316
|
+
case 22:
|
|
313
317
|
case "end":
|
|
314
318
|
return _context.stop();
|
|
315
319
|
}
|
|
@@ -319,6 +323,7 @@ var HierarchicalTree = (0, _mobxReact.observer)(function (_ref) {
|
|
|
319
323
|
var conf = info === null || info === void 0 ? void 0 : info.conf;
|
|
320
324
|
var menuItems = conf && ((_session$getTrackActi = session.getTrackActionMenuItems) === null || _session$getTrackActi === void 0 ? void 0 : _session$getTrackActi.call(session, conf)) || [];
|
|
321
325
|
(0, _react.useEffect)(function () {
|
|
326
|
+
// @ts-ignore
|
|
322
327
|
treeRef.current.recomputeTree({
|
|
323
328
|
refreshNodes: true,
|
|
324
329
|
useDefaultHeight: true
|
|
@@ -387,17 +392,18 @@ var HierarchicalTrackSelectorContainer = (0, _mobxReact.observer)(function (_ref
|
|
|
387
392
|
setAnchorEl(null);
|
|
388
393
|
}
|
|
389
394
|
|
|
395
|
+
var hasConnections = (0, _util.isSessionModelWithConnections)(session);
|
|
396
|
+
var hasAddTrack = (0, _util.isSessionWithAddTracks)(session);
|
|
390
397
|
return /*#__PURE__*/_react.default.createElement(Wrapper, {
|
|
391
398
|
overrideDimensions: overrideDimensions
|
|
392
399
|
}, /*#__PURE__*/_react.default.createElement(HierarchicalTrackSelector, {
|
|
393
400
|
model: model,
|
|
394
|
-
toolbarHeight: toolbarHeight
|
|
395
|
-
|
|
396
|
-
}), session.addConnectionConf || session.addTrackConf ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Fab, {
|
|
401
|
+
toolbarHeight: toolbarHeight
|
|
402
|
+
}), hasAddTrack || hasConnections ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Fab, {
|
|
397
403
|
color: "secondary",
|
|
398
404
|
className: classes.fab,
|
|
399
405
|
onClick: function onClick(event) {
|
|
400
|
-
setAnchorEl(event.currentTarget);
|
|
406
|
+
return setAnchorEl(event.currentTarget);
|
|
401
407
|
}
|
|
402
408
|
}, /*#__PURE__*/_react.default.createElement(_Add.default, null)), /*#__PURE__*/_react.default.createElement(_core.Menu, {
|
|
403
409
|
anchorEl: anchorEl,
|
|
@@ -405,19 +411,23 @@ var HierarchicalTrackSelectorContainer = (0, _mobxReact.observer)(function (_ref
|
|
|
405
411
|
onClose: function onClose() {
|
|
406
412
|
return setAnchorEl(null);
|
|
407
413
|
}
|
|
408
|
-
},
|
|
414
|
+
}, hasConnections ? /*#__PURE__*/_react.default.createElement(_core.MenuItem, {
|
|
409
415
|
onClick: function onClick() {
|
|
410
416
|
handleFabClose();
|
|
411
|
-
|
|
412
|
-
|
|
417
|
+
|
|
418
|
+
if ((0, _util.isSessionModelWithWidgets)(session)) {
|
|
419
|
+
session.showWidget(session.addWidget('AddConnectionWidget', 'addConnectionWidget'));
|
|
420
|
+
}
|
|
413
421
|
}
|
|
414
|
-
}, "Add connection") : null,
|
|
422
|
+
}, "Add connection") : null, hasAddTrack ? /*#__PURE__*/_react.default.createElement(_core.MenuItem, {
|
|
415
423
|
onClick: function onClick() {
|
|
416
424
|
handleFabClose();
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
425
|
+
|
|
426
|
+
if ((0, _util.isSessionModelWithWidgets)(session)) {
|
|
427
|
+
session.showWidget(session.addWidget('AddTrackWidget', 'addTrackWidget', {
|
|
428
|
+
view: model.view.id
|
|
429
|
+
}));
|
|
430
|
+
}
|
|
421
431
|
}
|
|
422
432
|
}, "Add track") : null)) : null);
|
|
423
433
|
});
|
|
@@ -463,7 +473,8 @@ var HierarchicalTrackSelectorHeader = (0, _mobxReact.observer)(function (_ref6)
|
|
|
463
473
|
var assemblyName = assemblyNames[assemblyIdx];
|
|
464
474
|
|
|
465
475
|
function breakConnection(connectionConf, deletingConnection) {
|
|
466
|
-
var name = (0, _configuration.readConfObject)(connectionConf, 'name');
|
|
476
|
+
var name = (0, _configuration.readConfObject)(connectionConf, 'name'); // @ts-ignore
|
|
477
|
+
|
|
467
478
|
var result = session.prepareToBreakConnection(connectionConf);
|
|
468
479
|
|
|
469
480
|
if (result) {
|
|
@@ -498,11 +509,14 @@ var HierarchicalTrackSelectorHeader = (0, _mobxReact.observer)(function (_ref6)
|
|
|
498
509
|
}
|
|
499
510
|
}];
|
|
500
511
|
|
|
501
|
-
if (
|
|
512
|
+
if ((0, _util.isSessionModelWithConnections)(session)) {
|
|
502
513
|
connectionMenuItems.unshift({
|
|
503
514
|
label: 'Add connection',
|
|
504
515
|
onClick: function onClick() {
|
|
505
|
-
|
|
516
|
+
if ((0, _util.isSessionModelWithWidgets)(session)) {
|
|
517
|
+
var widget = session.addWidget('AddConnectionWidget', 'addConnectionWidget');
|
|
518
|
+
session.showWidget(widget);
|
|
519
|
+
}
|
|
506
520
|
}
|
|
507
521
|
});
|
|
508
522
|
connectionMenuItems.push({
|
|
@@ -519,7 +533,7 @@ var HierarchicalTrackSelectorHeader = (0, _mobxReact.observer)(function (_ref6)
|
|
|
519
533
|
return {
|
|
520
534
|
label: name,
|
|
521
535
|
onClick: function onClick() {
|
|
522
|
-
setAssemblyIdx(idx);
|
|
536
|
+
return setAssemblyIdx(idx);
|
|
523
537
|
}
|
|
524
538
|
};
|
|
525
539
|
})
|
|
@@ -527,9 +541,12 @@ var HierarchicalTrackSelectorHeader = (0, _mobxReact.observer)(function (_ref6)
|
|
|
527
541
|
var menuItems = [{
|
|
528
542
|
label: 'Add track...',
|
|
529
543
|
onClick: function onClick() {
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
544
|
+
if ((0, _util.isSessionModelWithWidgets)(session)) {
|
|
545
|
+
var widget = session.addWidget('AddTrackWidget', 'addTrackWidget', {
|
|
546
|
+
view: model.view.id
|
|
547
|
+
});
|
|
548
|
+
session.showWidget(widget);
|
|
549
|
+
}
|
|
533
550
|
}
|
|
534
551
|
}].concat(assemblyMenuItems);
|
|
535
552
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -541,15 +558,15 @@ var HierarchicalTrackSelectorHeader = (0, _mobxReact.observer)(function (_ref6)
|
|
|
541
558
|
style: {
|
|
542
559
|
display: 'flex'
|
|
543
560
|
}
|
|
544
|
-
}, session
|
|
561
|
+
}, (0, _util.isSessionWithAddTracks)(session) && /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
545
562
|
className: classes.menuIcon,
|
|
546
563
|
onClick: function onClick(event) {
|
|
547
|
-
setMenuAnchorEl(event.currentTarget);
|
|
564
|
+
return setMenuAnchorEl(event.currentTarget);
|
|
548
565
|
}
|
|
549
566
|
}, /*#__PURE__*/_react.default.createElement(_Menu.default, null)), session.makeConnection && /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
550
567
|
className: classes.menuIcon,
|
|
551
568
|
onClick: function onClick(event) {
|
|
552
|
-
setConnectionAnchorEl(event.currentTarget);
|
|
569
|
+
return setConnectionAnchorEl(event.currentTarget);
|
|
553
570
|
}
|
|
554
571
|
}, /*#__PURE__*/_react.default.createElement(_Icons.Cable, null)), /*#__PURE__*/_react.default.createElement(_core.TextField, {
|
|
555
572
|
className: classes.searchBox,
|
|
@@ -593,8 +610,7 @@ var HierarchicalTrackSelectorHeader = (0, _mobxReact.observer)(function (_ref6)
|
|
|
593
610
|
fallback: /*#__PURE__*/_react.default.createElement("div", null)
|
|
594
611
|
}, modalInfo ? /*#__PURE__*/_react.default.createElement(CloseConnectionDialog, {
|
|
595
612
|
modalInfo: modalInfo,
|
|
596
|
-
setModalInfo: setModalInfo
|
|
597
|
-
session: session
|
|
613
|
+
setModalInfo: setModalInfo
|
|
598
614
|
}) : deleteDialogDetails ? /*#__PURE__*/_react.default.createElement(DeleteConnectionDialog, {
|
|
599
615
|
handleClose: function handleClose() {
|
|
600
616
|
return setDeleteDialogDetails(undefined);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
2
3
|
import { AbstractSessionModel } from '@jbrowse/core/util';
|
|
3
4
|
declare function ManageConnectionsDlg({ session, handleClose, breakConnection, }: {
|
|
4
5
|
handleClose: () => void;
|
|
5
6
|
session: AbstractSessionModel;
|
|
6
|
-
breakConnection:
|
|
7
|
+
breakConnection: (conf: AnyConfigurationModel, arg: boolean) => void;
|
|
7
8
|
}): JSX.Element;
|
|
8
9
|
declare const _default: typeof ManageConnectionsDlg;
|
|
9
10
|
export default _default;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
2
3
|
import { AbstractSessionModel } from '@jbrowse/core/util';
|
|
3
4
|
declare function ToggleConnectionDialog({ session, handleClose, assemblyName, breakConnection, }: {
|
|
4
5
|
handleClose: () => void;
|
|
5
6
|
session: AbstractSessionModel;
|
|
6
7
|
assemblyName: string;
|
|
7
|
-
breakConnection:
|
|
8
|
+
breakConnection: (arg: AnyConfigurationModel) => void;
|
|
8
9
|
}): JSX.Element;
|
|
9
10
|
declare const _default: typeof ToggleConnectionDialog;
|
|
10
11
|
export default _default;
|
|
@@ -39,7 +39,8 @@ function ToggleConnectionDialog(_ref) {
|
|
|
39
39
|
breakConnection = _ref.breakConnection;
|
|
40
40
|
var classes = useStyles();
|
|
41
41
|
var connections = session.connections,
|
|
42
|
-
|
|
42
|
+
_session$connectionIn = session.connectionInstances,
|
|
43
|
+
instances = _session$connectionIn === void 0 ? [] : _session$connectionIn;
|
|
43
44
|
var assemblySpecificConnections = connections.filter(function (c) {
|
|
44
45
|
var configAssemblyNames = (0, _configuration.readConfObject)(c, 'assemblyNames');
|
|
45
46
|
|
|
@@ -62,17 +63,15 @@ function ToggleConnectionDialog(_ref) {
|
|
|
62
63
|
className: classes.connectionContainer
|
|
63
64
|
}, assemblySpecificConnections.map(function (conf) {
|
|
64
65
|
var name = (0, _configuration.readConfObject)(conf, 'name');
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
66
|
+
var found = instances.find(function (conn) {
|
|
67
|
+
return name === conn.name;
|
|
68
|
+
});
|
|
69
|
+
return /*#__PURE__*/_react.default.createElement(_core.FormControlLabel, {
|
|
70
|
+
key: conf.connectionId,
|
|
68
71
|
control: /*#__PURE__*/_react.default.createElement(_core.Checkbox, {
|
|
69
|
-
checked: !!
|
|
70
|
-
return name === conn.name;
|
|
71
|
-
})),
|
|
72
|
+
checked: !!found,
|
|
72
73
|
onChange: function onChange() {
|
|
73
|
-
if (
|
|
74
|
-
return conn.name === (0, _configuration.readConfObject)(conf, 'name');
|
|
75
|
-
})) {
|
|
74
|
+
if (found) {
|
|
76
75
|
breakConnection(conf);
|
|
77
76
|
} else {
|
|
78
77
|
var _session$makeConnecti;
|
|
@@ -83,7 +82,7 @@ function ToggleConnectionDialog(_ref) {
|
|
|
83
82
|
color: "primary"
|
|
84
83
|
}),
|
|
85
84
|
label: name
|
|
86
|
-
})
|
|
85
|
+
});
|
|
87
86
|
}), !assemblySpecificConnections.length ? /*#__PURE__*/_react.default.createElement(_core.Typography, null, "No connections found for ", assemblyName) : null)), /*#__PURE__*/_react.default.createElement(_core.DialogActions, null, /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
88
87
|
onClick: function onClick() {
|
|
89
88
|
return handleClose();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as stateModelFactory } from
|
|
2
|
-
export const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
1
|
+
export { default as stateModelFactory } from './model';
|
|
2
|
+
export declare const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
@@ -1,37 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Instance } from 'mobx-state-tree';
|
|
2
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
4
|
+
import { AbstractView } from 'react';
|
|
5
|
+
export declare type TreeNode = {
|
|
6
|
+
name: string;
|
|
7
|
+
id: string;
|
|
8
|
+
conf?: AnyConfigurationModel;
|
|
9
|
+
checked?: boolean;
|
|
10
|
+
isOpenByDefault?: boolean;
|
|
11
|
+
children: TreeNode[];
|
|
12
|
+
};
|
|
13
|
+
export declare function generateHierarchy(model: HierarchicalTrackSelectorModel, trackConfigurations: AnyConfigurationModel[], collapsed: {
|
|
14
|
+
get: (arg: string) => boolean | undefined;
|
|
15
|
+
}): TreeNode[];
|
|
16
|
+
export default function stateTreeFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
|
|
3
17
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
4
18
|
type: import("mobx-state-tree").ISimpleType<"HierarchicalTrackSelectorWidget">;
|
|
5
19
|
collapsed: import("mobx-state-tree").IMapType<import("mobx-state-tree").ISimpleType<boolean>>;
|
|
6
20
|
filterText: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
7
|
-
view: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<
|
|
21
|
+
view: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
|
|
8
22
|
}, {
|
|
9
|
-
setView(view:
|
|
10
|
-
toggleCategory(pathName:
|
|
23
|
+
setView(view: AbstractView): void;
|
|
24
|
+
toggleCategory(pathName: string): void;
|
|
11
25
|
clearFilterText(): void;
|
|
12
|
-
setFilterText(newText:
|
|
26
|
+
setFilterText(newText: string): void;
|
|
13
27
|
} & {
|
|
14
|
-
getRefSeqTrackConf(assemblyName:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
28
|
+
getRefSeqTrackConf(assemblyName: string): any;
|
|
29
|
+
} & {
|
|
30
|
+
trackConfigurations(assemblyName: string): any[];
|
|
31
|
+
readonly assemblyNames: string[];
|
|
32
|
+
connectionTrackConfigurations(assemblyName: string, connection: {
|
|
33
|
+
tracks: AnyConfigurationModel[];
|
|
34
|
+
}): (import("mobx-state-tree").ModelInstanceTypeProps<Record<string, any>> & {
|
|
35
|
+
setSubschema(slotName: string, data: unknown): any;
|
|
36
|
+
} & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
|
|
37
|
+
} & {
|
|
38
|
+
hierarchy(assemblyName: string): {
|
|
19
39
|
name: string;
|
|
20
40
|
id: string;
|
|
21
41
|
children: ({
|
|
22
42
|
id: any;
|
|
23
43
|
name: any;
|
|
24
|
-
children:
|
|
44
|
+
children: TreeNode[];
|
|
25
45
|
state: {
|
|
26
46
|
expanded: boolean;
|
|
27
47
|
};
|
|
28
48
|
} | {
|
|
29
49
|
name: string;
|
|
30
50
|
id: string;
|
|
31
|
-
children:
|
|
51
|
+
children: TreeNode[];
|
|
32
52
|
})[];
|
|
33
53
|
};
|
|
34
|
-
connectionHierarchy(assemblyName:
|
|
35
|
-
|
|
54
|
+
connectionHierarchy(assemblyName: string, connection: {
|
|
55
|
+
tracks: AnyConfigurationModel[];
|
|
56
|
+
}): TreeNode[];
|
|
36
57
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
37
|
-
export
|
|
58
|
+
export declare type HierarchicalTrackSelectorStateModel = ReturnType<typeof stateTreeFactory>;
|
|
59
|
+
export declare type HierarchicalTrackSelectorModel = Instance<HierarchicalTrackSelectorStateModel>;
|