Highcharts: ES6 рдЖрдпрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ "рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ" (рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝, рдмреЗрдмреЗрд▓)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдлрд╝рд░ре░ 2016  ┬╖  36рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: highcharts/highcharts

рдореИрдВрдиреЗ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЛ рдмреИрдмреЗрд▓/рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝/рдИрдПрд╕6 рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдВрднрд╡ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдореБрдЭреЗ ReferenceError: Highcharts is not defined рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рдкрд╣рд▓реЗ рд╣рд╛рдИрд╕реНрдЯреЙрдХ-рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдЯреВрдЯ рдЧрдпрд╛ред

рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛

npm install highcharts --save-dev

рдореИрдВрдиреЗ рдПрдХ рдХрд┐рдпрд╛ рд╣реИ

//highcharts libraries
import Highcharts from 'highcharts/highstock';
import 'highcharts-ng'; //angular highcharts bindings

рдЕрдЧрд░ рдореИрдВ рджреЗрд╡ рдЙрдкрдХрд░рдг рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдлрд╝рд╛рдЗрд▓ рдареАрдХ рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ:

image

рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреАред рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

highcharts-release рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╣рддрд╛рд╢рд╛ ( :P ) рдореЗрдВ рднреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдФрд░ рдЕрдзрд┐рдХред рдореИрдВрдиреЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд░реЛрдд рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдЕрднреА рднреА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

//highcharts libraries
let Highcharts = require('highcharts/highstock');
import 'highcharts-ng';

рд╕реАрд╕реА- @laytzehwu

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рд╡реЗрдмрдкреИрдХ рдПрдирдЬреА рдИрдПрд╕ 6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рд╣реИ

var Highcharts = require('highcharts/highstock');
window.Highcharts = Highcharts;
require('highcharts/modules/exporting')(Highcharts);

рдЕрдЧрд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдпрд╛рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЙрддреНрддрд░ рджреЗрдВ

рд╕рднреА 36 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рд╡реЗрдмрдкреИрдХ рдПрдирдЬреА рдИрдПрд╕ 6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рд╣реИ

var Highcharts = require('highcharts/highstock');
window.Highcharts = Highcharts;
require('highcharts/modules/exporting')(Highcharts);

рдЕрдЧрд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдпрд╛рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЙрддреНрддрд░ рджреЗрдВ

@ рдЬреЙрди-рдП-рдиреНрдпрд╛рдЧрд╛рд░реНрдб

рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╣рдо рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рдЖрдк рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдмреЗрд▓-рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рд╡реЗрдмрдкреИрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рдп, @ рдЬреЙрди-рдП-рдирд╛рдпрдЧрд╛рд░реНрдбред рд╡реЗрдмрдкреИрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреНрд░рд╛рдЙрдЬрд┐рдВрдЧ рдХрд╕реНрдЯрдо рдмрдВрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдкрд░рд┐рдкрдХреНрд╡ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдП рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдареАрдХред @ragefuljoe - window.Highcharts = Highcharts рдХреА рдЬрд░реВрд░рдд рдереАред рдпрд╣ рдЗрд╕ рдЖрдпрд╛рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

import Highcharts from 'highcharts/highstock';
window.Highcharts = Highcharts; //this line did the magic
import 'highcharts-ng';

рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЖрдк рд▓реЛрдЧ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрд╛рдВрдзрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореБрдЦреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@piggyslasher рдЦреБрд╢реА рд╣реИ рдХрд┐ @ragefuljoe рдХреЗ рдХрд╛рдордХрд╛рдЬ рдиреЗ рдЖрдкрдХреА рдорджрдж рдХреАред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо ES6 рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд▓реЛрдбрд┐рдВрдЧ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореБрдЦреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдПрдХ рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ npm рдЖрд▓реЗрдЦ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ @piggyslasherред рдХреЛрдИ рднрд╛рдЧреНрдп рдЖрдпрд╛рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде exporting.js рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ?

_рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ_
рдпрд╣рд╛рдБ рдореЗрд░реА рд╕рднреА рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдирдХреНрд╢реЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

