
рд╡реЗрдм рдШрдЯрдХ Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдирдпрд╛ рд╡реЗрдм рдорд╛рдирдХ рд╣реИред рдХреБрдЫ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдПрдХ рдкреНрд░рд╡реГрддреНрддрд┐ рдмрди рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдореИрдВ, рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдЗрд╕ рд░рд╛рдп рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред
рдорд╛рдирдХ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг:
habrahabr.ru/post/152001рдбрд╛рд░реНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдбрд╛рд░реНрдЯ рдореЗрдВ рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рджреЛрдЧреБрдиреА рд╣реЛ рдЧрдИред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрд╛ рдХрд┐ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЪрдорддреНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ
- DOM рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЛ рдХреЛрдб рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
- рдХреЗрд╡рд▓ рддрд░реНрдХ рдХреЛрдб рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдм рддрдХ рдпрд╣ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдордмреИрдХ рд╣реЛрдЧрд╛ред
рдпрд╣ рдкреЛрд╕реНрдЯ
рдиреЙрдХрдЖрдЙрдЯ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд┐рд╕реА рдХреЛ рднреА рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧреАред
js рдпрд╣ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрд╢реА рдЬреЗрдПрд╕ рдореЗрдВред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╕ рдПрдХ рдорд┐рдиреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛: рдПрдХ рдЯрд╛рдЗрдо рдЯреНрд░реИрдХрд░ред рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ред (рд╡реИрд╕реЗ, рдкрд░рд┐рдЪрд┐рдд, "рдРрд╕рд╛-рддреЛ рдерд╛ред" рдЙрд╕ рд╕рдордп, рдбрд╛рд░реНрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдкрд╛рджрдХ рджреЛрдиреЛрдВ рдХрдЪреНрдЪреЗ рдереЗред)
рдХреЛрдб:
github.com/Leksat/time_trackerрд▓рд╛рдЗрд╡ рд╕рдВрд╕реНрдХрд░рдг:
leksat.me/sites/default/files/time_tracker/web/out/_nain.html.htmlрд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ
timeTracker
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреА рдореБрдЦреНрдп рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпрд╛рдБ: рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рд╕рд╣реЗрдЬрдирд╛ред
tasks
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ
tasks
рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ, рдкреНрд░рдХрд╛рд░
Task
рдХреА рд╡рд╕реНрддреБрдПрдВред
рдФрд░ рдпрд╣рд╛рдВ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреЛрдб рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ ред <div id="main-wrapper" class="{{timeTracker.wrapperClass}}"> <div id="time-tracker"> <div id="tools"> <button data-action="click:timeTracker.createNewTask">New Task</button> <button data-action="click:timeTracker.deleteAllTasks">Clear all</button> </div> <div id="tasks"> <template iterate='task in timeTracker.tasks'> <div class="task"> <input class="name" type="text" data-bind="value:task.name" /> <input class="time" type="text" data-bind="value:task.time" disabled="{{task.working}}" /> <button data-action="click:task.toggleState">{{task.toggleStateLabel}}</button> <button data-action="click:task.delete">Delete</button> </div> </template> </div> </div> </div>
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВред
data-action="click:timeTracker.createNewTask"
onclick
рд╣реИрдВрдбрд▓рд░ рдХреЛ data-action="click:timeTracker.createNewTask"
редdata-bind="value:task.name"
input
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡реИрд▓реНрдпреВ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА рд╡реИрд▓реНрдпреВ рдХреЗ рд▓рд┐рдП task
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА name
рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдмрд╛рдВрдзрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдмрджрд▓рддреА рд╣реИ, рддреЛ input
рддрддреНрд╡ рдХрд╛ рдореВрд▓реНрдп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрдкрд░реНрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдЪ рд╣реИредTask . timeTracker.tasks " ". . .
рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдбрд╛рд░реНрдЯ рдХреА рд╕рднреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдбрд┐рдЧреНрд░реА рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВред рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рдмрдЧ рдлрд┐рдХреНрд╕ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХреЛ рдЧрддрд┐ рджреЗрдирд╛ рдФрд░ рдЙрддреНрдкрдиреНрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдирд╛ред