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.
- package/client/client.js +22 -17
- 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"
|
|
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
|
-
|
|
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.
|
|
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",
|