рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдбреЗрдЯрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬреИрд╕реЗ рдореБрджреНрд░рд╛рдУрдВ рдХреЗ рдЙрджреНрдзрд░рдг (рдФрд░ рд╡рд┐рддреНрддреАрдп рд╡рд┐рд╖рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреНрдп рдбреЗрдЯрд╛), рдХрд┐рд╕реА рдЪреАрдЬрд╝ (рдкрд╛рдиреА, рдЖрджрд┐) рдХреА рдЦрдкрдд, рдЖрдо рддреМрд░ рдкрд░ рдмреЛрд▓рдирд╛, рдХреЛрдИ рднреА рдбреЗрдЯрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЬреЛрдбрд╝реА "рддрд┐рдерд┐ - рдореВрд▓реНрдп" рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЪрд┐рддреНрд░рдордп рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЧреНрд░рд╛рдлрд╝ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдПрдХ "рдорд╛рд╕реНрдЯрд░" рдЧреНрд░рд╛рдл, рдЬрд┐рд╕ рдкрд░ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдПрдХ "рд╡рд┐рд╕реНрддрд╛рд░" рдЧреНрд░рд╛рдл рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рд╛рдИрдЪрд░реНрдЯреНрд╕ рдФрд░ jQuery рдпреВрдЖрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЧреНрд░рд╛рдл рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред
рдиреАрдЪреЗ рд╕рдорд╛рдзрд╛рди рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рд╛рдИрдЪрд░реНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдПрдХ рдирдП рдЙрддреНрдкрд╛рдж рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕реЗ рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдЕрднреА рднреА рдмреАрдЯрд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред
рдХреИрд╕рд╛ рд▓рдЧреЗрдЧрд╛
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, 4 рдЬрд╝реЛрди рдЪреБрдиреЗ рдЧрдП рд╣реИрдВ рдЬреЛ рдХрд┐ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдВрдЧреЗ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ:
- рд╡рд┐рд╡рд░рдг рдЪрд╛рд░реНрдЯ
- рдЕрдиреБрд╕реВрдЪреА "рдорд╛рд╕реНрдЯрд░"
- рдЕрд╡рдзрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ
- рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЛ рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рдкреАрд░рд┐рдпрдб рдХреЗ рд▓рд┐рдП
рдкрд╣рд▓реЗ рджреЗрдЦреЛ
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рд╛рдИрдЪрд░реНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд╛рд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХреЗ рд▓рд┐рдП jQuery рдпреВрдЖрдИ рд╕рд╛рдЗрдбрд░ред HTML рдорд╛рд░реНрдХрдЕрдк 4 рд▓рдЧрд╛рддрд╛рд░ DIV'a рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдКрдкрд░ рджреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░, рд╕реНрд▓рд╛рдЗрдбрд░ рдФрд░ "рд╡рд┐рд╕реНрддрд╛рд░" рдЪрд╛рд░реНрдЯ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИред рд╢реЗрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ "рдорд╛рд╕реНрдЯрд░" рдЪрд╛рд░реНрдЯ рдкрд░, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдФрд░ рдЗрд╕рдХреЗ рд▓реЗрдмрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╢реЗрд╖ рд╕реЗрд╡рд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕
рд╕реНрд▓рд╛рдЗрдбрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:
function createSlider() { var sliderId = "#" + _sliderContainerId; $(sliderId).slider({ range: true, min: _minDate, max: _maxDate, values: [_minDate, _maxDate], stop: onSliderStop, slide: onSliderSlide }); $(sliderId + " > .ui-widget-header").addClass(_sliderRangeClass); $(sliderId + " > .ui-slider-handle").addClass(_sliderHandleClass); $(sliderId).show(); createScrollbar(); } function createScrollbar() { var scrollId = "#" + _scrollbarContainerId; $(scrollId).slider({ min: _minDate, max: _maxDate, slide: onScrollbarSlide, stop: onScrollbarStop }); $(scrollId + " > .ui-slider-handle").addClass(_scrollbarHandleClass); $(scrollId).show(); }
рд╕реНрд▓рд╛рдЗрдбрд░ рдФрд░ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рд╕реАрдорд┐рдд рдореВрд▓реНрдп рд╕рдорд╛рди рд╣реИрдВ: рдмрд╛рдИрдВ рд╕реАрдорд╛ рдиреНрдпреВрдирддрдо рддрд┐рдерд┐, рджрд╛рдИрдВ рдУрд░ - рдЕрдзрд┐рдХрддрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
рд░реЗрдВрдЬ-рд╕реНрд▓рд╛рдЗрдбрд░ (рдЖрдХреГрддрд┐ рдореЗрдВ рдирдВрдмрд░ 3) рдЖрдкрдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рд╕реАрдорд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реАрдорд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ, рд╕реНрд▓рд╛рдЗрдбрд░ рдирдВрдмрд░ 4 рдХреЗ рд╣реИрдВрдбрд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ, рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ рднреА рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреБрдХреНрдд рд╣реИрдВрдбрд▓рд░ рдХреЛ
рд╕реНрд▓рд╛рдЗрдб рдЗрд╡реЗрдВрдЯ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд╢реЗрдбреНрдпреВрд▓ рдЕрдкрдбреЗрдЯ рдХреЛ рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХреЗ
рд╕реНрдЯреЙрдк рдИрд╡реЗрдВрдЯ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рд░рд┐рдбреНрд░рд╛рд╡рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдмреНрд░реЗрдХ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред
рдЪреВрдВрдХрд┐ рдЪрд╛рд░реНрдЯ рдирдВрдмрд░ 3 рдПрдХ рд░реЗрдВрдЬ рд╕реНрд▓рд╛рдЗрдбрд░ рд╣реИ, рдЬрдм рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдмрд╛рдИрдВ рдФрд░ рджрд╛рдИрдВ рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдмрд╛рдХреА jQuery рдмрд╕ рдареАрдХ рдХрд░ рджреЗрдЧрд╛ред рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣реИрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпреЛрдВ?) рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдРрд╕рд╛ рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВ:
scrollbar.css("margin-left", -1 * width / 2 - 1);
рдпрд╣ рдЙрдкрд╛рдп рдЖрдкрдХреЛ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рд╣реИрдВрдбрд▓ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рдЖрдзрд╛ рд╢рд░реАрд░ рдкреНрд░рддрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд╣реАрдВ рдЫреЛрдбрд╝рдиреЗ рджреЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдЪреВрдВрдХрд┐ рдпрд╣ рд╕реНрд▓рд╛рдЗрдбрд░ рд╣реИрдВрдбрд▓ рдХреЗ рдордзреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХрд╛ рдореВрд▓реНрдп рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрд╕рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдЖрдзреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рд╕рд╛рде рд╣реА, рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рджрд╛рдПрдВ рдпрд╛ рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рд░реЛрдХреЗрдВ (
preventDefault рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
рдКрдкрд░ рджрд┐рдП рдЧрдП, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣реИрдВрдбрд▓рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗ:
function updateSlider(from, to) { _from = from; _to = to; var $slider = $("#" + _sliderContainerId); $slider.slider("values", 0, from); $slider.slider("values", 1, to); } function updateScrollbar(from, to) { var range = to - from; var $scrollbar = $("." + _scrollbarHandleClass); var width = $("." + _sliderRangeClass).width(); $scrollbar.width(width); $scrollbar.css("margin-left", -1 * width / 2 - 1); $scrollbar.attr("range", range); $("#" + _scrollbarContainerId).slider("value", from + range / 2); } function onSliderSlide(event, ui) { var from = _from = ui.values[0]; var to = _to = ui.values[1]; var fromDate = new Date(from).toUTCString(); var toDate = new Date(to).toUTCString(); updateScrollbar(from, to); } function onSliderStop(event, ui) { updateChart(ui.values[0], ui.values[1]); } function onScrollbarSlide(event, ui) { var value = ui.value; var range = $("." + _scrollbarHandleClass).attr("range") * 1; var minReached = value - _minDate < range / 2; var maxReached = _maxDate - value < range / 2; if (minReached) { updateSlider(_minDate, _minDate + range); event.preventDefault(); return; } if (maxReached) { updateSlider(_maxDate - range, _maxDate); event.preventDefault(); return; } updateSlider(value - range / 2, value + range / 2); } function onScrollbarStop(event, ui) { var value = ui.value; var range = $("." + _scrollbarHandleClass).attr("range") * 1; updateChart(value - range / 2, value + range / 2); }
рдкрд░рд┐рдгрд╛рдо
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ
рдбреЗрдореЛ ред CSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд▓реБрдХ рдХреЛ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЧреНрд░рд╛рдл рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдЕрдкрдбреЗрдЯ, рдбреЗрдЯрд╛ рддреБрд▓рдирд╛ рдЖрджрд┐ред
рд╕рдВрджрд░реНрдн:
- Highcharts
- jQuery рдпреВрдЖрдИ
- Highstock