Create a custom grid cell renderer for Datagrok
Create a custom cell renderer for the Datagrok grid/table viewer.
/create-cell-renderer [cell-type] [package-path]
When this skill is invoked, help the user create a custom cell renderer that extends DG.GridCellRenderer.
Create a new TypeScript file in the package's src/ directory (e.g., src/renderers/my-renderer.ts).
The class must extend DG.GridCellRenderer and implement:
get name() - unique renderer nameget cellType() - the cell type string (e.g., 'piechart', 'barchart')render(g, x, y, w, h, gridCell, cellStyle) - main drawing method using CanvasRenderingContext2DrenderSettings(gridColumn)export class MyRenderer extends DG.GridCellRenderer {
get name() { return 'My Renderer'; }
get cellType() { return 'mytype'; }
render(g: CanvasRenderingContext2D, x: number, y: number, w: number, h: number,
gridCell: DG.GridCell, cellStyle: DG.GridCellStyle): void {
// Draw using Canvas 2D API within the bounds (x, y, w, h)
}
renderSettings(gridColumn: DG.GridColumn): HTMLElement | null {
// Optional: return UI element for settings
return null;
}
}
Use the decorator approach (preferred for datagrok-tools >= 4.12.x):
@grok.decorators.cellRenderer({
cellType: 'mytype',
virtual: true,
})
export class MyRenderer extends DG.GridCellRenderer {
/* ... */
}
The virtual: true flag is used for summary/calculated columns.
Or use the function annotation approach in package.ts:
//name: myRenderer
//tags: cellRenderer
//meta.cellType: mytype
//meta.virtual: true
//output: grid_cell_renderer result
export function myRendererFunc() {
return new MyRenderer();
}
The decorator approach auto-generates a package.g.ts file via FuncGeneratorPlugin during build. This file must be committed.
npm run build
grok publish
cellType string links the renderer to summary columns of that typerender method receives a Canvas 2D context; draw within the bounding box (x, y, w, h)public/packages/PowerGrid/src/sparklines/import * as DG from 'datagrok-api/dg', import * as grok from 'datagrok-api/grok')