рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдЬреЛ HTML рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди Win8 рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╣рд╛рде рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реАрдПрд╕ 2013 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЗрдЦ рд╡рд┐рди 8.1 рдордВрдЪ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рдореБрдЦ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред рдЕрд░реНрдерд╛рддреН:
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреАрд╡рди рдЪрдХреНрд░
- рд╡рд╛рджрд╛;
- рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ;
- рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛;
- рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ;
- рдЯрд╛рдЗрд▓-рдПрд╕;
- рд╢реЗрдпрд░;
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрдврд╝рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
github.com/Sigura/HubraWin рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ,
рд╕рднреА рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЬреЛ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ default.js рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рди рд╣реЛ рдФрд░ рдЗрд╕реЗ app.js. рдореЗрдВ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПред рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЫреЛрдбрд╝рдХрд░ рд╕реАрдзреЗ default.js рдореЗрдВ рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВрдиреЗ "рд╕реБрд╡рд┐рдзрд╛рдУрдВ" рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдмрд╕ рдХреЗ рдПрдХ рдорд╛рдореВрд▓реА рд╕реЗрдЯ рдХреЗ рд╕рд╛рде WinJs.Utilities рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ред
рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
WinJS рд╕реНрдкреЗрд╕ рдореЗрдВ, рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯ рд╣реИ, рдЗрд╕рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ, рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдБред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ - рд╕рдВрджреЗрд╢ рдмрд╕:
WinJS рдЖрд╡реЗрджрди
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬрд┐рд╕рдХреА рдЕрдкрдиреА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ (WWAHost.exe) рд╣реИред WinJS, рдПрдкреНрд▓реАрдХреЗрд╢рди, рд╡рд┐рдВрдбреЛрдЬ, ... рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ WinJS.UI рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдУрдПрд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ред
рдореИрдВрдиреЗ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдмрдирд╛рдИред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдирдХ рд╕реЗрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡рд░реНрдЧ рд▓реЙрдиреНрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ (рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕рдХреНрд░рд┐рдп), рдХрд╛рдо рдХреА рд╕рдорд╛рдкреНрддрд┐ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ (рдСрдирдЪреЗрдХрдкреЙрдЗрдВрдЯ, рдкрд╣рд▓реЗ-рд╢реБрд░реВ, рдмрд╛рдж рд╢реБрд░реВ) рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рдмрдирд╛рддрд╛ рд╣реИред
рдЖрд╡реЗрджрди рд╡рд░реНрдЧ; ( рдлрд╝рдВрдХреНрд╢рди ( winJs , habraWin ) {
var app = winJsред рдХреНрд▓рд╛рд╕ред рдкрд░рд┐рднрд╛рд╖рд┐рдд ( winJsред рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ ред defaultConstructor ( ) , {
init : рдлрд╝рдВрдХреНрд╢рди ( рд╡рд┐рдХрд▓реНрдк ) {
var me = this ;
var ActiveEventType = 'рд╕рдХреНрд░рд┐рдп' ;
var ui = рд╡рд┐рдХрд▓реНрдкред рдЙрдИ ;
var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = рд╡рд┐рдХрд▓реНрдкред рдРрдк ;
var nav = рд╡рд┐рдХрд▓реНрдкред рдиреМрд╕реЗрдирд╛ ;
var рд╕рдХреНрд░рд┐рдпрдг = рд╡рд┐рдХрд▓реНрдкред рд╕рдХреНрд░рд┐рдпрдг ;
var рдЕрдиреБрд╕реВрдЪреА = рд╡рд┐рдХрд▓реНрдкред рдЕрдиреБрд╕реВрдЪреА ;
рдЖрд╡реЗрджрдиред addEventListener ( ActiveEventType , function ( args ) {
рдореБрдЭреЗред dispatchEvent ( ActiveEventType , {
рджрдпрд╛рд▓реБ : argsред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ ред рджрдпрд╛рд▓реБ ,
isReactivated : argsред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ ред рдкрд┐рдЫрд▓рд╛ рдПрдХреНрд╕рд┐рдпрдирд┐рдпрдирд╕реНрдЯреЗрдЯ === рд╕рдХреНрд░рд┐рдпрдгред ApplicationExecutionState ред рд╕рдорд╛рдкреНрдд,
parevEventDetails : рдЖрд░реНрдЧреНрд╕ред рд╡рд┐рд╕реНрддрд╛рд░
} ;
рдЕрдЧрд░ ( argsред рд╡рд┐рд╕реНрддрд╛рд░ ред рддрд░рд╣ ! == рд╕рдХреНрд░рд┐рдпрдгред рд╕рдХреНрд░рд┐рдпрдХрд░рдг ред рд▓реЙрдиреНрдЪ ред )
рд╡рд╛рдкрд╕реА;
рдирд╡ред рдЗрддрд┐рд╣рд╛рд╕ = рдЖрд╡реЗрджрдиред рдЕрдзрд┐рд╡реЗрд╢рди рдЗрддрд┐рд╣рд╛рд╕ || { } ;
рдирд╡ред рдЗрддрд┐рд╣рд╛рд╕ ред рд╡рд░реНрддрдорд╛рди ред initialPlaceholder = true ;
uiред рдЕрдХреНрд╖рдорддрд╛рдПрдВ ( ) ;
var p = uiред processAll ( ) ред рддрдм ( рд╕рдорд╛рд░реЛрд╣ ) {
рд╡рд╛рдкрд╕реА рдХреА рдирд╛рд╡ред рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВ ( рдиреМрд╕реЗрдирд╛ рд╕реНрдерд╛рди ред habraWinред рдиреЗрд╡рд┐рдЧреЗрдЯрд░ ред рдШрд░ , рдиреМрд╕реЗрдирд╛ ред рд░рд╛рдЬреНрдп ) ;
} ) ред рддрдм ( рд╕рдорд╛рд░реЛрд╣ ) {
рд╡рд╛рдкрд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо ред requestDrain ( рдЕрдиреБрд╕реВрдЪреА ред рдкреНрд░рд╛рдердорд┐рдХрддрд╛ ред рдЙрдкрд░реНрдпреБрдХреНрдд + 1 ) ;
} ) ред рддрдм ( рд╕рдорд╛рд░реЛрд╣ ) {
uiред enableAnimations ( ) ;
} ;
рдЖрд░реНрдЧред setPromise ( p ) ;
} ;
рдЖрд╡реЗрджрдиред oncheckpoint = function ( args ) {
рдореБрдЭреЗред рдкреНрд░реЗрд╖рдг ( 'oncheckpoint' , { prevEvent : args } ) ;
рдЖрд╡реЗрджрдиред рдЕрдзрд┐рд╡реЗрд╢рди рдЗрддрд┐рд╣рд╛рд╕ = рдиреМрд╕реЗрдирд╛ред рдЗрддрд┐рд╣рд╛рд╕ ;
} ;
} ,
рдкреНрд░рд╛рд░рдВрдн : рдлрд╝рдВрдХреНрд╢рди ( ) {
var me = this ;
рдореБрдЭреЗред рдкреНрд░реЗрд╖рдг ( 'рдкрд╣рд▓реЗ-рд╢реБрд░реВ' , рдореБрдЭреЗ ) ;
рдореБрдЭреЗред рд╡рд┐рдХрд▓реНрдк ред рдРрдк ред рд╢реБрд░реВ ( ) ;
рдореБрдЭреЗред рдкреНрд░реЗрд╖рдг ( 'рдмрд╛рдж рд╢реБрд░реВ' , рдореБрдЭреЗ ) ;
}
} ;
winJsред рдХреНрд▓рд╛рд╕ред рдорд┐рдХреНрд╕ ( рдРрдк , winJsред рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ ; рдИрд╡реЗрдВрдЯрдорд┐рдХреНрд╕рд┐рди ) ;
winJsред рдирд╛рдо рд╕реНрдерд╛рди ред рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'рдЖрд╡реЗрджрди' , {
рдЙрджрд╛рд╣рд░рдг : рдРрдк
} ;
} ) ( WinJS , HabraWin ) ;
рддрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд▓реЙрдиреНрдЪ (default.js) рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
; (function (application, winJs, habraWin, windows, window) { 'use strict'; winJs.Binding.optimizeBindingReferences = true;
рдкреЗрдЬ рдиреЗрд╡рд┐рдЧреЗрд╢рди
рдореИрдВ рдПрдХ "рдкреЗрдЬ" рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕рдорд░реНрдердХ рд╣реВрдВред WinJS рдЖрдзреБрдирд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╡реЗрдм рдЙрд░реНрдл тАЛтАЛWinJS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕, рдкреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдкреЗрдЬ, рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЗрд╕рдХреЗ рддрддреНрд╡ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рддреН рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ, рдЦреБрд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдЖрджрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
рдкреГрд╖реНрда рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ, рдмрдбрд┐рдВрдЧ (рд╕рдВрд╕рд╛рдзрд┐рдд),
- рдЬрдм рдкреГрд╖реНрда рдкрд░ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдг рддреИрдпрд╛рд░ рд╣реИрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрди рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рдкреНрд░рд╛рд░рдВрдн (рддреИрдпрд╛рд░) рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- AppBar рд╕рд╣рд┐рдд рдкреГрд╖реНрда рдирд┐рдпрдВрддреНрд░рдг рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ,
- рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рдкрд╣рд▓реА рдЦреЛрдЬ,
- рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреГрд╖реНрда рддрд╛рдЬрд╝рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдХрд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реЛ,
- рд╕рднреА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдФрд░ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдЬ рдЕрдирд▓реЛрдбрд┐рдВрдЧред
рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг( рдлрд╝рдВрдХреНрд╢рди ( winJs , habraWin ) {
'рд╕рдЦреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ' ;
winJsред рдирд╛рдо рд╕реНрдерд╛рди ред рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'рд╣реИрдмреНрд░рд╡рд┐рди' , {
PageNavigatorControl : winJsред рдХреНрд▓рд╛рд╕ред рдкрд░рд┐рднрд╛рд╖рд┐рдд (
рдлрд╝рдВрдХреНрд╢рди ( рддрддреНрд╡ , рд╡рд┐рдХрд▓реНрдк ) {
var nav = winJsред рдиреЗрд╡рд┐рдЧреЗрд╢рди;
рдпрд╣ ._ рддрддреНрд╡ = рддрддреНрд╡ || рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред createElement ( 'div' ) ;
рдпрд╣ ред appendChild ( рдпрд╣ .createPageElement ( ) ) ;
рдпрд╣ ред рдШрд░ = рд╡рд┐рдХрд▓реНрдкред рдШрд░ ;
рдпрд╣ ._рд╡реЗрдВрдЯрд╣реИрдВрдбрд▓рд░рд░рд╡рд░ = [ ] ;
рдпрд╣ ред addRemovableEventListener ( рдиреМрд╕реЗрдирд╛ , 'рдиреЗрд╡рд┐рдЧреЗрдЯ' , рдпрд╣ ._avigatingред рдмрд╛рдЗрдВрдб ( рдпрд╣ ) , рдЧрд▓рдд ) ;
рдпрд╣ ред addRemovableEventListener ( рдиреЗрд╡реА , ' рдиреЗрд╡реАрдЧреЗрдЯреЗрдб ' , рдпрд╣ ._navigatedред рдмрд╛рдЗрдВрдб ( рдпрд╣ ) , рдЧрд▓рдд ) ;
рдЦрд┐рдбрд╝рдХреАред onresize = рдпрд╣ ._resizedред рдмрд╛рдБрдз ( рдпрд╣ ) ;
habraWinред рдирд╛рд╡рд┐рдХ = рдпрд╣ ;
} {
addRemovableEventListener : function ( e , eventName , рд╣реИрдВрдбрд▓рд░ , рдХреИрдкреНрдЪрд░ ) {
var рд╡рд╣ = рдпрд╣ ;
рдИред addEventListener ( EventName , рд╣реИрдВрдбрд▓рд░ , рдХреИрдкреНрдЪрд░ ) ;
that._eventHandlerRemoverред рдзрдХреНрдХрд╛ ( рд╕рдорд╛рд░реЛрд╣ ) {
рдИред RemoveEventListener ( eventName , рд╣реИрдВрдбрд▓рд░ ) ;
} ;
} ,
рдШрд░ : '' ,
_рднреБрдХреНрддрд┐ : рдЕрд╢рдХреНрдд ,
_lastNavigationPromise : winJsред рд╡рд╛рджрд╛ред рдХреЗ рд░реВрдк рдореЗрдВ ( ) ,
_lastViewstate : 0 ,
рдкреЗрдЬрдХрдВрдЯреНрд░реЛрд▓ : {
get : function ( ) {рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ред pageElement рдФрд░& рдпрд╣ ред PageElement ред winControl ; }
} ,
рдкреГрд╖реНрда-рдирд┐рд░реНрдзрд╛рд░рдг : {
get : function ( ) {рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ред FirstElementChild ; }
} ,
рдирд┐рдкрдЯрд╛рди : рдлрд╝рдВрдХреНрд╢рди ( ) {
рдЕрдЧрд░ ( рдпрд╣ред
рд╡рд╛рдкрд╕реА;
}
this ._disposed = true ;
winJsред рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБред disposeSubTree ( рдпрд╣ ._element ) ;
рдХреЗ рд▓рд┐рдП ( var i = 0 ; рдореИрдВ < рдпрд╣ ._рд╡реЗрдВрдЯрд╣реИрдВрдбрд▓рд░ рд░реАрдореВрд╡рд░ред рд▓рдВрдмрд╛рдИ ; i ++ ) {
рдпрд╣ ._рд╡реЗрдВрдЯрд╣реИрдВрдбрд▓рд░ рд░реАрдореВрд╡рд░ [ i ] ( ) ;
}
this ._eventHandlerRemover = null ;
} ,
_createPageElement : рдлрд╝рдВрдХреНрд╢рди ( ) {
var рддрддреНрд╡ = рджрд╕реНрддрд╛рд╡реЗрдЬред createElement ( 'div' ) ;
рддрддреНрд╡ред setAttribute ( 'dir' , windowред getComputedStyle ( рдпрд╣ ._element , null ) рджрд┐рд╢рд╛ ред ) ;
рддрддреНрд╡ред рд╢реИрд▓реА ред рд╕реНрдерд┐рддрд┐ = 'рдкреВрд░реНрдг' ;
рддрддреНрд╡ред рд╢реИрд▓реА ред рджреГрд╢реНрдпрддрд╛ = 'рдЫрд┐рдкрд╛ рд╣реБрдЖ' ;
рддрддреНрд╡ред рд╢реИрд▓реА ред рдЪреМрдбрд╝рд╛рдИ = '100%' ;
рддрддреНрд╡ред рд╢реИрд▓реА ред рдКрдБрдЪрд╛рдИ = '100%' ;
рд╡рд╛рдкрд╕реА рддрддреНрд╡ ;
} ,
_getAnimationElements : рдлрд╝рдВрдХреНрд╢рди ( ) {
рдЕрдЧрд░ ( рдпрд╣ рдкреГрд╖реНрдардХрдВрдЯреНрд░реЛрд▓ рдФрд░ & nbsp ; рдпрд╣ рдкреГрд╖реНрда рд╣реИ ред рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдБ ред GetAnimationElements ) {
рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЛ ред рдкреЗрдЬрдХрдВрдЯреНрд░реЛрд▓ getAnimationElements ( ) ;
}
рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЛ ред рдкреЗрдЬрдИрд▓рдореЗрдВрдЯ ;
} ,
_navigated : рдлрд╝рдВрдХреНрд╢рди ( ) {
рдпрд╣ ред PageElement ред рд╢реИрд▓реА ред рджреГрд╢реНрдпрддрд╛ = '' ;
winJsред рдпреВрдЖрдИред рдПрдиреАрдореЗрд╢рдиред enterPage ( рдпрд╣ ._getAnimationElements ( ) ) ред рдХрд┐рдпрд╛ ( ) ;
} ,
_navigating : рдлрд╝рдВрдХреНрд╢рди ( args ) {
var newElement = рдпрд╣ ._createPageElement ( ) ;
рдпрд╣ ред appendChild ( newElement ) ;
рдпрд╣ ._lastNavigationPromiseред рд░рджреНрдж ( ) ;
var me = this ;
рдпрд╣ ._lastNavigationPromise = winJsред рд╡рд╛рджрд╛ред as ( ) ред рддрдм ( рд╕рдорд╛рд░реЛрд╣ ) {
winJs рд╡рд╛рдкрд╕ рдХрд░реЗрдВред рдпреВрдЖрдИред рдкреЗрдЬред рд░реЗрдВрдбрд░ ( argsред рдбрд┐рдЯреЗрд▓ ред location , newElement , argsред рдбрд┐рдЯреЗрд▓ ред State ) ;
} ) ред рддрдм ( рдлрд╝рдВрдХреНрд╢рди рдкреИрд░реЗрдВрдЯрдореЗрдВрдЯ ( рдирд┐рдпрдВрддреНрд░рдг ) {
var OldElement = рдореБрдЭреЗред рдкреГрд╖реНрдардХрд░рдг ;
рдЕрдЧрд░ ( рдкреБрд░рд╛рдирд╛ рд╣реИред winControl ) {
рдЕрдЧрд░ ( рдкреБрд░рд╛рдирд╛ рд╣реИред winControl ред рдЕрдирд▓реЛрдб ) {
oldElementред winControl ред рдЙрддрд░рд╛рдИ ( ) ;
}
oldElementред winControl ред рдирд┐рдкрдЯрд╛рди ( ) ;
}
oldElementред рдЬрдирдХ ред removeChild ( oldElement ) ;
oldElementред рдЗрдирд░рдЯреЗрдХреНрд╕реНрдЯ = '' ;
} ;
рдЖрд░реНрдЧред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ ред setPromise ( рдпрд╣ ._lastNavigationPromise ) ;
} ,
_resized : рдлрд╝рдВрдХреНрд╢рди ( args ) {
рдЕрдЧрд░ ( рдпрд╣ ред рдкреГрд╖реНрдардХрдВрдЯреНрд░реЛрд▓ рдФрд░ & quot ; рдпрд╣ рдкреГрд╖реНрда ред рдХрд╛рдВрдЯреНрд░реЙрд▓ ред рдЕрдкрдбреЗрдЯ рд▓рд╛рдЗрдПрдЯ ) {
рдпрд╣ ред рдкреЗрдЬрдХрдВрдЯреНрд░реЛрд▓ рдЕрджреНрдпрддрди рдХрд░реЗрдВ ред рдХреЙрд▓ ( рдпрд╣ ред рдкреЗрдЬрдХрдВрдЯреНрд░реЛрд▓ , рдпрд╣ ред рдкреЗрдЬрдЗрдореЗрдВрдЯ ) ;
}
}
}
)
} ;
} ) ( WinJS , HabraWin ) ;
рдкреЗрдЬ рдХреЛрдб( рдлрд╝рдВрдХреНрд╢рди ( рдЬреАрдд ) {
'рд╕рдЦреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ' ;
winJsред рдпреВрдЖрдИред рдкреЗрдЬред рдбрд┐рдлрд╛рдЗрди ( '/ рдкреЗрдЬреЗрд╕ / рд╣реВрдм / рд╣рд┐рдВрджреА') , {
рд╕рдВрд╕рд╛рдзрд┐рдд : рдлрд╝рдВрдХреНрд╢рди ( рддрддреНрд╡ ) {
рд╡рд╛рдкрд╕реА рдЬреАрддред рд╕рдВрд╕рд╛рдзрди ред processAll ( рдПрд▓рд┐рдореЗрдВрдЯ ) ;
} ,
рдХреНрд▓рд╛рд╕рдиреЗрдо : 'рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрдЪ-рд╣рдм' ,
рддреИрдпрд╛рд░ : рдлрд╝рдВрдХреНрд╢рди ( рддрддреНрд╡ , рд╡рд┐рдХрд▓реНрдк ) {
рдпрд╣ ред initEnv ( ) ;
рдпрд╣ ред initAppBar ( рдПрд▓рд┐рдореЗрдВрдЯ ) ;
рдпрд╣ ред рд╕рджрд╕реНрдпрддрд╛ ( рддрддреНрд╡ ) ;
рдпрд╣ ред setFormValues ( рд╡рд┐рдХрд▓реНрдк ) ;
рдпрд╣ ред рдЦреЛрдЬ ( ) ;
} ,
initAppBar : рдлрд╝рдВрдХреНрд╢рди ( рддрддреНрд╡ ) {
var me = this ;
рдореБрдЭреЗред appBar = рддрддреНрд╡ред querySelector ( '#appbar' ) ред winControl ;
рдпрд╣ ред addRemovableEventListener ( meред appBar ред getCommandById ( 'рд╕реНрдкрд╖реНрдЯ' ) , 'рдХреНрд▓рд┐рдХ' , рдлрдВрдХреНрд╢рди ( ) {
winJsред рдмрд╕ ред рдкреНрд░реЗрд╖рдг ( 'рд╕реНрдкрд╖реНрдЯ-рдЖрджреЗрд╢' ) ;
} , рдЭреВрдареА ) ;
} ,
рд╕рджрд╕реНрдпрддрд╛ : рд╕рдорд╛рд░реЛрд╣ ( ) {
var me = this ;
var рдЦреЛрдЬ = me рддрддреНрд╡ ред querySelector ( '# рдЦреЛрдЬ' ) ;
рдЦреЛрдЬ && рдореБрдЭреЗред addRemovableEventListener ( рдЦреЛрдЬ , 'рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ' , рдореБрдЭреЗред рдЦреЛрдЬ ред рдмрд╛рдЗрдВрдб ( рдореБрдЭреЗ ) , рдЧрд▓рдд ) ;
рдореБрдЭреЗред addRemovableEventListener ( winJsред рдмрд╕ , 'рдЧреНрд░рд╛рд╣рдХ-рдЪрдпрдирд┐рдд' , рдлрд╝рдВрдХреНрд╢рди ( рдЖрдЗрдЯрдо ) {
рдореБрдЭреЗред currentClient = рдЖрдЗрдЯрдоред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ ред рдбреЗрдЯрд╛ ;
//me.editButton.disabled = false;
рдореБрдЭреЗред AppBar ред рдЪрд┐рдкрдЪрд┐рдкрд╛ = рд╕рдЪреНрдЪрд╛ ;
рдореБрдЭреЗред AppBar ред рд╢реЛ ( ) ;
} ;
рдореБрдЭреЗред addRemovableEventListener ( winJsред рдмрд╕ , 'рдХреНрд▓рд╛рдЗрдВрдЯ-рдЕрдЪрдпрдирд┐рдд' , рдлрд╝рдВрдХреНрд╢рди ( рдЖрдЗрдЯрдо ) {
рдореБрдЭреЗред currentClient = null ;
//me.editButton.disabled = true;
рдореБрдЭреЗред AppBar ред рдЫрд┐рдкрд╛рдирд╛ ( ) ;
рдореБрдЭреЗред AppBar ред рдЪрд┐рдкрдЪрд┐рдкрд╛ = рдЭреВрдард╛ ;
} ;
} ,
рдЙрддрд░рд╛рдИ : рдлрд╝рдВрдХреНрд╢рди ( ) {
рдпрд╣ ред рддрддреНрд╡ ред рдХреНрд▓рд╛рд╕рд┐рд╕реНрдЯ ред рдирд┐рдХрд╛рд▓реЗрдВ ( рдпрд╣ ред рдХреНрд▓рд╛рд╕рдиреЗрдо ) ;
рдЕрдЧрд░ ( рдпрд╣ред
рд╡рд╛рдкрд╕реА;
}
this ._disposed = true ;
winJsред рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБред disposeSubTree ( рдпрд╣ ._element ) ;
рдХреЗ рд▓рд┐рдП ( var i = 0 ; рдореИрдВ < рдпрд╣ ._рд╡реЗрдВрдЯрд╣реИрдВрдбрд▓рд░ рд░рд┐рд╡рд░рдУрд╡рд░ ; рд▓рдВрдмрд╛рдИ ; ++ i ) {
рдпрд╣ ._рд╡реЗрдВрдЯрд╣реИрдВрдбрд▓рд░ рд░реАрдореВрд╡рд░ [ i ] ( ) ;
}
this ._eventHandlerRemover = null ;
} ,
addRemovableEventListener : function ( e , eventName , рд╣реИрдВрдбрд▓рд░ , рдХреИрдкреНрдЪрд░ ) {
рдХреИрдкреНрдЪрд░ = рдХреИрдкреНрдЪрд░ ! == рдЭреВрдареА ? рдЧрд▓рдд : рд╕рдЪ ;
рдИред addEventListener ( EventName , рд╣реИрдВрдбрд▓рд░ , рдХреИрдкреНрдЪрд░ ) ;
рдпрд╣ ред рдзрдХреНрдХрд╛ ( рд╕рдорд╛рд░реЛрд╣ ) {
рдИред RemoveEventListener ( eventName , рд╣реИрдВрдбрд▓рд░ ) ;
} ;
} ,
updateLayout : рдлрд╝рдВрдХреНрд╢рди ( рддрддреНрд╡ ) {
/// <рдкрд░рдо рдирд╛рдо = "рддрддреНрд╡" рд╡рд░реНрдЪрд╕реНрд╡ = "рд╕рддреНрдп" />
// TODO: рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рдЬрд╡рд╛рдмред
// рдбреАрдмрдЧрд░;
} ,
setFormValues : рдлрд╝рдВрдХреНрд╢рди ( clinetInfo ) {
рдпрд╣ ред searchForm = рдпрд╣ ред рддрддреНрд╡ ред querySelector ( '# рдореБрдЦреНрдп-рдЦреЛрдЬ-рдлрд╝реЙрд░реНрдо' ) ;
рдпрд╣ ред searchForm && рдпрд╣ ред рдЦреЛрдЬ ред рд╕реЗрдЯрдЖрдЯреНрд░реАрдмреНрдпреВрдЯ ( 'рдбреЗрдЯрд╛-рд╡рд┐рди-рдСрдкреНрд╢рди' , JSON ; stringify ( clinetInfo ) ) ;
рдпрд╣ ред searchForm && рдпрд╣ ред рдЦреЛрдЬ ред winControl && рдпрд╣ ред рдЦреЛрдЬ ред winControl ред setValues ( clinetInfo ) ;
} ,
рдЦреЛрдЬ : рдлрд╝рдВрдХреНрд╢рди ( ) {
winJsред рдмрд╕ ред рдкреНрд░реЗрд╖рдг ( 'рдЦреЛрдЬ-рдХрдорд╛рдВрдб' ) ;
} ,
initEnv : рдлрд╝рдВрдХреНрд╢рди ( ) {
рдпрд╣ ред рддрддреНрд╡ ред рдХреНрд▓рд╛рд╕рд┐рд╕реНрдЯ ред add ( рдпрд╣ ред className ) ;
рдпрд╣ ._рд╡реЗрдВрдЯрд╣реИрдВрдбрд▓рд░рд░рд╡рд░ = [ ] ;
}
} ;
} ) ( WinJS ) ;
рд╕реНрдерд╛рдиреАрдпрдХрд░рдг
рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ \ ru-RU \ resource.resjson рдмрдирд╛рддреЗ рд╣реИрдВ
{ "pageHeader": "Habra WinJS 8.1"
рдлрд┐рд░ рдХреЛрдб рдореЗрдВ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
<span class="pagetitle" data-win-res="{ textContent: 'pageHeader' }"></span>
рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рднрд╛рд╖рд╛ рдХрд╛ рдорд╛рд░реНрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдпрд╣ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
<PRIResource Include="strings\ru-RU\resources.resjson" />
рдпрд╛рдиреА рдЖрдкрдХреЛ рд╡реАрдПрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реЗрдЬрд╕рди рдореЗрдВ txt, рдпрд╣ jsproj рдореЗрдВ рд╣реЛрдЧрд╛:
<Content Include=" strings\ru-RU\resources.resjson" />
рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕, рдмрдбрд┐рдВрдЧ
рдЦрд╛рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
<div class="client-search-item-template" data-win-control="WinJS.Binding.Template" style="display: none;"> <div class="client-item"> <div class="client-info"> <div class="client-photo"><img data-win-bind="alt: name; src: this HabraWin.Converters.clientPhoto;" /></div> <div class="client-name" data-win-bind="innerText: name"></div> </div> <div class="decoration-bottom-line"></div> </div> </div>
рдпрд╣ рд╕реВрдЪреА рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк рд╣реИред рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛ (рдбреЗрдЯрд╛-рд╡рд┐рди-рдмрд┐рдВрдж) рдПрдХ рддрддреНрд╡ рдХреА рд╡рд┐рд╢реЗрд╖ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рд╣рдХ рдХреА рдлреЛрдЯреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
src: рдпрд╣ HabraWin.Converters.clientPhoto
; (function (winJs) { 'use strict'; var converters = { clientPhoto: winJs.Binding.converter(function (client) { if (!client || !client.hasPhoto) return '/images/empty-photo.png'; return converters.baseAddress + '/clients/photos/' + client.ID; }) }; winJs.Namespace.define('HabraWin', { Converters: converters }); })(WinJS);
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
WinJS.Binding.processAll(element, data);
рдирд┐рдпрдВрддреНрд░рдг
WinJS рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдкрддреНрд░ HabraWin.ClientSearchForm:
<form role="form" id="main-search-form" data-win-control="HabraWin.ClientSearchForm"> <div class="form-group"><label for="second-name"><span data-win-res="{textContent: 'serachFormSecondNameLabel'}"></span></label><input data-win-res="{attributes: { 'placeholder' : 'serachFormSecondNamePlaceholder' }}" spellcheck="true" type="text" name="secondName" id="second-name" /></div> <div class="main-search-form-buttons form-group"> <button type="button" name="search" class="button" id="search"><span data-win-res="{textContent: 'serachFormSearchButton'}"></span></button> <button type="reset" name="clear" class="button" id="clear"><span data-win-res="{textContent: 'serachFormClearButton'}"></span></button> </div> </form>
рдШрдЯрдирд╛рдУрдВ рдФрд░ рдкреНрд░рдкрддреНрд░ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рд╕рд░реНрд╡рд┐рд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдб; ( рдлрд╝рдВрдХреНрд╢рди ( рдЬреАрдд ) {
'рд╕рдЦреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ' ;
var searchForm = winJs рдХреНрд▓рд╛рд╕ред derive ( HabraWinред BaseForm , winJsред рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ ред defaultControlConstructor ( ) , {
init : рдлрд╝рдВрдХреНрд╢рди ( рддрддреНрд╡ , рд╡рд┐рдХрд▓реНрдк ) {
var me = this ;
рдореБрдЭреЗред initProperies ( ) ;
рдореБрдЭреЗред ClearForm ( ) ;
рдореБрдЭреЗред рдбрд┐рдлрд╛рдЗрдВрдбрд▓рд╛рдЗрдЬрд╝ ( рддрддреНрд╡ ) ;
рдореБрдЭреЗред рдбрд┐рдлрд╛рдЗрдиреНрд╡реЗрдВрдЯ ( ) ;
рдореБрдЭреЗред рд╕рджрд╕реНрдпрддрд╛ ( ) ;
рдореБрдЭреЗред setValues ( рд╡рд┐рдХрд▓реНрдк ) ;
рдореБрдЭреЗред рдЦреЛрдЬ ( ) ;
} ,
рдбрд┐рдлрд╛рдЗрди рдПрд▓реНрд╕ : рдлрдВрдХреНрд╢рди ( рдПрд▓рд┐рдореЗрдВрдЯ ) {
var me = this ;
рдореБрдЭреЗред рдлрд╝реАрд▓реНрдб = {
рджреВрд╕рд░рд╛ рдирд╛рдо : рддрддреНрд╡ред querySelector ( 'рдЗрдирдкреБрдЯ [рдирд╛рдо = рджреВрд╕рд░рд╛ рдирд╛рдо]' )
} ;
рдореБрдЭреЗред рдмрдЯрди = {
рд╕реНрдкрд╖реНрдЯ : рддрддреНрд╡ред querySelector ( 'рдмрдЯрди [рдирд╛рдо = рд╕реНрдкрд╖реНрдЯ]' ) //,
} ;
var рдорд╛рди = рдпрд╣ ред getValues ( ) ;
рдпрд╣ ред oldValues = JSONред stringify ( рдорд╛рди ) ;
} ,
рдбрд┐рдлрд╝рд░реЗрдВрдЯ : рдлрд╝рдВрдХреНрд╢рди ( ) {
var me = this ;
рдореБрдЭреЗред рдмрдЯрди ред рд╕реНрдкрд╖реНрдЯред addEventListener ( 'рдХреНрд▓рд┐рдХ' , meред рдХреНрд▓рд┐рдпрд░рдЕрдВрдбрд░рд╕рд░реНрдЪ ред bind ( me ) ) ;
} ,
рд╕реЗрдЯрд╡реИрд▓реНрдпреВрдЬрд╝ : рдлрдВрдХреНрд╢рди ( рдорд╛рди ) {
рдЕрдЧрд░ ( рдорд╛рди ) {
рд╡рд╛рдкрд╕реА;
}
рдпрд╣ ред рдкрд░рд┐рд╡рд░реНрддрд┐рддрдлрд┐рд▓реНрдб = [ ] ;
рдХреЗ рд▓рд┐рдП ( рдореВрд▓реНрдпреЛрдВ рдореЗрдВ var lbl )
if ( рдорд╛рдиред haswwProperty ( lbl ) рдФрд░& рдпрд╣ рдлрд╝реАрд▓реНрдб ред hasOwnProperty ( lbl ) ) {
var рдХреНрд╖реЗрддреНрд░ = рдпрд╣ ред рдлрд╝реАрд▓реНрдб [ lbl ] ;
var value = рдорд╛рди [ lbl ] ;
var valPropName = рдлрд╝реАрд▓реНрдб рдФрд░& ( рдлрд╝реАрд▓реНрдб рдореЗрдВ 'рдкреНрд░рдХрд╛рд░' ) рдФрд░& рдлрд╝реАрд▓реНрдбред рдЯрд╛рдЗрдк === 'рдЪреЗрдХрдмреЙрдХреНрд╕' ? 'рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛' : ( рдлрд╝реАрд▓реНрдб & рдлрд╝реАрд▓реНрдб рдореЗрдВ 'рдорд╛рди' ? 'рдореВрд▓реНрдп' : 'рд╡рд░реНрддрдорд╛рди' ) ;
рдЕрдЧрд░ ( рдХреНрд╖реЗрддреНрд░ ) {
рдЬрд╛рд░реА рд░рдЦреЗрдВ ;
}
рдлрд╝реАрд▓реНрдб [ valPropName ] = рдореВрд▓реНрдп ;
рдпрд╣ рдорд╛рди && ред рдмрджрд▓рд╛ рд╣реБрдЖ рдХреНрд╖реЗрддреНрд░ ред рдзрдХреНрдХрд╛ ( lbl ) ;
}
} ,
рд╕рджрд╕реНрдпрддрд╛ : рд╕рдорд╛рд░реЛрд╣ ( ) {
var me = this ;
рдЗрд╕рдХреЗ рд▓рд┐рдП ( var lbl рдЗрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ )
рдЕрдЧрд░ ( рдпрд╣ рд╣реИ ред рдлрд╝реАрд▓реНрдб .OwnProperty ( lbl ) ) {
var рдХреНрд╖реЗрддреНрд░ = рдпрд╣ ред рдлрд╝реАрд▓реНрдб [ lbl ] ;
var isTextField = рдлрд╝реАрд▓реНрдб рдореЗрдВ 'рдореВрд▓реНрдп' ;
рдХреНрд╖реЗрддреНрд░ред addEventListener ( isTextField ? 'keydown' : 'change' , meред fieldChanged ред рдмрд╛рдЗрдВрдб ( me ) ) ;
рдХреНрд╖реЗрддреНрд░ред addEventListener ( isTextField ? 'keydown' : 'change' , isTextField; me; рдореБрдЭреЗ рдЦреЛрдЬреЗрдВ ред рдмрд╛рдЗрдВрдб ( me ) ред defer ( 1000 ) : meред search ред bind ( me ) ) ;
рдЕрдЧрд░ ( isTextField ) {
[ 'рдХрдЯ' , 'рдкреЗрд╕реНрдЯ' , 'рдкрд░рд┐рд╡рд░реНрддрди' ] ред forach ( рдХрд╛рд░реНрдп ( e ) {
рдХреНрд╖реЗрддреНрд░ред addEventListener ( рдИ , рдореБрдЭреЗред рдлреАрд▓реНрдбрдЪреЗрдВрдЬ ред рдмрд╛рдЗрдВрдб ( рдореБрдЭреЗ ) ) ;
} ;
}
}
winJsред рдмрд╕ ред addEventListener ( 'рдХреНрд▓рд┐рдпрд░-рдХрдорд╛рдВрдб' , meред clearAndSearch ред рдмрд╛рдЗрдВрдб ( me ) ) ;
} ,
ClearAndSearch : рдлрд╝рдВрдХреНрд╢рди ( ) {
рдпрд╣ ред ClearForm ( ) ;
рдпрд╣ ред рдЦреЛрдЬ ( ) ;
} ,
addNewClient : рдлрд╝рдВрдХреНрд╢рди ( ) {
var рдорд╛рди = рдпрд╣ ред getValues ( ) ;
winJsред рдиреЗрд╡рд┐рдЧреЗрд╢рдиред рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВ ( "/ pages/section/section.html" , рдорд╛рди ) ;
} ,
getValues : рдлрд╝рдВрдХреНрд╢рди ( ) {
var me = this ;
var рдорд╛рди = { } ;
рдпрд╣ ред рдмрджрд▓рд╛ рд╣реБрдЖ рдХреНрд╖реЗрддреНрд░ ред forach ( рдХрд╛рд░реНрдп ( lbl ) {
рдорд╛рди [ lbl ] = рдореБрдЭреЗред getValue ( lbl ) ;
} ;
рд╡рд╛рдкрд╕реА рдорд╛рди ;
} ,
рдЦреЛрдЬ : рдлрд╝рдВрдХреНрд╢рди ( ) {
var рдорд╛рди = рдпрд╣ ред getValues ( ) ;
winJsред рдмрд╕ ред рдкреНрд░реЗрд╖рдг ( 'рдЦреЛрдЬ-рдЧреНрд░рд╛рд╣рдХ' , рдореВрд▓реНрдп ) ;
рдпрд╣ ред oldValues = JSONред stringify ( рдорд╛рди ) ;
} ,
ClearForm : рдлрд╝рдВрдХреНрд╢рди ( ) {
var me = this ;
var рдлрд╝реАрд▓реНрдбреНрд╕ = рд╕рд░рдгреА ред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк ред рдЯреБрдХрдбрд╝рд╛ ред call ( meред element ред querySelectorAll ( 'input [type = text], select' ) , 0 ) ;
рдЦреЗрддреЛрдВред forach ( рдХрд╛рд░реНрдп ( e ) {
рдИред рдореВрд▓реНрдп = '' ;
} ;
var current = new Date ( ) ;
рдореБрдЭреЗред рдлрд╝реАрд▓реНрдбреНрд╕ && рдореБрдЭреЗред рдЦреЗрддреЛрдВ ред рдЬрдиреНрдорджрд┐рди && ( рдореБрдЭреЗред рдХреНрд╖реЗрддреНрд░ ред рдЬрдиреНрдорджрд┐рди ред рд╡рд░реНрддрдорд╛рди = рдирдИ рддрд┐рдерд┐ ( рд╡рд░реНрддрдорд╛рдиред рд╕реЗрдЯрд┐рдЕрд░ ред рд╡рд░реНрддрдорд╛рдиред getFullYear ( ) - 24 ) ) ) ;
рдпрд╣ ред рдкрд░рд┐рд╡рд░реНрддрд┐рддрдлрд┐рд▓реНрдб = [ ] ;
} ,
рдлрд╝реАрд▓реНрдбрд▓реИрдм : рдлрд╝рдВрдХреНрд╢рди ( рдлрд╝реАрд▓реНрдб ) {
рд╡рд╛рдкрд╕реА рдлрд╝реАрд▓реНрдб && ( рдлрд╝реАрд▓реНрдбред getAttribute ( 'рдирд╛рдо' ) || рдлрд╝реАрд▓реНрдбред id ) ;
} ,
рдлрд╝реАрд▓реНрдбреНрдб : рдлрд╝рдВрдХреНрд╢рди ( e ) {
var рдлрд╝реАрд▓реНрдб = e && eред currentTarget ;
var lbl = рдпрд╣ ред рдлрд╝реАрд▓реНрдбрд▓реИрдм ( рдХреНрд╖реЗрддреНрд░ ) ;
рдпрджрд┐ ( (рдЗрд╕рдореЗрдВ lblред рдлрд╝реАрд▓реНрдбреНрд╕ ) )
рд╡рд╛рдкрд╕реА;
var рдорд╛рди = рдпрд╣ ред getValue ( lbl ) ;
рдЕрдЧрд░ ( рдорд╛рди ) {
рдпрд╣ ред рдмрджрд▓рд╛ рд╣реБрдЖ рдХреНрд╖реЗрддреНрд░ ред рдирд┐рдХрд╛рд▓реЗрдВ ( lbl ) ;
рд╡рд╛рдкрд╕реА;
}
рдЕрдЧрд░ ( рдпрд╣ ред рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ ред indexOf ( lbl ) === - 1 ) {
рдпрд╣ ред рдмрджрд▓рд╛ рд╣реБрдЖ рдХреНрд╖реЗрддреНрд░ ред рдзрдХреНрдХрд╛ ( lbl ) ;
}
} ,
initProperies : рдлрд╝рдВрдХреНрд╢рди ( ) {
}
} ;
winJsред рдирд╛рдо рд╕реНрдерд╛рди ред рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'рд╣реИрдмреНрд░рд╡рд┐рди' , {
ClientSearchForm : searchForm
} ;
} ) ( WinJS ) ;
Share рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рджрд╛ рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдкрдиреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, XmlHttpRequest рдФрд░ рдЖрдкрдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХреЙрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рдРрд╕реА рдХреЙрд▓ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдШреЛрдВрд╕рд▓реЗ рдХреЗ рдХрд╛рд░рдг рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрдврд╝реЗрдВ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рдореИрдВ рджреЛ рдкреИрдЯрд░реНрди рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдШреЛрдВрд╕рд▓реЗ рд╕реЗ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдШрдЯрдирд╛рдПрдВ рдпрд╛ рд╡рд╛рджрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдЧрд╛рддрд╛рд░ рдХреЙрд▓ рдХрд╛ рд╕рдВрдпреЛрдЬрди:
share: function(e) { var request = e.request; var deferral = request.getDeferral(); var offering = this.offering; var files = []; var me = this; var text = offering.description.replace(/<[^>]+>/gim, '').replace(/ [\s]+/, ' ');
рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ - рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд
рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк WinJs.UI.ListView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрджреНрднреБрдд рдирд┐рдпрдВрддреНрд░рдг рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕реМ рд╕реЗ рдЕрдзрд┐рдХ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреГрд╖реНрда рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдкреЗрдЬрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛрдб; ( рдлрд╝рдВрдХреНрд╢рди ( winJs , рдХрдВрд╕реЛрд▓ ) {
'рд╕рдЦреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ' ;
var clientSearchDataAdapter = winJsред рдХреНрд▓рд╛рд╕ред рдкрд░рд┐рднрд╛рд╖рд┐рдд ( winJsред рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ ред defaultConstructor ( ) , {
def : {
рдЕрдзрд┐рдХрддрдо : 300 ,
maxPageSize : 50 ,
minPageSize : 50
} ,
init : рдлрд╝рдВрдХреНрд╢рди ( рд╡рд┐рдХрд▓реНрдк ) {
рдпрд╣ ред рдХреИрд╢ = { } ;
this ._filter = null ;
рдпрд╣ ред dataSource = рд╡рд┐рдХрд▓реНрдкред рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд ;
} ,
рд╢рд░реНрдд : {
рдорд┐рд▓ : рдлрд╝рдВрдХреНрд╢рди ( ) {
рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ред
} ,
рд╕реЗрдЯ : рдлрд╝рдВрдХреНрд╢рди ( рдорд╛рди ) {
this ._filter = value ;
рдпрд╣ ред dataSource && рдпрд╣ ред рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд ред рдЕрдорд╛рдиреНрдп рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд ред рдЕрдорд╛рдиреНрдп ;
рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп ;
}
} ,
getQuery : рдлрд╝рдВрдХреНрд╢рди ( ) {
var me = this ;
рдирдП HabraWin рд▓реМрдЯреЗрдВред ProxyBuilder ( 'рдЧреНрд░рд╛рд╣рдХ' ) ред рддрдм ( рдлрд╝рдВрдХреНрд╢рди ( рдкреНрд░реЙрдХреНрд╕реА ) {
рдкреНрд░реЙрдХреНрд╕реА рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ред рдЦреЛрдЬ ( рдореБрдЭреЗред рд╕реНрдерд┐рддрд┐ ) ;
} ;
} ,
getCount : рдлрд╝рдВрдХреНрд╢рди ( ) {
var me = this ;
var cacheKey = JSONред stringify ( meред рдХрдВрдбреАрд╢рди ) ;
рдЕрдЧрд░ ( cacheKey рдЗрд╕ рдореЗрдВ ред cache )
WinJS рд▓реМрдЯреЗрдВ ред рд╡рд╛рджрд╛ред рд▓рдкреЗрдЯреЛ ( рдореБрдЭреЗред рдХреИрд╢ [ cacheKey ] рд▓рдВрдмрд╛рдИ ) ;
var рдХреНрд╡реЗрд░реА = meред getQuery ( ) ;
var i = 0 ;
рд╡рд╛рдкрд╕реА рдХреНрд╡реЗрд░реА
ред рддрдм ( рдлрд╝рдВрдХреНрд╢рди ( рдХреНрд▓рд╛рдЗрдВрдЯ ))
рдореБрдЭреЗред рдХреИрд╢ [ cacheKey ] = рдЧреНрд░рд╛рд╣рдХред рдирдХреНрд╢рд╛ ( рдлрд╝рдВрдХреНрд╢рди ( рдЖрдЗрдЯрдо ) {
рд╡рд╛рдкрд╕реА {
рдХреБрдВрдЬреА : '' + ( i ++ ) ,
рдбреЗрдЯрд╛ : рдЖрдЗрдЯрдо ,
groupKey : рдЖрдЗрдЯрдоред рджреВрд╕рд░рд╛ рдирд╛рдо ред рд▓рдВрдмрд╛рдИ > 0 ? рдЖрдЗрдЯрдоред рджреВрд╕рд░рд╛ рдирд╛рдо ред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди ( 0 , 1 ) ред рдЯреЙрдкрд░рдХреИрд╕ ( ) : '-'
} ;
} ;
var рдлрд╝рд┐рд▓реНрдЯрд░реНрдб = рдореБрдЭреЗред applyFilters ( { рдЖрдЗрдЯрдо : рдХреНрд▓рд╛рдЗрдВрдЯ , рдСрдлрд╝рд╕реЗрдЯ : 0 , TotalCount : рдХреНрд▓рд╛рдЗрдВрдЯред рд▓рдВрдмрд╛рдИ } ) ;
рд╡рд╛рдкрд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЖрдЗрдЯрдо ред рд▓рдВрдмрд╛рдИ ;
} ;
} ,
addFilter : рдлрд╝рдВрдХреНрд╢рди ( рдлрд╝рд┐рд▓реНрдЯрд░ ) {
рдпрд╣ ред рдлрд╝рд┐рд▓реНрдЯрд░ = рдпрд╣ ред рдлрд╝рд┐рд▓реНрдЯрд░ || [ ] ;
рдпрд╣ ред рдлрд╝рд┐рд▓реНрдЯрд░ ред рдзрдХреНрдХрд╛ ( рдлрд┐рд▓реНрдЯрд░ ) ;
} ,
applyFilters : рдлрд╝рдВрдХреНрд╢рди ( рдкрд░рд┐рдгрд╛рдо ) {
рдЕрдЧрд░ ( рдпрд╣ ! рдлрд╝рд┐рд▓реНрдЯрд░ ред рдпрд╣ ! рдлрд╝рд┐рд▓реНрдЯрд░ ред рд▓рдВрдмрд╛рдИ ред )
рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо ;
var me = this ;
рдпрд╣ ред рдлрд╝рд┐рд▓реНрдЯрд░ ред forach ( рдлрд╝рдВрдХреНрд╢рди ( рдлрд╝рд┐рд▓реНрдЯрд░ ))
рдкрд░рд┐рдгрд╛рдо = рдлрд╝рд┐рд▓реНрдЯрд░ ( рдкрд░рд┐рдгрд╛рдо , рдореБрдЭреЗред рд╕реНрдерд┐рддрд┐ ) ;
} ;
рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо ;
} ,
itemsFromIndex : рдлрд╝рдВрдХреНрд╢рди ( requestIndex , countBefore , countAfter ) {
var me = this ;
рдЕрдЧрд░ ( requestIndex > = meред рдСрдкреНрд╢рди ред maxCount ) {
рд╡рд╛рдкрд╕реА рдЬреАрддред рд╡рд╛рджрд╛ред wraError ( рдирдпрд╛ winJsред ErrorFromName ( winJs; UI ; FetchError ред doNotExist ) ) ;
}
var fetchSize , fetchIndex ;
рдпрджрд┐ ( рдЙрд▓рдЯреА рдЧрд┐рдирддреА > рдЧрд┐рдирддреА рдХреЗ рдмрд╛рдж ) {
рдЧрдгрди = рдорда ред рдорд┐рдирдЯ ( рдмрд╛рдж рдореЗрдВ , 10 ) ;
var fetchBefore = рдЧрдгрд┐рдд ред рдЕрдзрд┐рдХрддрдо ( рдЧрдгрд┐рдд ред рдорд┐рдирдЯ ред рдЙрд▓рдЯреА рдЧрд┐рдирддреА , рдореЗрд░реЗ рдкрд╛рд╕ред рд╡рд┐рдХрд▓реНрдк ред рдореИрдХреНрд╕рдкреЗрдЬреЗрдЬ - ( рдХрд╛рдЙрдВрдЯрдЖрдлреНрдЯрд░ + 1 ) ) , рдореБрдЭреЗред рд╡рд┐рдХрд▓реНрдк ред рдорд┐рдирдкреЗрдЬреЗрдЬ - ( рдХрд╛рдЙрдВрдЯрдЖрдлреНрдЯрд░ + 1 ) ) ;
fetchSize = fetchBefore + countAfter + 1 ;
fetchIndex = requestIndex - fetchBefore ;
} {
рдЙрд▓рдЯреА рдЧрд┐рдирддреА = рдорда ред рдорд┐рди ( рдХрд╛рдЙрдВрдЯрдмрд┐рдпрд░ , 10 ) ;
var fetchAfter = рдорда ред рдЕрдзрд┐рдХрддрдо ( рдЧрдгрд┐рдд ред рдорд┐рдирдЯ ред ( рдмрд╛рдж рдореЗрдВ , рдореЗрд░реЗ рд▓рд┐рдПред рд╡рд┐рдХрд▓реНрдк ред рдореИрдХреНрд╕рдкреЗрдЬ) - ( рдХрд╛рдЙрдВрдЯрдмрд┐рдпрд░ + 1 ) ) , рдореБрдЭреЗред рд╡рд┐рдХрд▓реНрдк ред рдорд┐рдирдкреЗрдЬреЗрдЬ - ( рдХрд╛рдЙрдВрдЯрдмреАрдЬ + 1 ) ) ;
fetchSize = countBefore + fetchAfter + 1 ;
fetchIndex = requestIndex - countBefore ;
}
var cacheKey = JSONред stringify ( meред рдХрдВрдбреАрд╢рди ) ;
var result = function ( ) {
var рдХреИрд╢ = рдореБрдЭреЗред рдХреИрд╢ [ cacheKey ] ;
var рдЖрдЗрдЯрдо = рдХреИрд╢ред рд╕реНрд▓рд╛рдЗрд╕ ( fetchIndex , fetchIndex + fetchSize ) ;
var рдСрдлрд╕реЗрдЯ = requestIndex - fetchIndex ;
var TotalCount = рдорда ред рдиреНрдпреВрдирддрдо ( рдХреИрд╢ред рд▓рдВрдмрд╛рдИ , рдореБрдЭреЗред рд╡рд┐рдХрд▓реНрдк ред рдЕрдзрд┐рдХрддрдо рд░рд╛рд╢рд┐ ) ;
рд╡рд░ рд░ = {
рдЖрдЗрдЯрдо : рдЖрдЗрдЯрдо ,
рдСрдлрд╕реЗрдЯ : рдСрдлрд╕реЗрдЯ ,
TotalCount : рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ ,
} ;
var рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ = рдореБрдЭреЗред applyFilters ( r ) ;
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП ;
} ;
рдЕрдЧрд░ ( рдореБрдЭ рдореЗрдВ cacheKeyред рдХреИрд╢ ) {
WinJS рд▓реМрдЯреЗрдВ ред рд╡рд╛рджрд╛ред рд▓рдкреЗрдЯреЛ ( рдкрд░рд┐рдгрд╛рдо ( ) ) ;
}
var рдХреНрд╡реЗрд░реА = meред getQuery ( ) ;
рд╡рд╛рдкрд╕реА рдХреНрд╡реЗрд░реА
ред рддрдм ( рдлрд╝рдВрдХреНрд╢рди ( рдЖрдЗрдЯрдо ) {
var i = 0 ;
рдореБрдЭреЗред рдХреИрд╢ [ cacheKey ] = рдЖрдЗрдЯрдоред рдирдХреНрд╢рд╛ ( рдлрд╝рдВрдХреНрд╢рди ( рдЖрдЗрдЯрдо ) {
рд╡рд╛рдкрд╕реА {
рдХреБрдВрдЬреА : '' + ( fetchIndex + i ++ ) ,
рдбреЗрдЯрд╛ : рдЖрдЗрдЯрдо ,
groupKey : рдЖрдЗрдЯрдоред рджреВрд╕рд░рд╛ рдирд╛рдо ред рд▓рдВрдмрд╛рдИ > 0 ? рдЖрдЗрдЯрдоред рджреВрд╕рд░рд╛ рдирд╛рдо ред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди ( 0 , 1 ) ред рдЯреЙрдкрд░рдХреИрд╕ ( ) : '-'
} ;
} ;
рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо ( ) ;
} ;
}
} ;
var clientDataSource = winJsред рдХреНрд▓рд╛рд╕ред рд╡реНрдпреБрддреНрдкрдиреНрди ( winJsред рдпреВрдЖрдИ ред рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдбрдбреЙрдЯрд╕реЛрд░реНрд╕ , рдлрд╝рдВрдХреНрд╢рди ( рд╕реНрдерд┐рддрд┐ ) {
var dataAdapter = рдирдпрд╛ рдЧреНрд░рд╛рд╣рдХ рдЦреЛрдЬрдбрд╛рдЯрд╛ Adapter ( {
dataSource : рдпрд╣
} ;
рдпрд╣ ред setCondition = function ( cond ) {
dataAdapterред рдХрдВрдбрд┐рд╢рди = cond ;
} ;
рдпрд╣ ред addFilter = function ( рдлрд╝рд┐рд▓реНрдЯрд░ ) {
dataAdapterред addFilter ( рдлрд╝рд┐рд▓реНрдЯрд░ ) ;
} ;
рдпрд╣ ._baseDataSourceConstructor ( dataAdapter ) ;
рдпрд╣ ред рд╕реЗрдЯрдХрдВрдбрд┐рд╢рди ( рд╕реНрдерд┐рддрд┐ ) ;
} ;
winJsред рдирд╛рдо рд╕реНрдерд╛рди ред рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'рд╣реИрдмреНрд░рд╡рд┐рди.рдбреЙрдЯрд╕ рд╕реЛрд░реНрд╕' , {
рдЧреНрд░рд╛рд╣рдХ рдЦреЛрдЬ : ClientDataSource
} ;
} ) ( WinJS , рдХрдВрд╕реЛрд▓ ) ;
рдЯрд╛рдЗрд▓
Win8 рдореЗрдВ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЕрд╡рд╕рд░ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рд╕рдордп рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░ рд╕рдмрд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрдЯрд╛рд░реНрдЯ рдкреИрдирд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ TileWideSmallImageAndText03 рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ,
рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рдХрд▓реНрдк msdn рдкрд░ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВрдЯрд╛рдЗрд▓реНрд╕ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб:
; (function(winJs, ui, dom) { winJs.Namespace.define('HabraWin', { Tile: {