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.
@@ -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
- gap: 0.75rem;
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|logfc|l2fc)_attr_([a-z])$",
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"