Files
dbgate/packages/web/src/designer/DomTableRef.ts
2022-01-05 12:47:55 +01:00

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;
}
}