Skip to content

Commit 82f5572

Browse files
committed
Merge main
2 parents 69d04dd + 55727e7 commit 82f5572

File tree

7 files changed

+124
-101
lines changed

7 files changed

+124
-101
lines changed

.tool-versions

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
ruby 3.4.6
2+
nodejs 24.9.0

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ gem "azure_file_shares"
99
gem "bcrypt", "~> 3.1.7"
1010
gem "bootsnap", require: false
1111
gem "csv"
12+
gem "herb", "~> 0.8.0"
1213
gem "image_processing", "~> 1.14"
1314
gem "importmap-rails"
1415
gem "jbuilder"
@@ -21,6 +22,7 @@ gem "propshaft"
2122
gem "puma", ">= 5.0"
2223
gem "rack-attack"
2324
gem "rails", "~> 8.0.4"
25+
gem "reactionview", "~> 0.1.6"
2426
gem "requestjs-rails"
2527
gem "scout_apm"
2628
gem "scout_apm_logging", "~> 2.1"

Gemfile.lock

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,19 @@ GEM
8888
activesupport (>= 6.0.0)
8989
ast (2.4.3)
9090
aws-eventstream (1.4.0)
91-
aws-partitions (1.1177.0)
92-
aws-sdk-core (3.235.0)
91+
aws-partitions (1.1181.0)
92+
aws-sdk-core (3.237.0)
9393
aws-eventstream (~> 1, >= 1.3.0)
9494
aws-partitions (~> 1, >= 1.992.0)
9595
aws-sigv4 (~> 1.9)
9696
base64
9797
bigdecimal
9898
jmespath (~> 1, >= 1.6.1)
9999
logger
100-
aws-sdk-kms (1.115.0)
100+
aws-sdk-kms (1.117.0)
101101
aws-sdk-core (~> 3, >= 3.234.0)
102102
aws-sigv4 (~> 1.5)
103-
aws-sdk-s3 (1.201.0)
103+
aws-sdk-s3 (1.203.1)
104104
aws-sdk-core (~> 3, >= 3.234.0)
105105
aws-sdk-kms (~> 1)
106106
aws-sigv4 (~> 1.5)
@@ -117,7 +117,7 @@ GEM
117117
benchmark (0.5.0)
118118
bigdecimal (3.3.1)
119119
bindex (0.8.1)
120-
bootsnap (1.18.6)
120+
bootsnap (1.19.0)
121121
msgpack (~> 1.2)
122122
brakeman (7.1.1)
123123
racc
@@ -212,6 +212,12 @@ GEM
212212
rake (>= 13)
213213
googleapis-common-protos-types (1.22.0)
214214
google-protobuf (~> 4.26)
215+
herb (0.8.0)
216+
herb (0.8.0-aarch64-linux-gnu)
217+
herb (0.8.0-aarch64-linux-musl)
218+
herb (0.8.0-arm-linux-gnu)
219+
herb (0.8.0-arm-linux-musl)
220+
herb (0.8.0-x86_64-linux-musl)
215221
hotwire-spark (0.1.13)
216222
listen
217223
rails (>= 7.0.0)
@@ -436,6 +442,9 @@ GEM
436442
erb
437443
psych (>= 4.0.0)
438444
tsort
445+
reactionview (0.1.6)
446+
actionview (>= 7.0)
447+
herb (>= 0.7.5, < 1.0.0)
439448
regexp_parser (2.11.3)
440449
reline (0.6.2)
441450
io-console (~> 0.5)
@@ -615,6 +624,7 @@ DEPENDENCIES
615624
dotenv-rails
616625
factory_bot_rails
617626
faker
627+
herb (~> 0.8.0)
618628
hotwire-spark
619629
image_processing (~> 1.14)
620630
importmap-rails
@@ -631,6 +641,7 @@ DEPENDENCIES
631641
rack-mini-profiler
632642
rails (~> 8.0.4)
633643
rails-controller-testing
644+
reactionview (~> 0.1.6)
634645
requestjs-rails
635646
rspec-rails
636647
rubocop-rails-omakase

