solid_litequeen 0.9.0 → 0.10.0
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.
- checksums.yaml +4 -4
- data/app/controllers/solid_litequeen/databases_controller.rb +15 -3
- data/app/javascript/solid_litequeen/controllers/table_controller.js +37 -0
- data/app/views/solid_litequeen/databases/table_rows.html.erb +8 -2
- data/lib/solid_litequeen/version.rb +1 -1
- metadata +2 -3
- data/app/javascript/controllers/table_controller.js +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2193fbf74ea85b0636eacfaf274db08f75fc6e3df3f20ff92092f332665cc5ae
|
4
|
+
data.tar.gz: 1916c89aa9c9091fd562535e1f415f8f3844e7b686241ecd5ca19800bf5a82c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff33367977208e249b3d4eb19a1a0ab4aba4744868dd8c40a52375fe48535ba9eacb2f145c38f58fae57041fc5322ae0047c9cf9038a49568f277358d78b7579
|
7
|
+
data.tar.gz: 7da74f483615c35208adf2fa98673896e74d45ed31c64ba6f040aad43637832ec0c2c254d6d3542983892b0bdfd2674df22d01709b854996fa6269ff789af95a
|
@@ -49,8 +49,6 @@ module SolidLitequeen
|
|
49
49
|
@sort_column = sort_prefs["sort_column"]
|
50
50
|
@sort_direction = sort_prefs["sort_direction"]
|
51
51
|
|
52
|
-
# debugger
|
53
|
-
|
54
52
|
@database_location = Base64.urlsafe_decode64(@database_id)
|
55
53
|
|
56
54
|
DynamicDatabase.establish_connection(
|
@@ -58,8 +56,22 @@ module SolidLitequeen
|
|
58
56
|
database: @database_location
|
59
57
|
)
|
60
58
|
|
59
|
+
table_columns = DynamicDatabase.connection.columns(@table_name)
|
60
|
+
|
61
|
+
@columns_info = table_columns.each_with_object({}) do |column, hash|
|
62
|
+
hash[column.name] = {
|
63
|
+
sql_type: column.sql_type_metadata.sql_type,
|
64
|
+
type: column.sql_type_metadata.type,
|
65
|
+
limit: column.sql_type_metadata.limit,
|
66
|
+
precision: column.sql_type_metadata.precision,
|
67
|
+
scale: column.sql_type_metadata.scale,
|
68
|
+
null: column.null,
|
69
|
+
default: column.default
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
61
73
|
# Verify the sort column exists in the table to prevent SQL injection
|
62
|
-
valid_columns =
|
74
|
+
valid_columns = table_columns.map(&:name)
|
63
75
|
|
64
76
|
# Use the column order from session if it exists; otherwise, default to all columns
|
65
77
|
ordered_columns = session["#{@database_id}_#{@table_name}_column_order"] || valid_columns
|
@@ -22,6 +22,8 @@ export default class extends Controller {
|
|
22
22
|
"dragleave",
|
23
23
|
this.handleThDragleave.bind(this),
|
24
24
|
);
|
25
|
+
|
26
|
+
this.#load_datetime_local_title();
|
25
27
|
}
|
26
28
|
|
27
29
|
disconnect() {
|
@@ -158,4 +160,39 @@ export default class extends Controller {
|
|
158
160
|
|
159
161
|
targetTh.removeAttribute("data-column-order-about-to-be-swapped");
|
160
162
|
}
|
163
|
+
|
164
|
+
#load_datetime_local_title() {
|
165
|
+
setTimeout(() => {
|
166
|
+
const datetime_items = this.element.querySelectorAll(
|
167
|
+
'td[data-data_type="datetime"]',
|
168
|
+
);
|
169
|
+
|
170
|
+
for (const item of datetime_items) {
|
171
|
+
const column_item_datetime = item.querySelector(
|
172
|
+
"span[data-column_item]",
|
173
|
+
)?.textContent;
|
174
|
+
|
175
|
+
if (column_item_datetime) {
|
176
|
+
try {
|
177
|
+
// Parse the UTC datetime string
|
178
|
+
const utcDate = new Date(`${column_item_datetime.trim()}Z`);
|
179
|
+
|
180
|
+
// Format to local datetime using Intl.DateTimeFormat
|
181
|
+
const localDatetime = new Intl.DateTimeFormat("default", {
|
182
|
+
year: "numeric",
|
183
|
+
month: "short",
|
184
|
+
day: "numeric",
|
185
|
+
hour: "numeric",
|
186
|
+
minute: "numeric",
|
187
|
+
second: "numeric",
|
188
|
+
}).format(utcDate);
|
189
|
+
|
190
|
+
item.setAttribute("title", `${localDatetime} local time.`);
|
191
|
+
} catch (error) {
|
192
|
+
console.error("Error converting datetime:", error);
|
193
|
+
}
|
194
|
+
}
|
195
|
+
}
|
196
|
+
}, 2000);
|
197
|
+
}
|
161
198
|
}
|
@@ -15,6 +15,7 @@
|
|
15
15
|
<p class="text-gray-600"><%= pluralize(@row_count, "row") %> found</p>
|
16
16
|
</div>
|
17
17
|
|
18
|
+
<%= console %>
|
18
19
|
|
19
20
|
<div class="bg-white rounded-lg shadow overflow-x-auto">
|
20
21
|
<div class="min-w-full inline-block align-middle">
|
@@ -49,11 +50,16 @@
|
|
49
50
|
<tr class="hover:bg-gray-50" >
|
50
51
|
<% row.each_with_index do |item, index| %>
|
51
52
|
<% truncated_item = item&.truncate(80) %>
|
52
|
-
|
53
|
+
<% column_name = @data.columns[index] %>
|
54
|
+
<td
|
55
|
+
data-column="<%= column_name %>"
|
56
|
+
data-data_type="<%= @columns_info.dig(column_name).dig(:type) %>"
|
57
|
+
class="px-6 py-4 text-sm text-gray-800 whitespace-nowrap"
|
58
|
+
>
|
53
59
|
|
54
60
|
<div class="flex justify-between">
|
55
61
|
|
56
|
-
<span><%= truncated_item %></span>
|
62
|
+
<span data-column_item><%= truncated_item %></span>
|
57
63
|
|
58
64
|
<% if truncated_item&.to_s&.ends_with?("...") %>
|
59
65
|
<span title="<%= item %>" class="cursor-pointer size-4">
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solid_litequeen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vik Borges
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-03-
|
11
|
+
date: 2025-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -157,7 +157,6 @@ files:
|
|
157
157
|
- app/controllers/solid_litequeen/databases_controller.rb
|
158
158
|
- app/helpers/solid_litequeen/application_helper.rb
|
159
159
|
- app/helpers/solid_litequeen/databases_helper.rb
|
160
|
-
- app/javascript/controllers/table_controller.js
|
161
160
|
- app/javascript/solid_litequeen/application.js
|
162
161
|
- app/javascript/solid_litequeen/controllers/application.js
|
163
162
|
- app/javascript/solid_litequeen/controllers/index.js
|