|
1 | | -<div class="row"> |
2 | | - <div class="col s3"> |
3 | | - <br /> |
4 | | - <div><strong>Most-active creators over 48h</strong></div> |
5 | | - <ol> |
6 | | - <% @commissions_per_user_id.each do |user_id, count| %> |
7 | | - <%# This is an N+1 query, but we can deal with it later %> |
8 | | - <% user = User.find(user_id.to_i) %> |
9 | | - <li><%= link_to user.display_name, user %>: <%= pluralize count, 'image' %></li> |
10 | | - <% end %> |
11 | | - </ol> |
12 | | - |
| 1 | +<div class="grid grid-cols-12 gap-6"> |
| 2 | + <div class="col-span-12 md:col-span-3 space-y-6"> |
13 | 3 | <div> |
14 | | - <%= pluralize @unique_users_generating_count.count, 'unique user' %> over 48h |
| 4 | + <div class="font-bold text-lg mb-2 text-gray-900 dark:text-gray-100">Most-active creators over 48h</div> |
| 5 | + <ol class="list-decimal list-inside space-y-1 text-gray-700 dark:text-gray-300"> |
| 6 | + <% @commissions_per_user_id.each do |user_id, count| %> |
| 7 | + <%# This is an N+1 query, but we can deal with it later %> |
| 8 | + <% user = User.find(user_id.to_i) %> |
| 9 | + <li> |
| 10 | + <%= link_to user.display_name, user, class: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300" %>: |
| 11 | + <%= pluralize count, 'image' %> |
| 12 | + </li> |
| 13 | + <% end %> |
| 14 | + </ol> |
| 15 | + |
| 16 | + <div class="mt-2 text-gray-600 dark:text-gray-400"> |
| 17 | + <%= pluralize @unique_users_generating_count.count, 'unique user' %> over 48h |
| 18 | + </div> |
15 | 19 | </div> |
16 | 20 |
|
17 | | - <br /><br /> |
18 | | - <div><strong>Queue</strong></div> |
19 | | - <ol> |
20 | | - <% @current_queue_items.each do |commission| %> |
21 | | - <li> |
22 | | - <%= commission.entity_type %>-<%= commission.entity_id %> (<%= commission.style %>) |
23 | | - for U-<%= commission.user_id %> (#<%= commission.id %>) |
24 | | - </li> |
25 | | - <% end %> |
26 | | - </ol> |
| 21 | + <div> |
| 22 | + <div class="font-bold text-lg mb-2 text-gray-900 dark:text-gray-100">Queue</div> |
| 23 | + <ol class="list-decimal list-inside space-y-1 text-gray-700 dark:text-gray-300 text-sm"> |
| 24 | + <% @current_queue_items.each do |commission| %> |
| 25 | + <li> |
| 26 | + <%= commission.entity_type %>-<%= commission.entity_id %> (<%= commission.style %>) |
| 27 | + for U-<%= commission.user_id %> (#<%= commission.id %>) |
| 28 | + </li> |
| 29 | + <% end %> |
| 30 | + </ol> |
| 31 | + </div> |
27 | 32 | </div> |
28 | | - <div class="col s9"> |
| 33 | + |
| 34 | + <div class="col-span-12 md:col-span-9 space-y-6"> |
29 | 35 | <% @recent_commissions.each do |commission| %> |
30 | 36 | <div> |
31 | 37 | <% if commission.complete? %> |
32 | | - <div class="card horizontal"> |
33 | | - <div class="card-image"> |
34 | | - <%= link_to commission.image do %> |
35 | | - <%= image_tag commission.image %> |
| 38 | + <div class="flex flex-col md:flex-row bg-white dark:bg-slate-800 shadow rounded-lg overflow-hidden border border-gray-200 dark:border-slate-700"> |
| 39 | + <div class="md:w-1/3 bg-gray-100 dark:bg-slate-900"> |
| 40 | + <%= link_to commission.image, class: "block h-full" do %> |
| 41 | + <%= image_tag commission.image, class: "w-full h-full object-cover" %> |
36 | 42 | <% end %> |
37 | 43 | </div> |
38 | | - <div class="card-stacked"> |
39 | | - <div class="card-content"> |
40 | | - <div> |
41 | | - <%= commission.id %>. |
| 44 | + <div class="flex-1 p-4 flex flex-col justify-between"> |
| 45 | + <div> |
| 46 | + <div class="mb-2 text-gray-900 dark:text-gray-100"> |
| 47 | + <span class="font-mono text-gray-500 mr-2"><%= commission.id %>.</span> |
42 | 48 | <% if commission.entity.present? %> |
43 | | - <i class="material-icons right <%= content_class_from_name(commission.entity_type).text_color %>"><%= content_class_from_name(commission.entity_type).icon %></i> |
44 | | - <strong><%= link_to commission.entity.name, commission.entity %></strong> |
| 49 | + <div class="inline-flex items-center gap-1"> |
| 50 | + <i class="material-icons text-sm <%= content_class_from_name(commission.entity_type).text_color %>"> |
| 51 | + <%= content_class_from_name(commission.entity_type).icon %> |
| 52 | + </i> |
| 53 | + <strong><%= link_to commission.entity.name, commission.entity, class: "hover:underline hover:text-blue-600 dark:hover:text-blue-400" %></strong> |
| 54 | + </div> |
45 | 55 | <% end %> |
| 56 | + |
46 | 57 | <% if commission.style? %> |
47 | | - <em>(<%= commission.style.humanize %>)</em> |
| 58 | + <em class="text-gray-500 text-sm ml-2">(<%= commission.style.humanize %>)</em> |
48 | 59 | <% end %> |
49 | | - <% if commission.user_id %> |
50 | | - by <%= link_to commission.user.name, commission.user %> |
51 | | - <% else %> |
52 | | - anonymous generation |
53 | | - <% end %> |
54 | | - <div style="font-size: 0.5em"><%= commission.job_id %></div> |
| 60 | + |
| 61 | + <div class="text-sm mt-1"> |
| 62 | + <% if commission.user_id %> |
| 63 | + by <%= link_to commission.user.name, commission.user, class: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300" %> |
| 64 | + <% else %> |
| 65 | + <span class="italic text-gray-500">anonymous generation</span> |
| 66 | + <% end %> |
| 67 | + </div> |
| 68 | + <div class="text-xs text-gray-400 mt-1 font-mono"><%= commission.job_id %></div> |
55 | 69 | </div> |
56 | | - <ul> |
57 | | - <li> |
58 | | - Completed <%= time_ago_in_words commission.completed_at %> ago |
59 | | - </li> |
60 | | - <li> |
61 | | - Took <%= distance_of_time_in_words commission.completed_at - commission.created_at %> |
62 | | - </li> |
63 | | - <hr /> |
64 | | - <li> |
65 | | - <div>Preprompt:</div> |
| 70 | + |
| 71 | + <hr class="my-3 border-gray-200 dark:border-slate-700" /> |
| 72 | + |
| 73 | + <div class="text-sm"> |
| 74 | + <div class="font-semibold text-gray-700 dark:text-gray-300 mb-1">Preprompt:</div> |
| 75 | + <div class="bg-gray-50 dark:bg-slate-900 p-2 rounded text-gray-600 dark:text-gray-400 font-mono text-xs break-words"> |
66 | 76 | <%= commission.prompt.inspect %> |
67 | | - </li> |
68 | | - </ul> |
| 77 | + </div> |
| 78 | + </div> |
| 79 | + </div> |
| 80 | + |
| 81 | + <div class="mt-4 pt-3 border-t border-gray-100 dark:border-slate-700 text-xs text-gray-500 dark:text-gray-400 flex flex-col sm:flex-row sm:gap-4"> |
| 82 | + <span> |
| 83 | + Completed <%= time_ago_in_words commission.completed_at %> ago |
| 84 | + </span> |
| 85 | + <span> |
| 86 | + Took <%= distance_of_time_in_words commission.completed_at - commission.created_at %> |
| 87 | + </span> |
69 | 88 | </div> |
70 | 89 | </div> |
71 | 90 | </div> |
72 | 91 | <% else %> |
73 | | - <div class="card-panel green white-text darken-4"> |
74 | | - Basil is still working on this commission... |
75 | | - <div style="font-size: 0.8em"> |
76 | | - (Requested <%= time_ago_in_words(commission.created_at) %> ago) |
77 | | - </div> |
| 92 | + <div class="p-4 rounded-lg bg-green-700 text-white shadow-md relative overflow-hidden"> |
| 93 | + <div class="flex items-center gap-3"> |
| 94 | + <div class="animate-spin rounded-full h-5 w-5 border-2 border-white border-t-transparent"></div> |
| 95 | + <div> |
| 96 | + <div class="font-semibold">Basil is still working on this commission...</div> |
| 97 | + <div class="text-green-100 text-sm mt-1"> |
| 98 | + (Requested <%= time_ago_in_words(commission.created_at) %> ago) |
| 99 | + </div> |
| 100 | + </div> |
| 101 | + </div> |
78 | 102 | </div> |
79 | 103 | <% end %> |
80 | 104 | </div> |
81 | 105 | <% end %> |
82 | | - |
83 | 106 | </div> |
84 | 107 | </div> |
0 commit comments