2016-04-15 3 views
1

Есть ли у кого-нибудь предложения по улучшению производительности Rappid?Проблемы с объединением JJ/Rappid в IE

Он должен работать в IE (который работает в 10 раз медленнее, чем Chrome). Загрузка графа с 1000 квадратами и 1000 разъемами принимает 215s.

У меня нет ничего сверхъестественного в моем коде, я просто загрузки графа из файла JSON:

graph.fromJSON(JSON.parse(input)); 

Моя бумага установлена ​​в асинхронном = истинный, который предлагает большой импульс , И загрузка с JSON, по-видимому, значительно быстрее, чем создание всех узлов программно.

Я пробовал предложения здесь: https://groups.google.com/forum/#!topic/jointjs/dbdOrINRG8o, но я не мог заставить FastPaper работать в IE вообще.

+0

Rappid использует элементы SVG, которые никогда не будут исполнены в масштабе. Чтобы сделать много узлов, попробуйте использовать библиотеку HTML на основе canvas, а не http://gojs.net –

ответ

0

рендеринг только видимые элементы может помочь вам много, но это не бесплатно ...

graph.fromJSON(JSON.parse(input)); импортирует все клетки в графу, paper обнаруживает это изменение и начинается с рендерингом. В этот момент у вас есть все ячейки с положением и размерами в графе, а также область просмотра (видимая область). Теперь вам нужно отфильтровать элементы, которые в настоящее время находятся в окне просмотра, и отображать только их.

  • получить видовой экран: var viewport = paperScroller.getVisibleArea()
  • получить элементы в окне просмотра: graph.findModelsInArea(viewport)

то, что вам нужно расширить dia.Paper и переопределить метод renderView. Это должно выглядеть так:

joint.dia.PartialRenderPaper = joint.dia.Paper.extend({ 

    isVisible: function(cell) { 
     // detection logic 
    }, 
    renderView: function(cell) { 


     if (this.isVisible(cell) || cell.isLink()) { 

      return joint.dia.Paper.prototype.renderView.apply(this, arguments); 
     } 

     return null; 
    }, 

});