8.1 8.1 HTML рдФрд░ WinJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рди

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдЬреЛ HTML рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди Win8 рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╣рд╛рде рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реАрдПрд╕ 2013 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдЦ рд╡рд┐рди 8.1 рдордВрдЪ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рдореБрдЦ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред рдЕрд░реНрдерд╛рддреН:

  1. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреАрд╡рди рдЪрдХреНрд░
  2. рд╡рд╛рджрд╛;
  3. рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ;
  4. рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛;
  5. рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ;
  6. рдЯрд╛рдЗрд▓-рдПрд╕;
  7. рд╢реЗрдпрд░;

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрдврд╝рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ github.com/Sigura/HubraWin рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ,

рд╕рднреА рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЬреЛ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ default.js рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рди рд╣реЛ рдФрд░ рдЗрд╕реЗ app.js. рдореЗрдВ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПред рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЫреЛрдбрд╝рдХрд░ рд╕реАрдзреЗ default.js рдореЗрдВ рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВрдиреЗ "рд╕реБрд╡рд┐рдзрд╛рдУрдВ" рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдмрд╕ рдХреЗ рдПрдХ рдорд╛рдореВрд▓реА рд╕реЗрдЯ рдХреЗ рд╕рд╛рде WinJs.Utilities рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ред

рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛


WinJS рд╕реНрдкреЗрд╕ рдореЗрдВ, рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯ рд╣реИ, рдЗрд╕рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ, рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдБред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ - рд╕рдВрджреЗрд╢ рдмрд╕:
//  ,        //     ,  -    //      (function (winJs) { 'use strict'; //   var bus = winJs.Class.define(winJs.Utilities.defaultConstructor(), { init: function (element, options) { var me = this; } }); //         winJs.Class.mix(bus, winJs.Utilities.eventMixin); //      winJs.Namespace.define('HabraWin', { MessageBus: bus }); })(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; //    var app = new application.Instance({ activation: windows.ApplicationModel.Activation, app: winJs.Application, nav: winJs.Navigation, sched: winJs.Utilities.Scheduler, ui: winJs.UI }); //       WinJS winJs.bus = new habraWin.MessageBus(); //   window.app = app; //  app.start(); })(Application, WinJS, HabraWin, Windows, window); 


рдкреЗрдЬ рдиреЗрд╡рд┐рдЧреЗрд╢рди


рдореИрдВ рдПрдХ "рдкреЗрдЬ" рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕рдорд░реНрдердХ рд╣реВрдВред WinJS рдЖрдзреБрдирд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╡реЗрдм рдЙрд░реНрдл тАЛтАЛWinJS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕, рдкреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдкреЗрдЬ, рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЗрд╕рдХреЗ рддрддреНрд╡ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рддреН рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ, рдЦреБрд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдЖрджрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
рдкреГрд╖реНрда рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг
( рдлрд╝рдВрдХреНрд╢рди ( 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]+/, ' '); //   : this.fileListControl.selection.getItems() .then(function (items) { //   ,   return items.map(function (item) { var uri = new Windows.Foundation.Uri(item.data.uri); return Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri) .then(function (storageFile) { files.push(storageFile); }); }); }).then(function (promises) { //   ,      return WinJS.Promise.join(promises); }).done(function () { //            request.data.properties.title = offering.name; request.data.properties.description = text; if (files.length) request.data.setStorageItems(files); else me.articlePackage(request.data); deferral.complete(); }); }, 


рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ - рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд


рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк 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: { //  xml  tile- wideSmallImageAndText03: function(img, text) { var tileXmlString = '<tile><visual version="1" lang="ru-RU" branding="logo">' + '<binding template="TileWideSmallImageAndText03">' + '<image id="1" src="' + img + '" alt="logo" />' + '<text id="1">' + text + '</text>' + '</binding>' + '</visual></tile>'; var tileDom = new dom.XmlDocument(); tileDom.loadXml(tileXmlString); //   xml  return new ui.Notifications.TileNotification(tileDom); }, baseUrl: '', //  tile-   updateTile: function() { var tileUpdateManager = ui.Notifications.TileUpdateManager.createTileUpdaterForApplication(); var me = this; var mesageAccepted = WinJS.Resources.getString('tileMessageAccepted').value; var mesageDenied = WinJS.Resources.getString('tileMessageDenied').value; tileUpdateManager.clear(); tileUpdateManager.enableNotificationQueue(true); [ { Creator: { ID: '30BD3259-EF01-4ebb-ACEE-5065EB2885E1', Photo: true }, Description: mesageAccepted }, { Creator: { ID: 'A2021DFE-1271-41d1-9A90-A64039A8A5E6', Photo: true }, Description: mesageDenied } ].forEach(function(comment) { var img = (comment.Creator && comment.Creator.Photo && (me.baseUrl + '/clients/photos/' + comment.Creator.ID)) || 'appx:///images/empty.png'; var text = (comment.Description) || '...'; var tile = me.wideSmallImageAndText03(img, text); tileUpdateManager.update(tile); }); } } }); })(WinJS, Windows.UI, Windows.Data.Xml.Dom); 

Source: https://habr.com/ru/post/In216135/


All Articles