рджреЛрд╕реНрддреЛрдВ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдФрд░ рд╡реЗрдмрд┐рдХреНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдпреЗред рднрд╛рдЧ 2. рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ

рдкрд░рд┐рдЪрдп


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВрд╣рдордиреЗ рдЖрдкрдХреЗ рд╕рд╛рде рд╡реЗрдмрд┐рдХреНрд╕ рдврд╛рдВрдЪреЗ рдХреЛ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдЗрди рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рд▓ рдЬреАрдпреВрдЖрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдореБрджреНрджреЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪреМрдЦрдЯреЗ рдХреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдФрд░ рд╡реЗрдмрд┐рдХреНрд╕ рдХреА рдорджрдж рд╕реЗ рдмрдиреЗ рдЬреАрдпреВрдЖрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИред "рд╡реЗрдмрд┐рдХреНрд╕" рдореЗрдВ рд▓рд╛рдЧреВ рд╕рднреА рдЬреАрдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рдХреЛ "рджреГрд╢реНрдп" рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдпрд╛ рдПрдХ рдФрд░ рдЬреАрдпреВрдЖрдИ рддрддреНрд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред "рд╡реНрдпреВ" рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рд▓рдЧрднрдЧ 90% рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ "рд╡реЗрдмрд┐рдХреНрд╕" рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╢реЗрд╖ 10% рдмрд╕ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдпрд╛ рдПрдХ рдврд╛рдВрдЪреЗ (рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рд╡реЗрдмрд┐рдХреНрд╕ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВредрддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдврд╛рдВрдЪреЗ (рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ) рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ "рд╡реЗрдм" рддрддреНрд╡ рдХреЛ рдмрдирд╛рдПрдВрдЧреЗред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реВрдкрдг


GUI рдПрдкреНрд▓рд┐рдХреЗрд╢рди "рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди + рд╡реЗрдмрд┐рдХреНрд╕" рдмрдирд╛рдПрдВ, рдЬреЛ рдЧреНрд░рд╛рдл рдХреЗ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд░реАрдбреНрд░рд╛ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди "a, b рдФрд░ c" рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдлреЙрд░реНрдо "y = a * sin (b) + c" рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред

рдЫреЛрдЯрд╛ рдЖрд░рдХреНрд╖рдг


рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ "рд╡реЗрдмрд┐рдХреНрд╕" рдореЗрдВ рдЪрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИрдВред рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдЗрди рд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреВрд░рдХ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди + рд╡реЗрдмрд┐рдХреНрд╕ рдмрдВрдбрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдкрд░реЗрдЦрд╛ рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реБрдЖ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ "D3.js" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░ рдХреЛрдб рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдЙрдкрдХрд░рдг


  1. рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб - рдПрдбрд┐рдЯрд░ code.visualstudio.com ред
  2. Node.js - рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб nodejs.org/en
  3. рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди - рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ "npm рд╕реНрдерд╛рдкрд┐рдд - рд╕реЗрд╡реЗ-рджреЗрд╡ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди"ред
  4. Webix тАУ ru.webix.com.
  5. JQuery тАУ ┬лnpm jquery┬╗
  6. D3.js тАУ d3js.org
  7. (https://github.com/kapakym/electron_webix) , .


1. рдЪреВрдВрдХрд┐ рдореИрдВ рдПрдХ рдЖрд▓рд╕реА рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╢реБрд░реБрдЖрдд рд╕реЗ рджреВрд╕рд░реА рдмрд╛рд░ рд╕рднреА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдХреЛрдб рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рднрд░рддреЗ рд╣реИрдВред рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд╕рд╛рдЗрдЯ (рдЫрд╡рд┐ 1) рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдХреНрд▓реЛрди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣реИ (рдЪрд┐рддреНрд░ 2)ред


рдЕрдВрдЬреАрд░ред 1 - рдПрдХ рд╕рд╛рдЗрдЯ


рдЫрд╡рд┐ рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ ред 2 - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рдирд╛

2. рднрд╡рд┐рд╖реНрдп рдореЗрдВ рднреНрд░рдорд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ (рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, тАЬelectron_webix_2тАЭ рдХреА рддрд░рд╣ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб (рдЪрд┐рддреНрд░ 3) рдореЗрдВ рдЦреЛрд▓реЗрдВред


рдЕрдВрдЬреАрд░ред 3 - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВ

3. рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ "Node.JS" рдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЯреВрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред "Node.JS" рдХреЗ рдмрд┐рдирд╛, рдЖрдк рдЖрдЧреЗ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЕрдЧрд▓рд╛, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рдореЗрдВ "рд╕реАрдЯреАрдЖрд░ +` "рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ (рдЫрд╡рд┐ 4) рджреНрд╡рд╛рд░рд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:

  • "рдПрдирдкреАрдПрдо рд╕реНрдерд╛рдкрд┐рдд - рд╕реЗрд╡реЗ-рджреЗрд╡ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди";
  • "рдПрдирдкреАрдПрдо рд╕реНрдерд╛рдкрд┐рдд jquery"ред


рдЕрдВрдЬреАрд░ред 4 - Node.JS рдФрд░ JQuery

4 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА "рдбреА 3" рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╣рдо рдЗрд╕реЗ рдЯреВрд▓реНрд╕ ("рдбреА 3.рдЬрд╝рд┐рдк" рдлрд╝рд╛рдЗрд▓) рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ "d3.zip" рд╕реЗ рд╣рдо рдлрд╝рд╛рдЗрд▓ "d3.js" рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ "libs" рдлрд╝реЛрд▓реНрдбрд░ (рдЪрд┐рддреНрд░ 5) рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред


рдЕрдВрдЬреАрд░ред 5 - D3.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЬреЛрдбрд╝рдирд╛

рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗрдВрджреНрд░ рдореЗрдВ, рд╣рдордиреЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЯрд╛рдЗрдк рдХрд░рдирд╛


рдЕрдм рдЬрдм рдХрд╛рд░реНрдпрд╕реНрдерд▓ рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЬрд╛рдПрдВред рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд "рджреГрд╢реНрдп" рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ:

  • - рдЯреВрд▓рдмрд╛рд░, рдПрдХ рдорд╛рдирдХ рд╡реЗрдмрд┐рдХреНрд╕ рддрддреНрд╡ред рдЗрд╕ рддрддреНрд╡ рдХреЛ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд┐рдВрдбреЛ рдирд┐рдпрдВрддреНрд░рдг рдмрдЯрди рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдХреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗ;
  • - myview, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдФрд░ рдореБрдЭреЗ рдмрд╕ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╕реНрдЯрдо "рджреГрд╢реНрдп"ред рдпрд╣ рд╡рд╣ рдХреНрд╖реЗрддреНрд░ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЧреНрд░рд╛рдлрд╝ "рдбреА 3" рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдирд╛ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдХреЗ рдмреАрдЪ рдореЗрдВ рд░рдЦреЗрдВ;
  • - рд╕реНрд▓рд╛рдЗрдбрд░, "рд╡реЗрдмрд┐рдХреНрд╕" рдХрд╛ рдПрдХ рдорд╛рдирдХ рддрддреНрд╡ред рдпрд╣ рддрддреНрд╡ рдЖрдкрдХреЛ рддрдерд╛рдХрдерд┐рдд "рд╕реНрд▓рд╛рдЗрдбрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдХреЗ 3 рдЯреБрдХрдбрд╝реЗ рдмрдирд╛рдПрдВрдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди "рдП, рдмреА рдпрд╛ рд╕реА" рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред рдЙрдиреНрд╣реЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдХреЗ рдиреАрдЪреЗ рд░рдЦреЗрдВред

рдЖрдПрдБ рд╢реБрд░реВ рдХрд░реЗрдВред рдлрд╝рд╛рдЗрд▓ "рд░реЗрдВрдбрд░рд░.рдЬреЗрдПрд╕" рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рд╣рдо рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддрддреНрд╡реЛрдВ рд╕реЗ рдмрджрд▓ рджреЗрдВред

"рд░реЗрдВрдбрд░рд░.рдЬреЗрдПрд╕" рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереА:

//   
const { remote } = require('electron')
//           
let WIN = remote.getCurrentWindow()
//   webix
const webix = require('./libs/webix.min.js')
//  JQuery
$ = require('jquery')
//               
webix.ui(
    {
        "id": 1587908357897,
        "rows": [
            {
                "css": "webix_dark",
                "view": "toolbar",
                "height": 0,
                "cols": [
                    { "view": "label", "label": "Elcetron +Webix its cool!", css:"head_win" },
                    { "label": "-", "view": "button", "height": 38, "width": 40, id:"min-bt" },
                    { "label": "+", "view": "button", "height": 38, "width": 40, id:"max-bt" },
                    { "label": "x", "view": "button", "height": 38, "width": 40, id:"close-bt" }
                ]
            },
            {
                "width": 0,
                "height": 0,
                "cols": [
                    { "url": "demo->5ea58f0e73f4cf00126e3769", "view": "sidebar", "width": 177 },
                    {
                        "width": 0,
                        "height": 0,
                        "rows": [
                            { "template": "Hello WORLD! ", "view": "template" },
                            {
                                "url": "demo->5ea58f0e73f4cf00126e376d",
                                "type": "bar",
                                "xAxis": "#value#",
                                "yAxis": {},
                                "view": "chart"
                            }
                        ]
                    }
                ]
            }
        ]
    }
)

//  
$$("close-bt").attachEvent("onItemClick", () => {
    const window = remote.getCurrentWindow();
    window.close();
})

//  
$$("min-bt").attachEvent("onItemClick", () => {
    const window = remote.getCurrentWindow();
    window.minimize();
})

//  
$$("max-bt").attachEvent("onItemClick", () => {
    const window = remote.getCurrentWindow();
    if (!window.isMaximized()) {
        window.maximize();
    } else {
        window.unmaximize();
    }
})

рдпрд╣ рдЗрд╕ рддрд░рд╣ рдмрди рдЬрд╛рдПрдЧрд╛:

//   
const { remote } = require('electron')
//           
let WIN = remote.getCurrentWindow()
//   webix
const webix = require('./libs/webix.min.js')
//  JQuery
$ = require('jquery')
//               
webix.ui(
    {
        "id": 1587908357897,
        "rows": [
            {
                // view : toolbar - 1   
                "css": "webix_dark",
                "view": "toolbar",
                "height": 0,
                "cols": [
                    //  
                    { "view": "label", "label": "Electron + Webix + D3.js", css:"head_win" },
                    //  " "
                    { "label": "-", "view": "button", "height": 38, "width": 40, id:"min-bt" },
                    //  " "
                    { "label": "+", "view": "button", "height": 38, "width": 40, id:"max-bt" },
                    //  
                    { "label": "x", "view": "button", "height": 38, "width": 40, id:"close-bt" }
                ]
            },
            // view : myview -    ,      .
            { "view": "myview", id: "d3_chart" },
            {
                "cols": [
                    // view : slider - 3 .     sin
                    {
                        "label": "Amplitude", "title": "#value#", "value": 50, "view": "slider", id: "slider_amplitude",
                    },
                    // view : slider - 4 .      sin   Y
                    {
                        "label": "Bias", "title": "#value#", "value": 0, "view": "slider", "height": 38, id: "slider_scope", min:-50, max:50, step:1,
                    },
                    // view : slider - 5 .     sin
                    {
                        "label": "Frequency", "title": "#value#", "value": 0.005, "view": "slider", "height": 38, id: "slider_freq", min:0, max:0.1, step:0.001,
                    }
                ]
            }
        ]
    }
)

//  
$$("close-bt").attachEvent("onItemClick", () => {
    const window = remote.getCurrentWindow();
    window.close();
})

//  
$$("min-bt").attachEvent("onItemClick", () => {
    const window = remote.getCurrentWindow();
    window.minimize();
})

//  
$$("max-bt").attachEvent("onItemClick", () => {
    const window = remote.getCurrentWindow();
    if (!window.isMaximized()) {
        window.maximize();
    } else {
        window.unmaximize();
    }
})

рдЖрдЗрдП рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ "{" рджреГрд╢реНрдп ":" myview ", id:" d3_chart "}":
- рджреГрд╢реНрдп: myview - рдкреНрд░рдХрд╛рд░ "рджреГрд╢реНрдп" рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд╣рдордиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ;
- рдЖрдИрдбреА: d3_chart - "рд╡реЗрдмрд┐рдХреНрд╕" рдЖрдИрдбреА, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
рдореИрдВ рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП "рд╕реНрд▓рд╛рдЗрдбрд░" рддрддреНрд╡ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреА рд╕рдордЭрд╛рдКрдВрдЧрд╛:
- рджреГрд╢реНрдп: рд╕реНрд▓рд╛рдЗрдбрд░ - "рджреГрд╢реНрдп", рд╕реНрд▓рд╛рдЗрдбрд░;
- рд▓реЗрдмрд▓: "рдЯреЗрдХреНрд╕реНрдЯ" - рдПрдХ рд▓реЗрдмрд▓ рдЬреЛ рд╕реНрд▓рд╛рдЗрдбрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- рд╢реАрд░реНрд╖рдХ: "#value" - рд╕реНрд▓рд╛рдЗрдбрд░ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдореВрд▓реНрдп;
- рдореВрд▓реНрдп: "рдореВрд▓реНрдп" - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓рд╛рдЗрдбрд░ рдореВрд▓реНрдп;
- рдорд┐рдирдЯ: "рдореВрд▓реНрдп" - рд╕реНрд▓рд╛рдЗрдбрд░ рдХрд╛ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп;
- рдЕрдзрд┐рдХрддрдо: "рдореВрд▓реНрдп" - рд╕реНрд▓рд╛рдЗрдбрд░ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп ";
- рдЪрд░рдг:" рдореВрд▓реНрдп "- рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдЪрд░рдгред
рдЖрдк рдпрд╣рд╛рдВ рд╡реЗрдмрд┐рдХреНрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ

"Myview" рдмрдирд╛рдПрдВ


рдЕрдм рдПрдХ рдлрд╛рдЗрд▓ тАЬview_chart.jsтАЭ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдирдП рдкреНрд░рдХрд╛рд░ тАЬmyviewтАЭ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ тАЬVSCтАЭ рдореЗрдВ рдЦреЛрд▓реЗрдВред


рдЕрдВрдЬреАрд░ред 6 - рдПрдбрд┐рдЯрд┐рдВрдЧ рд╡реНрдпреВ_chart.js рд╢реБрд░реВ рдХрд░рдирд╛ рдЗрд╕рдореЗрдВ

рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

webix.protoUI({
    name: "myview",
    $init: function () {
    },
    redraw: function (a, b, c) {
    },
}, webix.ui.view);

Webix.protoUI рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд╛рдирдХ рддрддреНрд╡реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╕реНрдЯрдо рд╡реЗрдмрд┐рдХреНрд╕ рддрддреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

  • рдирд╛рдо - рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рдирд╛рдо;
  • $ init рдПрдХ рдРрд╕рд╛ рдлрдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рдмрдирдиреЗ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ;
  • redraw - рдЖрдкрдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдлрдВрдХреНрд╢рди, рдЬреЛ рдлрдВрдХреНрд╢рди рдХреЗ рдЧреНрд░рд╛рдл рдХреЛ redrawing рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред рд╣рдо рдЕрдкрдиреЗ рд╡реИрд░рд┐рдПрдмрд▓ "a, b рдФрд░ c" рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░реЗрдВрдЧреЗред
  • webix.ui.view рд╣рдорд╛рд░реЗ рддрддреНрд╡ рдХрд╛ рдЬрдирдХ рд╣реИред

рдЖрдк рдпрд╣рд╛рдВ webix.protoUI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдорд╛рд░реЗ "рджреГрд╢реНрдп" рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧреА, рддреЛ рд╣рдо рдХреБрдЫ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдкрд╛рдк рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдкреНрд▓реЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдВрдЧреЗред
рдкрд╛рдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
function calcsin(a, b, c) {
    dataset = [];
    for (var i = 1; i < 360; i++) {
        dataset.push({ "x": i, "y": a * Math.sin(b * i) + c });
    };
};


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд╣рдо рдЧрдгрд┐рддреАрдп рдлрд╝рдВрдХреНрд╢рди рдкрд╛рдк рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рдЗрд╕реЗ "view_chart.js" рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдЕрдЧрд▓рд╛, рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ "view_chart.js" рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдХрд┐ рдбреА 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреНрд░рд╛рдл рдЦреАрдВрдЪреЗрдЧрд╛ред рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
function drawSin() {
    $(document).ready(function () {
        width = $("#mycontent").width() - margin.left - margin.right
        height = $("#mycontent").height() - margin.top - margin.bottom;
        var xScale = d3.scaleLinear()
            .domain([0, 360]) 
            .range([0, width]); 

        var yScale = d3.scaleLinear()
            .domain([-100, 100]) 
            .range([height, 0]);  

        var line = d3.line()
            .x(function (d, i) { return xScale(d.x); }) 
            .y(function (d) { return yScale(d.y); })
            .curve(d3.curveMonotoneX)

        var svg = d3.select("#mycontent").append("svg")
            .attr("float", "center")
            .attr("class", "webix_chart")
            .attr("width", width + margin.left + margin.right)
            .attr("height", height + margin.top + margin.bottom)
            .append("g")
            .attr("transform", "translate(" + margin.left + "," + margin.top + ")")

        svg.append("g")
            .attr("class", "x axis")
            .attr("transform", "translate(0," + height/2 + ")")
            .call(d3.axisBottom(xScale)); 

        svg.append("g")
            .attr("class", "y axis")
            .call(d3.axisLeft(yScale))

        svg.append("path")

            .datum(dataset) 
            .attr("class", "line") 
            .attr("d", line); 
    })

}

рджрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
- рдЙрд╕ рджрд┐рд╡реНрдп рддрддреНрд╡ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЧреНрд░рд╛рдл рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ "рдЪреМрдбрд╝рд╛рдИ" рдФрд░ "рдКрдВрдЪрд╛рдИ" рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
- рд╣рдо "рдПрдХреНрд╕" рдФрд░ "рд╡рд╛рдИ" рджреНрд╡рд╛рд░рд╛ рдЧреНрд░рд╛рдл рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдорд╛рдкрддреЗ рд╣реИрдВ;
- рдПрдХ "html" рддрддреНрд╡ "svg" рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо "X" рдЕрдХреНрд╖, "Y" рдЕрдХреНрд╖ рдФрд░ рд╕реНрд╡рдпрдВ рдЧреНрд░рд╛рдл рдЦреАрдВрдЪрддреЗ рд╣реИрдВ;
рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдЪрд╛рд░реНрдЯ рдХреА рдЧрдгрдирд╛ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рд╣рдо рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдФрд░ "view_chart.js" рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрдИ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ:
//     D3.js
const d3 = require("./libs/d3")
//   JQuery
$ = require('jquery')
//          X    Y
var dataset = [];
//         
var margin = { top: 50, right: 50, bottom: 50, left: 50 }
    , width = $("#mycontent").width() - margin.left - margin.right 
    , height = $("#mycontent").height() - margin.top - margin.bottom;

рдЪрд░ "рдЪреМрдбрд╝рд╛рдИ" рдФрд░ "рдКрдВрдЪрд╛рдИ" рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЪрд╛рд░реНрдЯ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред
рдЕрдЧрд▓рд╛, рдлрд╝рдВрдХреНрд╢рди "webix.protoUI" рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд┐рдЦреЗрдВ:
webix.protoUI({
    name: "myview",
    $init: function () { //  View
        //   div  id=mycontent.      
        this.$view.innerHTML = "<div id='mycontent'></div>"
        //   calcsin       data  
        calcsin(60, 0.05, 0)
        //   drawSin        data
        drawSin()
    },
    redraw: function (a, b, c) { //    
        //   
        $("#mycontent").html("")
        //       data
        calcsin(a, b, c)
        //  
        drawSin()
    },
}, webix.ui.view);

рд╕рд╛рдордЧреНрд░реА рджреЛ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рднрд░рд╛ред рдкрд╣рд▓реЗ "рдЗрдирд┐рдЯ" рдХреЛ "рд╡реНрдпреВ" рдмрдирд╛рддреЗ рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рддрдм рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╣рдореЗрдВ рдЪрд╛рд░реНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдм рдлрд╛рдЗрд▓ рдХреА рдкреВрд░реА рд╕рд╛рдордЧреНрд░реА "view_chart.js" рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
//     D3.js
const d3 = require("./libs/d3")
//   JQuery
$ = require('jquery')
//          X    Y
var dataset = [];
//         
var margin = { top: 50, right: 50, bottom: 50, left: 50 }
    , width = $("#mycontent").width() - margin.left - margin.right 
    , height = $("#mycontent").height() - margin.top - margin.bottom;

webix.protoUI({
    name: "myview",
    $init: function () { //  View
        //   div  id=mycontent.      
        this.$view.innerHTML = "<div id='mycontent'></div>"
        //   calcsin       data  
        calcsin(60, 0.05, 0)
        //   drawSin        data
        drawSin()
    },
    redraw: function (a, b, c) { //    
        //   
        $("#mycontent").html("")
        //       data
        calcsin(a, b, c)
        //  
        drawSin()
    },
}, webix.ui.view);



function drawSin() {
    $(document).ready(function () {
        width = $("#mycontent").width() - margin.left - margin.right
        height = $("#mycontent").height() - margin.top - margin.bottom;
        var xScale = d3.scaleLinear()
            .domain([0, 360]) 
            .range([0, width]); 

        var yScale = d3.scaleLinear()
            .domain([-100, 100]) 
            .range([height, 0]);  

        var line = d3.line()
            .x(function (d, i) { return xScale(d.x); }) 
            .y(function (d) { return yScale(d.y); })
            .curve(d3.curveMonotoneX)

        var svg = d3.select("#mycontent").append("svg")
            .attr("float", "center")
            .attr("class", "webix_chart")
            .attr("width", width + margin.left + margin.right)
            .attr("height", height + margin.top + margin.bottom)
            .append("g")
            .attr("transform", "translate(" + margin.left + "," + margin.top + ")")

        svg.append("g")
            .attr("class", "x axis")
            .attr("transform", "translate(0," + height/2 + ")")
            .call(d3.axisBottom(xScale)); 

        svg.append("g")
            .attr("class", "y axis")
            .call(d3.axisLeft(yScale))

        svg.append("path")

            .datum(dataset) 
            .attr("class", "line") 
            .attr("d", line); 
    })

}

function calcsin(a, b, c) {
    dataset = [];
    for (var i = 1; i < 360; i++) {
        dataset.push({ "x": i, "y": a * Math.sin(b * i) + c });
    };
};


рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ "view_chart.js" рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ "рд░реЗрдВрдбрд░рд░.рдЬреЗрдПрд╕" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рд░реЗрдВрдбрд░рд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ "рдЖрд╡рд╢реНрдпрдХрддрд╛ (" ./ view_chart.js ") рдкрдВрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
//   
const { remote } = require('electron')
//           
let WIN = remote.getCurrentWindow()
//   webix
const webix = require('./libs/webix.min.js')
//  JQuery
$ = require('jquery')
//  view_chart.js
require("./view_chart.js")


рдЕрдм рдЖрдкрдХреЛ "style.css" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ "svg рдкрде" рдФрд░ "#mycontent" рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
.head_win {
    -webkit-app-region: drag;
}

/*   */
svg path{
    /*   */
    stroke: #666;
    /*   */
    fill: none;
    /*    */
    stroke-width: 1;
}

/*   mycontent,     */
#mycontent { 
    /*     */
    text-align: center;
    /*   */
    overflow: none;
    /*   */
    border: 1px solid black;
    /*     */
    background-color: antiquewhite;
    /*   */
    height: calc(100% - 2px);
}

рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖред рддреЛ, "F5" рджрдмрд╛рдПрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ 7.


рдЕрдВрдЬреАрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред 7 - рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдЦрд┐рдбрд╝рдХреА

рд╣рдо рдЙрд╕ рдкрд░ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рдКрдкрд░реА рднрд╛рдЧ рдорд╛рдирдХ рд╡реЗрдмрд┐рдХреНрд╕ рдЯреВрд▓рдмрд╛рд░ рд╣реИред рдордзреНрдп рднрд╛рдЧ рд╡рд╣ рдЪрд╛рд░реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ myview рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИред рдирд┐рдЪрд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рддреАрди рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЪрд▓реЛ рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ


рдЕрдм рд╣рдо рдЙрд╕ рдЪрд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдордзреНрдп рдореЗрдВ рдЧреНрд░рд╛рдл рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ "рдПрдореНрдкреНрд▓рд┐рдЯреНрдпреВрдб", "рдмрд╛рдпрд╕" рдФрд░ "рдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА" рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЛ "onChange" рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреНрдпреЛрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

// view : slider - 3 .     sin
                    {
                        "label": "Amplitude", "title": "#value#", "value": 50, "view": "slider", id: "slider_amplitude",
                        on: {
                            onChange: function () {
                                $$("d3_chart").redraw($$("slider_amplitude").getValue(), $$("slider_freq").getValue(), $$("slider_scope").getValue());
                            }
                        }
                    },
                    // view : slider - 4 .      sin   Y
                    {
                        "label": "Bias", "title": "#value#", "value": 0, "view": "slider", "height": 38, id: "slider_scope", min:-50, max:50, step:1,
                        on: {
                            onChange: function () {
                                $$("d3_chart").redraw($$("slider_amplitude").getValue(), $$("slider_freq").getValue(), $$("slider_scope").getValue());
                            }
                        }
                    },
                    // view : slider - 5 .     sin
                    {
                        "label": "Frequency", "title": "#value#", "value": 0.005, "view": "slider", "height": 38, id: "slider_freq", min:0, max:0.1, step:0.001,
                        on: {
                            onChange: function () {
                                $$("d3_chart").redraw($$("slider_amplitude").getValue(), $$("slider_freq").getValue(), $$("slider_scope").getValue());
                            }
                        }
                    }

рдЗрд╕ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЛ рдЙрд╕рдХреЗ "id" рддрдХ рдкрд╣реБрдБрдЪрд╛рдПрдВрдЧреЗ рдФрд░ "redraw" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЪрд╛рд░реНрдЯ рдХреЛ redraw рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛, рдЬреЛ рдЗрд╕реЗ рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХреЗ рд╡рд░реНрддрдорд╛рди рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред "F5" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ (рдЪрд┐рддреНрд░ 8)ред


рдЕрдВрдЬреАрд░ред 8 - рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛

рдЦрд┐рдбрд╝рдХреА рдХреЗ рдмрд╛рдж рдЧреНрд░рд╛рдл рдЦреАрдВрдЪреЛ


рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЪрд╛рд░реНрдЯ рдХреЛ рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ рдЬрдм рдпрд╣ рдмрджрд▓рддрд╛ рд╣реИред рд╣рдо рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ "view_chart.js" рдХреНрдпреЛрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рдВрдбреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ:

window.onresize = function ( e ) {
  
    $("#mycontent").html("")
    drawSin()
}

рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ "mycontent" рдмреНрд▓реЙрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ ("drawSin ()" рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИред рд╣рд░ рдмрд╛рд░ рдбреНрд░рд╛рд╕рд┐рди () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдЪрд░ рдХреЛ рдорд╛рдЗрдХреЛрдиреНрдЯреЗрдВрдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЖрдХрд╛рд░ (рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рд╕реМрдВрдкреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЧреНрд░рд╛рдл рдмреНрд▓реЙрдХ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


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

All Articles