Cytoscape JS создать пользовательский рендерер (расширение рендерера)

Пожалуйста, кто-нибудь может мне помочь с созданием расширения рендерера для cytoscape js lib.

Вот как это работает сейчас:

let CanvasRenderer = cytoscape('renderer', 'canvas');

CanvasRenderer.prototype.drawPolygonPath = function(context, x, y, width, height, points) {
  // my implementation goes here
}

Как говорится на сайте cytoscape, это расширяемая библиотека! Поскольку я использую машинопись в своем проекте, я хочу что-то вроде этого:

class MyRenderer {

    constructor() {
        
    }
}

cytoscape('renderer', 'myRenderer', MyRenderer);

Этот код явно выдает ошибку cytoscape, которая говорит о том, что я не реализовал некоторые методы...

Затем я нашел расширение https://github.com/wehriam/cytoscape-css-renderer, и оно не работало с моей версией cytoscape (я использую 2.7.13). Я также попытался решить эту проблему, аналогично cytoscape-css-renderer:

let CanvasRenderer = cytoscape('renderer', 'canvas');

class MyRenderer {

    constructor(options) {
        CanvasRenderer.call(options);
    }

}

MyRenderer.prototype = Object.create(CanvasRenderer.prototype);
MyRenderer.prototype.constructor = MyRenderer;
$.extend(PricingRenderer, CanvasRenderer);

cytoscape('renderer', 'myRenderer', MyRenderer);

но он выдает эту ошибку:

Не могу зарегистрироваться myRenderer за renderer поскольку clientFunctions уже существует в прототипе и не может быть переопределено

Так может кто-нибудь помочь мне с этим... Спасибо!

1 ответ

Используйте рендерер canvas в качестве примера: https://github.com/cytoscape/cytoscape.js/tree/master/src/extensions/renderer/canvas

Другие вопросы по тегам