import Highcharts from 'highcharts/highstock';
window.Highcharts = Highcharts;
require('highcharts/modules/map')(Highcharts);
require('highcharts/modules/exporting')(Highcharts);
require('./pages/home-page/world'); //I'm downloading this from example links. any better way?
import 'highcharts-ng';

рдХреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдирдЪрд┐рддреНрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдпрд╣рд╛рдВ world.js рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реВрдВ (рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдмреИрдХрдПрдВрдб рд╕реЗ рдЬреЗрд╕рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)

рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ 'рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕' рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдкреНрд░рдореБрдЦ рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ "рдмрд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ" рдФрд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@ jon-a-nygaard @TorsteinHonsi - рдпрд╣ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХреЛрдгреАрдп, рд▓реЙрд╢, рдЕрдВрдбрд░рд╕реНрдХреЛрд░, рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ рдФрд░ рдЕрдиреНрдп рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрд╕рдВрдЦреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░/рд╡реЗрдмрдкреИрдХ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

@romiem рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕реЗ рд╣рдорд╛рд░реА рдЕрдЧрд▓реА рд░рдЦрд░рдЦрд╛рд╡ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред

рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ 4.2.5 рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдЕрдЧрд░ рдореИрдВ рдЖрдпрд╛рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ import Highcharts from 'highcharts' , рддреЛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ Uncaught TypeError: _highcharts2.default[(this.props.type || "Chart")] is not a constructor ред

рдЬрдм рдореИрдВ @ragefuljoe рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ 'highcharts/highstock рдХреЗ рдмрдЬрд╛рдп 'highcharts' ? рдареАрдХ рд╣реИ, рдпрд╣ рдЖрдпрд╛рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ, рдпрд╛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЛрдЪрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛?

рдпрд╣рд╛рдВ рдкреВрд░рд╛ (рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛) рдХреЛрдб рд╣реИ:

import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import Highcharts from 'highcharts/highstock';
class Chart extends Component {
    constructor(props) {
        super(props);
    }
    // When the DOM is ready, create the chart.
    componentDidMount() {
        // Extend Highcharts with modules
        if (this.props.modules) {
            this.props.modules.forEach(function (module) {
                module(Highcharts);
            });
        }
        this.chart = new Highcharts[this.props.type || "Chart"](
            this.props.container, 
            this.props.options
        );
    }
    //Destroy chart before unmount.
    componentWillUnmount() {
        this.chart.destroy();
    }
    //Create the div which the chart will be rendered to.
    render() {
        return React.createElement('div', { id: this.props.container });
    }
}
export default Chart;

рдореБрдЭреЗ рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП @ рдЬреЙрди-рдП-рдирд╛рдпрдЧрд╛рд░реНрдб рдзрдиреНрдпрд╡рд╛рджред

рдЙрдиреНрдирдд рд╡реЗрдмрдкреИрдХ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдПред рдореИрдВ рдХреЛрдбрдкреЗрди рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рд░рд┐рдПрдХреНрдЯ/рд╣рд╛рдИрд╕реЙрдлреНрдЯ рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрд▓реНрдж рд╣реА рдПрдХ рдЙрдЪрд┐рдд рдиреЛрдб рдПрдирд╡реА рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рд╡реЗрдмрдкреИрдХ/рдЖрдпрд╛рдд/рдИрдПрд╕ 6 рдЕрдЪреНрдЫреА рдЪреАрдЬреЗрдВ рд╣реИрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ w / MDL рдФрд░ рд╣рд╛рдИрд╕реНрдЯреЙрдХ (рдкрд░реАрдХреНрд╖рдг)

рдХреНрдпрд╛ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ 5 рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдХреЛрдгреАрдп 2 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ "рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕" рдореЙрдбреНрдпреВрд▓ рд╕реЗ "рд╕рд░рд▓" рдЖрдпрд╛рдд {рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕} рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░ рд╣реИ? рдХреЗрд╡рд▓ "рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд┐рд▓реЗ рдЬреЛ рд╣рдореЗрд╢рд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реИрдХреА рд╣реЛрддрд╛ рд╣реИ ...

