fdb2 1.0.21 → 1.0.22

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.
@@ -116,14 +116,14 @@
116
116
  line-height: 1.6;
117
117
  }
118
118
 
119
- .sql-executor[data-v-82959a5b] {
119
+ .sql-executor[data-v-5edeffbc] {
120
120
  width: 100%;
121
121
  flex: 1;
122
122
  display: flex;
123
123
  flex-direction: column;
124
124
  gap: 10px;
125
125
  }
126
- .sql-toolbar[data-v-82959a5b] {
126
+ .sql-toolbar[data-v-5edeffbc] {
127
127
  display: flex;
128
128
  justify-content: space-between;
129
129
  align-items: center;
@@ -132,12 +132,12 @@
132
132
  background-color: #f8f9fa;
133
133
  border-radius: 4px;
134
134
  }
135
- .toolbar-left[data-v-82959a5b],
136
- .toolbar-right[data-v-82959a5b] {
135
+ .toolbar-left[data-v-5edeffbc],
136
+ .toolbar-right[data-v-5edeffbc] {
137
137
  display: flex;
138
138
  gap: 8px;
139
139
  }
140
- .sql-container[data-v-82959a5b] {
140
+ .sql-container[data-v-5edeffbc] {
141
141
  position: relative;
142
142
  border: 1px solid #dee2e6;
143
143
  border-radius: 4px;
@@ -146,23 +146,23 @@
146
146
  display: flex;
147
147
  flex-direction: column;
148
148
  }
149
- .sql-editor[data-v-82959a5b] {
149
+ .sql-editor[data-v-5edeffbc] {
150
150
  position: relative;
151
151
  overflow: auto;
152
152
  flex: 0 1 300px;
153
153
  min-height: 200px;
154
154
  }
155
- .sql-result[data-v-82959a5b] {
155
+ .sql-result[data-v-5edeffbc] {
156
156
  position: relative;
157
157
  overflow: auto;
158
158
  border-top: 1px solid #dee2e6;
159
159
  flex: 1;
160
160
  }
161
- .codemirror-editor[data-v-82959a5b] {
161
+ .codemirror-editor[data-v-5edeffbc] {
162
162
  height: 100%;
163
163
  width: 100%;
164
164
  }
165
- .resizer[data-v-82959a5b] {
165
+ .resizer[data-v-5edeffbc] {
166
166
  height: 8px;
167
167
  background-color: #e9ecef;
168
168
  cursor: ns-resize;
@@ -170,33 +170,33 @@
170
170
  align-items: center;
171
171
  justify-content: center;
172
172
  }
173
- .resizer[data-v-82959a5b]:hover {
173
+ .resizer[data-v-5edeffbc]:hover {
174
174
  background-color: #dee2e6;
175
175
  }
176
- .resizer[data-v-82959a5b]::before {
176
+ .resizer[data-v-5edeffbc]::before {
177
177
  content: '';
178
178
  width: 40px;
179
179
  height: 2px;
180
180
  background-color: #adb5bd;
181
181
  border-radius: 1px;
182
182
  }
183
- .resizer.resizing[data-v-82959a5b] {
183
+ .resizer.resizing[data-v-5edeffbc] {
184
184
  background-color: #dee2e6;
185
185
  }
186
- .resizer.resizing[data-v-82959a5b]::before {
186
+ .resizer.resizing[data-v-5edeffbc]::before {
187
187
  background-color: #6c757d;
188
188
  }
189
- .sql-result[data-v-82959a5b] {
189
+ .sql-result[data-v-5edeffbc] {
190
190
  position: relative;
191
191
  overflow: auto;
192
192
  border-top: 1px solid #dee2e6;
193
193
  }
194
- .result-content[data-v-82959a5b] {
194
+ .result-content[data-v-5edeffbc] {
195
195
  height: 100%;
196
196
  display: flex;
197
197
  flex-direction: column;
198
198
  }
199
- .result-header[data-v-82959a5b] {
199
+ .result-header[data-v-5edeffbc] {
200
200
  display: flex;
201
201
  justify-content: space-between;
202
202
  align-items: center;
@@ -204,7 +204,7 @@
204
204
  background-color: #f8f9fa;
205
205
  border-bottom: 1px solid #dee2e6;
206
206
  }
207
- .result-title[data-v-82959a5b] {
207
+ .result-title[data-v-5edeffbc] {
208
208
  margin: 0;
209
209
  font-size: 14px;
210
210
  font-weight: 600;
@@ -212,16 +212,16 @@
212
212
  align-items: center;
213
213
  gap: 8px;
214
214
  }
215
- .sql-loading[data-v-82959a5b] {
215
+ .sql-loading[data-v-5edeffbc] {
216
216
  display: flex;
217
217
  align-items: center;
218
218
  gap: 8px;
219
219
  }
220
- .result-stats[data-v-82959a5b] {
220
+ .result-stats[data-v-5edeffbc] {
221
221
  display: flex;
222
222
  gap: 8px;
223
223
  }
224
- .result-info[data-v-82959a5b] {
224
+ .result-info[data-v-5edeffbc] {
225
225
  display: flex;
226
226
  justify-content: space-between;
227
227
  align-items: center;
@@ -229,49 +229,49 @@
229
229
  background-color: #f8f9fa;
230
230
  border-bottom: 1px solid #dee2e6;
231
231
  }
232
- .result-actions[data-v-82959a5b] {
232
+ .result-actions[data-v-5edeffbc] {
233
233
  display: flex;
234
234
  gap: 8px;
235
235
  }
236
- .result-table-container[data-v-82959a5b] {
236
+ .result-table-container[data-v-5edeffbc] {
237
237
  flex: 1;
238
238
  overflow: auto;
239
239
  }
240
240
 
241
241
  /* 对象结果样式 */
242
- .result-object[data-v-82959a5b] {
242
+ .result-object[data-v-5edeffbc] {
243
243
  display: flex;
244
244
  flex-direction: column;
245
245
  height: 100%;
246
246
  }
247
- .object-container[data-v-82959a5b] {
247
+ .object-container[data-v-5edeffbc] {
248
248
  flex: 1;
249
249
  overflow: auto;
250
250
  }
251
- .object-container table[data-v-82959a5b] {
251
+ .object-container table[data-v-5edeffbc] {
252
252
  width: 100%;
253
253
  }
254
- .object-container th[data-v-82959a5b]:first-child {
254
+ .object-container th[data-v-5edeffbc]:first-child {
255
255
  width: 20%;
256
256
  min-width: 100px;
257
257
  }
258
- .object-container td[data-v-82959a5b]:first-child {
258
+ .object-container td[data-v-5edeffbc]:first-child {
259
259
  font-weight: 500;
260
260
  background-color: #f8f9fa;
261
261
  }
262
- .sql-loading-state[data-v-82959a5b] {
262
+ .sql-loading-state[data-v-5edeffbc] {
263
263
  display: flex;
264
264
  align-items: center;
265
265
  justify-content: center;
266
266
  height: 100%;
267
267
  flex: 1;
268
268
  }
269
- .sql-empty-result[data-v-82959a5b],
270
- .sql-error[data-v-82959a5b] {
269
+ .sql-empty-result[data-v-5edeffbc],
270
+ .sql-error[data-v-5edeffbc] {
271
271
  padding: 12px;
272
272
  flex: 1;
273
273
  }
274
- .result-empty[data-v-82959a5b] {
274
+ .result-empty[data-v-5edeffbc] {
275
275
  display: flex;
276
276
  flex-direction: column;
277
277
  align-items: center;
@@ -280,28 +280,28 @@
280
280
  color: #6c757d;
281
281
  gap: 10px;
282
282
  }
283
- .result-empty i[data-v-82959a5b] {
283
+ .result-empty i[data-v-5edeffbc] {
284
284
  font-size: 48px;
285
285
  opacity: 0.5;
286
286
  }
287
- .json-result[data-v-82959a5b] {
287
+ .json-result[data-v-5edeffbc] {
288
288
  flex: 1;
289
289
  overflow: hidden;
290
290
  }
291
- .json-result .codemirror-editor[data-v-82959a5b] {
291
+ .json-result .codemirror-editor[data-v-5edeffbc] {
292
292
  height: 100%;
293
293
  width: 100%;
294
294
  }
295
295
 
296
296
  /* 响应式设计 */
297
297
  @media (max-width: 768px) {
298
- .sql-toolbar[data-v-82959a5b] {
298
+ .sql-toolbar[data-v-5edeffbc] {
299
299
  flex-direction: column;
300
300
  align-items: stretch;
301
301
  gap: 8px;
302
302
  }
303
- .toolbar-left[data-v-82959a5b],
304
- .toolbar-right[data-v-82959a5b] {
303
+ .toolbar-left[data-v-5edeffbc],
304
+ .toolbar-right[data-v-5edeffbc] {
305
305
  justify-content: center;
306
306
  }
307
307
  }
@@ -1471,40 +1471,40 @@ to {
1471
1471
  height: 100%;
1472
1472
  }
1473
1473
 
1474
- .table-data-grid[data-v-19b40cd6] {
1474
+ .table-data-grid[data-v-d342a0e9] {
1475
1475
  display: flex;
1476
1476
  flex-direction: column;
1477
1477
  height: 100%;
1478
1478
  }
1479
- .data-grid-wrapper[data-v-19b40cd6] {
1479
+ .data-grid-wrapper[data-v-d342a0e9] {
1480
1480
  flex: 1;
1481
1481
  overflow: hidden;
1482
1482
  }
1483
- .column-header-custom[data-v-19b40cd6] {
1483
+ .column-header-custom[data-v-d342a0e9] {
1484
1484
  display: flex;
1485
1485
  flex-direction: column;
1486
1486
  cursor: pointer;
1487
1487
  user-select: none;
1488
1488
  }
1489
- .header-main[data-v-19b40cd6] {
1489
+ .header-main[data-v-d342a0e9] {
1490
1490
  display: flex;
1491
1491
  align-items: center;
1492
1492
  }
1493
- .column-name[data-v-19b40cd6] {
1493
+ .column-name[data-v-d342a0e9] {
1494
1494
  font-weight: 600;
1495
1495
  }
1496
- .header-sub[data-v-19b40cd6] {
1496
+ .header-sub[data-v-d342a0e9] {
1497
1497
  display: flex;
1498
1498
  align-items: center;
1499
1499
  margin-top: 2px;
1500
1500
  max-width: 150px; /* 限制子标题区域的最大宽度 */
1501
1501
  }
1502
- .column-type[data-v-19b40cd6] {
1502
+ .column-type[data-v-d342a0e9] {
1503
1503
  font-size: 0.7rem;
1504
1504
  line-height: 1;
1505
1505
  flex-shrink: 0; /* 防止类型被压缩 */
1506
1506
  }
1507
- .column-comment[data-v-19b40cd6] {
1507
+ .column-comment[data-v-d342a0e9] {
1508
1508
  font-size: 0.7rem;
1509
1509
  line-height: 1;
1510
1510
  opacity: 0.8;
@@ -1513,13 +1513,13 @@ to {
1513
1513
  text-overflow: ellipsis;
1514
1514
  flex: 1; /* 允许注释占据剩余空间并截断 */
1515
1515
  }
1516
- .cell-value[data-v-19b40cd6] {
1516
+ .cell-value[data-v-d342a0e9] {
1517
1517
  max-width: 300px;
1518
1518
  overflow: hidden;
1519
1519
  text-overflow: ellipsis;
1520
1520
  white-space: nowrap;
1521
1521
  }
1522
- .grid-footer-bar[data-v-19b40cd6] {
1522
+ .grid-footer-bar[data-v-d342a0e9] {
1523
1523
  background: #f8f9fa;
1524
1524
  border-top: 1px solid #dee2e6;
1525
1525
  padding: 8px 16px;
@@ -53031,6 +53031,33 @@ var init_sql_executor_vue_vue_type_script_setup_true_lang = __esmMin((() => {
53031
53031
  insert: ""
53032
53032
  } });
53033
53033
  }
53034
+ function formatDateValue(value) {
53035
+ if (value instanceof Date) return value.toLocaleString("zh-CN", {
53036
+ year: "numeric",
53037
+ month: "2-digit",
53038
+ day: "2-digit",
53039
+ hour: "2-digit",
53040
+ minute: "2-digit",
53041
+ second: "2-digit"
53042
+ });
53043
+ if (typeof value === "string" && value.length >= 19) {
53044
+ if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/.test(value)) {
53045
+ const date = new Date(value);
53046
+ if (!isNaN(date.getTime())) return date.toLocaleString("zh-CN", {
53047
+ year: "numeric",
53048
+ month: "2-digit",
53049
+ day: "2-digit",
53050
+ hour: "2-digit",
53051
+ minute: "2-digit",
53052
+ second: "2-digit"
53053
+ });
53054
+ }
53055
+ }
53056
+ return value;
53057
+ }
53058
+ function jsonDateReplacer(key, value) {
53059
+ return formatDateValue(value);
53060
+ }
53034
53061
  function exportResult(format) {
53035
53062
  if (!sqlResult.value) return;
53036
53063
  const filename = formatFileName("sql_result", format);
@@ -53133,7 +53160,7 @@ var init_sql_executor_vue_vue_type_script_setup_true_lang = __esmMin((() => {
53133
53160
  if (sqlResult.value.success) jsonData = sqlResult.value.data || sqlResult.value;
53134
53161
  else jsonData = { error: sqlResult.value.error };
53135
53162
  try {
53136
- const jsonString = JSON.stringify(jsonData, null, 2);
53163
+ const jsonString = JSON.stringify(jsonData, jsonDateReplacer, 2);
53137
53164
  resultEditor.value.dispatch({ changes: {
53138
53165
  from: 0,
53139
53166
  to: resultEditor.value.state.doc.length,
@@ -53153,7 +53180,7 @@ var init_sql_executor_vue_vue_type_script_setup_true_lang = __esmMin((() => {
53153
53180
  if (sqlResult.value.success) jsonData = sqlResult.value.data || sqlResult.value;
53154
53181
  else jsonData = { error: sqlResult.value.error };
53155
53182
  try {
53156
- const jsonString = JSON.stringify(jsonData, null, 2);
53183
+ const jsonString = JSON.stringify(jsonData, jsonDateReplacer, 2);
53157
53184
  resultEditor.value.dispatch({ changes: {
53158
53185
  from: 0,
53159
53186
  to: resultEditor.value.state.doc.length,
@@ -53220,17 +53247,17 @@ var init_sql_executor_vue_vue_type_script_setup_true_lang = __esmMin((() => {
53220
53247
  });
53221
53248
  }));
53222
53249
  //#endregion
53223
- //#region src/platform/database/components/sql-executor.vue?vue&type=style&index=0&scoped=82959a5b&lang.css
53224
- var init_sql_executor_vue_vue_type_style_index_0_scoped_82959a5b_lang = __esmMin((() => {}));
53250
+ //#region src/platform/database/components/sql-executor.vue?vue&type=style&index=0&scoped=5edeffbc&lang.css
53251
+ var init_sql_executor_vue_vue_type_style_index_0_scoped_5edeffbc_lang = __esmMin((() => {}));
53225
53252
  //#endregion
53226
53253
  //#region src/platform/database/components/sql-executor.vue
53227
53254
  var sql_executor_default;
53228
53255
  var init_sql_executor = __esmMin((() => {
53229
53256
  init_sql_executor_vue_vue_type_script_setup_true_lang();
53230
53257
  init_sql_executor_vue_vue_type_script_setup_true_lang();
53231
- init_sql_executor_vue_vue_type_style_index_0_scoped_82959a5b_lang();
53258
+ init_sql_executor_vue_vue_type_style_index_0_scoped_5edeffbc_lang();
53232
53259
  init__plugin_vue_export_helper();
53233
- sql_executor_default = /* @__PURE__ */ _plugin_vue_export_helper_default(sql_executor_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-82959a5b"]]);
53260
+ sql_executor_default = /* @__PURE__ */ _plugin_vue_export_helper_default(sql_executor_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-5edeffbc"]]);
53234
53261
  }));
53235
53262
  //#endregion
53236
53263
  //#region src/platform/database/components/connection-detail.vue?vue&type=script&setup=true&lang.ts
@@ -57557,6 +57584,27 @@ var init_table_data_grid_vue_vue_type_script_setup_true_lang = __esmMin((() => {
57557
57584
  const pageSize = ref(50);
57558
57585
  const sortField = ref("");
57559
57586
  const sortOrder = ref("");
57587
+ function getSortStorageKey() {
57588
+ return `table_sort_${props.connection?.id || ""}_${props.database || ""}_${props.table?.name || ""}`;
57589
+ }
57590
+ function restoreSortState() {
57591
+ if (!props.connection?.id || !props.database || !props.table?.name) return;
57592
+ try {
57593
+ const saved = sessionStorage.getItem(getSortStorageKey());
57594
+ if (saved) {
57595
+ const { field, order } = JSON.parse(saved);
57596
+ sortField.value = field || "";
57597
+ sortOrder.value = order || "";
57598
+ }
57599
+ } catch (e) {}
57600
+ }
57601
+ function saveSortState() {
57602
+ if (!props.connection?.id || !props.database || !props.table?.name) return;
57603
+ sessionStorage.setItem(getSortStorageKey(), JSON.stringify({
57604
+ field: sortField.value,
57605
+ order: sortOrder.value
57606
+ }));
57607
+ }
57560
57608
  const totalPages = computed(() => Math.ceil(total.value / pageSize.value) || 1);
57561
57609
  const gridColumns = computed(() => {
57562
57610
  const cols = props.columns.map((col) => ({
@@ -57600,6 +57648,7 @@ var init_table_data_grid_vue_vue_type_script_setup_true_lang = __esmMin((() => {
57600
57648
  function handleSortChange({ field, order }) {
57601
57649
  sortField.value = field;
57602
57650
  sortOrder.value = order;
57651
+ saveSortState();
57603
57652
  currentPage.value = 1;
57604
57653
  loadData();
57605
57654
  }
@@ -57635,9 +57684,11 @@ var init_table_data_grid_vue_vue_type_script_setup_true_lang = __esmMin((() => {
57635
57684
  currentPage.value = 1;
57636
57685
  sortField.value = "";
57637
57686
  sortOrder.value = "";
57687
+ restoreSortState();
57638
57688
  loadData();
57639
57689
  });
57640
57690
  onMounted(() => {
57691
+ restoreSortState();
57641
57692
  loadData();
57642
57693
  });
57643
57694
  return (_ctx, _cache) => {
@@ -57719,17 +57770,17 @@ var init_table_data_grid_vue_vue_type_script_setup_true_lang = __esmMin((() => {
57719
57770
  });
57720
57771
  }));
57721
57772
  //#endregion
57722
- //#region src/platform/database/components/table-data-grid.vue?vue&type=style&index=0&scoped=19b40cd6&lang.css
57723
- var init_table_data_grid_vue_vue_type_style_index_0_scoped_19b40cd6_lang = __esmMin((() => {}));
57773
+ //#region src/platform/database/components/table-data-grid.vue?vue&type=style&index=0&scoped=d342a0e9&lang.css
57774
+ var init_table_data_grid_vue_vue_type_style_index_0_scoped_d342a0e9_lang = __esmMin((() => {}));
57724
57775
  //#endregion
57725
57776
  //#region src/platform/database/components/table-data-grid.vue
57726
57777
  var table_data_grid_default;
57727
57778
  var init_table_data_grid = __esmMin((() => {
57728
57779
  init_table_data_grid_vue_vue_type_script_setup_true_lang();
57729
57780
  init_table_data_grid_vue_vue_type_script_setup_true_lang();
57730
- init_table_data_grid_vue_vue_type_style_index_0_scoped_19b40cd6_lang();
57781
+ init_table_data_grid_vue_vue_type_style_index_0_scoped_d342a0e9_lang();
57731
57782
  init__plugin_vue_export_helper();
57732
- table_data_grid_default = /* @__PURE__ */ _plugin_vue_export_helper_default(table_data_grid_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-19b40cd6"]]);
57783
+ table_data_grid_default = /* @__PURE__ */ _plugin_vue_export_helper_default(table_data_grid_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-d342a0e9"]]);
57733
57784
  }));
57734
57785
  //#endregion
57735
57786
  //#region src/platform/database/components/table-detail.vue?vue&type=script&setup=true&lang.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fdb2",
3
- "version": "1.0.21",
3
+ "version": "1.0.22",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "main": "view/index.html",