Добавление пользовательских средств визуализации ячеек в pe: sheet - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь реализовать пользовательское средство визуализации ячеек для компонента pe: sheet.

Поскольку этот компонент основан на Handsontable, я попробовал подход, описанный здесь: https://handsontable.com/docs/6.2.2/demo-custom-renderers.html

Я также изменил код для регистрации из Handsontable.renderers.registerRenderer ('myRenderer', myCustomRenderer);this.cfg.renderers.registerRenderer ('myRenderer', myCustomRenderer);в попытке получить доступ к экземпляру handsontable внутри pe: sheet.

я вызываю свой sheetExtender через атрибут extender pe: sheet.

function sheetExtender() {
//    this.cfg.renderers.registerRenderer('myRenderer', myCustomRenderer);
//    Handsontable.renderers.registerRenderer('myRenderer', myCustomRenderer);    
    console.log(this);
}
var myCustomRenderer = function (instance, td, row, col, prop, value, cellProperties) {
    $(td).empty().append('TEST');
};

Добавление myRendererк атрибуту colType pe: sheetcolumn, я ожидал бы, что значения столбцов будут перезаписаны 'TEST'.

Когда я использую 'this.cfg ...', я получаю свойство Uncaught TypeError: Cannot read'registerRenderer' не определен.

Когда я использую 'Handsontable ...', я не получаю сообщение об ошибке, но также и никаких результатов, так как, я думаю, этот подход, вероятно, не добавил рендерер кфактический экземпляр handsontable.

Есть ли способ добавить пользовательские средства визуализации ячеек в pe: sheet или, по крайней мере, заставить ячейку отображать HTML?

1 Ответ

2 голосов
/ 04 апреля 2019

Я автор pe: sheet. Если вы хотите настроить рендер, вы можете сделать следующее ...

Вот где это происходит в компоненте: https://github.com/primefaces-extensions/core/blob/master/src/main/resources/META-INF/resources/primefaces-extensions/sheet/1-sheet.js#L59-L116

Вы можете просто переопределить значение по умолчанию TextCellRenderer своим собственным.

function sheetExtender() {
   this.cfg.textCellRenderer = function (instance, td, row, col, prop, value, cellProperties) {
        Handsontable.renderers.HtmlRenderer.apply(this, arguments);

        // call your custom renderer method here
        myCustomerRenderer(instance, td, row, col, prop, value, cellProperties);
   }    
}

...