@ рдЬреЙрди-рдП-рдиреНрдпрд╛рдЧрд╛рд░реНрдб

@Skuriles рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдВрдбрд▓рд░ (рдЬреИрд╕реЗ Webpack, Browserify) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк ES6 рдФрд░ Babelify рдХреЗ рд╕рд╛рде Highcharts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@ рдЬреЙрди-рдП-рдирд╛рдпрдЧрд╛рд░реНрдб рдореИрдВ SystemJs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

@Skuriles рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ SystemJS рдХреЗ рд╕рд╛рде Highcharts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдирд╣реАрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдВ рдФрд░ рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ!
рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж !!

рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ рдФрд░ рдЧрд▓реНрдк-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдлреЗрдВрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдРрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрддреЛрд╖рдЬрдирдХ рдирд╣реАрдВ рд╣реИред

Highcharts/highstock.js рд╕реЗ рдЖрдпрд╛рдд Highcharts рдЕрднреА рднреА рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдореЙрдбреНрдпреВрд▓ рд╣реИред

рдореИрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рднреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдлреЗрдВрдХрддрд╛ рд╣реИред

рддреЛ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдмрд┐рдирд╛ systemjs рдХреЗ рд╕реАрдзреЗ highstock.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЧрдпрд╛ рдФрд░ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП TS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ Highcharts рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ред

рдореИрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ ES6 рдореЙрдбреНрдпреВрд▓ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рдЬреА рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдордЬ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб, рдмрдВрдбрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВрдЧреЗ!

@ jon-a-nygaard рдореИрдВ рдЕрдкрдиреЗ рд╣рд╛рдИрдЪрд╛рд░реНрдЯ рдХреЛ рдЕрдкрдиреЗ рд░реАрдХреИрдЯ рдРрдк рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред рдореБрдЭреЗ рдмрд╕ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдХреНрд░реАрди рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рд╣рд╛рдИрдЪрд╛рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

import React, {Component, PropTypes} from 'react';
import Highcharts from 'highcharts/highcharts';
import styles from './styles/linechart.css';
import cssModules from 'react-css-modules';
import request from 'axios';
import moment from 'moment';

@cssModules(styles)
class LineChart extends Component {
    constructor(props) {
        super(props);
    }

    static propTypes = {
        modules: PropTypes.oneOfType([
            PropTypes.string,
            PropTypes.object,
            PropTypes.array
        ]),
        container: PropTypes.oneOfType([
            PropTypes.string,
            PropTypes.object,
            PropTypes.array,
        ]),
        options: PropTypes.oneOfType([
            PropTypes.object,
            PropTypes.array
        ]),
    };

    highchartsModules() {
        if (this.props.modules) {
            this.props.modules.forEach(function(module) {
                module(Highcharts);
            });
        }
    }

    componentDidMount() {

        const inComing = [];
        const outGoing = [];
        const xAxisData = [];

        request.get('/dashboard/hourly', {
            params: {
                timezone: moment().utcOffset(),
                date:     '2016-07-06'
                // date:     moment(new Date()).format('YYYY-DD-MM')
            }
        }).then(response => {
                response.data.forEach(item => {
                    const flattened = {};
                    const out = {};
                    flattened.name = item.date;
                    flattened.y = item.inCount;
                    out.name = item.date;
                    out.y = item.outCount;
                    xAxisData.push(item.hour);
                    inComing.push(flattened);
                    outGoing.push(flattened);
                });
            });

            console.log('InComing data: ', inComing);
            console.log('OutGoing data: ', outGoing);
            console.log('X Axis data: ', xAxisData);

            const chartOptions = {
                tooltip: {
                    borderRadius:    20,
                    backgroundColor: 'rgba(18, 21, 23, 0.9)',
                    style:           {
                        color: 'white',
                    },
                    shadow: false,
                },
                title: {
                    text: ''
                },
                subTitle: {
                    text: ''
                },
                xAxis: {
                    categories: xAxisData,
                    labels:     {
                        enabled: false
                    },
                    crosshair: {
                        width:     1,
                        dashStyle: 'Dash',
                        color:     'black',
                        snap:      false,
                    },
                    tickInterval: 2
                },
                legend: {
                    enabled: false,
                },
                series: [{
                    name: 'Incoming Calls',
                    data: inComing
                }, {
                    name: 'Outgoing Calls',
                    data: outGoing
                }
            ]
        };

        this.highchartsModules();
        console.log('CHART OPTIONS: ', chartOptions);
        if (typeof window !== 'undefined') {
            this.chart = new Highcharts['Chart'](
                this.props.container,
                chartOptions
            );
        }
    }

