aggrid.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. export default {
  2. template: "<div></div>",
  3. mounted() {
  4. this.update_grid();
  5. },
  6. methods: {
  7. update_grid() {
  8. this.$el.textContent = "";
  9. this.gridOptions = {
  10. ...this.options,
  11. onGridReady: (params) => params.api.sizeColumnsToFit(),
  12. };
  13. for (const column of this.html_columns) {
  14. if (this.gridOptions.columnDefs[column].cellRenderer === undefined) {
  15. this.gridOptions.columnDefs[column].cellRenderer = (params) => (params.value ? params.value : "");
  16. }
  17. }
  18. // Code for CheckboxRenderer https://blog.ag-grid.com/binding-boolean-values-to-checkboxes-in-ag-grid/
  19. function CheckboxRenderer() {}
  20. CheckboxRenderer.prototype.init = function (params) {
  21. this.params = params;
  22. this.eGui = document.createElement("input");
  23. this.eGui.type = "checkbox";
  24. this.eGui.checked = params.value;
  25. this.checkedHandler = this.checkedHandler.bind(this);
  26. this.eGui.addEventListener("click", this.checkedHandler);
  27. };
  28. CheckboxRenderer.prototype.checkedHandler = function (e) {
  29. let checked = e.target.checked;
  30. let colId = this.params.column.colId;
  31. this.params.node.setDataValue(colId, checked);
  32. };
  33. CheckboxRenderer.prototype.getGui = function (params) {
  34. return this.eGui;
  35. };
  36. CheckboxRenderer.prototype.destroy = function (params) {
  37. this.eGui.removeEventListener("click", this.checkedHandler);
  38. };
  39. this.gridOptions.components = {
  40. checkboxRenderer: CheckboxRenderer,
  41. };
  42. this.grid = new agGrid.Grid(this.$el, this.gridOptions);
  43. this.gridOptions.api.addGlobalListener(this.handle_event);
  44. },
  45. call_api_method(name, ...args) {
  46. this.gridOptions.api[name](...args);
  47. },
  48. handle_event(type, args) {
  49. this.$emit(type, {
  50. value: args.value,
  51. oldValue: args.oldValue,
  52. newValue: args.newValue,
  53. context: args.context,
  54. rowIndex: args.rowIndex,
  55. data: args.data,
  56. toIndex: args.toIndex,
  57. firstRow: args.firstRow,
  58. lastRow: args.lastRow,
  59. clientWidth: args.clientWidth,
  60. clientHeight: args.clientHeight,
  61. started: args.started,
  62. finished: args.finished,
  63. direction: args.direction,
  64. top: args.top,
  65. left: args.left,
  66. animate: args.animate,
  67. keepRenderedRows: args.keepRenderedRows,
  68. newData: args.newData,
  69. newPage: args.newPage,
  70. source: args.source,
  71. visible: args.visible,
  72. pinned: args.pinned,
  73. filterInstance: args.filterInstance,
  74. rowPinned: args.rowPinned,
  75. forceBrowserFocus: args.forceBrowserFocus,
  76. colId: args.column?.colId,
  77. selected: args.node?.selected,
  78. rowHeight: args.node?.rowHeight,
  79. rowId: args.node?.id,
  80. });
  81. },
  82. },
  83. props: {
  84. options: Object,
  85. html_columns: Array,
  86. },
  87. };