dsh-db-tool 1.5.8 → 1.5.9

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 (2) hide show
  1. package/client/client.js +22 -17
  2. package/package.json +1 -1
package/client/client.js CHANGED
@@ -532,6 +532,7 @@ window.__ModuleLoader__.load({
532
532
  }
533
533
  // 表全限定:pg/gauss 用 schema 前缀(库由 execute 的 database 参数路由,语句内不写库名);
534
534
  // mysql 带库名(adapter 无 database 路由);oracle/dmdb 的 dbRef 即 OWNER;sqlite 仅表名
535
+ // execute 的 database 参数只传库名(db.schema 形态取点前段),连接目标只能是库,schema 靠语句内全限定
535
536
  let table;
536
537
  if (kind === "postgresql" || kind === "gaussdb") {
537
538
  table = schemaName
@@ -560,7 +561,7 @@ window.__ModuleLoader__.load({
560
561
  ops: [{
561
562
  statement: "UPDATE " + table + " SET " + setSql + " WHERE " + wheres.join(" AND "),
562
563
  params,
563
- database: kind === "sqlite" ? undefined : dbRef,
564
+ database: kind === "sqlite" ? undefined : dbRef.split(".")[0],
564
565
  }],
565
566
  };
566
567
  }
@@ -1250,6 +1251,8 @@ window.__ModuleLoader__.load({
1250
1251
  ),
1251
1252
  ),
1252
1253
  ),
1254
+ // 分页条(BrowsePane 传入)在详情栏之上,详情栏钉在面板最底部
1255
+ props.children,
1253
1256
  // 底部详情栏(Navicat/检查器式):预览表格下方一栏,textarea 直接可编辑,点保存写回
1254
1257
  sel ? React.createElement(
1255
1258
  "div",
@@ -1354,6 +1357,16 @@ window.__ModuleLoader__.load({
1354
1357
  // Navicat 式单元格网格:kind/可编辑性由当前连接与授权决定(rw=可编辑),保存后重拉当前页
1355
1358
  const conn = conns.find((c) => c.id === sel.connId);
1356
1359
  const grant = (grants || []).find((g) => g.connId === sel.connId);
1360
+ // 分页条作为 children 传入:渲染顺序 表格 → 分页 → 详情栏(详情栏钉在面板最底部)
1361
+ const footer = sel && view === "preview" && !loadErr ? React.createElement(
1362
+ "div",
1363
+ { className: "dbt-browse-footer" },
1364
+ React.createElement("button", { className: "dbt-btn", disabled: page <= 1 || busy === "open", onClick: () => openTable(sel, page - 1) }, "‹ " + t("prevPage")),
1365
+ React.createElement("span", { className: "dbt-muted" }, t("pageInfo", { page })),
1366
+ React.createElement("span", { style: { flex: 1 } }),
1367
+ preview && preview.truncated ? React.createElement("span", { className: "dbt-muted" }, t("previewTruncated")) : null,
1368
+ React.createElement("button", { className: "dbt-btn", disabled: (preview && preview.truncated) === false || busy === "open", onClick: () => openTable(sel, page + 1) }, t("nextPage") + " ›"),
1369
+ ) : null;
1357
1370
  return React.createElement(PreviewGrid, {
1358
1371
  preview, schema,
1359
1372
  kind: conn ? conn.kind : undefined,
@@ -1365,13 +1378,14 @@ window.__ModuleLoader__.load({
1365
1378
  connId: sel.connId, projectPath,
1366
1379
  onSaved: () => openTable(sel, page),
1367
1380
  askConfirm,
1368
- });
1381
+ }, footer);
1369
1382
  }
1370
1383
 
1371
- // 内嵌面板纵向布局:上半对象树(限高滚动,容器类名留给样式层),下半预览主区 + 分页
1384
+ // 内嵌面板纵向布局:撑满面板高度(.dbt-panel 为 height:100% 的 flex column),
1385
+ // 树限高 / main flex:1 内滚 / 分页与详情栏依次钉底
1372
1386
  return React.createElement(
1373
1387
  "div",
1374
- { className: "dbt-view" },
1388
+ { className: "dbt-view", style: { flex: "1 1 auto", minHeight: 0 } },
1375
1389
  React.createElement(
1376
1390
  "div",
1377
1391
  { style: { maxHeight: 280, overflowY: "auto" } },
@@ -1395,19 +1409,9 @@ window.__ModuleLoader__.load({
1395
1409
  v === "structure" ? t("structure") : t("preview"))),
1396
1410
  ),
1397
1411
  ),
1398
- // 限高兜底:无固定高度弹窗壳后给内容区可视上限,预览表在容器内滚动、单元格浮层贴底可见
1399
- React.createElement("div", { className: "dbt-browse-content", style: { maxHeight: 420 } }, rightPane()),
1412
+ // 内容区由 flex 吃满 main 剩余高度(表格外滚),不再用固定 maxHeight 兜底
1413
+ React.createElement("div", { className: "dbt-browse-content" }, rightPane()),
1400
1414
  ),
1401
- // 分页条(仅已选表的数据预览视图;空选中态不显示)
1402
- sel && view === "preview" && !loadErr ? React.createElement(
1403
- "div",
1404
- { className: "dbt-browse-footer" },
1405
- React.createElement("button", { className: "dbt-btn", disabled: page <= 1 || busy === "open", onClick: () => openTable(sel, page - 1) }, "‹ " + t("prevPage")),
1406
- React.createElement("span", { className: "dbt-muted" }, t("pageInfo", { page })),
1407
- React.createElement("span", { style: { flex: 1 } }),
1408
- preview && preview.truncated ? React.createElement("span", { className: "dbt-muted" }, t("previewTruncated")) : null,
1409
- React.createElement("button", { className: "dbt-btn", disabled: (preview && preview.truncated) === false || busy === "open", onClick: () => openTable(sel, page + 1) }, t("nextPage") + " ›"),
1410
- ) : null,
1411
1415
  );
1412
1416
  }
1413
1417
 
@@ -1626,7 +1630,8 @@ window.__ModuleLoader__.load({
1626
1630
  error ? React.createElement("div", { className: "dbt-err" }, t("error") + ": " + error) : null,
1627
1631
  message ? React.createElement("div", { className: "dbt-msg" }, message) : null,
1628
1632
  // 视图切换:key=view 触发 dbt-in 进入动画(opacity + 4px 上移,.22s)
1629
- React.createElement("div", { className: "dbt-view", key: view },
1633
+ // browse 视图撑满面板剩余高度(BrowsePane 内详情栏才能钉在面板最底部)
1634
+ React.createElement("div", { className: "dbt-view", key: view, style: view === "browse" ? { flex: "1 1 auto", minHeight: 0 } : undefined },
1630
1635
  view === "manage" ? React.createElement(ManageView, shared) : null,
1631
1636
  view === "grants" ? React.createElement(GrantsView, shared) : null,
1632
1637
  // browse:内嵌浏览面板(对象树 + 结构/数据预览,点表即看)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-db-tool",
3
- "version": "1.5.8",
3
+ "version": "1.5.9",
4
4
  "description": "DSH community plugin: chat-operated multi-database admin tool with sidebar management, project-scoped grants, ro/rw modes and dangerous-operation confirmation",
5
5
  "type": "module",
6
6
  "license": "MIT",