График акций в ExtJS 4 - PullRequest
       48

График акций в ExtJS 4

4 голосов
/ 02 августа 2011

Как я могу нарисовать график акций или линейный график с сотнями точек? Я отключил анимацию на обычном линейном графике, но не успешно, но все еще слишком тяжело и медленно.

Ответы [ 5 ]

4 голосов
/ 01 декабря 2011

Я недавно написал пост в блоге о создании биржевых диаграмм в Ext JS 4 - http://www.scottlogic.co.uk/2011/12/ext-js-4-stock-charts/. Он использует пару сотен пунктов и хорошо работает в современных браузерах и не так уж плох в IE7-8.

Тем не менее, даже после работы с системой сборки Ext JS минимальная сборка Ext, необходимая для запуска диаграмм, по-прежнему составляет что-то вроде .5MB, что является слишком большим весом для некоторых приложений.Однако CSS можно разделить на несколько правил - если вы готовы потратить время, пытаясь выяснить, какие из них вам нужны, из огромного ext-all.css!

3 голосов
/ 13 октября 2011

Мое приложение полностью основано на Ext-JS.Однако, когда производительность является проблемой, я использую flot.API гораздо лучше разработан (и я фанат Ext-JS) и работает намного лучше.Это происходит за счет работы с необработанными пиксельными данными (холст, основанный на пикселях), если вам нужно взаимодействовать с диаграммой.Поскольку в Ext-JS все является SVG-объектом, вы можете просто прикрепить обработчики событий к линиям или что-либо еще, что вы нарисовали сами.

Например.Для волнового монитора мы используем flot.Для другой диаграммы, где мы позволяем пользователю перетаскивать некоторые строки на экране, мы используем диаграммы Ext-JS.

Вот упрощенная оболочка для использования flot как Ext.Component

Ext.define('cci.view.wavemon.Flot',  {
    extend: 'Ext.Component',
    alias: 'widget.cci-flot',

    /**
     * @cfg {number[][]} data The data to be drawn when it gets rendered
     */
    data: null,

    /**
     * @cfg {object} flotOptions
     * The options to be passed in to $.plot
     */
    flotOptions: null,

    /**
     * @property
     * The Flot object used to render the chart and to manipulate it in the future. It will only
     * be available after the first resize event
     * You may not set this property but you are free to call methods on it
     */
    flot: null,

    initComponent: function() {
        this.callParent(arguments);
        // The only time that we're guaranteed to have dimensions is after the first resize event
        this.on('resize',  function(comp) {
            if (!this.flot) {
                this.flot = $.plot(this.getTargetEl().dom, this.data, this.flotOptions);
            } else {
                // Flot knows to look at the containers size and resize itself
                this.flot.resize();
            }
        }, this);
    }
});
1 голос
/ 13 октября 2011

Здесь приведен полный пример того, как создать линейные графики для диаграмм Сенчи:

http://dev.sencha.com/deploy/touch-charts-1.0.0/examples/Stock/

Как вы можете видеть, пример легко обрабатывает> 100 точек данных.

Пример для сенсорных диаграмм, но API почти идентичен тому, что есть в ExtJS 4. Sencha 4. Копирование и вставка кода экземпляра диаграммы должны работать.

1 голос
/ 08 августа 2011

Я обнаружил, что flot (http://code.google.com/p/flot/) имеет гораздо лучшую производительность со многими точками / сериями, тогда как производительность диаграмм ExtJS 4 была неприемлемой. Flot также имеет более понятный API и считывает данные в простом формате.

1 голос
/ 03 августа 2011

Если вы генерируете код extjs динамически (php, python, asp.net ...) и источник данных статичен - вы можете легко сгенерировать диаграмму в png и загрузить ее в ext.panel.

...