83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import type { CellRendererProps } from 'tui-grid/types/renderer';
|
|
import type { MenuType } from '~/types/sys/menu';
|
|
|
|
export class MenuSatisChargerRenderer {
|
|
el: HTMLElement;
|
|
|
|
constructor(props: CellRendererProps) {
|
|
const el = document.createElement('div');
|
|
|
|
el.style['gap'] = '8px';
|
|
el.className = 'flex justify-center';
|
|
|
|
const { rowKey, grid } = props;
|
|
const options = props.columnInfo.renderer.options as any;
|
|
|
|
const data = grid.getRow(rowKey) as unknown as MenuType;
|
|
if (!data.menuType.endsWith('API')) {
|
|
if (data?.menuMngId) {
|
|
const { onView, onDelete } = options;
|
|
const viewLink = document.createElement('a');
|
|
const deleteLink = document.createElement('a');
|
|
|
|
viewLink.innerHTML = '보기';
|
|
viewLink.onclick = () => onView(data);
|
|
|
|
deleteLink.innerHTML = '삭제';
|
|
deleteLink.onclick = () => onDelete(data);
|
|
|
|
el.append(viewLink, deleteLink);
|
|
} else {
|
|
const { onEdit } = options;
|
|
const link = document.createElement('a');
|
|
link.innerHTML = '등록';
|
|
link.onclick = () => onEdit(data);
|
|
|
|
el.append(link);
|
|
}
|
|
}
|
|
|
|
this.el = el;
|
|
}
|
|
|
|
beforeDestroy(): void {}
|
|
|
|
focused(): void {}
|
|
|
|
getElement(): Element {
|
|
return this.el;
|
|
}
|
|
|
|
mounted(parent: HTMLElement): void {}
|
|
|
|
render(props: CellRendererProps): void {
|
|
this.el.innerHTML = '';
|
|
const { rowKey, grid } = props;
|
|
const options = props.columnInfo.renderer.options as any;
|
|
|
|
const data = grid.getRow(rowKey) as unknown as MenuType;
|
|
if (!data.menuType.endsWith('API')) {
|
|
if (data?.menuMngId) {
|
|
const { onView, onDelete } = options;
|
|
const viewLink = document.createElement('a');
|
|
const deleteLink = document.createElement('a');
|
|
|
|
viewLink.innerHTML = '보기';
|
|
viewLink.onclick = () => onView(data);
|
|
|
|
deleteLink.innerHTML = '삭제';
|
|
deleteLink.onclick = () => onDelete(data);
|
|
|
|
this.el.append(viewLink, deleteLink);
|
|
} else {
|
|
const { onEdit } = options;
|
|
const link = document.createElement('a');
|
|
link.innerHTML = '등록';
|
|
link.onclick = () => onEdit(data);
|
|
|
|
this.el.append(link);
|
|
}
|
|
}
|
|
}
|
|
}
|