genelastic 0.8.0__py3-none-any.whl → 0.10.0__py3-none-any.whl

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.
Files changed (85) hide show
  1. genelastic/api/.env +4 -0
  2. genelastic/api/cli_start_api.py +2 -2
  3. genelastic/api/errors.py +52 -0
  4. genelastic/api/extends/example.py +0 -6
  5. genelastic/api/extends/example.yml +0 -20
  6. genelastic/api/routes.py +313 -181
  7. genelastic/api/server.py +8 -3
  8. genelastic/api/specification.yml +343 -181
  9. genelastic/common/__init__.py +0 -44
  10. genelastic/common/cli.py +52 -11
  11. genelastic/common/elastic.py +374 -46
  12. genelastic/common/exceptions.py +34 -2
  13. genelastic/common/server.py +9 -1
  14. genelastic/common/types.py +1 -14
  15. genelastic/import_data/__init__.py +0 -27
  16. genelastic/import_data/checker.py +99 -0
  17. genelastic/import_data/checker_observer.py +13 -0
  18. genelastic/import_data/cli/__init__.py +0 -0
  19. genelastic/import_data/cli/cli_check.py +135 -0
  20. genelastic/import_data/{cli_gen_data.py → cli/gen_data.py} +4 -4
  21. genelastic/import_data/cli/import_data.py +345 -0
  22. genelastic/import_data/cli/info.py +246 -0
  23. genelastic/import_data/{cli_integrity.py → cli/integrity.py} +29 -8
  24. genelastic/import_data/cli/validate.py +146 -0
  25. genelastic/import_data/collect.py +185 -0
  26. genelastic/import_data/constants.py +136 -11
  27. genelastic/import_data/import_bundle.py +102 -59
  28. genelastic/import_data/import_bundle_factory.py +70 -149
  29. genelastic/import_data/importers/__init__.py +0 -0
  30. genelastic/import_data/importers/importer_base.py +136 -0
  31. genelastic/import_data/importers/importer_factory.py +85 -0
  32. genelastic/import_data/importers/importer_types.py +234 -0
  33. genelastic/import_data/logger.py +2 -1
  34. genelastic/import_data/models/__init__.py +0 -0
  35. genelastic/import_data/models/analyses.py +178 -0
  36. genelastic/import_data/models/analysis.py +144 -0
  37. genelastic/import_data/models/data_file.py +110 -0
  38. genelastic/import_data/models/process.py +45 -0
  39. genelastic/import_data/models/processes.py +84 -0
  40. genelastic/import_data/models/tags.py +170 -0
  41. genelastic/import_data/models/unique_list.py +109 -0
  42. genelastic/import_data/models/validate.py +26 -0
  43. genelastic/import_data/patterns.py +90 -0
  44. genelastic/import_data/random_bundle.py +10 -8
  45. genelastic/import_data/resolve.py +157 -0
  46. genelastic/ui/.env +1 -0
  47. genelastic/ui/cli_start_ui.py +4 -2
  48. genelastic/ui/routes.py +289 -42
  49. genelastic/ui/static/cea-cnrgh.ico +0 -0
  50. genelastic/ui/static/cea.ico +0 -0
  51. genelastic/ui/static/layout.ico +0 -0
  52. genelastic/ui/static/novaseq6000.png +0 -0
  53. genelastic/ui/static/style.css +430 -0
  54. genelastic/ui/static/ui.js +458 -0
  55. genelastic/ui/templates/analyses.html +96 -9
  56. genelastic/ui/templates/analysis_detail.html +44 -0
  57. genelastic/ui/templates/bi_process_detail.html +129 -0
  58. genelastic/ui/templates/bi_processes.html +114 -9
  59. genelastic/ui/templates/explorer.html +356 -0
  60. genelastic/ui/templates/home.html +205 -2
  61. genelastic/ui/templates/layout.html +148 -29
  62. genelastic/ui/templates/version.html +19 -7
  63. genelastic/ui/templates/wet_process_detail.html +131 -0
  64. genelastic/ui/templates/wet_processes.html +114 -9
  65. genelastic-0.10.0.dist-info/METADATA +686 -0
  66. genelastic-0.10.0.dist-info/RECORD +76 -0
  67. {genelastic-0.8.0.dist-info → genelastic-0.10.0.dist-info}/WHEEL +1 -2
  68. genelastic-0.10.0.dist-info/entry_points.txt +10 -0
  69. genelastic-0.10.0.dist-info/licenses/LICENSE +519 -0
  70. genelastic/import_data/analyses.py +0 -69
  71. genelastic/import_data/analysis.py +0 -205
  72. genelastic/import_data/bi_process.py +0 -27
  73. genelastic/import_data/bi_processes.py +0 -49
  74. genelastic/import_data/cli_import.py +0 -379
  75. genelastic/import_data/cli_info.py +0 -256
  76. genelastic/import_data/cli_validate.py +0 -54
  77. genelastic/import_data/data_file.py +0 -87
  78. genelastic/import_data/filename_pattern.py +0 -57
  79. genelastic/import_data/tags.py +0 -123
  80. genelastic/import_data/wet_process.py +0 -28
  81. genelastic/import_data/wet_processes.py +0 -53
  82. genelastic-0.8.0.dist-info/METADATA +0 -109
  83. genelastic-0.8.0.dist-info/RECORD +0 -52
  84. genelastic-0.8.0.dist-info/entry_points.txt +0 -8
  85. genelastic-0.8.0.dist-info/top_level.txt +0 -1
