gramene-search 2.0.4 → 2.0.6
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/.claude/settings.local.json +4 -1
- package/.parcel-cache/83e7562660f7cc15-BundleGraph +0 -0
- package/.parcel-cache/d3a1b9507cb44047-AssetGraph +0 -0
- package/.parcel-cache/data.mdb +0 -0
- package/.parcel-cache/dc1da35000e13623-RequestGraph +0 -0
- package/.parcel-cache/lock.mdb +0 -0
- package/.parcel-cache/snapshot-dc1da35000e13623.txt +2 -2
- package/dist/index.css +174 -57
- package/dist/index.css.map +1 -1
- package/dist/index.js +710 -252
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/bundles/api.js +33 -26
- package/src/bundles/exporter.js +4 -1
- package/src/bundles/swaggerFields.js +18 -6
- package/src/bundles/views.js +12 -0
- package/src/components/exporter/expressionResolver.js +2 -2
- package/src/components/exprViz/ExprTable.js +257 -101
- package/src/components/exprViz/ExprVizView.js +151 -7
- package/src/components/exprViz/FieldsModal.js +45 -18
- package/src/components/exprViz/ParallelCoordsPlot.js +99 -6
- package/src/components/exprViz/styles.css +211 -56
- package/src/fieldCatalog.overlay.json +1 -1
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
flex-direction: column;
|
|
12
12
|
gap: 0.5rem;
|
|
13
13
|
padding: 0.5rem 0;
|
|
14
|
+
/* Constrain children so the grid scrolls internally instead of bleeding
|
|
15
|
+
* out and forcing the page to scroll horizontally. */
|
|
16
|
+
min-width: 0;
|
|
17
|
+
overflow: hidden;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
.exprviz-toolbar {
|
|
@@ -19,6 +23,59 @@
|
|
|
19
23
|
gap: 0.5rem;
|
|
20
24
|
}
|
|
21
25
|
|
|
26
|
+
/* Host applications (e.g. sorghum-webapp) sometimes ship global stylesheets
|
|
27
|
+
* that override `.btn` / `.btn-sm` with `!important` — fat padding, custom
|
|
28
|
+
* font-weight, transformed text — which leaves our toolbar buttons at
|
|
29
|
+
* inconsistent sizes (since plain `<Button>` and `<ToggleButton>` inside a
|
|
30
|
+
* `<ToggleButtonGroup>` pick up different rules). Re-state Bootstrap 5's
|
|
31
|
+
* small-button metrics here with higher specificity and `!important`, scoped
|
|
32
|
+
* to `.exprviz-toolbar`, so the toolbar always looks the same regardless of
|
|
33
|
+
* what the host's theme does. */
|
|
34
|
+
.exprviz-toolbar .btn,
|
|
35
|
+
.exprviz-toolbar .btn.btn-sm,
|
|
36
|
+
.exprviz-toolbar .btn-group > .btn,
|
|
37
|
+
.exprviz-toolbar .btn-group > .btn.btn-sm,
|
|
38
|
+
.exprviz-toolbar .btn-group-sm > .btn,
|
|
39
|
+
.exprviz-toolbar label.btn {
|
|
40
|
+
padding: 0.25rem 0.5rem !important;
|
|
41
|
+
font-size: 0.875rem !important;
|
|
42
|
+
line-height: 1.5 !important;
|
|
43
|
+
font-weight: 400 !important;
|
|
44
|
+
text-transform: none !important;
|
|
45
|
+
letter-spacing: normal !important;
|
|
46
|
+
height: auto !important;
|
|
47
|
+
min-height: 0 !important;
|
|
48
|
+
border-radius: 0.2rem !important;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Restore the squared-off inner edges within a ToggleButtonGroup. */
|
|
52
|
+
.exprviz-toolbar .btn-group > .btn:not(:first-child):not(:last-child),
|
|
53
|
+
.exprviz-toolbar .btn-group > .btn:not(:first-child):not(:last-child).btn-sm {
|
|
54
|
+
border-radius: 0 !important;
|
|
55
|
+
}
|
|
56
|
+
.exprviz-toolbar .btn-group > .btn:first-child:not(:last-child),
|
|
57
|
+
.exprviz-toolbar .btn-group > .btn:first-child:not(:last-child).btn-sm {
|
|
58
|
+
border-top-right-radius: 0 !important;
|
|
59
|
+
border-bottom-right-radius: 0 !important;
|
|
60
|
+
}
|
|
61
|
+
.exprviz-toolbar .btn-group > .btn:last-child:not(:first-child),
|
|
62
|
+
.exprviz-toolbar .btn-group > .btn:last-child:not(:first-child).btn-sm {
|
|
63
|
+
border-top-left-radius: 0 !important;
|
|
64
|
+
border-bottom-left-radius: 0 !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.exprviz-toolbar .btn-group {
|
|
68
|
+
vertical-align: middle;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Same idea for the status text — host stylesheets sometimes restyle
|
|
72
|
+
* <span>s in unexpected ways. */
|
|
73
|
+
.exprviz-toolbar .exprviz-status {
|
|
74
|
+
font-weight: 400 !important;
|
|
75
|
+
text-transform: none !important;
|
|
76
|
+
letter-spacing: normal !important;
|
|
77
|
+
}
|
|
78
|
+
|
|
22
79
|
.exprviz-status {
|
|
23
80
|
color: #666;
|
|
24
81
|
font-size: 0.85rem;
|
|
@@ -38,13 +95,45 @@
|
|
|
38
95
|
.exprviz-body {
|
|
39
96
|
display: flex;
|
|
40
97
|
flex-direction: column;
|
|
41
|
-
|
|
98
|
+
min-width: 0;
|
|
99
|
+
overflow: hidden;
|
|
42
100
|
}
|
|
43
101
|
|
|
44
102
|
.exprviz-plot {
|
|
45
|
-
height: 320px;
|
|
46
103
|
border: 1px solid #ddd;
|
|
47
104
|
background: #fff;
|
|
105
|
+
min-height: 120px;
|
|
106
|
+
overflow: hidden;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.exprviz-resizer {
|
|
110
|
+
height: 8px;
|
|
111
|
+
margin: 2px 0;
|
|
112
|
+
background: #f0f0f0;
|
|
113
|
+
border-top: 1px solid #ddd;
|
|
114
|
+
border-bottom: 1px solid #ddd;
|
|
115
|
+
cursor: row-resize;
|
|
116
|
+
flex: none;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.exprviz-resizer::before {
|
|
120
|
+
content: '';
|
|
121
|
+
display: block;
|
|
122
|
+
width: 36px;
|
|
123
|
+
height: 2px;
|
|
124
|
+
background: #aaa;
|
|
125
|
+
border-radius: 1px;
|
|
126
|
+
margin: 3px auto;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.exprviz-resizer:hover,
|
|
130
|
+
.exprviz-resizer:active {
|
|
131
|
+
background: #e0e8f5;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.exprviz-resizer:hover::before,
|
|
135
|
+
.exprviz-resizer:active::before {
|
|
136
|
+
background: #2a6ebb;
|
|
48
137
|
}
|
|
49
138
|
|
|
50
139
|
.exprviz-pc-container {
|
|
@@ -94,13 +183,133 @@
|
|
|
94
183
|
color: #888;
|
|
95
184
|
}
|
|
96
185
|
|
|
186
|
+
.exprviz-pc-tooltip {
|
|
187
|
+
position: fixed;
|
|
188
|
+
z-index: 1000;
|
|
189
|
+
background: #fff;
|
|
190
|
+
border: 1px solid #bbb;
|
|
191
|
+
border-radius: 3px;
|
|
192
|
+
box-shadow: 0 2px 6px rgba(0,0,0,0.15);
|
|
193
|
+
padding: 6px 8px;
|
|
194
|
+
font-size: 0.78rem;
|
|
195
|
+
line-height: 1.35;
|
|
196
|
+
max-width: 360px;
|
|
197
|
+
pointer-events: none;
|
|
198
|
+
color: #222;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.exprviz-pc-tip-section {
|
|
202
|
+
margin-top: 4px;
|
|
203
|
+
font-size: 0.72rem;
|
|
204
|
+
letter-spacing: 0.04em;
|
|
205
|
+
text-transform: uppercase;
|
|
206
|
+
color: #888;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.exprviz-pc-tip-row {
|
|
210
|
+
margin-left: 0.4rem;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.exprviz-pc-tip-key {
|
|
214
|
+
font-weight: 600;
|
|
215
|
+
}
|
|
216
|
+
|
|
97
217
|
.exprviz-table {
|
|
98
218
|
height: 480px;
|
|
219
|
+
min-width: 0;
|
|
220
|
+
overflow: hidden;
|
|
99
221
|
}
|
|
100
222
|
|
|
101
223
|
.exprviz-aggrid {
|
|
102
224
|
width: 100%;
|
|
103
225
|
height: 100%;
|
|
226
|
+
/* Block the browser's edge-of-scroll back/forward gesture when the user
|
|
227
|
+
* scrolls all the way left or right inside the grid. */
|
|
228
|
+
overscroll-behavior-x: contain;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* ag-grid's scrolling viewports — make sure the back/forward gesture is
|
|
232
|
+
* contained at every level, not just on our outer wrapper. */
|
|
233
|
+
.exprviz-aggrid .ag-body-viewport,
|
|
234
|
+
.exprviz-aggrid .ag-body-horizontal-scroll-viewport,
|
|
235
|
+
.exprviz-aggrid .ag-center-cols-viewport {
|
|
236
|
+
overscroll-behavior-x: contain;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* Group-header rows: subtle tinting so each metadata level reads as a band.
|
|
240
|
+
* The :first-of-type column-group rule covers the topmost (study) row. */
|
|
241
|
+
.exprviz-aggrid .ag-header-group-cell {
|
|
242
|
+
font-size: 0.78rem;
|
|
243
|
+
border-right: 1px solid #e0e0e0;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.exprviz-aggrid .ag-header-group-cell-label {
|
|
247
|
+
white-space: nowrap;
|
|
248
|
+
overflow: hidden;
|
|
249
|
+
text-overflow: ellipsis;
|
|
250
|
+
padding: 0 6px;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.exprviz-aggrid .exprviz-hg-factors {
|
|
254
|
+
background: #eef6ff;
|
|
255
|
+
color: #1e3a5f;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.exprviz-aggrid .exprviz-hg-chars {
|
|
259
|
+
background: #f5f5f0;
|
|
260
|
+
color: #4a4a30;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.exprviz-aggrid .exprviz-hg-collapsed {
|
|
264
|
+
font-style: italic;
|
|
265
|
+
color: #666;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* The label cells stacked above the Gene ID and Name columns — Study/Title,
|
|
269
|
+
* every Factor/<factor type> row, every Characteristic/<char type> row,
|
|
270
|
+
* and the collapsed-section placeholders — are rendered via the
|
|
271
|
+
* LabelHeaderGroup / ToggleHeaderGroup React components. Both render a
|
|
272
|
+
* full-width div that right-aligns its content, so the alignment is
|
|
273
|
+
* baked into the component DOM and doesn't depend on overriding
|
|
274
|
+
* ag-grid's internal CSS. The leaf cells ("Gene ID" / "Name") are not
|
|
275
|
+
* wrapped in these components and keep ag-grid's default left alignment. */
|
|
276
|
+
.exprviz-label-header {
|
|
277
|
+
width: 100%;
|
|
278
|
+
height: 100%;
|
|
279
|
+
display: flex;
|
|
280
|
+
align-items: center;
|
|
281
|
+
justify-content: flex-end;
|
|
282
|
+
text-align: right;
|
|
283
|
+
padding-right: 6px;
|
|
284
|
+
white-space: nowrap;
|
|
285
|
+
overflow: hidden;
|
|
286
|
+
text-overflow: ellipsis;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.exprviz-toggle-header {
|
|
290
|
+
cursor: pointer;
|
|
291
|
+
user-select: none;
|
|
292
|
+
display: flex;
|
|
293
|
+
align-items: center;
|
|
294
|
+
justify-content: flex-end;
|
|
295
|
+
width: 100%;
|
|
296
|
+
padding-right: 6px;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.exprviz-toggle-header:hover {
|
|
300
|
+
color: #2a6ebb;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.exprviz-toggle-caret {
|
|
304
|
+
display: inline-block;
|
|
305
|
+
width: 0.9em;
|
|
306
|
+
font-size: 0.75em;
|
|
307
|
+
color: #888;
|
|
308
|
+
margin-right: 2px;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.exprviz-toggle-header:hover .exprviz-toggle-caret {
|
|
312
|
+
color: #2a6ebb;
|
|
104
313
|
}
|
|
105
314
|
|
|
106
315
|
.exprviz-fields-layout {
|
|
@@ -260,57 +469,3 @@
|
|
|
260
469
|
background: #fafaff;
|
|
261
470
|
}
|
|
262
471
|
|
|
263
|
-
.exprviz-header {
|
|
264
|
-
display: flex;
|
|
265
|
-
align-items: center;
|
|
266
|
-
width: 100%;
|
|
267
|
-
gap: 4px;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
.exprviz-header-text {
|
|
271
|
-
flex: 1;
|
|
272
|
-
overflow: hidden;
|
|
273
|
-
text-overflow: ellipsis;
|
|
274
|
-
white-space: nowrap;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
.exprviz-header-sort {
|
|
278
|
-
margin-left: 2px;
|
|
279
|
-
font-size: 0.8em;
|
|
280
|
-
color: #666;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
.exprviz-header-info {
|
|
284
|
-
cursor: help;
|
|
285
|
-
color: #2a6ebb;
|
|
286
|
-
font-size: 0.95em;
|
|
287
|
-
flex: none;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
.exprviz-header-menu {
|
|
291
|
-
cursor: pointer;
|
|
292
|
-
flex: none;
|
|
293
|
-
opacity: 0.7;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
.exprviz-header-menu:hover {
|
|
297
|
-
opacity: 1;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
.exprviz-header-popover {
|
|
301
|
-
max-width: 360px;
|
|
302
|
-
font-size: 0.85rem;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
.exprviz-header-popover ul {
|
|
306
|
-
margin: 0.25rem 0 0 0;
|
|
307
|
-
padding-left: 1rem;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
.exprviz-header-popover li {
|
|
311
|
-
margin: 0;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
.exprviz-header-section {
|
|
315
|
-
margin-top: 0.4rem;
|
|
316
|
-
}
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"id": "diffexpr",
|
|
56
|
-
"match": "^(E[-_][A-Za-z0-9_-]+?)_g(\\d+)_g(\\d+)_(pval|
|
|
56
|
+
"match": "^(E[-_][A-Za-z0-9_-]+?)_g(\\d+)_g(\\d+)_(pval|l2fc)_attr_([a-z])$",
|
|
57
57
|
"group": "differential",
|
|
58
58
|
"diffExpression": true,
|
|
59
59
|
"labelTemplate": "$1 · g$2 vs g$3 · $4"
|