    render() {
        const { container } = this.props;
        return (
            // <div styleName="chart">
                <div class="chart" id={container} />
            // </div>
        );
    }
}

export default LineChart;

рдФрд░ рдореИрдВ рдЗрд╕ рд╣рд╛рдИрдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

<LineChart container="chart" type="chart" />

рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреАред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

рдЕрдм рддрдХ рдореБрдЭреЗ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИред

import Highcharts from "highcharts";

рд╕рд┐рд╕реНрдЯрдордЬреЗрдПрд╕
рдирдХреНрд╢рд╛:
'highcharts': "npm:highcharts"
рдкреИрдХреЗрдЬ:
'highcharts': { main: "highstock", defaultExtension: "js"}

рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛:
рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдлреЗрдВрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ @types/highharts рдореЗрдВ рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛ рд╣реИ:
Property 'StockChart' does not exist on type 'Static'.

рд▓реЗрдХрд┐рди рдРрдк рдХрдо рд╕реЗ рдХрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рд╕реЗрдЯрдЕрдк рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдПрдХ рд╡реЗрдВрдбрд░.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ

import * as _highcharts from 'highcharts/highcharts';
...
export default {
   ...
   _highcharts
};

рдЬреЛ рдПрдХ рд╡реЗрдВрдбрд░ рдмрдВрдбрд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдлрд┐рд░ рдореЗрд░реЗ app.rollup.js рдореЗрдВ (рдореЗрд░рд╛ рдРрдк рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓)ред

export default {
    entry: 'src/main.ts',
    dest: 'bundles/app.js',
    format: 'iife',
    sourceMap: true,
    moduleName: 'app',
    plugins: [
        ...
    ],
    external: [
        'highcharts/highcharts'
    ],
    globals: {
        ...
        'highcharts/highcharts': 'vendor._highcharts'
    }
};

рдФрд░ рдЕрдВрдд рдореЗрдВ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ

import Highcharts from 'highcharts/highcharts';

@ рдЬреЙрди-рдП-рдирд╛рдпрдЧрд╛рд░реНрдб рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ 'highchart' has no default export рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

@Skuriles рдзрдиреНрдпрд╡рд╛рдж рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рджрд╛ рдФрд░ рд╕рд░рд▓ рдХрд┐рдпрд╛ ..

рдЖрдпрд╛рдд 'рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕';

(рдЖрдкрдХреЗ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд)

рдзрдиреНрдпрд╡рд╛рдж

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдиреАрдЪреЗ рд╡рд╛рд▓реЗ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛:

import Highcharts from 'highcharts/highcharts.src.js';
import {default as HighchartsMore} from 'highcharts/highcharts-more.src.js';
HighchartsMore(Highcharts);

рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдПрдХ рд╡рд░реНрдХрд┐рдВрдЧ рд╕реЗрдЯрдЕрдк рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

import * as Highcharts from 'highcharts'
import * as HighchartsMore from 'highcharts/highcharts-more.src.js'
HighchartsMore(Highcharts)

import Highcharts from 'highcharts' рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╡реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдпрд╛рдд рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд░реВрдкреЛрдВ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛

