mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-23 11:36:01 +00:00
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { DesignerTableInfo } from './types';
|
|
|
|
export default class DomTableRef {
|
|
domTable: Element;
|
|
domWrapper: Element;
|
|
table: DesignerTableInfo;
|
|
designerId: string;
|
|
domRefs: { [column: string]: Element };
|
|
|
|
constructor(table: DesignerTableInfo, domRefs, domWrapper: Element) {
|
|
this.domTable = domRefs[''];
|
|
this.domWrapper = domWrapper;
|
|
this.table = table;
|
|
this.designerId = table.designerId;
|
|
this.domRefs = domRefs;
|
|
}
|
|
|
|
getRect() {
|
|
if (!this.domWrapper) return null;
|
|
if (!this.domTable) return null;
|
|
|
|
const wrap = this.domWrapper.getBoundingClientRect();
|
|
const rect = this.domTable.getBoundingClientRect();
|
|
return {
|
|
left: rect.left - wrap.left,
|
|
top: rect.top - wrap.top,
|
|
right: rect.right - wrap.left,
|
|
bottom: rect.bottom - wrap.top,
|
|
};
|
|
}
|
|
|
|
getColumnY(columnName: string) {
|
|
let col = this.domRefs[columnName];
|
|
if (!col) return null;
|
|
const rect = col.getBoundingClientRect();
|
|
const wrap = this.domWrapper.getBoundingClientRect();
|
|
const tableRect = this.getRect();
|
|
let res = (rect.top + rect.bottom) / 2 - wrap.top;
|
|
if (res < tableRect.top) res = tableRect.top;
|
|
if (res > tableRect.bottom) res = tableRect.bottom;
|
|
return res;
|
|
}
|
|
}
|