app/views/import_reports/show.html.erb

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<div style="min-height: 100vh; background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); padding: 2rem 0;">
1010
<div style="max-width: 1000px; margin: 0 auto; padding: 0 1rem;">
11-
11+
1212
<!-- Header Section -->
1313
<div style="margin-bottom: 2rem;">
1414
<div style="display: flex; align-items: center; justify-content: between; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap;">
@@ -36,7 +36,7 @@
3636
<% end %>
3737
</div>
3838
</div>
39-
39+
4040
<!-- Breadcrumb -->
4141
<nav style="font-size: 0.875rem; color: #6b7280;">
4242
<ol style="display: flex; gap: 0.5rem; list-style: none; padding: 0; margin: 0;">
@@ -51,11 +51,11 @@
5151

5252
<!-- Main Content -->
5353
<div id="<%= dom_id @import_report %>">
54-
54+
5555
<!-- Import Details Section -->
5656
<div style="margin-bottom: 2rem;">
5757
<div style="background: white; border-radius: 1rem; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); overflow: hidden; border: 1px solid #e5e7eb;">
58-
58+
5959
<!-- Card Header -->
6060
<div style="background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); padding: 2rem; color: white;">
6161
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 0.5rem;">
@@ -66,11 +66,11 @@
6666
</div>
6767
<p style="margin: 0; opacity: 0.9; font-size: 0.875rem;">Import operation information and statistics</p>
6868
</div>
69-
69+
7070
<!-- Card Body -->
7171
<div style="padding: 2rem;">
7272
<div style="display: grid; gap: 1.5rem;">
73-
73+
7474
<!-- Status -->
7575
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; padding: 1rem; background: #f8fafc; border-radius: 0.5rem; border-left: 4px solid #3b82f6;">
7676
<div style="font-weight: 600; color: #374151; display: flex; align-items: center; gap: 0.5rem;">
@@ -104,7 +104,7 @@
104104
<% end %>
105105
</div>
106106
</div>
107-
107+
108108
<!-- Import Type -->
109109
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; padding: 1rem; background: #f8fafc; border-radius: 0.5rem; border-left: 4px solid #3b82f6;">
110110
<div style="font-weight: 600; color: #374151; display: flex; align-items: center; gap: 0.5rem;">
@@ -117,7 +117,7 @@
117117
<%= @import_report.import_type.humanize %>
118118
</div>
119119
</div>
120-
120+
121121
<!-- Started At -->
122122
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; padding: 1rem; background: #f8fafc; border-radius: 0.5rem; border-left: 4px solid #3b82f6;">
123123
<div style="font-weight: 600; color: #374151; display: flex; align-items: center; gap: 0.5rem;">
@@ -130,7 +130,7 @@
130130
<%= @import_report.started_at&.strftime('%B %d, %Y at %I:%M %p') || "Not started" %>
131131
</div>
132132
</div>
133-
133+
134134
<!-- Completed At -->
135135
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; padding: 1rem; background: #f8fafc; border-radius: 0.5rem; border-left: 4px solid #3b82f6;">
136136
<div style="font-weight: 600; color: #374151; display: flex; align-items: center; gap: 0.5rem;">
@@ -143,7 +143,7 @@
143143
<%= @import_report.completed_at&.strftime('%B %d, %Y at %I:%M %p') || "Not completed" %>
144144
</div>
145145
</div>
146-
146+
147147
<!-- Created -->
148148
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; padding: 1rem; background: #f8fafc; border-radius: 0.5rem; border-left: 4px solid #3b82f6;">
149149
<div style="font-weight: 600; color: #374151; display: flex; align-items: center; gap: 0.5rem;">
@@ -156,7 +156,7 @@
156156
<%= @import_report.created_at.strftime('%B %d, %Y at %I:%M %p') %>
157157
</div>
158158
</div>
159-
159+
160160
<!-- Summary Stats -->
161161
<% if @import_report.summary_stats.present? %>
162162
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; padding: 1rem; background: #f8fafc; border-radius: 0.5rem; border-left: 4px solid #3b82f6;">
@@ -171,7 +171,7 @@
171171
</div>
172172
</div>
173173
<% end %>
174-
174+
175175
</div>
176176
</div>
177177
</div>
@@ -180,7 +180,7 @@
180180
<!-- Import Errors Section -->
181181
<div style="margin-bottom: 2rem;">
182182
<div style="background: white; border-radius: 1rem; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); overflow: hidden; border: 1px solid #e5e7eb;">
183-
183+
184184
<!-- Card Header -->
185185
<div style="background: linear-gradient(135deg, <%= @import_errors.any? ? '#dc2626 0%, #b91c1c 100%' : '#10b981 0%, #059669 100%' %>); padding: 2rem; color: white;">
186186
<div style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;">
@@ -203,15 +203,15 @@
203203
</p>
204204
</div>
205205
</div>
206-
206+
207207
<div style="display: flex; gap: 0.75rem; align-items: center;">
208208
<div style="background: rgba(255, 255, 255, 0.1); padding: 0.5rem 1rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500;">
209209
Total: <%= @import_errors.count %>
210210
</div>
211211
</div>
212212
</div>
213213
</div>
214-
214+
215215
<!-- Table Content -->
216216
<div style="padding: 0;">
217217
<% if @import_errors.any? %>
@@ -311,116 +311,116 @@
311311
transform: translateY(-2px) !important;
312312
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.25) !important;
313313
}
314-
314+
315315
/* Responsive design */
316316
@media (max-width: 768px) {
317317
/* Container adjustments */
318318
div[style*="max-width: 1000px"] {
319319
padding: 0 1rem !important;
320320
margin: 0 auto !important;
321321
}
322-
322+
323323
/* Page padding adjustments */
324324
div[style*="min-height: 100vh"] {
325325
padding: 1rem 0 !important;
326326
}
327-
327+
328328
/* Header adjustments */
329329
div[style*="justify-content: between"] {
330330
flex-direction: column !important;
331331
align-items: flex-start !important;
332332
gap: 1rem !important;
333333
}
334-
334+
335335
/* Title adjustments */
336336
h1 {
337337
font-size: 1.75rem !important;
338338
}
339-
339+
340340
/* Card adjustments - prevent overflow */
341341
div[style*="border-radius: 1rem"] {
342342
border-radius: 0.5rem !important;
343343
margin: 0 !important;
344344
max-width: 100% !important;
345345
box-sizing: border-box !important;
346346
}
347-
347+
348348
/* Grid adjustments */
349349
div[style*="grid-template-columns: 1fr 2fr"] {
350350
grid-template-columns: 1fr !important;
351351
gap: 0.5rem !important;
352352
}
353-
353+
354354
/* Card padding adjustments */
355355
div[style*="padding: 2rem"] {
356356
padding: 1.5rem 1rem !important;
357357
}
358-
358+
359359
/* Table adjustments */
360360
th, td {
361361
padding: 0.75rem 0.5rem !important;
362362
font-size: 0.875rem !important;
363363
}
364-
364+
365365
/* Make tables more responsive */
366366
.table-container {
367367
margin: 0 !important;
368368
padding: 0 !important;
369369
}
370-
370+
371371
/* Ensure table fits */
372372
table {
373373
min-width: 100% !important;
374374
width: 100% !important;
375375
}
376376
}
377-
377+
378378
@media (max-width: 640px) {
379379
/* Very small screen adjustments */
380380
div[style*="max-width: 1000px"] {
381381
padding: 0 0.5rem !important;
382382
}
383-
383+
384384
/* Ensure no overflow */
385385
* {
386386
max-width: 100% !important;
387387
box-sizing: border-box !important;
388388
}
389-
389+
390390
/* Remove border radius on very small screens */
391391
div[style*="border-radius: 1rem"] {
392392
border-radius: 0.25rem !important;
393393
margin: 0 !important;
394394
}
395-
395+
396396
/* More compact padding */
397397
div[style*="padding: 2rem"] {
398398
padding: 1rem 0.75rem !important;
399399
}
400-
400+
401401
div[style*="padding: 1.5rem"] {
402402
padding: 1rem !important;
403403
}
404-
404+
405405
/* More compact table */
406406
th, td {
407407
padding: 0.5rem 0.25rem !important;
408408
font-size: 0.75rem !important;
409409
word-wrap: break-word !important;
410410
word-break: break-word !important;
411411
}
412-
412+
413413
/* Prevent horizontal scroll */
414414
body, html {
415415
overflow-x: hidden !important;
416416
}
417-
417+
418418
/* Ensure cards don't exceed viewport */
419419
div[style*="background: white"] {
420420
max-width: calc(100vw - 1rem) !important;
421421
overflow: hidden !important;
422422
}
423-
423+
424424
/* Better pre formatting for small screens */
425425
pre {
426426
font-size: 0.625rem !important;

0 commit comments

Comments
 (0)