рд╣рд╛рдп рдЬреЙрди, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ Google рдХреНрд░реЛрдо рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЪрд╛рд░реНрдЯ рднреА рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпреЗ рдЪрд╛рд░реНрдЯ рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рднреА рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдХреЛрдИ рдЙрдкрд╛рдп рдмрддрд╛рдПрдВ рдХрд┐ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдХреЛрдИ рднреА рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдХреГрдкрдпрд╛ рдорджрдж рдХрд░реЗрдВ

рд╣рд╛рдп @ рд╕рдВрджреАрдкрдЬ 38 ,

рдпрд╣ ES6 рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╣рдорд╛рд░реЗ рдордВрдЪ рдкрд░ рдХреЛрдИ рд╡рд┐рд╖рдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдореЗрдВ рдПрдХ рдИрдореЗрд▓ ( рд╡рд┐рд╡рд░рдг ) рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ? рдзрдиреНрдпрд╡рд╛рдж!

рдирдорд╕реНрддреЗ,
рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЗ рд╕рд╛рдеред рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ

Uncaught TypeError: _highcharts2.default[(this.props.type || "Chart")] is not a constructor

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдореИрдВрдиреЗ рдЖрдпрд╛рдд/рдЖрд╡рд╢реНрдпрдХрддрд╛ 'рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕', 'рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕/рд╣рд╛рдИрд╕реНрдЯреЙрдХ', 'рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕.рдЬреЗрдПрд╕' рдХреЗ рд╣рд░ рд╕рдВрднрд╡ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдФрд░ рд╕рдВрдпреЛрдЬрди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдЕрдм рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рд╣реВрдВред

