@jbrowse/plugin-wiggle 2.5.0 → 2.6.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/BigWigAdapter/BigWigAdapter.js +2 -1
- package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/dist/CreateMultiWiggleExtension/ConfirmDialog.d.ts +2 -1
- package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +2 -1
- package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +2 -1
- package/dist/LinearWiggleDisplay/index.js +27 -4
- package/dist/LinearWiggleDisplay/index.js.map +1 -1
- package/dist/LinearWiggleDisplay/models/configSchema.d.ts +18 -35
- package/dist/LinearWiggleDisplay/models/configSchema.js +6 -67
- package/dist/LinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/dist/LinearWiggleDisplay/models/model.d.ts +147 -342
- package/dist/LinearWiggleDisplay/models/model.js +17 -432
- package/dist/LinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/LinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/dist/LinearWiggleDisplay/models/renderSvg.js +21 -0
- package/dist/LinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/dist/MultiDensityRenderer/MultiDensityRenderer.js +1 -1
- package/dist/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -1
- package/dist/MultiLineRenderer/MultiLineRenderer.js +1 -1
- package/dist/MultiLineRenderer/MultiLineRenderer.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/DraggableDialog.d.ts +2 -1
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +2 -1
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +2 -2
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +3 -2
- package/dist/MultiLinearWiggleDisplay/index.js +25 -2
- package/dist/MultiLinearWiggleDisplay/index.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/configSchema.d.ts +24 -44
- package/dist/MultiLinearWiggleDisplay/models/configSchema.js +6 -66
- package/dist/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/model.d.ts +263 -175
- package/dist/MultiLinearWiggleDisplay/models/model.js +335 -508
- package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/dist/MultiLinearWiggleDisplay/models/renderSvg.js +20 -0
- package/dist/MultiLinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +1 -1
- package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -1
- package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +1 -1
- package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -1
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +2 -1
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +1 -1
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -1
- package/dist/MultiWiggleRendering.d.ts +2 -1
- package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +3 -2
- package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -1
- package/dist/Tooltip.d.ts +1 -1
- package/dist/WiggleBaseRenderer.d.ts +1 -1
- package/dist/WiggleRendering.d.ts +2 -1
- package/dist/index.d.ts +222 -198
- package/dist/shared/SetMinMaxDialog.d.ts +2 -1
- package/dist/shared/YScaleBar.d.ts +4 -2
- package/dist/shared/YScaleBar.js +1 -1
- package/dist/shared/YScaleBar.js.map +1 -1
- package/dist/shared/configShared.d.ts +85 -0
- package/dist/shared/configShared.js +84 -0
- package/dist/shared/configShared.js.map +1 -0
- package/dist/shared/modelShared.d.ts +576 -0
- package/dist/shared/modelShared.js +480 -0
- package/dist/shared/modelShared.js.map +1 -0
- package/dist/util.d.ts +0 -3
- package/dist/util.js +1 -11
- package/dist/util.js.map +1 -1
- package/esm/BigWigAdapter/BigWigAdapter.js +2 -1
- package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/esm/CreateMultiWiggleExtension/ConfirmDialog.d.ts +2 -1
- package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +2 -1
- package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +2 -1
- package/esm/LinearWiggleDisplay/index.js +2 -2
- package/esm/LinearWiggleDisplay/index.js.map +1 -1
- package/esm/LinearWiggleDisplay/models/configSchema.d.ts +18 -35
- package/esm/LinearWiggleDisplay/models/configSchema.js +3 -67
- package/esm/LinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/esm/LinearWiggleDisplay/models/model.d.ts +147 -342
- package/esm/LinearWiggleDisplay/models/model.js +20 -435
- package/esm/LinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/LinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/esm/LinearWiggleDisplay/models/renderSvg.js +14 -0
- package/esm/LinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/esm/MultiDensityRenderer/MultiDensityRenderer.js +1 -1
- package/esm/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -1
- package/esm/MultiLineRenderer/MultiLineRenderer.js +1 -1
- package/esm/MultiLineRenderer/MultiLineRenderer.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/DraggableDialog.d.ts +2 -1
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +2 -1
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +1 -1
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +3 -2
- package/esm/MultiLinearWiggleDisplay/index.js +2 -2
- package/esm/MultiLinearWiggleDisplay/index.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/configSchema.d.ts +24 -44
- package/esm/MultiLinearWiggleDisplay/models/configSchema.js +3 -66
- package/esm/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/model.d.ts +263 -175
- package/esm/MultiLinearWiggleDisplay/models/model.js +337 -512
- package/esm/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/esm/MultiLinearWiggleDisplay/models/renderSvg.js +13 -0
- package/esm/MultiLinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +1 -1
- package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -1
- package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +1 -1
- package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -1
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +2 -1
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +1 -1
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -1
- package/esm/MultiWiggleRendering.d.ts +2 -1
- package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +2 -1
- package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -1
- package/esm/Tooltip.d.ts +1 -1
- package/esm/WiggleBaseRenderer.d.ts +1 -1
- package/esm/WiggleRendering.d.ts +2 -1
- package/esm/index.d.ts +222 -198
- package/esm/shared/SetMinMaxDialog.d.ts +2 -1
- package/esm/shared/YScaleBar.d.ts +4 -2
- package/esm/shared/YScaleBar.js +1 -1
- package/esm/shared/YScaleBar.js.map +1 -1
- package/esm/shared/configShared.d.ts +85 -0
- package/esm/shared/configShared.js +81 -0
- package/esm/shared/configShared.js.map +1 -0
- package/esm/shared/modelShared.d.ts +576 -0
- package/esm/shared/modelShared.js +454 -0
- package/esm/shared/modelShared.js.map +1 -0
- package/esm/util.d.ts +0 -3
- package/esm/util.js +0 -9
- package/esm/util.js.map +1 -1
- package/package.json +3 -3
- package/src/BigWigAdapter/BigWigAdapter.ts +2 -4
- package/src/LinearWiggleDisplay/index.ts +2 -2
- package/src/LinearWiggleDisplay/models/configSchema.ts +4 -73
- package/src/LinearWiggleDisplay/models/model.tsx +22 -503
- package/src/LinearWiggleDisplay/models/renderSvg.tsx +29 -0
- package/src/MultiDensityRenderer/MultiDensityRenderer.ts +1 -2
- package/src/MultiLineRenderer/MultiLineRenderer.ts +1 -2
- package/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx +1 -1
- package/src/MultiLinearWiggleDisplay/index.ts +2 -2
- package/src/MultiLinearWiggleDisplay/models/configSchema.ts +4 -72
- package/src/MultiLinearWiggleDisplay/models/model.tsx +132 -371
- package/src/MultiLinearWiggleDisplay/models/renderSvg.tsx +26 -0
- package/src/MultiRowLineRenderer/MultiRowLineRenderer.ts +1 -2
- package/src/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.ts +1 -2
- package/src/MultiWiggleAddTrackWidget/AddTrackWorkflow.tsx +1 -1
- package/src/MultiXYPlotRenderer/MultiXYPlotRenderer.ts +2 -2
- package/src/shared/YScaleBar.tsx +4 -2
- package/src/shared/configShared.ts +90 -0
- package/src/shared/modelShared.ts +510 -0
- package/src/util.ts +1 -10
|
@@ -26,7 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
|
|
29
|
+
exports.stateModelFactory = void 0;
|
|
30
|
+
const react_1 = require("react");
|
|
30
31
|
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
31
32
|
const mobx_1 = require("mobx");
|
|
32
33
|
const react_d3_axis_mod_1 = require("react-d3-axis-mod");
|
|
@@ -36,14 +37,12 @@ const configuration_1 = require("@jbrowse/core/configuration");
|
|
|
36
37
|
const util_1 = require("@jbrowse/core/util");
|
|
37
38
|
const tracks_1 = require("@jbrowse/core/util/tracks");
|
|
38
39
|
const colors_1 = require("@jbrowse/core/ui/colors");
|
|
39
|
-
const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
|
|
40
40
|
// locals
|
|
41
41
|
const util_2 = require("../../util");
|
|
42
42
|
const Tooltip_1 = __importDefault(require("../components/Tooltip"));
|
|
43
|
-
const
|
|
44
|
-
const randomColor = () => '#000000'.
|
|
45
|
-
//
|
|
46
|
-
const SetMinMaxDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../../shared/SetMinMaxDialog'))));
|
|
43
|
+
const modelShared_1 = __importDefault(require("../../shared/modelShared"));
|
|
44
|
+
const randomColor = () => '#000000'.replaceAll('0', () => (~~(Math.random() * 16)).toString(16));
|
|
45
|
+
// lazies
|
|
47
46
|
const SetColorDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../components/SetColorDialog'))));
|
|
48
47
|
// using a map because it preserves order
|
|
49
48
|
const rendererTypes = new Map([
|
|
@@ -53,531 +52,359 @@ const rendererTypes = new Map([
|
|
|
53
52
|
['multiline', 'MultiLineRenderer'],
|
|
54
53
|
['multirowline', 'MultiRowLineRenderer'],
|
|
55
54
|
]);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
statsFetchInProgress: undefined,
|
|
83
|
-
featureUnderMouseVolatile: undefined,
|
|
84
|
-
sourcesVolatile: undefined,
|
|
85
|
-
}))
|
|
86
|
-
.actions(self => ({
|
|
87
|
-
setLayout(layout) {
|
|
88
|
-
self.layout = layout;
|
|
89
|
-
},
|
|
90
|
-
clearLayout() {
|
|
91
|
-
self.layout = [];
|
|
92
|
-
},
|
|
93
|
-
updateQuantitativeStats(stats) {
|
|
94
|
-
const { scoreMin, scoreMax } = stats;
|
|
95
|
-
const EPSILON = 0.000001;
|
|
96
|
-
if (!self.stats) {
|
|
97
|
-
self.stats = { scoreMin, scoreMax };
|
|
98
|
-
}
|
|
99
|
-
else if (Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||
|
|
100
|
-
Math.abs(self.stats.scoreMin - scoreMin) > EPSILON) {
|
|
101
|
-
self.stats = { scoreMin, scoreMax };
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
setSources(sources) {
|
|
105
|
-
if (!(0, fast_deep_equal_1.default)(sources, self.sourcesVolatile)) {
|
|
106
|
-
self.sourcesVolatile = sources;
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
setColor(color) {
|
|
110
|
-
self.color = color;
|
|
111
|
-
},
|
|
112
|
-
setPosColor(color) {
|
|
113
|
-
self.posColor = color;
|
|
114
|
-
},
|
|
115
|
-
setNegColor(color) {
|
|
116
|
-
self.negColor = color;
|
|
117
|
-
},
|
|
118
|
-
setLoading(aborter) {
|
|
119
|
-
const { statsFetchInProgress: statsFetch } = self;
|
|
120
|
-
if (statsFetch !== undefined && !statsFetch.signal.aborted) {
|
|
121
|
-
statsFetch.abort();
|
|
122
|
-
}
|
|
123
|
-
self.statsFetchInProgress = aborter;
|
|
124
|
-
},
|
|
125
|
-
// this overrides the BaseLinearDisplayModel to avoid popping up a
|
|
126
|
-
// feature detail display, but still sets the feature selection on the
|
|
127
|
-
// model so listeners can detect a click
|
|
128
|
-
selectFeature(feature) {
|
|
129
|
-
const session = (0, util_1.getSession)(self);
|
|
130
|
-
if ((0, util_1.isSelectionContainer)(session)) {
|
|
131
|
-
session.setSelection(feature);
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
setFeatureUnderMouse(f) {
|
|
135
|
-
self.featureUnderMouseVolatile = f;
|
|
136
|
-
},
|
|
137
|
-
setResolution(res) {
|
|
138
|
-
self.resolution = res;
|
|
139
|
-
},
|
|
140
|
-
setFill(fill) {
|
|
141
|
-
if (fill === 0) {
|
|
142
|
-
self.fill = true;
|
|
143
|
-
self.minSize = 0;
|
|
144
|
-
}
|
|
145
|
-
else if (fill === 1) {
|
|
146
|
-
self.fill = false;
|
|
147
|
-
self.minSize = 1;
|
|
148
|
-
}
|
|
149
|
-
else if (fill === 2) {
|
|
150
|
-
self.fill = false;
|
|
151
|
-
self.minSize = 2;
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
toggleLogScale() {
|
|
155
|
-
self.scale = self.scale === 'log' ? 'linear' : 'log';
|
|
156
|
-
},
|
|
157
|
-
setScaleType(scale) {
|
|
158
|
-
self.scale = scale;
|
|
159
|
-
},
|
|
160
|
-
setSummaryScoreMode(val) {
|
|
161
|
-
self.summaryScoreMode = val;
|
|
162
|
-
},
|
|
163
|
-
setAutoscale(val) {
|
|
164
|
-
self.autoscale = val;
|
|
165
|
-
},
|
|
166
|
-
setMaxScore(val) {
|
|
167
|
-
self.constraints.max = val;
|
|
168
|
-
},
|
|
169
|
-
setRendererType(val) {
|
|
170
|
-
self.rendererTypeNameState = val;
|
|
171
|
-
},
|
|
172
|
-
setMinScore(val) {
|
|
173
|
-
self.constraints.min = val;
|
|
174
|
-
},
|
|
175
|
-
toggleCrossHatches() {
|
|
176
|
-
self.displayCrossHatches = !self.displayCrossHatches;
|
|
177
|
-
},
|
|
178
|
-
setCrossHatches(cross) {
|
|
179
|
-
self.displayCrossHatches = cross;
|
|
180
|
-
},
|
|
181
|
-
}))
|
|
182
|
-
.views(self => ({
|
|
183
|
-
get featureUnderMouse() {
|
|
184
|
-
return self.featureUnderMouseVolatile;
|
|
185
|
-
},
|
|
186
|
-
get TooltipComponent() {
|
|
187
|
-
return Tooltip_1.default;
|
|
188
|
-
},
|
|
189
|
-
get adapterTypeName() {
|
|
190
|
-
return self.adapterConfig.type;
|
|
191
|
-
},
|
|
192
|
-
get rendererTypeNameSimple() {
|
|
193
|
-
return self.rendererTypeNameState || (0, configuration_1.getConf)(self, 'defaultRendering');
|
|
194
|
-
},
|
|
195
|
-
get rendererTypeName() {
|
|
196
|
-
const name = this.rendererTypeNameSimple;
|
|
197
|
-
const rendererType = rendererTypes.get(name);
|
|
198
|
-
if (!rendererType) {
|
|
199
|
-
throw new Error(`unknown renderer ${name}`);
|
|
200
|
-
}
|
|
201
|
-
return rendererType;
|
|
202
|
-
},
|
|
203
|
-
// subclasses can define these, as snpcoverage track does
|
|
204
|
-
get filters() {
|
|
205
|
-
return undefined;
|
|
206
|
-
},
|
|
207
|
-
get scaleType() {
|
|
208
|
-
var _a;
|
|
209
|
-
return (_a = self.scale) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'scaleType');
|
|
210
|
-
},
|
|
211
|
-
get maxScore() {
|
|
212
|
-
var _a;
|
|
213
|
-
return (_a = self.constraints.max) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'maxScore');
|
|
214
|
-
},
|
|
215
|
-
get minScore() {
|
|
216
|
-
var _a;
|
|
217
|
-
return (_a = self.constraints.min) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'minScore');
|
|
218
|
-
},
|
|
219
|
-
}))
|
|
220
|
-
.views(self => ({
|
|
221
|
-
get rendererConfig() {
|
|
222
|
-
const configBlob = (0, configuration_1.getConf)(self, ['renderers', self.rendererTypeName]) || {};
|
|
223
|
-
const { color, displayCrossHatches, fill, minSize, negColor, posColor, summaryScoreMode, scaleType, } = self;
|
|
224
|
-
return self.rendererType.configSchema.create({
|
|
225
|
-
...configBlob,
|
|
226
|
-
...(scaleType ? { scaleType } : {}),
|
|
227
|
-
...(fill !== undefined ? { filled: fill } : {}),
|
|
228
|
-
...(displayCrossHatches !== undefined
|
|
229
|
-
? { displayCrossHatches }
|
|
230
|
-
: {}),
|
|
231
|
-
...(summaryScoreMode !== undefined ? { summaryScoreMode } : {}),
|
|
232
|
-
...(color !== undefined ? { color } : {}),
|
|
233
|
-
...(negColor !== undefined ? { negColor } : {}),
|
|
234
|
-
...(posColor !== undefined ? { posColor } : {}),
|
|
235
|
-
...(minSize !== undefined ? { minSize } : {}),
|
|
236
|
-
}, (0, util_1.getEnv)(self));
|
|
237
|
-
},
|
|
238
|
-
}))
|
|
239
|
-
.views(self => ({
|
|
240
|
-
// everything except density gets a numerical scalebar
|
|
241
|
-
get needsScalebar() {
|
|
242
|
-
return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
|
|
243
|
-
self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
|
|
244
|
-
self.rendererTypeName === 'MultiLineRenderer' ||
|
|
245
|
-
self.rendererTypeName === 'MultiRowLineRenderer');
|
|
246
|
-
},
|
|
247
|
-
get needsFullHeightScalebar() {
|
|
248
|
-
return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
|
|
249
|
-
self.rendererTypeName === 'MultiLineRenderer');
|
|
250
|
-
},
|
|
251
|
-
get isMultiRow() {
|
|
252
|
-
return (self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
|
|
253
|
-
self.rendererTypeName === 'MultiRowLineRenderer' ||
|
|
254
|
-
self.rendererTypeName === 'MultiDensityRenderer');
|
|
255
|
-
},
|
|
256
|
-
// can be used to give it a "color scale" like a R heatmap, not
|
|
257
|
-
// implemented like this yet but flag can be used for this
|
|
258
|
-
get needsCustomLegend() {
|
|
259
|
-
return self.rendererTypeName === 'MultiDensityRenderer';
|
|
260
|
-
},
|
|
261
|
-
get canHaveFill() {
|
|
262
|
-
return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
|
|
263
|
-
self.rendererTypeName === 'MultiRowXYPlotRenderer');
|
|
264
|
-
},
|
|
265
|
-
// the multirowxy and multiline don't need to use colors on the legend
|
|
266
|
-
// boxes since their track is drawn with the color. sort of a stylistic choice
|
|
267
|
-
get renderColorBoxes() {
|
|
268
|
-
return !(self.rendererTypeName === 'MultiRowLineRenderer' ||
|
|
269
|
-
self.rendererTypeName === 'MultiRowXYPlotRenderer');
|
|
270
|
-
},
|
|
271
|
-
// positions multi-row below the tracklabel even if using overlap
|
|
272
|
-
// tracklabels for everything else
|
|
273
|
-
get prefersOffset() {
|
|
274
|
-
return this.isMultiRow;
|
|
275
|
-
},
|
|
276
|
-
get sources() {
|
|
277
|
-
var _a;
|
|
278
|
-
const sources = Object.fromEntries(((_a = self.sourcesVolatile) === null || _a === void 0 ? void 0 : _a.map(s => [s.name, s])) || []);
|
|
279
|
-
const iter = self.layout.length ? self.layout : self.sourcesVolatile;
|
|
280
|
-
return iter === null || iter === void 0 ? void 0 : iter.map(s => ({
|
|
281
|
-
...sources[s.name],
|
|
282
|
-
...s,
|
|
283
|
-
})).map((s, i) => ({
|
|
284
|
-
...s,
|
|
285
|
-
color: s.color ||
|
|
286
|
-
(!this.isMultiRow ? colors_1.set1[i] || randomColor() : 'blue'),
|
|
287
|
-
}));
|
|
288
|
-
},
|
|
289
|
-
}))
|
|
290
|
-
.views(self => {
|
|
291
|
-
let oldDomain = [0, 0];
|
|
292
|
-
return {
|
|
293
|
-
get filled() {
|
|
294
|
-
const { fill, rendererConfig } = self;
|
|
295
|
-
return fill !== null && fill !== void 0 ? fill : (0, configuration_1.readConfObject)(rendererConfig, 'filled');
|
|
55
|
+
/**
|
|
56
|
+
* #stateModel MultiLinearWiggleDisplay
|
|
57
|
+
* extends `SharedWiggleMixin`
|
|
58
|
+
*/
|
|
59
|
+
function stateModelFactory(pluginManager, configSchema) {
|
|
60
|
+
return mobx_state_tree_1.types
|
|
61
|
+
.compose('MultiLinearWiggleDisplay', (0, modelShared_1.default)(configSchema), mobx_state_tree_1.types.model({
|
|
62
|
+
/**
|
|
63
|
+
* #property
|
|
64
|
+
*/
|
|
65
|
+
type: mobx_state_tree_1.types.literal('MultiLinearWiggleDisplay'),
|
|
66
|
+
/**
|
|
67
|
+
* #property
|
|
68
|
+
*/
|
|
69
|
+
layout: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.frozen(), []),
|
|
70
|
+
}))
|
|
71
|
+
.volatile(() => ({
|
|
72
|
+
featureUnderMouseVolatile: undefined,
|
|
73
|
+
sourcesVolatile: undefined,
|
|
74
|
+
}))
|
|
75
|
+
.actions(self => ({
|
|
76
|
+
/**
|
|
77
|
+
* #action
|
|
78
|
+
*/
|
|
79
|
+
setLayout(layout) {
|
|
80
|
+
self.layout = layout;
|
|
296
81
|
},
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
82
|
+
/**
|
|
83
|
+
* #action
|
|
84
|
+
*/
|
|
85
|
+
clearLayout() {
|
|
86
|
+
self.layout = [];
|
|
300
87
|
},
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
const ret = (0, util_2.getNiceDomain)({
|
|
308
|
-
domain: [scoreMin, scoreMax],
|
|
309
|
-
bounds: [minScore, maxScore],
|
|
310
|
-
scaleType,
|
|
311
|
-
});
|
|
312
|
-
// avoid weird scalebar if log value and empty region displayed
|
|
313
|
-
if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {
|
|
314
|
-
return [0, Number.MIN_VALUE];
|
|
88
|
+
/**
|
|
89
|
+
* #action
|
|
90
|
+
*/
|
|
91
|
+
setSources(sources) {
|
|
92
|
+
if (!(0, fast_deep_equal_1.default)(sources, self.sourcesVolatile)) {
|
|
93
|
+
self.sourcesVolatile = sources;
|
|
315
94
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
95
|
+
},
|
|
96
|
+
/**
|
|
97
|
+
* #action
|
|
98
|
+
*/
|
|
99
|
+
setFeatureUnderMouse(f) {
|
|
100
|
+
self.featureUnderMouseVolatile = f;
|
|
101
|
+
},
|
|
102
|
+
}))
|
|
103
|
+
.views(self => ({
|
|
104
|
+
/**
|
|
105
|
+
* #getter
|
|
106
|
+
*/
|
|
107
|
+
get featureUnderMouse() {
|
|
108
|
+
return self.featureUnderMouseVolatile;
|
|
109
|
+
},
|
|
110
|
+
/**
|
|
111
|
+
* #getter
|
|
112
|
+
*/
|
|
113
|
+
get TooltipComponent() {
|
|
114
|
+
return Tooltip_1.default;
|
|
115
|
+
},
|
|
116
|
+
/**
|
|
117
|
+
* #getter
|
|
118
|
+
*/
|
|
119
|
+
get rendererTypeName() {
|
|
120
|
+
const name = self.rendererTypeNameSimple;
|
|
121
|
+
const rendererType = rendererTypes.get(name);
|
|
122
|
+
if (!rendererType) {
|
|
123
|
+
throw new Error(`unknown renderer ${name}`);
|
|
319
124
|
}
|
|
320
|
-
return
|
|
125
|
+
return rendererType;
|
|
321
126
|
},
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
127
|
+
}))
|
|
128
|
+
.views(self => ({
|
|
129
|
+
/**
|
|
130
|
+
* #getter
|
|
131
|
+
*/
|
|
132
|
+
get needsScalebar() {
|
|
133
|
+
return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
|
|
134
|
+
self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
|
|
135
|
+
self.rendererTypeName === 'MultiLineRenderer' ||
|
|
136
|
+
self.rendererTypeName === 'MultiRowLineRenderer');
|
|
331
137
|
},
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
138
|
+
/**
|
|
139
|
+
* #getter
|
|
140
|
+
*/
|
|
141
|
+
get needsFullHeightScalebar() {
|
|
142
|
+
return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
|
|
143
|
+
self.rendererTypeName === 'MultiLineRenderer');
|
|
144
|
+
},
|
|
145
|
+
/**
|
|
146
|
+
* #getter
|
|
147
|
+
*/
|
|
148
|
+
get isMultiRow() {
|
|
149
|
+
return (self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
|
|
150
|
+
self.rendererTypeName === 'MultiRowLineRenderer' ||
|
|
151
|
+
self.rendererTypeName === 'MultiDensityRenderer');
|
|
335
152
|
},
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
153
|
+
/**
|
|
154
|
+
* #getter
|
|
155
|
+
* can be used to give it a "color scale" like a R heatmap, not
|
|
156
|
+
* implemented like this yet but flag can be used for this
|
|
157
|
+
*/
|
|
158
|
+
get needsCustomLegend() {
|
|
159
|
+
return self.rendererTypeName === 'MultiDensityRenderer';
|
|
339
160
|
},
|
|
161
|
+
get canHaveFill() {
|
|
162
|
+
return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
|
|
163
|
+
self.rendererTypeName === 'MultiRowXYPlotRenderer');
|
|
164
|
+
},
|
|
165
|
+
/**
|
|
166
|
+
* #getter
|
|
167
|
+
* the multirowxy and multiline don't need to use colors on the legend
|
|
168
|
+
* boxes since their track is drawn with the color. sort of a stylistic
|
|
169
|
+
* choice
|
|
170
|
+
*/
|
|
171
|
+
get renderColorBoxes() {
|
|
172
|
+
return !(self.rendererTypeName === 'MultiRowLineRenderer' ||
|
|
173
|
+
self.rendererTypeName === 'MultiRowXYPlotRenderer');
|
|
174
|
+
},
|
|
175
|
+
/**
|
|
176
|
+
* #getter
|
|
177
|
+
* positions multi-row below the tracklabel even if using overlap
|
|
178
|
+
* tracklabels for everything else
|
|
179
|
+
*/
|
|
180
|
+
get prefersOffset() {
|
|
181
|
+
return this.isMultiRow;
|
|
182
|
+
},
|
|
183
|
+
/**
|
|
184
|
+
* #getter
|
|
185
|
+
*/
|
|
186
|
+
get sources() {
|
|
187
|
+
var _a;
|
|
188
|
+
const sources = Object.fromEntries(((_a = self.sourcesVolatile) === null || _a === void 0 ? void 0 : _a.map(s => [s.name, s])) || []);
|
|
189
|
+
const iter = self.layout.length ? self.layout : self.sourcesVolatile;
|
|
190
|
+
return iter === null || iter === void 0 ? void 0 : iter.map(s => ({
|
|
191
|
+
...sources[s.name],
|
|
192
|
+
...s,
|
|
193
|
+
})).map((s, i) => ({
|
|
194
|
+
...s,
|
|
195
|
+
color: s.color ||
|
|
196
|
+
(!this.isMultiRow ? colors_1.set1[i] || randomColor() : 'blue'),
|
|
197
|
+
}));
|
|
198
|
+
},
|
|
199
|
+
}))
|
|
200
|
+
.views(self => ({
|
|
201
|
+
/**
|
|
202
|
+
* #getter
|
|
203
|
+
*/
|
|
340
204
|
get rowHeight() {
|
|
341
205
|
const { sources, height, isMultiRow } = self;
|
|
342
206
|
return isMultiRow ? height / ((sources === null || sources === void 0 ? void 0 : sources.length) || 1) : height;
|
|
343
207
|
},
|
|
208
|
+
/**
|
|
209
|
+
* #getter
|
|
210
|
+
*/
|
|
344
211
|
get rowHeightTooSmallForScalebar() {
|
|
345
212
|
return this.rowHeight < 70;
|
|
346
213
|
},
|
|
214
|
+
/**
|
|
215
|
+
* #getter
|
|
216
|
+
*/
|
|
347
217
|
get useMinimalTicks() {
|
|
348
218
|
return ((0, configuration_1.getConf)(self, 'minimalTicks') || this.rowHeightTooSmallForScalebar);
|
|
349
219
|
},
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
const ticks = (0, react_d3_axis_mod_1.axisPropsFromTickScale)((0, util_2.getScale)({
|
|
360
|
-
scaleType,
|
|
361
|
-
domain,
|
|
362
|
-
range: [rowHeight - offset, offset],
|
|
363
|
-
inverted: (0, configuration_1.getConf)(self, 'inverted'),
|
|
364
|
-
}), 4);
|
|
365
|
-
return useMinimalTicks ? { ...ticks, values: domain } : ticks;
|
|
366
|
-
},
|
|
367
|
-
get colors() {
|
|
368
|
-
return [
|
|
369
|
-
'red',
|
|
370
|
-
'blue',
|
|
371
|
-
'green',
|
|
372
|
-
'orange',
|
|
373
|
-
'purple',
|
|
374
|
-
'cyan',
|
|
375
|
-
'pink',
|
|
376
|
-
'darkblue',
|
|
377
|
-
'darkred',
|
|
378
|
-
'pink',
|
|
379
|
-
];
|
|
380
|
-
},
|
|
381
|
-
get adapterCapabilities() {
|
|
382
|
-
const { adapterTypeName } = self;
|
|
383
|
-
return pluginManager.getAdapterType(adapterTypeName).adapterCapabilities;
|
|
384
|
-
},
|
|
385
|
-
}))
|
|
386
|
-
.views(self => {
|
|
387
|
-
const { renderProps: superRenderProps } = self;
|
|
388
|
-
return {
|
|
389
|
-
renderProps() {
|
|
390
|
-
const superProps = superRenderProps();
|
|
391
|
-
const { displayCrossHatches, filters, height, resolution, rpcDriverName, scaleOpts, stats, sources, ticks, rendererConfig: config, } = self;
|
|
392
|
-
return {
|
|
393
|
-
...superProps,
|
|
394
|
-
notReady: superProps.notReady || !sources || !stats,
|
|
395
|
-
displayModel: self,
|
|
396
|
-
config,
|
|
397
|
-
displayCrossHatches,
|
|
398
|
-
filters,
|
|
399
|
-
height,
|
|
400
|
-
resolution,
|
|
401
|
-
rpcDriverName,
|
|
402
|
-
scaleOpts,
|
|
403
|
-
sources,
|
|
404
|
-
ticks,
|
|
405
|
-
onMouseMove: (_, f) => self.setFeatureUnderMouse(f),
|
|
406
|
-
onMouseLeave: () => self.setFeatureUnderMouse(undefined),
|
|
407
|
-
};
|
|
408
|
-
},
|
|
409
|
-
get hasResolution() {
|
|
410
|
-
return self.adapterCapabilities.includes('hasResolution');
|
|
411
|
-
},
|
|
412
|
-
get hasGlobalStats() {
|
|
413
|
-
return self.adapterCapabilities.includes('hasGlobalStats');
|
|
414
|
-
},
|
|
415
|
-
get fillSetting() {
|
|
416
|
-
if (self.filled) {
|
|
417
|
-
return 0;
|
|
418
|
-
}
|
|
419
|
-
else if (!self.filled && self.minSize === 1) {
|
|
420
|
-
return 1;
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
return 2;
|
|
220
|
+
}))
|
|
221
|
+
.views(self => ({
|
|
222
|
+
/**
|
|
223
|
+
* #getter
|
|
224
|
+
*/
|
|
225
|
+
get ticks() {
|
|
226
|
+
const { scaleType, domain, isMultiRow, rowHeight, useMinimalTicks } = self;
|
|
227
|
+
if (!domain) {
|
|
228
|
+
return undefined;
|
|
424
229
|
}
|
|
230
|
+
const offset = isMultiRow ? 0 : util_2.YSCALEBAR_LABEL_OFFSET;
|
|
231
|
+
const ticks = (0, react_d3_axis_mod_1.axisPropsFromTickScale)((0, util_2.getScale)({
|
|
232
|
+
scaleType,
|
|
233
|
+
domain,
|
|
234
|
+
range: [rowHeight - offset, offset],
|
|
235
|
+
inverted: (0, configuration_1.getConf)(self, 'inverted'),
|
|
236
|
+
}), 4);
|
|
237
|
+
return useMinimalTicks ? { ...ticks, values: domain } : ticks;
|
|
425
238
|
},
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
const hasRenderings = (0, configuration_1.getConf)(self, 'defaultRendering');
|
|
431
|
-
return {
|
|
432
|
-
trackMenuItems() {
|
|
239
|
+
/**
|
|
240
|
+
* #getter
|
|
241
|
+
*/
|
|
242
|
+
get colors() {
|
|
433
243
|
return [
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
{
|
|
445
|
-
label: 'Coarser resolution',
|
|
446
|
-
onClick: () => self.setResolution(self.resolution / 5),
|
|
447
|
-
},
|
|
448
|
-
],
|
|
449
|
-
},
|
|
450
|
-
{
|
|
451
|
-
label: 'Summary score mode',
|
|
452
|
-
subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => ({
|
|
453
|
-
label: elt,
|
|
454
|
-
type: 'radio',
|
|
455
|
-
checked: self.summaryScoreModeSetting === elt,
|
|
456
|
-
onClick: () => self.setSummaryScoreMode(elt),
|
|
457
|
-
})),
|
|
458
|
-
},
|
|
459
|
-
]
|
|
460
|
-
: []),
|
|
461
|
-
...(self.canHaveFill
|
|
462
|
-
? [
|
|
463
|
-
{
|
|
464
|
-
label: 'Fill mode',
|
|
465
|
-
subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map((elt, idx) => ({
|
|
466
|
-
label: elt,
|
|
467
|
-
type: 'radio',
|
|
468
|
-
checked: self.fillSetting === idx,
|
|
469
|
-
onClick: () => self.setFill(idx),
|
|
470
|
-
})),
|
|
471
|
-
},
|
|
472
|
-
]
|
|
473
|
-
: []),
|
|
474
|
-
{
|
|
475
|
-
label: self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
|
|
476
|
-
onClick: () => self.toggleLogScale(),
|
|
477
|
-
},
|
|
478
|
-
...(self.needsScalebar
|
|
479
|
-
? [
|
|
480
|
-
{
|
|
481
|
-
type: 'checkbox',
|
|
482
|
-
label: 'Draw cross hatches',
|
|
483
|
-
checked: self.displayCrossHatchesSetting,
|
|
484
|
-
onClick: () => self.toggleCrossHatches(),
|
|
485
|
-
},
|
|
486
|
-
]
|
|
487
|
-
: []),
|
|
488
|
-
...(hasRenderings
|
|
489
|
-
? [
|
|
490
|
-
{
|
|
491
|
-
label: 'Renderer type',
|
|
492
|
-
subMenu: [
|
|
493
|
-
'xyplot',
|
|
494
|
-
'multirowxy',
|
|
495
|
-
'multirowdensity',
|
|
496
|
-
'multiline',
|
|
497
|
-
'multirowline',
|
|
498
|
-
].map(key => ({
|
|
499
|
-
label: key,
|
|
500
|
-
type: 'radio',
|
|
501
|
-
checked: self.rendererTypeNameSimple === key,
|
|
502
|
-
onClick: () => self.setRendererType(key),
|
|
503
|
-
})),
|
|
504
|
-
},
|
|
505
|
-
]
|
|
506
|
-
: []),
|
|
507
|
-
{
|
|
508
|
-
label: 'Autoscale type',
|
|
509
|
-
subMenu: [
|
|
510
|
-
['local', 'Local'],
|
|
511
|
-
...(self.hasGlobalStats
|
|
512
|
-
? [
|
|
513
|
-
['global', 'Global'],
|
|
514
|
-
['globalsd', 'Global ± 3σ'],
|
|
515
|
-
]
|
|
516
|
-
: []),
|
|
517
|
-
['localsd', 'Local ± 3σ'],
|
|
518
|
-
].map(([val, label]) => {
|
|
519
|
-
return {
|
|
520
|
-
label,
|
|
521
|
-
type: 'radio',
|
|
522
|
-
checked: self.autoscaleType === val,
|
|
523
|
-
onClick: () => self.setAutoscale(val),
|
|
524
|
-
};
|
|
525
|
-
}),
|
|
526
|
-
},
|
|
527
|
-
{
|
|
528
|
-
label: 'Set min/max score...',
|
|
529
|
-
onClick: () => {
|
|
530
|
-
const session = (0, util_1.getSession)(self);
|
|
531
|
-
session.queueDialog(handleClose => [
|
|
532
|
-
SetMinMaxDlg,
|
|
533
|
-
{ model: self, handleClose },
|
|
534
|
-
]);
|
|
535
|
-
},
|
|
536
|
-
},
|
|
537
|
-
{
|
|
538
|
-
label: 'Edit colors/arrangement...',
|
|
539
|
-
onClick: () => {
|
|
540
|
-
(0, util_1.getSession)(self).queueDialog(handleClose => [
|
|
541
|
-
SetColorDlg,
|
|
542
|
-
{ model: self, handleClose },
|
|
543
|
-
]);
|
|
544
|
-
},
|
|
545
|
-
},
|
|
244
|
+
'red',
|
|
245
|
+
'blue',
|
|
246
|
+
'green',
|
|
247
|
+
'orange',
|
|
248
|
+
'purple',
|
|
249
|
+
'cyan',
|
|
250
|
+
'pink',
|
|
251
|
+
'darkblue',
|
|
252
|
+
'darkred',
|
|
253
|
+
'pink',
|
|
546
254
|
];
|
|
547
255
|
},
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
256
|
+
}))
|
|
257
|
+
.views(self => {
|
|
258
|
+
const { renderProps: superRenderProps } = self;
|
|
259
|
+
return {
|
|
260
|
+
/**
|
|
261
|
+
* #method
|
|
262
|
+
*/
|
|
263
|
+
renderProps() {
|
|
264
|
+
const superProps = superRenderProps();
|
|
265
|
+
const { displayCrossHatches, filters, height, resolution, rpcDriverName, scaleOpts, stats, sources, ticks, rendererConfig: config, } = self;
|
|
266
|
+
return {
|
|
267
|
+
...superProps,
|
|
268
|
+
notReady: superProps.notReady || !sources || !stats,
|
|
269
|
+
displayModel: self,
|
|
270
|
+
config,
|
|
271
|
+
displayCrossHatches,
|
|
272
|
+
filters,
|
|
273
|
+
height,
|
|
274
|
+
resolution,
|
|
275
|
+
rpcDriverName,
|
|
276
|
+
scaleOpts,
|
|
277
|
+
sources,
|
|
278
|
+
ticks,
|
|
279
|
+
onMouseMove: (_, f) => self.setFeatureUnderMouse(f),
|
|
280
|
+
onMouseLeave: () => self.setFeatureUnderMouse(undefined),
|
|
281
|
+
};
|
|
282
|
+
},
|
|
283
|
+
/**
|
|
284
|
+
* #getter
|
|
285
|
+
*/
|
|
286
|
+
get hasResolution() {
|
|
287
|
+
return self.adapterCapabilities.includes('hasResolution');
|
|
288
|
+
},
|
|
289
|
+
/**
|
|
290
|
+
* #getter
|
|
291
|
+
*/
|
|
292
|
+
get hasGlobalStats() {
|
|
293
|
+
return self.adapterCapabilities.includes('hasGlobalStats');
|
|
294
|
+
},
|
|
295
|
+
/**
|
|
296
|
+
* #getter
|
|
297
|
+
*/
|
|
298
|
+
get fillSetting() {
|
|
299
|
+
if (self.filled) {
|
|
300
|
+
return 0;
|
|
569
301
|
}
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
302
|
+
else if (!self.filled && self.minSize === 1) {
|
|
303
|
+
return 1;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
return 2;
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
})
|
|
311
|
+
.views(self => {
|
|
312
|
+
const { trackMenuItems: superTrackMenuItems } = self;
|
|
313
|
+
const hasRenderings = (0, configuration_1.getConf)(self, 'defaultRendering');
|
|
314
|
+
return {
|
|
315
|
+
/**
|
|
316
|
+
* #method
|
|
317
|
+
*/
|
|
318
|
+
trackMenuItems() {
|
|
319
|
+
return [
|
|
320
|
+
...superTrackMenuItems(),
|
|
321
|
+
{
|
|
322
|
+
label: 'Score',
|
|
323
|
+
subMenu: self.scoreTrackMenuItems(),
|
|
324
|
+
},
|
|
325
|
+
...(self.canHaveFill
|
|
326
|
+
? [
|
|
327
|
+
{
|
|
328
|
+
label: 'Fill mode',
|
|
329
|
+
subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map((elt, idx) => ({
|
|
330
|
+
label: elt,
|
|
331
|
+
type: 'radio',
|
|
332
|
+
checked: self.fillSetting === idx,
|
|
333
|
+
onClick: () => self.setFill(idx),
|
|
334
|
+
})),
|
|
335
|
+
},
|
|
336
|
+
]
|
|
337
|
+
: []),
|
|
338
|
+
...(self.needsScalebar
|
|
339
|
+
? [
|
|
340
|
+
{
|
|
341
|
+
type: 'checkbox',
|
|
342
|
+
label: 'Draw cross hatches',
|
|
343
|
+
checked: self.displayCrossHatchesSetting,
|
|
344
|
+
onClick: () => self.toggleCrossHatches(),
|
|
345
|
+
},
|
|
346
|
+
]
|
|
347
|
+
: []),
|
|
348
|
+
...(hasRenderings
|
|
349
|
+
? [
|
|
350
|
+
{
|
|
351
|
+
label: 'Renderer type',
|
|
352
|
+
subMenu: [
|
|
353
|
+
'xyplot',
|
|
354
|
+
'multirowxy',
|
|
355
|
+
'multirowdensity',
|
|
356
|
+
'multiline',
|
|
357
|
+
'multirowline',
|
|
358
|
+
].map(key => ({
|
|
359
|
+
label: key,
|
|
360
|
+
type: 'radio',
|
|
361
|
+
checked: self.rendererTypeNameSimple === key,
|
|
362
|
+
onClick: () => self.setRendererType(key),
|
|
363
|
+
})),
|
|
364
|
+
},
|
|
365
|
+
]
|
|
366
|
+
: []),
|
|
367
|
+
{
|
|
368
|
+
label: 'Edit colors/arrangement...',
|
|
369
|
+
onClick: () => {
|
|
370
|
+
(0, util_1.getSession)(self).queueDialog(handleClose => [
|
|
371
|
+
SetColorDlg,
|
|
372
|
+
{ model: self, handleClose },
|
|
373
|
+
]);
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
];
|
|
377
|
+
},
|
|
378
|
+
};
|
|
379
|
+
})
|
|
380
|
+
.actions(self => {
|
|
381
|
+
const { renderSvg: superRenderSvg } = self;
|
|
382
|
+
return {
|
|
383
|
+
afterAttach() {
|
|
384
|
+
(0, util_2.quantitativeStatsAutorun)(self);
|
|
385
|
+
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(async () => {
|
|
386
|
+
const { rpcManager } = (0, util_1.getSession)(self);
|
|
387
|
+
const { adapterConfig } = self;
|
|
388
|
+
const sessionId = (0, tracks_1.getRpcSessionId)(self);
|
|
389
|
+
const sources = (await rpcManager.call(sessionId, 'MultiWiggleGetSources', {
|
|
390
|
+
sessionId,
|
|
391
|
+
adapterConfig,
|
|
392
|
+
}));
|
|
393
|
+
if ((0, mobx_state_tree_1.isAlive)(self)) {
|
|
394
|
+
self.setSources(sources);
|
|
395
|
+
}
|
|
396
|
+
}));
|
|
397
|
+
},
|
|
398
|
+
/**
|
|
399
|
+
* #action
|
|
400
|
+
*/
|
|
401
|
+
async renderSvg(opts) {
|
|
402
|
+
const { renderSvg } = await Promise.resolve().then(() => __importStar(require('./renderSvg')));
|
|
403
|
+
return renderSvg(self, opts, superRenderSvg);
|
|
404
|
+
},
|
|
405
|
+
};
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
exports.stateModelFactory = stateModelFactory;
|
|
582
409
|
exports.default = stateModelFactory;
|
|
583
410
|
//# sourceMappingURL=model.js.map
|