11 |
12 | @if (ViewBag.HasLocalPassword)
13 | {
14 | @Html.Partial("_ChangePasswordPartial")
15 | }
16 | else
17 | {
18 | @Html.Partial("_SetPasswordPartial")
19 | }
20 |
21 |
22 | @Html.Action("RemoveAccountList")
23 | @Html.Partial("_ExternalLoginsListPartial", new { Action = "LinkLogin", ReturnUrl = ViewBag.ReturnUrl })
24 |
25 |
26 |
27 | @section Scripts {
28 | @Scripts.Render("~/bundles/jqueryval")
29 | }
30 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Views/Shared/_LoginPartial.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNet.Identity
2 | @if (Request.IsAuthenticated)
3 | {
4 | using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
5 | {
6 | @Html.AntiForgeryToken()
7 |
8 |
4 | You do not have a local username/password for this site. Add a local
5 | account so you can log in without an external login.
6 |
7 |
8 | @using (Html.BeginForm("Manage", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
9 | {
10 | @Html.AntiForgeryToken()
11 |
12 |
2 |
3 | @if (Model.Count > 0)
4 | {
5 | Registered Logins
6 |
34 | }
35 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Views/Account/ExternalLoginConfirmation.cshtml:
--------------------------------------------------------------------------------
1 | @model WN_SignalR.PerformanceWeb.Models.ExternalLoginConfirmationViewModel
2 | @{
3 | ViewBag.Title = "Register";
4 | }
5 | @ViewBag.Title.
6 | Associate your @ViewBag.LoginProvider account.
7 |
8 | @using (Html.BeginForm("ExternalLoginConfirmation", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
9 | {
10 | @Html.AntiForgeryToken()
11 |
12 | Association Form
13 |
14 | @Html.ValidationSummary(true)
15 |
16 | You've successfully authenticated with @ViewBag.LoginProvider .
17 | Please enter a user name for this site below and click the Register button to finish
18 | logging in.
19 |
20 |
27 |
32 | }
33 |
34 | @section Scripts {
35 | @Scripts.Render("~/bundles/jqueryval")
36 | }
37 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/js/app.js:
--------------------------------------------------------------------------------
1 | function createCanvas() {
2 | var c = document.getElementById("heatMap");
3 | var context = c.getContext("2d");
4 |
5 | return context;
6 | }
7 |
8 | function incrementPixel(canvasContext, x, y, sendToClients) {
9 | if (!canvasContext) {
10 | canvasContext = context;
11 | }
12 |
13 | var imageData = canvasContext.getImageData(x - 2, y - 2, 11, 11);
14 | var pixels = imageData.data;
15 | for (var loop = 0; loop < (121 * 4) ; loop = loop + 4) {
16 | pixelData.data[loop] = pixels[loop] + 1; // up the RED
17 | pixelData.data[loop + 3] = 255; // SHOW IT
18 | }
19 |
20 | canvasContext.putImageData(pixelData, x - 5, y - 5);
21 |
22 | if (sendToClients) {
23 | hub.server.move({
24 | x: x,
25 | y: y
26 | });
27 | }
28 | }
29 |
30 | var context = createCanvas();
31 | var pixelData = context.createImageData(5, 5);
32 |
33 | $("#heatMap").on("mousemove", function (event) {
34 | //console.log("mouse at page: (" + event.pageX + ", " + event.pageY + ") client: (" + event.clientX + ", " + event.clientY + ") offset: (" + event.offsetX + ", " + event.offsetY + ")");
35 | incrementPixel(context, event.offsetX, event.offsetY, true);
36 | });
37 |
38 | var hub = $.connection.mouseHub;
39 | hub.client.registerMovement = function (movement) {
40 | incrementPixel(context, movement.x, movement.y, false);
41 | };
42 |
43 | $.connection.hub.start();
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WN_SignalR.PerformanceWeb")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("WN_SignalR.PerformanceWeb")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("947b32f0-0c2e-4501-a5ac-45231abd4386")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Revision and Build Numbers
33 | // by using the '*' as shown below:
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Views/Account/_ChangePasswordPartial.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNet.Identity
2 | @model WN_SignalR.PerformanceWeb.Models.ManageUserViewModel
3 |
4 | You're logged in as @User.Identity.GetUserName() .
5 |
6 | @using (Html.BeginForm("Manage", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
7 | {
8 | @Html.AntiForgeryToken()
9 | Change Password Form
10 |
11 | @Html.ValidationSummary()
12 |
18 |
24 |
30 |
31 |
36 | }
37 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Views/Account/Register.cshtml:
--------------------------------------------------------------------------------
1 | @model WN_SignalR.PerformanceWeb.Models.RegisterViewModel
2 | @{
3 | ViewBag.Title = "Register";
4 | }
5 |
6 | @ViewBag.Title.
7 |
8 | @using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
9 | {
10 | @Html.AntiForgeryToken()
11 | Create a new account.
12 |
13 | @Html.ValidationSummary()
14 |
20 |
26 |
32 |
37 | }
38 |
39 | @section Scripts {
40 | @Scripts.Render("~/bundles/jqueryval")
41 | }
42 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/App_Start/Startup.Auth.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNet.Identity;
2 | using Microsoft.Owin;
3 | using Microsoft.Owin.Security.Cookies;
4 | using Owin;
5 |
6 | namespace WN_SignalR.PerformanceWeb
7 | {
8 | public partial class Startup
9 | {
10 | // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
11 | public void ConfigureAuth(IAppBuilder app)
12 | {
13 | // Enable the application to use a cookie to store information for the signed in user
14 | app.UseCookieAuthentication(new CookieAuthenticationOptions
15 | {
16 | AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
17 | LoginPath = new PathString("/Account/Login")
18 | });
19 | // Use a cookie to temporarily store information about a user logging in with a third party login provider
20 | app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
21 |
22 | // Uncomment the following lines to enable logging in with third party login providers
23 | //app.UseMicrosoftAccountAuthentication(
24 | // clientId: "",
25 | // clientSecret: "");
26 |
27 | //app.UseTwitterAuthentication(
28 | // consumerKey: "",
29 | // consumerSecret: "");
30 |
31 | //app.UseFacebookAuthentication(
32 | // appId: "",
33 | // appSecret: "");
34 |
35 | //app.UseGoogleAuthentication();
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Views/Shared/_Layout.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | @ViewBag.Title - My ASP.NET Application
7 | @Styles.Render("~/Content/css")
8 | @Scripts.Render("~/bundles/modernizr")
9 |
10 |
11 |
12 |
13 |
14 |
22 |
23 |
24 | @Html.ActionLink("Home", "Index", "Home")
25 | @Html.ActionLink("About", "About", "Home")
26 | @Html.ActionLink("Contact", "Contact", "Home")
27 |
28 | @Html.Partial("_LoginPartial")
29 |
30 |
31 |
32 |
33 | @RenderBody()
34 |
35 |
38 |
39 |
40 | @Scripts.Render("~/bundles/jquery")
41 | @Scripts.Render("~/bundles/bootstrap")
42 | @RenderSection("scripts", required: false)
43 |
44 |
45 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Views/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Models/AccountViewModels.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace WN_SignalR.PerformanceWeb.Models
4 | {
5 | public class ExternalLoginConfirmationViewModel
6 | {
7 | [Required]
8 | [Display(Name = "User name")]
9 | public string UserName { get; set; }
10 | }
11 |
12 | public class ManageUserViewModel
13 | {
14 | [Required]
15 | [DataType(DataType.Password)]
16 | [Display(Name = "Current password")]
17 | public string OldPassword { get; set; }
18 |
19 | [Required]
20 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
21 | [DataType(DataType.Password)]
22 | [Display(Name = "New password")]
23 | public string NewPassword { get; set; }
24 |
25 | [DataType(DataType.Password)]
26 | [Display(Name = "Confirm new password")]
27 | [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
28 | public string ConfirmPassword { get; set; }
29 | }
30 |
31 | public class LoginViewModel
32 | {
33 | [Required]
34 | [Display(Name = "User name")]
35 | public string UserName { get; set; }
36 |
37 | [Required]
38 | [DataType(DataType.Password)]
39 | [Display(Name = "Password")]
40 | public string Password { get; set; }
41 |
42 | [Display(Name = "Remember me?")]
43 | public bool RememberMe { get; set; }
44 | }
45 |
46 | public class RegisterViewModel
47 | {
48 | [Required]
49 | [Display(Name = "User name")]
50 | public string UserName { get; set; }
51 |
52 | [Required]
53 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
54 | [DataType(DataType.Password)]
55 | [Display(Name = "Password")]
56 | public string Password { get; set; }
57 |
58 | [DataType(DataType.Password)]
59 | [Display(Name = "Confirm password")]
60 | [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
61 | public string ConfirmPassword { get; set; }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Views/Account/Login.cshtml:
--------------------------------------------------------------------------------
1 | @model WN_SignalR.PerformanceWeb.Models.LoginViewModel
2 |
3 | @{
4 | ViewBag.Title = "Log in";
5 | }
6 |
7 | @ViewBag.Title.
8 |
56 | @section Scripts {
57 | @Scripts.Render("~/bundles/jqueryval")
58 | }
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #################
2 | ## Eclipse
3 | #################
4 |
5 | *.pydevproject
6 | .project
7 | .metadata
8 | bin/
9 | tmp/
10 | *.tmp
11 | *.bak
12 | *.swp
13 | *~.nib
14 | local.properties
15 | .classpath
16 | .settings/
17 | .loadpath
18 |
19 | # External tool builders
20 | .externalToolBuilders/
21 |
22 | # Locally stored "Eclipse launch configurations"
23 | *.launch
24 |
25 | # CDT-specific
26 | .cproject
27 |
28 | # PDT-specific
29 | .buildpath
30 |
31 |
32 | #################
33 | ## Visual Studio
34 | #################
35 |
36 | ## Ignore Visual Studio temporary files, build results, and
37 | ## files generated by popular Visual Studio add-ons.
38 |
39 | # User-specific files
40 | *.suo
41 | *.user
42 | *.sln.docstates
43 |
44 | # Build results
45 |
46 | [Dd]ebug/
47 | [Rr]elease/
48 | x64/
49 | build/
50 | [Bb]in/
51 | [Oo]bj/
52 |
53 | # MSTest test Results
54 | [Tt]est[Rr]esult*/
55 | [Bb]uild[Ll]og.*
56 |
57 | *_i.c
58 | *_p.c
59 | *.ilk
60 | *.meta
61 | *.obj
62 | *.pch
63 | *.pdb
64 | *.pgc
65 | *.pgd
66 | *.rsp
67 | *.sbr
68 | *.tlb
69 | *.tli
70 | *.tlh
71 | *.tmp
72 | *.tmp_proj
73 | *.log
74 | *.vspscc
75 | *.vssscc
76 | .builds
77 | *.pidb
78 | *.log
79 | *.scc
80 |
81 | # Visual C++ cache files
82 | ipch/
83 | *.aps
84 | *.ncb
85 | *.opensdf
86 | *.sdf
87 | *.cachefile
88 |
89 | # Visual Studio profiler
90 | *.psess
91 | *.vsp
92 | *.vspx
93 |
94 | # Guidance Automation Toolkit
95 | *.gpState
96 |
97 | # ReSharper is a .NET coding add-in
98 | _ReSharper*/
99 | *.[Rr]e[Ss]harper
100 |
101 | # TeamCity is a build add-in
102 | _TeamCity*
103 |
104 | # DotCover is a Code Coverage Tool
105 | *.dotCover
106 |
107 | # NCrunch
108 | *.ncrunch*
109 | .*crunch*.local.xml
110 |
111 | # Installshield output folder
112 | [Ee]xpress/
113 |
114 | # DocProject is a documentation generator add-in
115 | DocProject/buildhelp/
116 | DocProject/Help/*.HxT
117 | DocProject/Help/*.HxC
118 | DocProject/Help/*.hhc
119 | DocProject/Help/*.hhk
120 | DocProject/Help/*.hhp
121 | DocProject/Help/Html2
122 | DocProject/Help/html
123 |
124 | # Click-Once directory
125 | publish/
126 |
127 | # Publish Web Output
128 | *.Publish.xml
129 | *.pubxml
130 |
131 | # NuGet Packages Directory
132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
133 | #packages/
134 |
135 | # Windows Azure Build Output
136 | csx
137 | *.build.csdef
138 |
139 | # Windows Store app package directory
140 | AppPackages/
141 |
142 | # Others
143 | sql/
144 | *.Cache
145 | ClientBin/
146 | [Ss]tyle[Cc]op.*
147 | ~$*
148 | *~
149 | *.dbmdl
150 | *.[Pp]ublish.xml
151 | *.pfx
152 | *.publishsettings
153 |
154 | # RIA/Silverlight projects
155 | Generated_Code/
156 |
157 | # Backup & report files from converting an old project file to a newer
158 | # Visual Studio version. Backup files are not needed, because we have git ;-)
159 | _UpgradeReport_Files/
160 | Backup*/
161 | UpgradeLog*.XML
162 | UpgradeLog*.htm
163 |
164 | # SQL Server files
165 | App_Data/*.mdf
166 | App_Data/*.ldf
167 |
168 | #############
169 | ## Windows detritus
170 | #############
171 |
172 | # Windows image file caches
173 | Thumbs.db
174 | ehthumbs.db
175 |
176 | # Folder config file
177 | Desktop.ini
178 |
179 | # Recycle Bin used on file shares
180 | $RECYCLE.BIN/
181 |
182 | # Mac crap
183 | .DS_Store
184 |
185 |
186 | #############
187 | ## Python
188 | #############
189 |
190 | *.py[co]
191 |
192 | # Packages
193 | *.egg
194 | *.egg-info
195 | dist/
196 | build/
197 | eggs/
198 | parts/
199 | var/
200 | sdist/
201 | develop-eggs/
202 | .installed.cfg
203 |
204 | # Installer logs
205 | pip-log.txt
206 |
207 | # Unit test / coverage reports
208 | .coverage
209 | .tox
210 |
211 | #Translations
212 | *.mo
213 |
214 | #Mr Developer
215 | .mr.developer.cfg
216 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Scripts/respond.min.js:
--------------------------------------------------------------------------------
1 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
2 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
3 | * */
4 |
5 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Scripts/respond.matchmedia.addListener.min.js:
--------------------------------------------------------------------------------
1 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
2 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
3 | * */
4 |
5 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";if(a.matchMedia&&a.matchMedia("all").addListener)return!1;var b=a.matchMedia,c=b("only all").matches,d=!1,e=0,f=[],g=function(){a.clearTimeout(e),e=a.setTimeout(function(){for(var c=0,d=f.length;d>c;c++){var e=f[c].mql,g=f[c].listeners||[],h=b(e.media).matches;if(h!==e.matches){e.matches=h;for(var i=0,j=g.length;j>i;i++)g[i].call(a,e)}}},30)};a.matchMedia=function(e){var h=b(e),i=[],j=0;return h.addListener=function(b){c&&(d||(d=!0,a.addEventListener("resize",g,!0)),0===j&&(j=f.push({mql:h,listeners:i})),i.push(b))},h.removeListener=function(a){for(var b=0,c=i.length;c>b;b++)i[b]===a&&i.splice(b,1)},h}}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b?@\[\\\]^`{|}~])/g,"\\$1")}function h(a){return a.substr(0,a.lastIndexOf(".")+1)}function g(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function m(c,e){var b=a(this).find("[data-valmsg-for='"+f(e[0].name)+"']"),d=b.attr("data-valmsg-replace"),g=d?a.parseJSON(d)!==false:null;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(g){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a(" ").html(this.message).appendTo(b)})}}function k(d){var b=d.data("unobtrusiveContainer"),c=b.attr("data-valmsg-replace"),e=c?a.parseJSON(c):null;if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");d.removeData("unobtrusiveContainer");e&&b.empty()}}function n(){var b=a(this);b.data("validator").resetForm();b.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");b.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function i(c){var b=a(c),d=b.data(e),f=a.proxy(n,c);if(!d){d={options:{errorClass:"input-validation-error",errorElement:"span",errorPlacement:a.proxy(m,c),invalidHandler:a.proxy(l,c),messages:{},rules:{},success:a.proxy(k,c)},attachValidation:function(){b.unbind("reset."+e,f).bind("reset."+e,f).validate(this.options)},validate:function(){b.validate();return b.valid()}};b.data(e,d)}return d}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(b){var c=a(b).parents("form").andSelf().add(a(b).find("form")).filter("form");a(b).find(":input").filter("[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});c.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod("nonalphamin",function(c,d,b){var a;if(b){a=c.match(/\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal("accept","mimtype");b.addSingleVal("extension","extension")}else b.addSingleVal("extension","extension","accept");b.addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength");b.add("equalto",["other"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(":input").filter("[name='"+f(d)+"']")[0];c(b,"equalTo",e)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(":input").filter("[name='"+f(c)+"']").val()}});c(b,"remote",d)});b.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&c(a,"minlength",a.params.min);a.params.nonalphamin&&c(a,"nonalphamin",a.params.nonalphamin);a.params.regex&&c(a,"regex",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery);
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Project_Readme.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Your ASP.NET application
6 |
95 |
96 |
97 |
98 |
102 |
103 |
104 |
105 |
This application consists of:
106 |
107 | Sample pages showing basic nav between Home, About, and Contact
108 | Theming using Bootstrap
109 | Authentication , if selected, shows how to register and sign in
110 | ASP.NET features managed using NuGet
111 |
112 |
113 |
114 |
115 |
Customize app
116 |
130 |
131 |
132 |
140 |
141 |
142 |
Get help
143 |
147 |
148 |
149 |
150 |
151 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Scripts/respond.js:
--------------------------------------------------------------------------------
1 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
2 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
3 | (function(w) {
4 | "use strict";
5 | w.matchMedia = w.matchMedia || function(doc, undefined) {
6 | var bool, docElem = doc.documentElement, refNode = docElem.firstElementChild || docElem.firstChild, fakeBody = doc.createElement("body"), div = doc.createElement("div");
7 | div.id = "mq-test-1";
8 | div.style.cssText = "position:absolute;top:-100em";
9 | fakeBody.style.background = "none";
10 | fakeBody.appendChild(div);
11 | return function(q) {
12 | div.innerHTML = '';
13 | docElem.insertBefore(fakeBody, refNode);
14 | bool = div.offsetWidth === 42;
15 | docElem.removeChild(fakeBody);
16 | return {
17 | matches: bool,
18 | media: q
19 | };
20 | };
21 | }(w.document);
22 | })(this);
23 |
24 | /*! Respond.js v1.4.0: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs */
25 | (function(w) {
26 | "use strict";
27 | var respond = {};
28 | w.respond = respond;
29 | respond.update = function() {};
30 | var requestQueue = [], xmlHttp = function() {
31 | var xmlhttpmethod = false;
32 | try {
33 | xmlhttpmethod = new w.XMLHttpRequest();
34 | } catch (e) {
35 | xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP");
36 | }
37 | return function() {
38 | return xmlhttpmethod;
39 | };
40 | }(), ajax = function(url, callback) {
41 | var req = xmlHttp();
42 | if (!req) {
43 | return;
44 | }
45 | req.open("GET", url, true);
46 | req.onreadystatechange = function() {
47 | if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) {
48 | return;
49 | }
50 | callback(req.responseText);
51 | };
52 | if (req.readyState === 4) {
53 | return;
54 | }
55 | req.send(null);
56 | };
57 | respond.ajax = ajax;
58 | respond.queue = requestQueue;
59 | respond.regex = {
60 | media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
61 | keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
62 | urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
63 | findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
64 | only: /(only\s+)?([a-zA-Z]+)\s?/,
65 | minw: /\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,
66 | maxw: /\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/
67 | };
68 | respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches;
69 | if (respond.mediaQueriesSupported) {
70 | return;
71 | }
72 | var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head")[0] || docElem, base = doc.getElementsByTagName("base")[0], links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() {
73 | var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false;
74 | div.style.cssText = "position:absolute;font-size:1em;width:1em";
75 | if (!body) {
76 | body = fakeUsed = doc.createElement("body");
77 | body.style.background = "none";
78 | }
79 | docElem.style.fontSize = "100%";
80 | body.style.fontSize = "100%";
81 | body.appendChild(div);
82 | if (fakeUsed) {
83 | docElem.insertBefore(body, docElem.firstChild);
84 | }
85 | ret = div.offsetWidth;
86 | if (fakeUsed) {
87 | docElem.removeChild(body);
88 | } else {
89 | body.removeChild(div);
90 | }
91 | docElem.style.fontSize = originalHTMLFontSize;
92 | if (originalBodyFontSize) {
93 | body.style.fontSize = originalBodyFontSize;
94 | }
95 | ret = eminpx = parseFloat(ret);
96 | return ret;
97 | }, applyMedia = function(fromResize) {
98 | var name = "clientWidth", docElemProp = docElem[name], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[name] || docElemProp, styleBlocks = {}, lastLink = links[links.length - 1], now = new Date().getTime();
99 | if (fromResize && lastCall && now - lastCall < resizeThrottle) {
100 | w.clearTimeout(resizeDefer);
101 | resizeDefer = w.setTimeout(applyMedia, resizeThrottle);
102 | return;
103 | } else {
104 | lastCall = now;
105 | }
106 | for (var i in mediastyles) {
107 | if (mediastyles.hasOwnProperty(i)) {
108 | var thisstyle = mediastyles[i], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em";
109 | if (!!min) {
110 | min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
111 | }
112 | if (!!max) {
113 | max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
114 | }
115 | if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) {
116 | if (!styleBlocks[thisstyle.media]) {
117 | styleBlocks[thisstyle.media] = [];
118 | }
119 | styleBlocks[thisstyle.media].push(rules[thisstyle.rules]);
120 | }
121 | }
122 | }
123 | for (var j in appendedEls) {
124 | if (appendedEls.hasOwnProperty(j)) {
125 | if (appendedEls[j] && appendedEls[j].parentNode === head) {
126 | head.removeChild(appendedEls[j]);
127 | }
128 | }
129 | }
130 | appendedEls.length = 0;
131 | for (var k in styleBlocks) {
132 | if (styleBlocks.hasOwnProperty(k)) {
133 | var ss = doc.createElement("style"), css = styleBlocks[k].join("\n");
134 | ss.type = "text/css";
135 | ss.media = k;
136 | head.insertBefore(ss, lastLink.nextSibling);
137 | if (ss.styleSheet) {
138 | ss.styleSheet.cssText = css;
139 | } else {
140 | ss.appendChild(doc.createTextNode(css));
141 | }
142 | appendedEls.push(ss);
143 | }
144 | }
145 | }, translate = function(styles, href, media) {
146 | var qs = styles.replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0;
147 | href = href.substring(0, href.lastIndexOf("/"));
148 | var repUrls = function(css) {
149 | return css.replace(respond.regex.urls, "$1" + href + "$2$3");
150 | }, useMedia = !ql && media;
151 | if (href.length) {
152 | href += "/";
153 | }
154 | if (useMedia) {
155 | ql = 1;
156 | }
157 | for (var i = 0; i < ql; i++) {
158 | var fullq, thisq, eachq, eql;
159 | if (useMedia) {
160 | fullq = media;
161 | rules.push(repUrls(styles));
162 | } else {
163 | fullq = qs[i].match(respond.regex.findStyles) && RegExp.$1;
164 | rules.push(RegExp.$2 && repUrls(RegExp.$2));
165 | }
166 | eachq = fullq.split(",");
167 | eql = eachq.length;
168 | for (var j = 0; j < eql; j++) {
169 | thisq = eachq[j];
170 | mediastyles.push({
171 | media: thisq.split("(")[0].match(respond.regex.only) && RegExp.$2 || "all",
172 | rules: rules.length - 1,
173 | hasquery: thisq.indexOf("(") > -1,
174 | minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""),
175 | maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "")
176 | });
177 | }
178 | }
179 | applyMedia();
180 | }, makeRequests = function() {
181 | if (requestQueue.length) {
182 | var thisRequest = requestQueue.shift();
183 | ajax(thisRequest.href, function(styles) {
184 | translate(styles, thisRequest.href, thisRequest.media);
185 | parsedSheets[thisRequest.href] = true;
186 | w.setTimeout(function() {
187 | makeRequests();
188 | }, 0);
189 | });
190 | }
191 | }, ripCSS = function() {
192 | for (var i = 0; i < links.length; i++) {
193 | var sheet = links[i], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
194 | if (!!href && isCSS && !parsedSheets[href]) {
195 | if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
196 | translate(sheet.styleSheet.rawCssText, href, media);
197 | parsedSheets[href] = true;
198 | } else {
199 | if (!/^([a-zA-Z:]*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/")[0] === w.location.host) {
200 | if (href.substring(0, 2) === "//") {
201 | href = w.location.protocol + href;
202 | }
203 | requestQueue.push({
204 | href: href,
205 | media: media
206 | });
207 | }
208 | }
209 | }
210 | }
211 | makeRequests();
212 | };
213 | ripCSS();
214 | respond.update = ripCSS;
215 | respond.getEmValue = getEmValue;
216 | function callMedia() {
217 | applyMedia(true);
218 | }
219 | if (w.addEventListener) {
220 | w.addEventListener("resize", callMedia, false);
221 | } else if (w.attachEvent) {
222 | w.attachEvent("onresize", callMedia);
223 | }
224 | })(this);
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Scripts/respond.matchmedia.addListener.js:
--------------------------------------------------------------------------------
1 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
2 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
3 | (function(w) {
4 | "use strict";
5 | w.matchMedia = w.matchMedia || function(doc, undefined) {
6 | var bool, docElem = doc.documentElement, refNode = docElem.firstElementChild || docElem.firstChild, fakeBody = doc.createElement("body"), div = doc.createElement("div");
7 | div.id = "mq-test-1";
8 | div.style.cssText = "position:absolute;top:-100em";
9 | fakeBody.style.background = "none";
10 | fakeBody.appendChild(div);
11 | return function(q) {
12 | div.innerHTML = '';
13 | docElem.insertBefore(fakeBody, refNode);
14 | bool = div.offsetWidth === 42;
15 | docElem.removeChild(fakeBody);
16 | return {
17 | matches: bool,
18 | media: q
19 | };
20 | };
21 | }(w.document);
22 | })(this);
23 |
24 | /*! matchMedia() polyfill addListener/removeListener extension. Author & copyright (c) 2012: Scott Jehl. Dual MIT/BSD license */
25 | (function(w) {
26 | "use strict";
27 | if (w.matchMedia && w.matchMedia("all").addListener) {
28 | return false;
29 | }
30 | var localMatchMedia = w.matchMedia, hasMediaQueries = localMatchMedia("only all").matches, isListening = false, timeoutID = 0, queries = [], handleChange = function(evt) {
31 | w.clearTimeout(timeoutID);
32 | timeoutID = w.setTimeout(function() {
33 | for (var i = 0, il = queries.length; i < il; i++) {
34 | var mql = queries[i].mql, listeners = queries[i].listeners || [], matches = localMatchMedia(mql.media).matches;
35 | if (matches !== mql.matches) {
36 | mql.matches = matches;
37 | for (var j = 0, jl = listeners.length; j < jl; j++) {
38 | listeners[j].call(w, mql);
39 | }
40 | }
41 | }
42 | }, 30);
43 | };
44 | w.matchMedia = function(media) {
45 | var mql = localMatchMedia(media), listeners = [], index = 0;
46 | mql.addListener = function(listener) {
47 | if (!hasMediaQueries) {
48 | return;
49 | }
50 | if (!isListening) {
51 | isListening = true;
52 | w.addEventListener("resize", handleChange, true);
53 | }
54 | if (index === 0) {
55 | index = queries.push({
56 | mql: mql,
57 | listeners: listeners
58 | });
59 | }
60 | listeners.push(listener);
61 | };
62 | mql.removeListener = function(listener) {
63 | for (var i = 0, il = listeners.length; i < il; i++) {
64 | if (listeners[i] === listener) {
65 | listeners.splice(i, 1);
66 | }
67 | }
68 | };
69 | return mql;
70 | };
71 | })(this);
72 |
73 | /*! Respond.js v1.4.0: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs */
74 | (function(w) {
75 | "use strict";
76 | var respond = {};
77 | w.respond = respond;
78 | respond.update = function() {};
79 | var requestQueue = [], xmlHttp = function() {
80 | var xmlhttpmethod = false;
81 | try {
82 | xmlhttpmethod = new w.XMLHttpRequest();
83 | } catch (e) {
84 | xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP");
85 | }
86 | return function() {
87 | return xmlhttpmethod;
88 | };
89 | }(), ajax = function(url, callback) {
90 | var req = xmlHttp();
91 | if (!req) {
92 | return;
93 | }
94 | req.open("GET", url, true);
95 | req.onreadystatechange = function() {
96 | if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) {
97 | return;
98 | }
99 | callback(req.responseText);
100 | };
101 | if (req.readyState === 4) {
102 | return;
103 | }
104 | req.send(null);
105 | };
106 | respond.ajax = ajax;
107 | respond.queue = requestQueue;
108 | respond.regex = {
109 | media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
110 | keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
111 | urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
112 | findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
113 | only: /(only\s+)?([a-zA-Z]+)\s?/,
114 | minw: /\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,
115 | maxw: /\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/
116 | };
117 | respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches;
118 | if (respond.mediaQueriesSupported) {
119 | return;
120 | }
121 | var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head")[0] || docElem, base = doc.getElementsByTagName("base")[0], links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() {
122 | var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false;
123 | div.style.cssText = "position:absolute;font-size:1em;width:1em";
124 | if (!body) {
125 | body = fakeUsed = doc.createElement("body");
126 | body.style.background = "none";
127 | }
128 | docElem.style.fontSize = "100%";
129 | body.style.fontSize = "100%";
130 | body.appendChild(div);
131 | if (fakeUsed) {
132 | docElem.insertBefore(body, docElem.firstChild);
133 | }
134 | ret = div.offsetWidth;
135 | if (fakeUsed) {
136 | docElem.removeChild(body);
137 | } else {
138 | body.removeChild(div);
139 | }
140 | docElem.style.fontSize = originalHTMLFontSize;
141 | if (originalBodyFontSize) {
142 | body.style.fontSize = originalBodyFontSize;
143 | }
144 | ret = eminpx = parseFloat(ret);
145 | return ret;
146 | }, applyMedia = function(fromResize) {
147 | var name = "clientWidth", docElemProp = docElem[name], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[name] || docElemProp, styleBlocks = {}, lastLink = links[links.length - 1], now = new Date().getTime();
148 | if (fromResize && lastCall && now - lastCall < resizeThrottle) {
149 | w.clearTimeout(resizeDefer);
150 | resizeDefer = w.setTimeout(applyMedia, resizeThrottle);
151 | return;
152 | } else {
153 | lastCall = now;
154 | }
155 | for (var i in mediastyles) {
156 | if (mediastyles.hasOwnProperty(i)) {
157 | var thisstyle = mediastyles[i], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em";
158 | if (!!min) {
159 | min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
160 | }
161 | if (!!max) {
162 | max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
163 | }
164 | if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) {
165 | if (!styleBlocks[thisstyle.media]) {
166 | styleBlocks[thisstyle.media] = [];
167 | }
168 | styleBlocks[thisstyle.media].push(rules[thisstyle.rules]);
169 | }
170 | }
171 | }
172 | for (var j in appendedEls) {
173 | if (appendedEls.hasOwnProperty(j)) {
174 | if (appendedEls[j] && appendedEls[j].parentNode === head) {
175 | head.removeChild(appendedEls[j]);
176 | }
177 | }
178 | }
179 | appendedEls.length = 0;
180 | for (var k in styleBlocks) {
181 | if (styleBlocks.hasOwnProperty(k)) {
182 | var ss = doc.createElement("style"), css = styleBlocks[k].join("\n");
183 | ss.type = "text/css";
184 | ss.media = k;
185 | head.insertBefore(ss, lastLink.nextSibling);
186 | if (ss.styleSheet) {
187 | ss.styleSheet.cssText = css;
188 | } else {
189 | ss.appendChild(doc.createTextNode(css));
190 | }
191 | appendedEls.push(ss);
192 | }
193 | }
194 | }, translate = function(styles, href, media) {
195 | var qs = styles.replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0;
196 | href = href.substring(0, href.lastIndexOf("/"));
197 | var repUrls = function(css) {
198 | return css.replace(respond.regex.urls, "$1" + href + "$2$3");
199 | }, useMedia = !ql && media;
200 | if (href.length) {
201 | href += "/";
202 | }
203 | if (useMedia) {
204 | ql = 1;
205 | }
206 | for (var i = 0; i < ql; i++) {
207 | var fullq, thisq, eachq, eql;
208 | if (useMedia) {
209 | fullq = media;
210 | rules.push(repUrls(styles));
211 | } else {
212 | fullq = qs[i].match(respond.regex.findStyles) && RegExp.$1;
213 | rules.push(RegExp.$2 && repUrls(RegExp.$2));
214 | }
215 | eachq = fullq.split(",");
216 | eql = eachq.length;
217 | for (var j = 0; j < eql; j++) {
218 | thisq = eachq[j];
219 | mediastyles.push({
220 | media: thisq.split("(")[0].match(respond.regex.only) && RegExp.$2 || "all",
221 | rules: rules.length - 1,
222 | hasquery: thisq.indexOf("(") > -1,
223 | minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""),
224 | maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "")
225 | });
226 | }
227 | }
228 | applyMedia();
229 | }, makeRequests = function() {
230 | if (requestQueue.length) {
231 | var thisRequest = requestQueue.shift();
232 | ajax(thisRequest.href, function(styles) {
233 | translate(styles, thisRequest.href, thisRequest.media);
234 | parsedSheets[thisRequest.href] = true;
235 | w.setTimeout(function() {
236 | makeRequests();
237 | }, 0);
238 | });
239 | }
240 | }, ripCSS = function() {
241 | for (var i = 0; i < links.length; i++) {
242 | var sheet = links[i], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
243 | if (!!href && isCSS && !parsedSheets[href]) {
244 | if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
245 | translate(sheet.styleSheet.rawCssText, href, media);
246 | parsedSheets[href] = true;
247 | } else {
248 | if (!/^([a-zA-Z:]*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/")[0] === w.location.host) {
249 | if (href.substring(0, 2) === "//") {
250 | href = w.location.protocol + href;
251 | }
252 | requestQueue.push({
253 | href: href,
254 | media: media
255 | });
256 | }
257 | }
258 | }
259 | }
260 | makeRequests();
261 | };
262 | ripCSS();
263 | respond.update = ripCSS;
264 | respond.getEmValue = getEmValue;
265 | function callMedia() {
266 | applyMedia(true);
267 | }
268 | if (w.addEventListener) {
269 | w.addEventListener("resize", callMedia, false);
270 | } else if (w.attachEvent) {
271 | w.attachEvent("onresize", callMedia);
272 | }
273 | })(this);
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Content/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 |
7 | .btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Controllers/AccountController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Security.Claims;
5 | using System.Threading.Tasks;
6 | using System.Web;
7 | using System.Web.Mvc;
8 | using Microsoft.AspNet.Identity;
9 | using Microsoft.AspNet.Identity.EntityFramework;
10 | using Microsoft.Owin.Security;
11 | using WN_SignalR.PerformanceWeb.Models;
12 |
13 | namespace WN_SignalR.PerformanceWeb.Controllers
14 | {
15 | [Authorize]
16 | public class AccountController : Controller
17 | {
18 | public AccountController()
19 | : this(new UserManager(new UserStore(new ApplicationDbContext())))
20 | {
21 | }
22 |
23 | public AccountController(UserManager userManager)
24 | {
25 | UserManager = userManager;
26 | }
27 |
28 | public UserManager UserManager { get; private set; }
29 |
30 | //
31 | // GET: /Account/Login
32 | [AllowAnonymous]
33 | public ActionResult Login(string returnUrl)
34 | {
35 | ViewBag.ReturnUrl = returnUrl;
36 | return View();
37 | }
38 |
39 | //
40 | // POST: /Account/Login
41 | [HttpPost]
42 | [AllowAnonymous]
43 | [ValidateAntiForgeryToken]
44 | public async Task Login(LoginViewModel model, string returnUrl)
45 | {
46 | if (ModelState.IsValid)
47 | {
48 | var user = await UserManager.FindAsync(model.UserName, model.Password);
49 | if (user != null)
50 | {
51 | await SignInAsync(user, model.RememberMe);
52 | return RedirectToLocal(returnUrl);
53 | }
54 | else
55 | {
56 | ModelState.AddModelError("", "Invalid username or password.");
57 | }
58 | }
59 |
60 | // If we got this far, something failed, redisplay form
61 | return View(model);
62 | }
63 |
64 | //
65 | // GET: /Account/Register
66 | [AllowAnonymous]
67 | public ActionResult Register()
68 | {
69 | return View();
70 | }
71 |
72 | //
73 | // POST: /Account/Register
74 | [HttpPost]
75 | [AllowAnonymous]
76 | [ValidateAntiForgeryToken]
77 | public async Task Register(RegisterViewModel model)
78 | {
79 | if (ModelState.IsValid)
80 | {
81 | var user = new ApplicationUser() { UserName = model.UserName };
82 | var result = await UserManager.CreateAsync(user, model.Password);
83 | if (result.Succeeded)
84 | {
85 | await SignInAsync(user, isPersistent: false);
86 | return RedirectToAction("Index", "Home");
87 | }
88 | else
89 | {
90 | AddErrors(result);
91 | }
92 | }
93 |
94 | // If we got this far, something failed, redisplay form
95 | return View(model);
96 | }
97 |
98 | //
99 | // POST: /Account/Disassociate
100 | [HttpPost]
101 | [ValidateAntiForgeryToken]
102 | public async Task Disassociate(string loginProvider, string providerKey)
103 | {
104 | ManageMessageId? message = null;
105 | IdentityResult result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
106 | if (result.Succeeded)
107 | {
108 | message = ManageMessageId.RemoveLoginSuccess;
109 | }
110 | else
111 | {
112 | message = ManageMessageId.Error;
113 | }
114 | return RedirectToAction("Manage", new { Message = message });
115 | }
116 |
117 | //
118 | // GET: /Account/Manage
119 | public ActionResult Manage(ManageMessageId? message)
120 | {
121 | ViewBag.StatusMessage =
122 | message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
123 | : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
124 | : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
125 | : message == ManageMessageId.Error ? "An error has occurred."
126 | : "";
127 | ViewBag.HasLocalPassword = HasPassword();
128 | ViewBag.ReturnUrl = Url.Action("Manage");
129 | return View();
130 | }
131 |
132 | //
133 | // POST: /Account/Manage
134 | [HttpPost]
135 | [ValidateAntiForgeryToken]
136 | public async Task Manage(ManageUserViewModel model)
137 | {
138 | bool hasPassword = HasPassword();
139 | ViewBag.HasLocalPassword = hasPassword;
140 | ViewBag.ReturnUrl = Url.Action("Manage");
141 | if (hasPassword)
142 | {
143 | if (ModelState.IsValid)
144 | {
145 | IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
146 | if (result.Succeeded)
147 | {
148 | return RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess });
149 | }
150 | else
151 | {
152 | AddErrors(result);
153 | }
154 | }
155 | }
156 | else
157 | {
158 | // User does not have a password so remove any validation errors caused by a missing OldPassword field
159 | ModelState state = ModelState["OldPassword"];
160 | if (state != null)
161 | {
162 | state.Errors.Clear();
163 | }
164 |
165 | if (ModelState.IsValid)
166 | {
167 | IdentityResult result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword);
168 | if (result.Succeeded)
169 | {
170 | return RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess });
171 | }
172 | else
173 | {
174 | AddErrors(result);
175 | }
176 | }
177 | }
178 |
179 | // If we got this far, something failed, redisplay form
180 | return View(model);
181 | }
182 |
183 | //
184 | // POST: /Account/ExternalLogin
185 | [HttpPost]
186 | [AllowAnonymous]
187 | [ValidateAntiForgeryToken]
188 | public ActionResult ExternalLogin(string provider, string returnUrl)
189 | {
190 | // Request a redirect to the external login provider
191 | return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
192 | }
193 |
194 | //
195 | // GET: /Account/ExternalLoginCallback
196 | [AllowAnonymous]
197 | public async Task ExternalLoginCallback(string returnUrl)
198 | {
199 | var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
200 | if (loginInfo == null)
201 | {
202 | return RedirectToAction("Login");
203 | }
204 |
205 | // Sign in the user with this external login provider if the user already has a login
206 | var user = await UserManager.FindAsync(loginInfo.Login);
207 | if (user != null)
208 | {
209 | await SignInAsync(user, isPersistent: false);
210 | return RedirectToLocal(returnUrl);
211 | }
212 | else
213 | {
214 | // If the user does not have an account, then prompt the user to create an account
215 | ViewBag.ReturnUrl = returnUrl;
216 | ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
217 | return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { UserName = loginInfo.DefaultUserName });
218 | }
219 | }
220 |
221 | //
222 | // POST: /Account/LinkLogin
223 | [HttpPost]
224 | [ValidateAntiForgeryToken]
225 | public ActionResult LinkLogin(string provider)
226 | {
227 | // Request a redirect to the external login provider to link a login for the current user
228 | return new ChallengeResult(provider, Url.Action("LinkLoginCallback", "Account"), User.Identity.GetUserId());
229 | }
230 |
231 | //
232 | // GET: /Account/LinkLoginCallback
233 | public async Task LinkLoginCallback()
234 | {
235 | var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId());
236 | if (loginInfo == null)
237 | {
238 | return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
239 | }
240 | var result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login);
241 | if (result.Succeeded)
242 | {
243 | return RedirectToAction("Manage");
244 | }
245 | return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
246 | }
247 |
248 | //
249 | // POST: /Account/ExternalLoginConfirmation
250 | [HttpPost]
251 | [AllowAnonymous]
252 | [ValidateAntiForgeryToken]
253 | public async Task ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
254 | {
255 | if (User.Identity.IsAuthenticated)
256 | {
257 | return RedirectToAction("Manage");
258 | }
259 |
260 | if (ModelState.IsValid)
261 | {
262 | // Get the information about the user from the external login provider
263 | var info = await AuthenticationManager.GetExternalLoginInfoAsync();
264 | if (info == null)
265 | {
266 | return View("ExternalLoginFailure");
267 | }
268 | var user = new ApplicationUser() { UserName = model.UserName };
269 | var result = await UserManager.CreateAsync(user);
270 | if (result.Succeeded)
271 | {
272 | result = await UserManager.AddLoginAsync(user.Id, info.Login);
273 | if (result.Succeeded)
274 | {
275 | await SignInAsync(user, isPersistent: false);
276 | return RedirectToLocal(returnUrl);
277 | }
278 | }
279 | AddErrors(result);
280 | }
281 |
282 | ViewBag.ReturnUrl = returnUrl;
283 | return View(model);
284 | }
285 |
286 | //
287 | // POST: /Account/LogOff
288 | [HttpPost]
289 | [ValidateAntiForgeryToken]
290 | public ActionResult LogOff()
291 | {
292 | AuthenticationManager.SignOut();
293 | return RedirectToAction("Index", "Home");
294 | }
295 |
296 | //
297 | // GET: /Account/ExternalLoginFailure
298 | [AllowAnonymous]
299 | public ActionResult ExternalLoginFailure()
300 | {
301 | return View();
302 | }
303 |
304 | [ChildActionOnly]
305 | public ActionResult RemoveAccountList()
306 | {
307 | var linkedAccounts = UserManager.GetLogins(User.Identity.GetUserId());
308 | ViewBag.ShowRemoveButton = HasPassword() || linkedAccounts.Count > 1;
309 | return (ActionResult)PartialView("_RemoveAccountPartial", linkedAccounts);
310 | }
311 |
312 | protected override void Dispose(bool disposing)
313 | {
314 | if (disposing && UserManager != null)
315 | {
316 | UserManager.Dispose();
317 | UserManager = null;
318 | }
319 | base.Dispose(disposing);
320 | }
321 |
322 | #region Helpers
323 | // Used for XSRF protection when adding external logins
324 | private const string XsrfKey = "XsrfId";
325 |
326 | private IAuthenticationManager AuthenticationManager
327 | {
328 | get
329 | {
330 | return HttpContext.GetOwinContext().Authentication;
331 | }
332 | }
333 |
334 | private async Task SignInAsync(ApplicationUser user, bool isPersistent)
335 | {
336 | AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
337 | var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
338 | AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
339 | }
340 |
341 | private void AddErrors(IdentityResult result)
342 | {
343 | foreach (var error in result.Errors)
344 | {
345 | ModelState.AddModelError("", error);
346 | }
347 | }
348 |
349 | private bool HasPassword()
350 | {
351 | var user = UserManager.FindById(User.Identity.GetUserId());
352 | if (user != null)
353 | {
354 | return user.PasswordHash != null;
355 | }
356 | return false;
357 | }
358 |
359 | public enum ManageMessageId
360 | {
361 | ChangePasswordSuccess,
362 | SetPasswordSuccess,
363 | RemoveLoginSuccess,
364 | Error
365 | }
366 |
367 | private ActionResult RedirectToLocal(string returnUrl)
368 | {
369 | if (Url.IsLocalUrl(returnUrl))
370 | {
371 | return Redirect(returnUrl);
372 | }
373 | else
374 | {
375 | return RedirectToAction("Index", "Home");
376 | }
377 | }
378 |
379 | private class ChallengeResult : HttpUnauthorizedResult
380 | {
381 | public ChallengeResult(string provider, string redirectUri) : this(provider, redirectUri, null)
382 | {
383 | }
384 |
385 | public ChallengeResult(string provider, string redirectUri, string userId)
386 | {
387 | LoginProvider = provider;
388 | RedirectUri = redirectUri;
389 | UserId = userId;
390 | }
391 |
392 | public string LoginProvider { get; set; }
393 | public string RedirectUri { get; set; }
394 | public string UserId { get; set; }
395 |
396 | public override void ExecuteResult(ControllerContext context)
397 | {
398 | var properties = new AuthenticationProperties() { RedirectUri = RedirectUri };
399 | if (UserId != null)
400 | {
401 | properties.Dictionary[XsrfKey] = UserId;
402 | }
403 | context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider);
404 | }
405 | }
406 | #endregion
407 | }
408 | }
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Content/bootstrap-theme.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 |
7 | .btn-default,
8 | .btn-primary,
9 | .btn-success,
10 | .btn-info,
11 | .btn-warning,
12 | .btn-danger {
13 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
14 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
16 | }
17 | .btn-default:active,
18 | .btn-primary:active,
19 | .btn-success:active,
20 | .btn-info:active,
21 | .btn-warning:active,
22 | .btn-danger:active,
23 | .btn-default.active,
24 | .btn-primary.active,
25 | .btn-success.active,
26 | .btn-info.active,
27 | .btn-warning.active,
28 | .btn-danger.active {
29 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
31 | }
32 | .btn:active,
33 | .btn.active {
34 | background-image: none;
35 | }
36 | .btn-default {
37 | text-shadow: 0 1px 0 #fff;
38 | background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
39 | background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
40 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
41 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
42 | background-repeat: repeat-x;
43 | border-color: #dbdbdb;
44 | border-color: #ccc;
45 | }
46 | .btn-default:hover,
47 | .btn-default:focus {
48 | background-color: #e0e0e0;
49 | background-position: 0 -15px;
50 | }
51 | .btn-default:active,
52 | .btn-default.active {
53 | background-color: #e0e0e0;
54 | border-color: #dbdbdb;
55 | }
56 | .btn-primary {
57 | background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
58 | background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
59 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
60 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
61 | background-repeat: repeat-x;
62 | border-color: #2b669a;
63 | }
64 | .btn-primary:hover,
65 | .btn-primary:focus {
66 | background-color: #2d6ca2;
67 | background-position: 0 -15px;
68 | }
69 | .btn-primary:active,
70 | .btn-primary.active {
71 | background-color: #2d6ca2;
72 | border-color: #2b669a;
73 | }
74 | .btn-success {
75 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
76 | background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
77 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
78 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
79 | background-repeat: repeat-x;
80 | border-color: #3e8f3e;
81 | }
82 | .btn-success:hover,
83 | .btn-success:focus {
84 | background-color: #419641;
85 | background-position: 0 -15px;
86 | }
87 | .btn-success:active,
88 | .btn-success.active {
89 | background-color: #419641;
90 | border-color: #3e8f3e;
91 | }
92 | .btn-info {
93 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
94 | background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
95 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
96 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
97 | background-repeat: repeat-x;
98 | border-color: #28a4c9;
99 | }
100 | .btn-info:hover,
101 | .btn-info:focus {
102 | background-color: #2aabd2;
103 | background-position: 0 -15px;
104 | }
105 | .btn-info:active,
106 | .btn-info.active {
107 | background-color: #2aabd2;
108 | border-color: #28a4c9;
109 | }
110 | .btn-warning {
111 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
112 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
113 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
114 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
115 | background-repeat: repeat-x;
116 | border-color: #e38d13;
117 | }
118 | .btn-warning:hover,
119 | .btn-warning:focus {
120 | background-color: #eb9316;
121 | background-position: 0 -15px;
122 | }
123 | .btn-warning:active,
124 | .btn-warning.active {
125 | background-color: #eb9316;
126 | border-color: #e38d13;
127 | }
128 | .btn-danger {
129 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
130 | background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
131 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
132 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
133 | background-repeat: repeat-x;
134 | border-color: #b92c28;
135 | }
136 | .btn-danger:hover,
137 | .btn-danger:focus {
138 | background-color: #c12e2a;
139 | background-position: 0 -15px;
140 | }
141 | .btn-danger:active,
142 | .btn-danger.active {
143 | background-color: #c12e2a;
144 | border-color: #b92c28;
145 | }
146 | .thumbnail,
147 | .img-thumbnail {
148 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
149 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
150 | }
151 | .dropdown-menu > li > a:hover,
152 | .dropdown-menu > li > a:focus {
153 | background-color: #e8e8e8;
154 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
155 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
156 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
157 | background-repeat: repeat-x;
158 | }
159 | .dropdown-menu > .active > a,
160 | .dropdown-menu > .active > a:hover,
161 | .dropdown-menu > .active > a:focus {
162 | background-color: #357ebd;
163 | background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
164 | background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
165 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
166 | background-repeat: repeat-x;
167 | }
168 | .navbar-default {
169 | background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
170 | background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
171 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
172 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
173 | background-repeat: repeat-x;
174 | border-radius: 4px;
175 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
176 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
177 | }
178 | .navbar-default .navbar-nav > .active > a {
179 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
180 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
181 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
182 | background-repeat: repeat-x;
183 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
184 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
185 | }
186 | .navbar-brand,
187 | .navbar-nav > li > a {
188 | text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
189 | }
190 | .navbar-inverse {
191 | background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
192 | background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
193 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
194 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
195 | background-repeat: repeat-x;
196 | }
197 | .navbar-inverse .navbar-nav > .active > a {
198 | background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
199 | background-image: linear-gradient(to bottom, #222 0%, #282828 100%);
200 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
201 | background-repeat: repeat-x;
202 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
203 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
204 | }
205 | .navbar-inverse .navbar-brand,
206 | .navbar-inverse .navbar-nav > li > a {
207 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
208 | }
209 | .navbar-static-top,
210 | .navbar-fixed-top,
211 | .navbar-fixed-bottom {
212 | border-radius: 0;
213 | }
214 | .alert {
215 | text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
216 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
217 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
218 | }
219 | .alert-success {
220 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
221 | background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
222 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
223 | background-repeat: repeat-x;
224 | border-color: #b2dba1;
225 | }
226 | .alert-info {
227 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
228 | background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
229 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
230 | background-repeat: repeat-x;
231 | border-color: #9acfea;
232 | }
233 | .alert-warning {
234 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
235 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
236 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
237 | background-repeat: repeat-x;
238 | border-color: #f5e79e;
239 | }
240 | .alert-danger {
241 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
242 | background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
243 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
244 | background-repeat: repeat-x;
245 | border-color: #dca7a7;
246 | }
247 | .progress {
248 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
249 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
250 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
251 | background-repeat: repeat-x;
252 | }
253 | .progress-bar {
254 | background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
255 | background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
256 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
257 | background-repeat: repeat-x;
258 | }
259 | .progress-bar-success {
260 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
261 | background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
262 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
263 | background-repeat: repeat-x;
264 | }
265 | .progress-bar-info {
266 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
267 | background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
268 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
269 | background-repeat: repeat-x;
270 | }
271 | .progress-bar-warning {
272 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
273 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
274 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
275 | background-repeat: repeat-x;
276 | }
277 | .progress-bar-danger {
278 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
279 | background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
280 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
281 | background-repeat: repeat-x;
282 | }
283 | .list-group {
284 | border-radius: 4px;
285 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
286 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
287 | }
288 | .list-group-item.active,
289 | .list-group-item.active:hover,
290 | .list-group-item.active:focus {
291 | text-shadow: 0 -1px 0 #3071a9;
292 | background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
293 | background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
294 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
295 | background-repeat: repeat-x;
296 | border-color: #3278b3;
297 | }
298 | .panel {
299 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
300 | box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
301 | }
302 | .panel-default > .panel-heading {
303 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
304 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
305 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
306 | background-repeat: repeat-x;
307 | }
308 | .panel-primary > .panel-heading {
309 | background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
310 | background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
311 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
312 | background-repeat: repeat-x;
313 | }
314 | .panel-success > .panel-heading {
315 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
316 | background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
317 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
318 | background-repeat: repeat-x;
319 | }
320 | .panel-info > .panel-heading {
321 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
322 | background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
323 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
324 | background-repeat: repeat-x;
325 | }
326 | .panel-warning > .panel-heading {
327 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
328 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
329 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
330 | background-repeat: repeat-x;
331 | }
332 | .panel-danger > .panel-heading {
333 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
334 | background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
335 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
336 | background-repeat: repeat-x;
337 | }
338 | .well {
339 | background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
340 | background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
341 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
342 | background-repeat: repeat-x;
343 | border-color: #dcdcdc;
344 | -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
345 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
346 | }
347 | /*# sourceMappingURL=bootstrap-theme.css.map */
348 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/WN_SignalR.PerformanceWeb.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 |
8 |
9 | 2.0
10 | {B668DF05-B3BE-4DDD-ACFE-D51706973C89}
11 | {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
12 | Library
13 | Properties
14 | WN_SignalR.PerformanceWeb
15 | WN_SignalR.PerformanceWeb
16 | v4.5
17 | false
18 | true
19 |
20 |
21 |
22 |
23 |
24 |
25 | true
26 | full
27 | false
28 | bin\
29 | DEBUG;TRACE
30 | prompt
31 | 4
32 |
33 |
34 | pdbonly
35 | true
36 | bin\
37 | TRACE
38 | prompt
39 | 4
40 |
41 |
42 |
43 | False
44 | ..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll
45 |
46 |
47 | False
48 | ..\packages\EntityFramework.6.0.2\lib\net45\EntityFramework.dll
49 |
50 |
51 | False
52 | ..\packages\EntityFramework.6.0.2\lib\net45\EntityFramework.SqlServer.dll
53 |
54 |
55 | ..\packages\Microsoft.AspNet.SignalR.Core.2.0.2\lib\net45\Microsoft.AspNet.SignalR.Core.dll
56 |
57 |
58 | ..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.0.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll
59 |
60 |
61 |
62 | False
63 | ..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll
64 |
65 |
66 | False
67 | ..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
68 |
69 |
70 | False
71 | ..\packages\Microsoft.Owin.Security.2.1.0\lib\net45\Microsoft.Owin.Security.dll
72 |
73 |
74 | False
75 | ..\packages\Microsoft.Owin.Security.Cookies.2.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll
76 |
77 |
78 | False
79 | ..\packages\Microsoft.Owin.Security.Facebook.2.1.0\lib\net45\Microsoft.Owin.Security.Facebook.dll
80 |
81 |
82 | False
83 | ..\packages\Microsoft.Owin.Security.Google.2.1.0\lib\net45\Microsoft.Owin.Security.Google.dll
84 |
85 |
86 | False
87 | ..\packages\Microsoft.Owin.Security.MicrosoftAccount.2.1.0\lib\net45\Microsoft.Owin.Security.MicrosoftAccount.dll
88 |
89 |
90 | False
91 | ..\packages\Microsoft.Owin.Security.OAuth.2.1.0\lib\net45\Microsoft.Owin.Security.OAuth.dll
92 |
93 |
94 | False
95 | ..\packages\Microsoft.Owin.Security.Twitter.2.1.0\lib\net45\Microsoft.Owin.Security.Twitter.dll
96 |
97 |
98 | False
99 | ..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 | False
112 | ..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.Helpers.dll
113 |
114 |
115 | False
116 | ..\packages\Microsoft.AspNet.Mvc.5.1.1\lib\net45\System.Web.Mvc.dll
117 |
118 |
119 | False
120 | ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll
121 |
122 |
123 | False
124 | ..\packages\Microsoft.AspNet.Razor.3.1.1\lib\net45\System.Web.Razor.dll
125 |
126 |
127 | False
128 | ..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.dll
129 |
130 |
131 | False
132 | ..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Deployment.dll
133 |
134 |
135 | False
136 | ..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Razor.dll
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 | True
149 | ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
150 |
151 |
152 |
153 |
154 |
155 |
156 | False
157 | ..\packages\WebGrease.1.6.0\lib\WebGrease.dll
158 |
159 |
160 |
161 |
162 | ..\packages\Microsoft.AspNet.Identity.Core.1.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll
163 |
164 |
165 | ..\packages\Microsoft.AspNet.Identity.Owin.1.0.0\lib\net45\Microsoft.AspNet.Identity.Owin.dll
166 |
167 |
168 | ..\packages\Microsoft.AspNet.Identity.EntityFramework.1.0.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll
169 |
170 |
171 | ..\packages\Owin.1.0\lib\net40\Owin.dll
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 | Global.asax
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 | Web.config
228 |
229 |
230 | Web.config
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 | 10.0
259 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 | True
272 | True
273 | 8568
274 | /
275 | http://localhost:8568/
276 | False
277 | False
278 |
279 |
280 | False
281 |
282 |
283 |
284 |
285 |
291 |
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Scripts/jquery.validate.unobtrusive.js:
--------------------------------------------------------------------------------
1 | /* NUGET: BEGIN LICENSE TEXT
2 | *
3 | * Microsoft grants you the right to use these script files for the sole
4 | * purpose of either: (i) interacting through your browser with the Microsoft
5 | * website or online service, subject to the applicable licensing or use
6 | * terms; or (ii) using the files as included with a Microsoft product subject
7 | * to that product's license terms. Microsoft reserves all other rights to the
8 | * files not expressly granted by Microsoft, whether by implication, estoppel
9 | * or otherwise. Insofar as a script file is dual licensed under GPL,
10 | * Microsoft neither took the code under GPL nor distributes it thereunder but
11 | * under the terms set out in this paragraph. All notices and licenses
12 | * below are for informational purposes only.
13 | *
14 | * NUGET: END LICENSE TEXT */
15 | /*!
16 | ** Unobtrusive validation support library for jQuery and jQuery Validate
17 | ** Copyright (C) Microsoft Corporation. All rights reserved.
18 | */
19 |
20 | /*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
21 | /*global document: false, jQuery: false */
22 |
23 | (function ($) {
24 | var $jQval = $.validator,
25 | adapters,
26 | data_validation = "unobtrusiveValidation";
27 |
28 | function setValidationValues(options, ruleName, value) {
29 | options.rules[ruleName] = value;
30 | if (options.message) {
31 | options.messages[ruleName] = options.message;
32 | }
33 | }
34 |
35 | function splitAndTrim(value) {
36 | return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g);
37 | }
38 |
39 | function escapeAttributeValue(value) {
40 | // As mentioned on http://api.jquery.com/category/selectors/
41 | return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1");
42 | }
43 |
44 | function getModelPrefix(fieldName) {
45 | return fieldName.substr(0, fieldName.lastIndexOf(".") + 1);
46 | }
47 |
48 | function appendModelPrefix(value, prefix) {
49 | if (value.indexOf("*.") === 0) {
50 | value = value.replace("*.", prefix);
51 | }
52 | return value;
53 | }
54 |
55 | function onError(error, inputElement) { // 'this' is the form element
56 | var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
57 | replaceAttrValue = container.attr("data-valmsg-replace"),
58 | replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;
59 |
60 | container.removeClass("field-validation-valid").addClass("field-validation-error");
61 | error.data("unobtrusiveContainer", container);
62 |
63 | if (replace) {
64 | container.empty();
65 | error.removeClass("input-validation-error").appendTo(container);
66 | }
67 | else {
68 | error.hide();
69 | }
70 | }
71 |
72 | function onErrors(event, validator) { // 'this' is the form element
73 | var container = $(this).find("[data-valmsg-summary=true]"),
74 | list = container.find("ul");
75 |
76 | if (list && list.length && validator.errorList.length) {
77 | list.empty();
78 | container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
79 |
80 | $.each(validator.errorList, function () {
81 | $(" ").html(this.message).appendTo(list);
82 | });
83 | }
84 | }
85 |
86 | function onSuccess(error) { // 'this' is the form element
87 | var container = error.data("unobtrusiveContainer"),
88 | replaceAttrValue = container.attr("data-valmsg-replace"),
89 | replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;
90 |
91 | if (container) {
92 | container.addClass("field-validation-valid").removeClass("field-validation-error");
93 | error.removeData("unobtrusiveContainer");
94 |
95 | if (replace) {
96 | container.empty();
97 | }
98 | }
99 | }
100 |
101 | function onReset(event) { // 'this' is the form element
102 | var $form = $(this);
103 | $form.data("validator").resetForm();
104 | $form.find(".validation-summary-errors")
105 | .addClass("validation-summary-valid")
106 | .removeClass("validation-summary-errors");
107 | $form.find(".field-validation-error")
108 | .addClass("field-validation-valid")
109 | .removeClass("field-validation-error")
110 | .removeData("unobtrusiveContainer")
111 | .find(">*") // If we were using valmsg-replace, get the underlying error
112 | .removeData("unobtrusiveContainer");
113 | }
114 |
115 | function validationInfo(form) {
116 | var $form = $(form),
117 | result = $form.data(data_validation),
118 | onResetProxy = $.proxy(onReset, form);
119 |
120 | if (!result) {
121 | result = {
122 | options: { // options structure passed to jQuery Validate's validate() method
123 | errorClass: "input-validation-error",
124 | errorElement: "span",
125 | errorPlacement: $.proxy(onError, form),
126 | invalidHandler: $.proxy(onErrors, form),
127 | messages: {},
128 | rules: {},
129 | success: $.proxy(onSuccess, form)
130 | },
131 | attachValidation: function () {
132 | $form
133 | .unbind("reset." + data_validation, onResetProxy)
134 | .bind("reset." + data_validation, onResetProxy)
135 | .validate(this.options);
136 | },
137 | validate: function () { // a validation function that is called by unobtrusive Ajax
138 | $form.validate();
139 | return $form.valid();
140 | }
141 | };
142 | $form.data(data_validation, result);
143 | }
144 |
145 | return result;
146 | }
147 |
148 | $jQval.unobtrusive = {
149 | adapters: [],
150 |
151 | parseElement: function (element, skipAttach) {
152 | ///
153 | /// Parses a single HTML element for unobtrusive validation attributes.
154 | ///
155 | /// The HTML element to be parsed.
156 | /// [Optional] true to skip attaching the
157 | /// validation to the form. If parsing just this single element, you should specify true.
158 | /// If parsing several elements, you should specify false, and manually attach the validation
159 | /// to the form when you are finished. The default is false.
160 | var $element = $(element),
161 | form = $element.parents("form")[0],
162 | valInfo, rules, messages;
163 |
164 | if (!form) { // Cannot do client-side validation without a form
165 | return;
166 | }
167 |
168 | valInfo = validationInfo(form);
169 | valInfo.options.rules[element.name] = rules = {};
170 | valInfo.options.messages[element.name] = messages = {};
171 |
172 | $.each(this.adapters, function () {
173 | var prefix = "data-val-" + this.name,
174 | message = $element.attr(prefix),
175 | paramValues = {};
176 |
177 | if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)
178 | prefix += "-";
179 |
180 | $.each(this.params, function () {
181 | paramValues[this] = $element.attr(prefix + this);
182 | });
183 |
184 | this.adapt({
185 | element: element,
186 | form: form,
187 | message: message,
188 | params: paramValues,
189 | rules: rules,
190 | messages: messages
191 | });
192 | }
193 | });
194 |
195 | $.extend(rules, { "__dummy__": true });
196 |
197 | if (!skipAttach) {
198 | valInfo.attachValidation();
199 | }
200 | },
201 |
202 | parse: function (selector) {
203 | ///
204 | /// Parses all the HTML elements in the specified selector. It looks for input elements decorated
205 | /// with the [data-val=true] attribute value and enables validation according to the data-val-*
206 | /// attribute values.
207 | ///
208 | /// Any valid jQuery selector.
209 | var $forms = $(selector)
210 | .parents("form")
211 | .andSelf()
212 | .add($(selector).find("form"))
213 | .filter("form");
214 |
215 | // :input is a psuedoselector provided by jQuery which selects input and input-like elements
216 | // combining :input with other selectors significantly decreases performance.
217 | $(selector).find(":input").filter("[data-val=true]").each(function () {
218 | $jQval.unobtrusive.parseElement(this, true);
219 | });
220 |
221 | $forms.each(function () {
222 | var info = validationInfo(this);
223 | if (info) {
224 | info.attachValidation();
225 | }
226 | });
227 | }
228 | };
229 |
230 | adapters = $jQval.unobtrusive.adapters;
231 |
232 | adapters.add = function (adapterName, params, fn) {
233 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.
234 | /// The name of the adapter to be added. This matches the name used
235 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).
236 | /// [Optional] An array of parameter names (strings) that will
237 | /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and
238 | /// mmmm is the parameter name).
239 | /// The function to call, which adapts the values from the HTML
240 | /// attributes into jQuery Validate rules and/or messages.
241 | ///
242 | if (!fn) { // Called with no params, just a function
243 | fn = params;
244 | params = [];
245 | }
246 | this.push({ name: adapterName, params: params, adapt: fn });
247 | return this;
248 | };
249 |
250 | adapters.addBool = function (adapterName, ruleName) {
251 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
252 | /// the jQuery Validate validation rule has no parameter values.
253 | /// The name of the adapter to be added. This matches the name used
254 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).
255 | /// [Optional] The name of the jQuery Validate rule. If not provided, the value
256 | /// of adapterName will be used instead.
257 | ///
258 | return this.add(adapterName, function (options) {
259 | setValidationValues(options, ruleName || adapterName, true);
260 | });
261 | };
262 |
263 | adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {
264 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
265 | /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and
266 | /// one for min-and-max). The HTML parameters are expected to be named -min and -max.
267 | /// The name of the adapter to be added. This matches the name used
268 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).
269 | /// The name of the jQuery Validate rule to be used when you only
270 | /// have a minimum value.
271 | /// The name of the jQuery Validate rule to be used when you only
272 | /// have a maximum value.
273 | /// The name of the jQuery Validate rule to be used when you
274 | /// have both a minimum and maximum value.
275 | /// [Optional] The name of the HTML attribute that
276 | /// contains the minimum value. The default is "min".
277 | /// [Optional] The name of the HTML attribute that
278 | /// contains the maximum value. The default is "max".
279 | ///
280 | return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
281 | var min = options.params.min,
282 | max = options.params.max;
283 |
284 | if (min && max) {
285 | setValidationValues(options, minMaxRuleName, [min, max]);
286 | }
287 | else if (min) {
288 | setValidationValues(options, minRuleName, min);
289 | }
290 | else if (max) {
291 | setValidationValues(options, maxRuleName, max);
292 | }
293 | });
294 | };
295 |
296 | adapters.addSingleVal = function (adapterName, attribute, ruleName) {
297 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
298 | /// the jQuery Validate validation rule has a single value.
299 | /// The name of the adapter to be added. This matches the name used
300 | /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).
301 | /// [Optional] The name of the HTML attribute that contains the value.
302 | /// The default is "val".
303 | /// [Optional] The name of the jQuery Validate rule. If not provided, the value
304 | /// of adapterName will be used instead.
305 | ///
306 | return this.add(adapterName, [attribute || "val"], function (options) {
307 | setValidationValues(options, ruleName || adapterName, options.params[attribute]);
308 | });
309 | };
310 |
311 | $jQval.addMethod("__dummy__", function (value, element, params) {
312 | return true;
313 | });
314 |
315 | $jQval.addMethod("regex", function (value, element, params) {
316 | var match;
317 | if (this.optional(element)) {
318 | return true;
319 | }
320 |
321 | match = new RegExp(params).exec(value);
322 | return (match && (match.index === 0) && (match[0].length === value.length));
323 | });
324 |
325 | $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) {
326 | var match;
327 | if (nonalphamin) {
328 | match = value.match(/\W/g);
329 | match = match && match.length >= nonalphamin;
330 | }
331 | return match;
332 | });
333 |
334 | if ($jQval.methods.extension) {
335 | adapters.addSingleVal("accept", "mimtype");
336 | adapters.addSingleVal("extension", "extension");
337 | } else {
338 | // for backward compatibility, when the 'extension' validation method does not exist, such as with versions
339 | // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for
340 | // validating the extension, and ignore mime-type validations as they are not supported.
341 | adapters.addSingleVal("extension", "extension", "accept");
342 | }
343 |
344 | adapters.addSingleVal("regex", "pattern");
345 | adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
346 | adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
347 | adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength");
348 | adapters.add("equalto", ["other"], function (options) {
349 | var prefix = getModelPrefix(options.element.name),
350 | other = options.params.other,
351 | fullOtherName = appendModelPrefix(other, prefix),
352 | element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0];
353 |
354 | setValidationValues(options, "equalTo", element);
355 | });
356 | adapters.add("required", function (options) {
357 | // jQuery Validate equates "required" with "mandatory" for checkbox elements
358 | if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
359 | setValidationValues(options, "required", true);
360 | }
361 | });
362 | adapters.add("remote", ["url", "type", "additionalfields"], function (options) {
363 | var value = {
364 | url: options.params.url,
365 | type: options.params.type || "GET",
366 | data: {}
367 | },
368 | prefix = getModelPrefix(options.element.name);
369 |
370 | $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {
371 | var paramName = appendModelPrefix(fieldName, prefix);
372 | value.data[paramName] = function () {
373 | return $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']").val();
374 | };
375 | });
376 |
377 | setValidationValues(options, "remote", value);
378 | });
379 | adapters.add("password", ["min", "nonalphamin", "regex"], function (options) {
380 | if (options.params.min) {
381 | setValidationValues(options, "minlength", options.params.min);
382 | }
383 | if (options.params.nonalphamin) {
384 | setValidationValues(options, "nonalphamin", options.params.nonalphamin);
385 | }
386 | if (options.params.regex) {
387 | setValidationValues(options, "regex", options.params.regex);
388 | }
389 | });
390 |
391 | $(function () {
392 | $jQval.unobtrusive.parse(document);
393 | });
394 | }(jQuery));
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Scripts/jquery.validate.min.js:
--------------------------------------------------------------------------------
1 | /* NUGET: BEGIN LICENSE TEXT
2 | *
3 | * Microsoft grants you the right to use these script files for the sole
4 | * purpose of either: (i) interacting through your browser with the Microsoft
5 | * website or online service, subject to the applicable licensing or use
6 | * terms; or (ii) using the files as included with a Microsoft product subject
7 | * to that product's license terms. Microsoft reserves all other rights to the
8 | * files not expressly granted by Microsoft, whether by implication, estoppel
9 | * or otherwise. Insofar as a script file is dual licensed under GPL,
10 | * Microsoft neither took the code under GPL nor distributes it thereunder but
11 | * under the terms set out in this paragraph. All notices and licenses
12 | * below are for informational purposes only.
13 | *
14 | * NUGET: END LICENSE TEXT */
15 | /*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation
16 | * Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return e&&e.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."),void 0;var i=t.data(this[0],"validator");return i?i:(this.attr("novalidate","novalidate"),i=new t.validator(e,this[0]),t.data(this[0],"validator",i),i.settings.onsubmit&&(this.validateDelegate(":submit","click",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass("cancel")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr("formnovalidate")&&(i.cancelSubmit=!0)}),this.submit(function(e){function s(){var s;return i.settings.submitHandler?(i.submitButton&&(s=t(" ").attr("name",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.submitButton&&s.remove(),!1):!0}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,s()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):s():(i.focusInvalid(),!1)})),i)},valid:function(){if(t(this[0]).is("form"))return this.validate().form();var e=!0,i=t(this[0].form).validate();return this.each(function(){e=e&&i.element(this)}),e},removeAttrs:function(e){var i={},s=this;return t.each(e.split(/\s/),function(t,e){i[e]=s.attr(e),s.removeAttr(e)}),i},rules:function(e,i){var s=this[0];if(e){var r=t.data(s.form,"validator").settings,n=r.rules,a=t.validator.staticRules(s);switch(e){case"add":t.extend(a,t.validator.normalizeRule(i)),delete a.messages,n[s.name]=a,i.messages&&(r.messages[s.name]=t.extend(r.messages[s.name],i.messages));break;case"remove":if(!i)return delete n[s.name],a;var u={};return t.each(i.split(/\s/),function(t,e){u[e]=a[e],delete a[e]}),u}}var o=t.validator.normalizeRules(t.extend({},t.validator.classRules(s),t.validator.attributeRules(s),t.validator.dataRules(s),t.validator.staticRules(s)),s);if(o.required){var l=o.required;delete o.required,o=t.extend({required:l},o)}return o}}),t.extend(t.expr[":"],{blank:function(e){return!t.trim(""+t(e).val())},filled:function(e){return!!t.trim(""+t(e).val())},unchecked:function(e){return!t(e).prop("checked")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(RegExp("\\{"+t+"\\}","g"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(t)).hide())},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){(9!==e.which||""!==this.elementValue(t))&&(t.name in this.submitted||t===this.lastElement)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).addClass(i).removeClass(s):t(e).addClass(i).removeClass(s)},unhighlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).removeClass(i).addClass(s):t(e).removeClass(i).addClass(s)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:t.validator.format("Please enter no more than {0} characters."),minlength:t.validator.format("Please enter at least {0} characters."),rangelength:t.validator.format("Please enter a value between {0} and {1} characters long."),range:t.validator.format("Please enter a value between {0} and {1}."),max:t.validator.format("Please enter a value less than or equal to {0}."),min:t.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function e(e){var i=t.data(this[0].form,"validator"),s="on"+e.type.replace(/^validate/,"");i.settings[s]&&i.settings[s].call(i,this[0],e)}this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i=this.groups={};t.each(this.settings.groups,function(e,s){"string"==typeof s&&(s=s.split(/\s/)),t.each(s,function(t,s){i[s]=e})});var s=this.settings.rules;t.each(s,function(e,i){s[e]=t.validator.normalizeRule(i)}),t(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",e).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",e),this.settings.invalidHandler&&t(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){e=this.validationTargetFor(this.clean(e)),this.lastElement=e,this.prepareElement(e),this.currentElements=t(e);var i=this.check(e)!==!1;return i?delete this.invalid[e.name]:this.invalid[e.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(e){if(e){t.extend(this.errorMap,e),this.errorList=[];for(var i in e)this.errorList.push({message:e[i],element:this.findByName(i)[0]});this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e=0;for(var i in t)e++;return e},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(e){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&e.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in i||!e.objectLength(t(this).rules())?!1:(i[this.name]=!0,!0)})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.replace(" ",".");return t(this.settings.errorElement+"."+e,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([]),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i=t(e).attr("type"),s=t(e).val();return"radio"===i||"checkbox"===i?t("input[name='"+t(e).attr("name")+"']:checked").val():"string"==typeof s?s.replace(/\r/g,""):s},check:function(e){e=this.validationTargetFor(this.clean(e));var i,s=t(e).rules(),r=!1,n=this.elementValue(e);for(var a in s){var u={method:a,parameters:s[a]};try{if(i=t.validator.methods[a].call(this,n,e,u.parameters),"dependency-mismatch"===i){r=!0;continue}if(r=!1,"pending"===i)return this.toHide=this.toHide.not(this.errorsFor(e)),void 0;if(!i)return this.formatAndAdd(e,u),!1}catch(o){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+e.id+", check the '"+u.method+"' method.",o),o}}return r?void 0:(this.objectLength(s)&&this.successList.push(e),!0)},customDataMessage:function(e,i){return t(e).data("msg-"+i.toLowerCase())||e.attributes&&t(e).attr("data-msg-"+i.toLowerCase())},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t];return void 0},defaultMessage:function(e,i){return this.findDefined(this.customMessage(e.name,i),this.customDataMessage(e,i),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i],"Warning: No message defined for "+e.name+" ")},formatAndAdd:function(e,i){var s=this.defaultMessage(e,i.method),r=/\$?\{(\d+)\}/g;"function"==typeof s?s=s.call(this,i.parameters,e):r.test(s)&&(s=t.validator.format(s.replace(r,"{$1}"),i.parameters)),this.errorList.push({message:s,element:e}),this.errorMap[e.name]=s,this.submitted[e.name]=s},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e;for(t=0;this.errorList[t];t++){var i=this.errorList[t];this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message)}if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var s=this.errorsFor(e);s.length?(s.removeClass(this.settings.validClass).addClass(this.settings.errorClass),s.html(i)):(s=t("<"+this.settings.errorElement+">").attr("for",this.idOrName(e)).addClass(this.settings.errorClass).html(i||""),this.settings.wrapper&&(s=s.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(s).length||(this.settings.errorPlacement?this.settings.errorPlacement(s,t(e)):s.insertAfter(e))),!i&&this.settings.success&&(s.text(""),"string"==typeof this.settings.success?s.addClass(this.settings.success):this.settings.success(s,e)),this.toShow=this.toShow.add(s)},errorsFor:function(e){var i=this.idOrName(e);return this.errors().filter(function(){return t(this).attr("for")===i})},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name).not(this.settings.ignore)[0]),t},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find("[name='"+e+"']")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case"select":return t("option:selected",i).length;case"input":if(this.checkable(i))return this.findByName(i.name).filter(":checked").length}return e.length},depend:function(t,e){return this.dependTypes[typeof t]?this.dependTypes[typeof t](t,e):!0},dependTypes:{"boolean":function(t){return t},string:function(e,i){return!!t(e,i.form).length},"function":function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&"dependency-mismatch"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,this.pending[t.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,0>this.pendingRequest&&(this.pendingRequest=0),delete this.pending[e.name],i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(e){return t.data(e,"previousValue")||t.data(e,"previousValue",{old:null,valid:!0,message:this.defaultMessage(e,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},s=t(e).attr("class");return s&&t.each(s.split(" "),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},attributeRules:function(e){var i={},s=t(e),r=s[0].getAttribute("type");for(var n in t.validator.methods){var a;"required"===n?(a=s.get(0).getAttribute(n),""===a&&(a=!0),a=!!a):a=s.attr(n),/min|max/.test(n)&&(null===r||/number|range|text/.test(r))&&(a=Number(a)),a?i[n]=a:r===n&&"range"!==r&&(i[n]=!0)}return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(e){var i,s,r={},n=t(e);for(i in t.validator.methods)s=n.data("rule-"+i.toLowerCase()),void 0!==s&&(r[i]=s);return r},staticRules:function(e){var i={},s=t.data(e.form,"validator");return s.settings.rules&&(i=t.validator.normalizeRule(s.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(s,r){if(r===!1)return delete e[s],void 0;if(r.param||r.depends){var n=!0;switch(typeof r.depends){case"string":n=!!t(r.depends,i.form).length;break;case"function":n=r.depends.call(i,i)}n?e[s]=void 0!==r.param?r.param:!0:delete e[s]}}),t.each(e,function(s,r){e[s]=t.isFunction(r)?r(i):r}),t.each(["minlength","maxlength"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each(["rangelength","range"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:"string"==typeof e[this]&&(i=e[this].split(/[\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(e.min&&e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),e.minlength&&e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if("string"==typeof e){var i={};t.each(e.split(/\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,s){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==s?s:t.validator.messages[e],3>i.length&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,s){if(!this.depend(s,i))return"dependency-mismatch";if("select"===i.nodeName.toLowerCase()){var r=t(i).val();return r&&r.length>0}return this.checkable(i)?this.getLength(e,i)>0:t.trim(e).length>0},email:function(t,e){return this.optional(e)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)},url:function(t,e){return this.optional(e)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(""+new Date(t))},dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(t)},number:function(t,e){return this.optional(e)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},creditcard:function(t,e){if(this.optional(e))return"dependency-mismatch";if(/[^0-9 \-]+/.test(t))return!1;var i=0,s=0,r=!1;t=t.replace(/\D/g,"");for(var n=t.length-1;n>=0;n--){var a=t.charAt(n);s=parseInt(a,10),r&&(s*=2)>9&&(s-=9),i+=s,r=!r}return 0===i%10},minlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s},maxlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||s>=r},rangelength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s[0]&&s[1]>=r},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||i>=t},range:function(t,e,i){return this.optional(e)||t>=i[0]&&i[1]>=t},equalTo:function(e,i,s){var r=t(s);return this.settings.onfocusout&&r.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){t(i).valid()}),e===r.val()},remote:function(e,i,s){if(this.optional(i))return"dependency-mismatch";var r=this.previousValue(i);if(this.settings.messages[i.name]||(this.settings.messages[i.name]={}),r.originalMessage=this.settings.messages[i.name].remote,this.settings.messages[i.name].remote=r.message,s="string"==typeof s&&{url:s}||s,r.old===e)return r.valid;r.old=e;var n=this;this.startRequest(i);var a={};return a[i.name]=e,t.ajax(t.extend(!0,{url:s,mode:"abort",port:"validate"+i.name,dataType:"json",data:a,success:function(s){n.settings.messages[i.name].remote=r.originalMessage;var a=s===!0||"true"===s;if(a){var u=n.formSubmitted;n.prepareElement(i),n.formSubmitted=u,n.successList.push(i),delete n.invalid[i.name],n.showErrors()}else{var o={},l=s||n.defaultMessage(i,"remote");o[i.name]=r.message=t.isFunction(l)?l(e):l,n.invalid[i.name]=!0,n.showErrors(o)}r.valid=a,n.stopRequest(i,a)}},s)),"pending"}}}),t.format=t.validator.format})(jQuery),function(t){var e={};if(t.ajaxPrefilter)t.ajaxPrefilter(function(t,i,s){var r=t.port;"abort"===t.mode&&(e[r]&&e[r].abort(),e[r]=s)});else{var i=t.ajax;t.ajax=function(s){var r=("mode"in s?s:t.ajaxSettings).mode,n=("port"in s?s:t.ajaxSettings).port;return"abort"===r?(e[n]&&e[n].abort(),e[n]=i.apply(this,arguments),e[n]):i.apply(this,arguments)}}}(jQuery),function(t){t.extend(t.fn,{validateDelegate:function(e,i,s){return this.bind(i,function(i){var r=t(i.target);return r.is(e)?s.apply(r,arguments):void 0})}})}(jQuery);
--------------------------------------------------------------------------------
/WN_SignalR/WN_SignalR.PerformanceWeb/Scripts/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=" li:not(.divider):visible a",i=f.find("[role=menu]"+h+", [role=listbox]"+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j ').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n="body"==this.options.container?window.innerWidth:k.outerWidth(),o="body"==this.options.container?window.innerHeight:k.outerHeight(),p="body"==this.options.container?0:k.offset().left;e="bottom"==e&&h.top+h.height+j-m>o?"top":"top"==e&&h.top-m-j<0?"bottom":"right"==e&&h.right+i>n?"left":"left"==e&&h.left-i
'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
--------------------------------------------------------------------------------
23 | @foreach (AuthenticationDescription p in loginProviders) 24 | { 25 | 26 | } 27 |
28 |