@@ -0,0 +1,430 @@
1
+ .card-details {
2
+ max-width: 800px;
3
+ }
4
+
5
+ .filter-section {
6
+ margin-bottom: 3rem;
7
+ }
8
+
9
+ .filter-section h2 {
10
+ border-bottom: 3px solid #6c757d;
11
+ padding-bottom: 0.5rem;
12
+ margin-bottom: 1.5rem;
13
+ }
14
+
15
+ nav.navbar {
16
+ background-color: #E50019 !important;
17
+ }
18
+
19
+ .footer {
20
+ background-color: #E50019;
21
+ color: white;
22
+ font-size: 0.95rem;
23
+ letter-spacing: 0.03em;
24
+ border-top: 3px solid #E50019;
25
+ box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.05);
26
+ }
27
+
28
+ .form-check.form-switch {
29
+ padding-left: 1.5rem;
30
+ cursor: pointer;
31
+ user-select: none;
32
+ transition: background-color 0.2s ease;
33
+ border-radius: 0.4rem;
34
+ }
35
+
36
+ .form-check.form-switch:hover {
37
+ background-color: #f8f9fa;
38
+ }
39
+
40
+ .meta-toggle {
41
+ cursor: pointer;
42
+ }
43
+
44
+ .metadata-table {
45
+ transition: max-height 0.4s ease, opacity 0.4s ease;
46
+ }
47
+
48
+ .metadata-table.hide {
49
+ max-height: 0 !important;
50
+ opacity: 0;
51
+ overflow: hidden;
52
+ pointer-events: none;
53
+ margin: 0 !important;
54
+ padding: 0 !important;
55
+ }
56
+
57
+ .metadata-table.show {
58
+ max-height: 1000px;
59
+ opacity: 1;
60
+ pointer-events: auto;
61
+ }
62
+
63
+ table.table-hover tbody tr:hover {
64
+ background-color: #e9ecef;
65
+ }
66
+
67
+ .badge-primary {
68
+ background-color: #0d6efd;
69
+ font-weight: 600;
70
+ }
71
+
72
+ .card-header {
73
+ background-color: #3E4A83 !important;
74
+ color: white;
75
+ }
76
+
77
+
78
+ .btn-toggle-filters {
79
+ margin-bottom: 1rem;
80
+ }
81
+
82
+ .custom-card-body {
83
+ max-height: 320px;
84
+ overflow-y: auto;
85
+ "
86
+ }
87
+
88
+ .arrow-back-to-top {
89
+ bottom: 40px;
90
+ right: 40px;
91
+ display: none;
92
+ z-index: 1050;
93
+ width: 45px;
94
+ height: 45px;
95
+ border-radius: 50%;
96
+ padding: 0;
97
+ text-align: center;
98
+ font-size: 24px;
99
+ line-height: 45px;
100
+ }
101
+
102
+ .title {
103
+ letter-spacing: 0.05em;
104
+ text-transform: uppercase;
105
+ color: #1E1E1E !important;
106
+
107
+ }
108
+
109
+ .index-title {
110
+ letter-spacing: 0.03em;
111
+ color: #1E1E1E !important;
112
+ }
113
+
114
+
115
+ .toggle-group-btn {
116
+ min-width: 180px;
117
+ text-align: center;
118
+ border-radius: 0.5rem;
119
+ font-weight: 500;
120
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
121
+ transition: all 0.2s ease-in-out;
122
+ }
123
+
124
+ .toggle-group-btn:hover {
125
+ transform: translateY(-1px);
126
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
127
+ }
128
+
129
+ .chart-js-stats-button {
130
+ display: none;
131
+ }
132
+
133
+ .canvas {
134
+ display: none;
135
+ max-width: 300px;
136
+ max-height: 300px;
137
+ margin: 0 auto;
138
+ }
139
+
140
+ .chart-legend-scrollable {
141
+ margin-top: 1rem;
142
+ max-height: 150px;
143
+ overflow-y: auto;
144
+ width: 100%;
145
+ padding: 0 5px;
146
+ font-size: 0.875rem;
147
+ }
148
+
149
+ .chart-legend {
150
+ max-height: 300px;
151
+ overflow-y: auto;
152
+ font-size: 0.9rem;
153
+ min-width: 180px;
154
+ border-left: 1px solid #ddd;
155
+ padding-left: 10px;
156
+
157
+ }
158
+
159
+ .modal-overlay {
160
+ position: fixed;
161
+ top: 0;
162
+ left: 0;
163
+ width: 100vw;
164
+ height: 100vh;
165
+ background: rgba(0, 0, 0, 0.5);
166
+ backdrop-filter: blur(4px);
167
+ display: flex;
168
+ justify-content: center;
169
+ align-items: center;
170
+ z-index: 1050;
171
+ }
172
+
173
+ .modal-content {
174
+ background-color: white;
175
+ padding: 20px 25px 30px 25px;
176
+ border-radius: 8px;
177
+ width: 700px;
178
+ max-width: 90vw;
179
+ max-height: 400px;
180
+ display: flex;
181
+ flex-direction: column;
182
+ align-items: center;
183
+ box-sizing: border-box;
184
+ position: relative;
185
+ overflow: hidden;
186
+ }
187
+
188
+ #chartLegend {
189
+ scrollbar-width: thin;
190
+ }
191
+
192
+ #chartLegend::-webkit-scrollbar {
193
+ width: 8px;
194
+ }
195
+
196
+ #chartLegend::-webkit-scrollbar-thumb {
197
+ background-color: #bbb;
198
+ border-radius: 4px;
199
+ }
200
+
201
+ .btn {
202
+ background-color: #3E4A83 !important;
203
+ color: white !important;
204
+ border: none;
205
+ }
206
+
207
+ .btn:hover {
208
+ background-color: #2f3966 !important;
209
+ }
210
+
211
+ .reset-error-btn {
212
+ background-color: #E50019 !important;
213
+ color: white !important;
214
+ border: none;
215
+ }
216
+
217
+ .reset-error-btn:hover {
218
+ background-color: #b80216 !important;
219
+ }
220
+
221
+ .reset-error-btn:disabled {
222
+ background-color: #ccc !important;
223
+ color: #666 !important;
224
+ cursor: not-allowed;
225
+ opacity: 0.7;
226
+ }
227
+
228
+
229
+ .btn-close {
230
+ position: absolute;
231
+ top: 8px;
232
+ right: 12px;
233
+ background: none;
234
+ border: none;
235
+ font-size: 1.8rem;
236
+ font-weight: bold;
237
+ cursor: pointer;
238
+ line-height: 1;
239
+ color: #333;
240
+ }
241
+
242
+ body {
243
+ font-family: 'Poppins', sans-serif;
244
+ background-color: #f7f9fc;
245
+ color: #1E1E1E;
246
+
247
+ }
248
+
249
+ .logo-img {
250
+ width: 48px;
251
+ height: auto;
252
+ margin-top: -4px;
253
+ }
254
+
255
+ body.modal-open {
256
+ overflow: hidden;
257
+ }
258
+
259
+ a {
260
+ color: #7E9CBB;
261
+ }
262
+
263
+ a:hover {
264
+ color: #5d7ca1;
265
+ text-decoration: underline;
266
+ }
267
+
268
+ html, body {
269
+ height: 100%;
270
+ margin: 0;
271
+ }
272
+
273
+ body {
274
+ display: flex;
275
+ flex-direction: column;
276
+ min-height: 100vh;
277
+ }
278
+
279
+ .container.py-4 {
280
+ flex: 1 0 auto;
281
+ }
282
+
283
+ .analysis-name {
284
+ color: #7E9CBB;
285
+ font-weight: 600;
286
+ }
287
+
288
+ .details-table {
289
+ width: 100%;
290
+ max-width: 800px;
291
+ border-collapse: separate;
292
+ border-spacing: 0 0.5rem;
293
+ font-size: 0.95rem;
294
+ background-color: #fff;
295
+ box-shadow: 0 2px 6px rgba(62, 74, 131, 0.1);
296
+ border-radius: 8px;
297
+ overflow: hidden;
298
+ }
299
+
300
+ .details-table th,
301
+ .details-table td {
302
+ padding: 12px 18px;
303
+ text-align: left;
304
+ vertical-align: middle;
305
+ }
306
+
307
+ .details-table thead th {
308
+ background-color: #3E4A83;
309
+ color: white;
310
+ font-weight: 600;
311
+ letter-spacing: 0.03em;
312
+ }
313
+
314
+ .details-table tbody tr {
315
+ background-color: #f7f9fc;
316
+ transition: background-color 0.25s ease;
317
+ border-radius: 6px;
318
+ }
319
+
320
+ .details-table tbody tr:hover {
321
+ background-color: #e9ecef;
322
+ }
323
+
324
+ .details-table tbody tr td:first-child {
325
+ font-weight: 600;
326
+ color: #3E4A83;
327
+ width: 30%;
328
+ border-right: 1px solid #dfe3ea;
329
+ }
330
+
331
+ .details-table tbody tr td:last-child {
332
+ color: #1E1E1E;
333
+ }
334
+
335
+ .card-details {
336
+ padding: 1.5rem 2rem;
337
+ background: white;
338
+ border-radius: 10px;
339
+ box-shadow: 0 3px 15px rgba(62, 74, 131, 0.15);
340
+ margin: 1rem auto;
341
+ }
342
+
343
+ .card-details .table-responsive {
344
+ max-height: 320px;
345
+ overflow-y: auto;
346
+ }
347
+
348
+ .condition-details {
349
+ color: #7E9CBB;
350
+
351
+ }
352
+
353
+ .logo-navbar {
354
+ height: 50px;
355
+ width: auto;
356
+ }
357
+
358
+ .select-compared-process {
359
+ color: #7E9CBB;
360
+ font-weight: bold;
361
+ }
362
+
363
+ .card-body.custom-card-body {
364
+ display: flex;
365
+ justify-content: center;
366
+ align-items: center;
367
+ min-height: 320px;
368
+ padding: 1rem !important;
369
+ }
370
+
371
+ .card-body.custom-card-body canvas {
372
+ max-width: 100%;
373
+ max-height: 100%;
374
+ display: block;
375
+ }
376
+
377
+ .accordion-item:hover {
378
+ box-shadow: 0 4px 15px rgb(0 123 255 / 0.15);
379
+ transition: box-shadow 0.3s ease;
380
+ }
381
+
382
+ /* Accordion button hover */
383
+ .accordion-button:hover {
384
+ background-color: #e9f0ff !important;
385
+ }
386
+
387
+ /* List-group-item hover */
388
+ .list-group-item:hover {
389
+ background-color: #e6f0ff;
390
+ transition: background-color 0.3s ease;
391
+ }
392
+
393
+ /* Links */
394
+ a.link-primary:hover {
395
+ color: #004085 !important;
396
+ text-decoration: underline;
397
+ }
398
+
399
+ /* Badge style */
400
+ .badge {
401
+ font-size: 0.9rem;
402
+ user-select: none;
403
+ }
404
+
405
+ /* Buttons hover */
406
+ button.btn-primary:hover {
407
+ box-shadow: 0 4px 12px rgb(0 123 255 / 0.45);
408
+ transition: box-shadow 0.3s ease;
409
+ }
410
+
411
+ button.btn-outline-primary:hover {
412
+ background-color: #007bff;
413
+ color: white;
414
+ transition: background-color 0.3s ease, color 0.3s ease;
415
+ }
416
+
417
+ /* Floating cart scrollbar style */
418
+ #selectedMetadata::-webkit-scrollbar {
419
+ width: 8px;
420
+ }
421
+
422
+ #selectedMetadata::-webkit-scrollbar-track {
423
+ background: #e0e7ff;
424
+ border-radius: 10px;
425
+ }
426
+
427
+ #selectedMetadata::-webkit-scrollbar-thumb {
428
+ background: #007bff;
429
+ border-radius: 10px;
430
+ }