var Chart = React.createClass({ componentDidMount: function () { // Extend Highcharts with modules if (this.props.modules) { this.props.modules.forEach(function (module) { module(Highcharts); }); } // Set container which the chart should render to. this.chart = new Highcharts[this.props.type || "Chart"]( this.props.container, this.props.options ); }, //Destroy chart before unmount. componentWillUnmount: function () { this.chart.destroy(); }, //Create the div which the chart will be rendered to. render: function () { return React.createElement('div', { id: this.props.container }); } }), element2;

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдпрд╣рд╛рдБ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ рд╕рддреАрд╢рд░рд╛рд╡ 84 рдпрд╣ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ https://github.com/kirjs/react-highcharts , рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдФрд░ рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдХреЛ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдИрдПрд╕ 6 рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд╕рд╛рде рд╣реА рд╕рднреА рдмрдВрдбрд▓, рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рдереАрдо рдХреЗ рд╕рд╛рдеред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕-рдПрдирдЬреА рд░реЗрдкреЛ рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ https://github.com/pablojim/highcharts-ng/issues/624

рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рдореБрдЦреНрдп рдРрдк рдореЗрдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕/рд╣рд╛рдИрд╕реНрдЯреЙрдХ, рдлрд┐рд░ рдереАрдо, рдлрд┐рд░ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕-рдПрдирдЬреА рдЖрдпрд╛рдд рдХрд░рдирд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрдВрдбрд▓ рдЧреНрд▓реЛрдмрд▓ рдореЗрдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдЬреЛрдбрд╝рдирд╛ рдерд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред

*рдиреЛрдЯ: рдореБрдЭреЗ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕-рдПрдирдЬреА v1.0.1 рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ 1.1.0 рдореЗрдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ 5 рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдЙрддреНрдкрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ v1.0.1 рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдореЗрдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдирд┐рд░реНрднрд░рддрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдбрдмрд▓ рдпрд╛ рдЯреНрд░рд┐рдкрд▓ рд▓реЛрдбрд┐рдВрдЧ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдореЗрдВ рд╣рд╛рдИрд╕реНрдЯреЙрдХ v6 рдФрд░ рдореЗрд░реА рдереАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВ рдЖрдпрд╛рдд ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

import Highcharts from "highcharts/highstock";
import "../../js/highcharts.theme";
import "highcharts-ng";
import Exporter from "highcharts/modules/exporting";

// connect exporter to Highcharts bundle global
Exporter(Highcharts);

рдФрд░ webpack.config рдореЗрдВ рдереАрдо рдХреЗ рд▓рд┐рдП Highcharts рдЧреНрд▓реЛрдмрд▓ рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВред

  plugins: [
    new webpack.ProvidePlugin({
      jQuery: "jquery",
      $: "jquery",
      "window.jQuery": "jquery",
      Highcharts: "highcharts/highstock"
    })
  ]

@ рд╕рддреАрд╢рд░рд╛рд╡ 84 рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рдереА рдЬрдм рдореИрдВрдиреЗ рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╣рд╛рдИрдЪрд╛рд░реНрдЯ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рдерд╛ред Highstock JS рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ webpack рдмрдВрдбрд▓ рдореЗрдВ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп Highcharts рд╣реИред рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╣рд╛рдИрд╕реНрдЯреЙрдХ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВред рдореЗрд░реЗ рдкрд╛рд╕ рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдФрд░ рдПрдХ рдереАрдо рд╣реИ рдЬреЛ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕-рдПрдирдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рдЕрднреА рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдмрдВрдбрд▓ рдореЗрдВ рд╣реИред

7da7361 рдкреНрд░рддрд┐рдмрджреНрдз рдореЗрдВ рдХрд┐рдП рдЧрдП рдЕрджреНрдпрддрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдм рдмрдВрдж рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ ES6 рдореЗрдВ рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдорд╕реНрдпрд╛ рдорд╛рдирд╛ рд╣реИред рдореИрдВ рдЗрди рдЕрджреНрдпрддрдиреЛрдВ рдХреЛ www.highcharts.com/docs рдкрд░ рднреА рд▓рд╛рдЧреВ рдХрд░реВрдБрдЧрд╛ред

рд╕рдордп рдХреЗ рд╕рд╛рде рдпрд╣ рдореБрджреНрджрд╛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рдореБрджреНрджреЛрдВ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдЖрдкрдХреЛ рдЙрдЪрд┐рдд рд╕рд╣рд╛рдпрддрд╛ рджреЗрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╣рдорд╛рд░реЗ ES6 рдореЙрдбреНрдпреВрд▓ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ #7186 рдЕрдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред

рдпрджрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рджреЗрдВред

рд╕рд╛рджрд░

рдореБрдЭреЗ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ

рд╕рд░рд▓ рд╣рд╛рдИрдЪрд╛рд░реНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдФрд░ рдлрд┐рд░
рдЖрдпрд╛рдд 'рдПрдХреНрд╕рдкреЛрдЬрд╝? рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕! рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕/рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕';

@ omer123456 рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА

BREAKING CHANGE: It's no longer allowed to omit the '-loader' suffix when using loaders.
                 You need to specify 'expose-loader' instead of 'expose',
                 see https://webpack.js.org/guides/migrating/#automatic-loader-module-name-extension-removed

рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ
рдЖрдкрдХреЗ рдореБрдЦреНрдп рдЬреЗрдПрд╕ . рдореЗрдВ

import Highcharts from 'highcharts';
import 'highcharts-ng'

рдФрд░ рдлрд┐рд░ webpack.config.js . рдореЗрдВ рдПрдХ рдирдпрд╛ рдирд┐рдпрдо рдЬреЛрдбрд╝реЗрдВ

{
   test: require.resolve('highcharts'),
   use:[{
            loader: 'expose-loader',
            options: 'Highcharts'
   }]
}

рдпрд╣ Cannot read property 'Chart' of null . рдХреЗ рдореБрджреНрджреЗ рдХреЛ рднреА рд╣рд▓ рдХрд░рддрд╛ рд╣реИ

рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ; рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ ES6 рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:

https://github.com/highcharts/highcharts/issues/7186

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЕрднреА рднреА рдСрдирд▓рд╛рдЗрди рдбреЙрдХреНрд╕ рд╕реЗ рдЧрд╛рдпрдм рд╣реИ-

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Menighin picture Menighin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ananth-imagin picture ananth-imagin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Dunge picture Dunge  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bbonczek picture bbonczek  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

madreason picture madreason  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