Update: 3rd Party Libraries
SignalR 1.1.2; ASP.NET MVC & ASP.NET Razor (30506); jQuery 2.0.2; jQuery Unobtrusive Validation (30116); T4MVC 3.6.5; MS HTTP Client Libraries 2.1.10
This commit is contained in:
@@ -48,15 +48,15 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Core.1.1.0\lib\net40\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.Core.1.1.2\lib\net40\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.Owin, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.SignalR.Owin, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Owin.1.1.0\lib\net45\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.Owin.1.1.2\lib\net45\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.SystemWeb, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.SignalR.SystemWeb, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.1.1.0\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.1.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Host.SystemWeb">
|
<Reference Include="Microsoft.Owin.Host.SystemWeb">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.1.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.1.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<VisualStudio>
|
<VisualStudio>
|
||||||
<UserProperties BuildVersion_StartDate="2011/7/1" BuildVersion_BuildAction="Both" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
|
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_BuildAction="Both" BuildVersion_StartDate="2011/7/1" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||||
|
|||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0527.1408")]
|
[assembly: AssemblyVersion("1.2.0603.2017")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0527.1408")]
|
[assembly: AssemblyFileVersion("1.2.0603.2017")]
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.Core" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.Core" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.Owin" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.Owin" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.Owin.Host.SystemWeb" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.Owin.Host.SystemWeb" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
|
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
|
||||||
<package id="Newtonsoft.Json" version="5.0.5" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="5.0.5" targetFramework="net45" />
|
||||||
|
|||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0516.2043")]
|
[assembly: AssemblyVersion("1.2.0603.2016")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0516.2043")]
|
[assembly: AssemblyFileVersion("1.2.0603.2016")]
|
||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0516.2043")]
|
[assembly: AssemblyVersion("1.2.0603.2016")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0516.2043")]
|
[assembly: AssemblyFileVersion("1.2.0603.2016")]
|
||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0603.1734")]
|
[assembly: AssemblyVersion("1.2.0603.2017")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0603.1734")]
|
[assembly: AssemblyFileVersion("1.2.0603.2017")]
|
||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0603.1734")]
|
[assembly: AssemblyVersion("1.2.0603.2017")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0603.1734")]
|
[assembly: AssemblyFileVersion("1.2.0603.2017")]
|
||||||
@@ -41,10 +41,11 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Core.1.1.0\lib\net40\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.Core.1.1.2\lib\net40\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.Owin">
|
<Reference Include="Microsoft.AspNet.SignalR.Owin, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Owin.1.1.0\lib\net45\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.Owin.1.1.2\lib\net45\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@@ -159,7 +160,7 @@
|
|||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<VisualStudio>
|
<VisualStudio>
|
||||||
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildAction="Both" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" />
|
<UserProperties BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_BuildAction="Both" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0603.1734")]
|
[assembly: AssemblyVersion("1.2.0603.2017")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0603.1734")]
|
[assembly: AssemblyFileVersion("1.2.0603.2017")]
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.Core" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.Core" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.Owin" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.Owin" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net45" />
|
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
|
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
|
||||||
<package id="Newtonsoft.Json" version="5.0.5" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="5.0.5" targetFramework="net45" />
|
||||||
|
|||||||
@@ -54,27 +54,27 @@
|
|||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.20710.0\lib\net40\System.Web.Mvc.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<VisualStudio>
|
<VisualStudio>
|
||||||
<UserProperties BuildVersion_StartDate="2011/7/1" BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_BuildAction="Both" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
|
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_BuildAction="Both" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2011/7/1" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||||
|
|||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0527.1408")]
|
[assembly: AssemblyVersion("1.2.0603.2017")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0527.1408")]
|
[assembly: AssemblyFileVersion("1.2.0603.2017")]
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.Razor" version="2.0.20715.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Razor" version="2.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.WebPages" version="2.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebPages" version="2.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="5.0.5" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="5.0.5" targetFramework="net45" />
|
||||||
<package id="WebActivatorEx" version="2.0.1" targetFramework="net45" />
|
<package id="WebActivatorEx" version="2.0.1" targetFramework="net45" />
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<bundle minify="true" runOnBuild="true">
|
<bundle minify="true" runOnBuild="true">
|
||||||
<file>/ClientSource/Scripts/Core/modernizr-2.6.2.js</file>
|
<file>/ClientSource/Scripts/Core/modernizr-2.6.2.js</file>
|
||||||
<file>/ClientSource/Scripts/Core/jquery-2.0.0.js</file>
|
<file>/ClientSource/Scripts/Core/jquery-2.0.2.js</file>
|
||||||
<file>/ClientSource/Scripts/Core/jquery.validate.js</file>
|
<file>/ClientSource/Scripts/Core/jquery.validate.js</file>
|
||||||
<file>/ClientSource/Scripts/Core/jquery.validate.unobtrusive.js</file>
|
<file>/ClientSource/Scripts/Core/jquery.validate.unobtrusive.js</file>
|
||||||
<file>/ClientSource/Scripts/Core/disco.unobtrusiveValidation.extensions.js</file>
|
<file>/ClientSource/Scripts/Core/disco.unobtrusiveValidation.extensions.js</file>
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+22
-15
@@ -37,11 +37,11 @@ intellisense.annotate(jQuery, {
|
|||||||
/// <returns type="Boolean" />
|
/// <returns type="Boolean" />
|
||||||
},
|
},
|
||||||
'browser': function() {
|
'browser': function() {
|
||||||
/// <summary>Contains flags for the useragent, read from navigator.userAgent. We recommend against using this property; please try to use feature detection instead (see jQuery.support). jQuery.browser may be moved to a plugin in a future release of jQuery.</summary>
|
/// <summary>Contains flags for the useragent, read from navigator.userAgent. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. Please try to use feature detection instead.</summary>
|
||||||
/// <returns type="PlainObject" />
|
/// <returns type="PlainObject" />
|
||||||
},
|
},
|
||||||
'browser.version': function() {
|
'browser.version': function() {
|
||||||
/// <summary>The version number of the rendering engine for the user's browser.</summary>
|
/// <summary>The version number of the rendering engine for the user's browser. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin.</summary>
|
||||||
/// <returns type="String" />
|
/// <returns type="String" />
|
||||||
},
|
},
|
||||||
'Callbacks': function() {
|
'Callbacks': function() {
|
||||||
@@ -121,6 +121,13 @@ intellisense.annotate(jQuery, {
|
|||||||
/// <returns type="Object" />
|
/// <returns type="Object" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
},
|
},
|
||||||
|
'fn.extend': function() {
|
||||||
|
/// <signature>
|
||||||
|
/// <summary>Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods.</summary>
|
||||||
|
/// <param name="object" type="Object">An object to merge onto the jQuery prototype.</param>
|
||||||
|
/// <returns type="Object" />
|
||||||
|
/// </signature>
|
||||||
|
},
|
||||||
'get': function() {
|
'get': function() {
|
||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Load data from the server using a HTTP GET request.</summary>
|
/// <summary>Load data from the server using a HTTP GET request.</summary>
|
||||||
@@ -189,7 +196,7 @@ intellisense.annotate(jQuery, {
|
|||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Determine whether the argument is an array.</summary>
|
/// <summary>Determine whether the argument is an array.</summary>
|
||||||
/// <param name="obj" type="Object">Object to test whether or not it is an array.</param>
|
/// <param name="obj" type="Object">Object to test whether or not it is an array.</param>
|
||||||
/// <returns type="boolean" />
|
/// <returns type="Boolean" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
},
|
},
|
||||||
'isEmptyObject': function() {
|
'isEmptyObject': function() {
|
||||||
@@ -203,7 +210,7 @@ intellisense.annotate(jQuery, {
|
|||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Determine if the argument passed is a Javascript function object.</summary>
|
/// <summary>Determine if the argument passed is a Javascript function object.</summary>
|
||||||
/// <param name="obj" type="PlainObject">Object to test whether or not it is a function.</param>
|
/// <param name="obj" type="PlainObject">Object to test whether or not it is a function.</param>
|
||||||
/// <returns type="boolean" />
|
/// <returns type="Boolean" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
},
|
},
|
||||||
'isNumeric': function() {
|
'isNumeric': function() {
|
||||||
@@ -224,7 +231,7 @@ intellisense.annotate(jQuery, {
|
|||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Determine whether the argument is a window.</summary>
|
/// <summary>Determine whether the argument is a window.</summary>
|
||||||
/// <param name="obj" type="PlainObject">Object to test whether or not it is a window.</param>
|
/// <param name="obj" type="PlainObject">Object to test whether or not it is a window.</param>
|
||||||
/// <returns type="boolean" />
|
/// <returns type="Boolean" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
},
|
},
|
||||||
'isXMLDoc': function() {
|
'isXMLDoc': function() {
|
||||||
@@ -294,7 +301,7 @@ intellisense.annotate(jQuery, {
|
|||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Parses a string into an array of DOM nodes.</summary>
|
/// <summary>Parses a string into an array of DOM nodes.</summary>
|
||||||
/// <param name="data" type="String">HTML string to be parsed</param>
|
/// <param name="data" type="String">HTML string to be parsed</param>
|
||||||
/// <param name="context" type="Element">DOM element to serve as the context in which the HTML fragment will be created</param>
|
/// <param name="context" type="Element">Document element to serve as the context in which the HTML fragment will be created</param>
|
||||||
/// <param name="keepScripts" type="Boolean">A Boolean indicating whether to include scripts passed in the HTML string</param>
|
/// <param name="keepScripts" type="Boolean">A Boolean indicating whether to include scripts passed in the HTML string</param>
|
||||||
/// <returns type="Array" />
|
/// <returns type="Array" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
@@ -318,7 +325,7 @@ intellisense.annotate(jQuery, {
|
|||||||
/// <summary>Load data from the server using a HTTP POST request.</summary>
|
/// <summary>Load data from the server using a HTTP POST request.</summary>
|
||||||
/// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
|
/// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
|
||||||
/// <param name="data" type="">A plain object or string that is sent to the server with the request.</param>
|
/// <param name="data" type="">A plain object or string that is sent to the server with the request.</param>
|
||||||
/// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
|
/// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds. Required if dataType is provided, but can be null in that case.</param>
|
||||||
/// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).</param>
|
/// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).</param>
|
||||||
/// <returns type="jqXHR" />
|
/// <returns type="jqXHR" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
@@ -715,7 +722,7 @@ intellisense.annotate(jQuery.fn, {
|
|||||||
/// </signature>
|
/// </signature>
|
||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Add elements to the set of matched elements.</summary>
|
/// <summary>Add elements to the set of matched elements.</summary>
|
||||||
/// <param name="html" type="String">An HTML fragment to add to the set of matched elements.</param>
|
/// <param name="html" type="htmlString">An HTML fragment to add to the set of matched elements.</param>
|
||||||
/// <returns type="jQuery" />
|
/// <returns type="jQuery" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
/// <signature>
|
/// <signature>
|
||||||
@@ -999,7 +1006,7 @@ intellisense.annotate(jQuery.fn, {
|
|||||||
/// <summary>Selects all elements of type checkbox.</summary>
|
/// <summary>Selects all elements of type checkbox.</summary>
|
||||||
},
|
},
|
||||||
'checked': function() {
|
'checked': function() {
|
||||||
/// <summary>Matches all elements that are checked.</summary>
|
/// <summary>Matches all elements that are checked or selected.</summary>
|
||||||
},
|
},
|
||||||
'child': function() {
|
'child': function() {
|
||||||
/// <signature>
|
/// <signature>
|
||||||
@@ -1423,9 +1430,9 @@ intellisense.annotate(jQuery.fn, {
|
|||||||
},
|
},
|
||||||
'get': function() {
|
'get': function() {
|
||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Retrieve the DOM elements matched by the jQuery object.</summary>
|
/// <summary>Retrieve one of the DOM elements matched by the jQuery object.</summary>
|
||||||
/// <param name="index" type="Number">A zero-based integer indicating which element to retrieve.</param>
|
/// <param name="index" type="Number">A zero-based integer indicating which element to retrieve.</param>
|
||||||
/// <returns type="Element, Array" />
|
/// <returns type="Element" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
},
|
},
|
||||||
'gt': function() {
|
'gt': function() {
|
||||||
@@ -1566,11 +1573,11 @@ intellisense.annotate(jQuery.fn, {
|
|||||||
},
|
},
|
||||||
'innerHeight': function() {
|
'innerHeight': function() {
|
||||||
/// <summary>Get the current computed height for the first element in the set of matched elements, including padding but not border.</summary>
|
/// <summary>Get the current computed height for the first element in the set of matched elements, including padding but not border.</summary>
|
||||||
/// <returns type="Integer" />
|
/// <returns type="Number" />
|
||||||
},
|
},
|
||||||
'innerWidth': function() {
|
'innerWidth': function() {
|
||||||
/// <summary>Get the current computed width for the first element in the set of matched elements, including padding but not border.</summary>
|
/// <summary>Get the current computed width for the first element in the set of matched elements, including padding but not border.</summary>
|
||||||
/// <returns type="Integer" />
|
/// <returns type="Number" />
|
||||||
},
|
},
|
||||||
'input': function() {
|
'input': function() {
|
||||||
/// <summary>Selects all input, textarea, select and button elements.</summary>
|
/// <summary>Selects all input, textarea, select and button elements.</summary>
|
||||||
@@ -1995,14 +2002,14 @@ intellisense.annotate(jQuery.fn, {
|
|||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements.</summary>
|
/// <summary>Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements.</summary>
|
||||||
/// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
|
/// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
|
||||||
/// <returns type="Integer" />
|
/// <returns type="Number" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
},
|
},
|
||||||
'outerWidth': function() {
|
'outerWidth': function() {
|
||||||
/// <signature>
|
/// <signature>
|
||||||
/// <summary>Get the current computed width for the first element in the set of matched elements, including padding and border.</summary>
|
/// <summary>Get the current computed width for the first element in the set of matched elements, including padding and border.</summary>
|
||||||
/// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
|
/// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
|
||||||
/// <returns type="Integer" />
|
/// <returns type="Number" />
|
||||||
/// </signature>
|
/// </signature>
|
||||||
},
|
},
|
||||||
'parent': function() {
|
'parent': function() {
|
||||||
+441
-354
File diff suppressed because it is too large
Load Diff
@@ -262,8 +262,8 @@
|
|||||||
/// contains the maximum value. The default is "max".</param>
|
/// contains the maximum value. The default is "max".</param>
|
||||||
/// <returns type="jQuery.validator.unobtrusive.adapters" />
|
/// <returns type="jQuery.validator.unobtrusive.adapters" />
|
||||||
return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
|
return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
|
||||||
var min = Number(options.params.min),
|
var min = options.params.min,
|
||||||
max = Number(options.params.max);
|
max = options.params.max;
|
||||||
|
|
||||||
if (min && max) {
|
if (min && max) {
|
||||||
setValidationValues(options, minMaxRuleName, [min, max]);
|
setValidationValues(options, minMaxRuleName, [min, max]);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -1,133 +0,0 @@
|
|||||||
/*
|
|
||||||
A class to parse color values
|
|
||||||
@author Stoyan Stefanov <sstoo@gmail.com>
|
|
||||||
@link http://www.phpied.com/rgb-color-parser-in-javascript/
|
|
||||||
Use it if you like it
|
|
||||||
|
|
||||||
canvg.js - Javascript SVG parser and renderer on Canvas
|
|
||||||
MIT Licensed
|
|
||||||
Gabe Lerner (gabelerner@gmail.com)
|
|
||||||
http://code.google.com/p/canvg/
|
|
||||||
|
|
||||||
Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/
|
|
||||||
|
|
||||||
Highcharts JS v2.3.5 (2012-12-19)
|
|
||||||
CanVGRenderer Extension module
|
|
||||||
|
|
||||||
(c) 2011-2012 Torstein Hønsi, Erik Olsson
|
|
||||||
|
|
||||||
License: www.highcharts.com/license
|
|
||||||
*/
|
|
||||||
function RGBColor(m){this.ok=!1;m.charAt(0)=="#"&&(m=m.substr(1,6));var m=m.replace(/ /g,""),m=m.toLowerCase(),a={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",
|
|
||||||
darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",
|
|
||||||
gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",
|
|
||||||
lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",
|
|
||||||
oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",
|
|
||||||
slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"},c;for(c in a)m==c&&(m=a[c]);var d=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(b){return[parseInt(b[1]),parseInt(b[2]),parseInt(b[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,
|
|
||||||
example:["#00ff00","336699"],process:function(b){return[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(b){return[parseInt(b[1]+b[1],16),parseInt(b[2]+b[2],16),parseInt(b[3]+b[3],16)]}}];for(c=0;c<d.length;c++){var b=d[c].process,k=d[c].re.exec(m);if(k)channels=b(k),this.r=channels[0],this.g=channels[1],this.b=channels[2],this.ok=!0}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r;this.g=this.g<0||isNaN(this.g)?0:
|
|
||||||
this.g>255?255:this.g;this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b;this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"};this.toHex=function(){var b=this.r.toString(16),a=this.g.toString(16),d=this.b.toString(16);b.length==1&&(b="0"+b);a.length==1&&(a="0"+a);d.length==1&&(d="0"+d);return"#"+b+a+d};this.getHelpXML=function(){for(var b=[],k=0;k<d.length;k++)for(var c=d[k].example,j=0;j<c.length;j++)b[b.length]=c[j];for(var h in a)b[b.length]=h;c=document.createElement("ul");
|
|
||||||
c.setAttribute("id","rgbcolor-examples");for(k=0;k<b.length;k++)try{var l=document.createElement("li"),o=new RGBColor(b[k]),n=document.createElement("div");n.style.cssText="margin: 3px; border: 1px solid black; background:"+o.toHex()+"; color:"+o.toHex();n.appendChild(document.createTextNode("test"));var q=document.createTextNode(" "+b[k]+" -> "+o.toRGB()+" -> "+o.toHex());l.appendChild(n);l.appendChild(q);c.appendChild(l)}catch(p){}return c}}
|
|
||||||
if(!window.console)window.console={},window.console.log=function(){},window.console.dir=function(){};if(!Array.prototype.indexOf)Array.prototype.indexOf=function(m){for(var a=0;a<this.length;a++)if(this[a]==m)return a;return-1};
|
|
||||||
(function(){function m(){var a={FRAMERATE:30,MAX_VIRTUAL_PIXELS:3E4};a.init=function(c){a.Definitions={};a.Styles={};a.Animations=[];a.Images=[];a.ctx=c;a.ViewPort=new function(){this.viewPorts=[];this.Clear=function(){this.viewPorts=[]};this.SetCurrent=function(a,b){this.viewPorts.push({width:a,height:b})};this.RemoveCurrent=function(){this.viewPorts.pop()};this.Current=function(){return this.viewPorts[this.viewPorts.length-1]};this.width=function(){return this.Current().width};this.height=function(){return this.Current().height};
|
|
||||||
this.ComputeSize=function(a){return a!=null&&typeof a=="number"?a:a=="x"?this.width():a=="y"?this.height():Math.sqrt(Math.pow(this.width(),2)+Math.pow(this.height(),2))/Math.sqrt(2)}}};a.init();a.ImagesLoaded=function(){for(var c=0;c<a.Images.length;c++)if(!a.Images[c].loaded)return!1;return!0};a.trim=function(a){return a.replace(/^\s+|\s+$/g,"")};a.compressSpaces=function(a){return a.replace(/[\s\r\t\n]+/gm," ")};a.ajax=function(a){var d;return(d=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"))?
|
|
||||||
(d.open("GET",a,!1),d.send(null),d.responseText):null};a.parseXml=function(a){if(window.DOMParser)return(new DOMParser).parseFromString(a,"text/xml");else{var a=a.replace(/<!DOCTYPE svg[^>]*>/,""),d=new ActiveXObject("Microsoft.XMLDOM");d.async="false";d.loadXML(a);return d}};a.Property=function(c,d){this.name=c;this.value=d;this.hasValue=function(){return this.value!=null&&this.value!==""};this.numValue=function(){if(!this.hasValue())return 0;var b=parseFloat(this.value);(this.value+"").match(/%$/)&&
|
|
||||||
(b/=100);return b};this.valueOrDefault=function(b){return this.hasValue()?this.value:b};this.numValueOrDefault=function(b){return this.hasValue()?this.numValue():b};var b=this;this.Color={addOpacity:function(d){var c=b.value;if(d!=null&&d!=""){var f=new RGBColor(b.value);f.ok&&(c="rgba("+f.r+", "+f.g+", "+f.b+", "+d+")")}return new a.Property(b.name,c)}};this.Definition={getDefinition:function(){var d=b.value.replace(/^(url\()?#([^\)]+)\)?$/,"$2");return a.Definitions[d]},isUrl:function(){return b.value.indexOf("url(")==
|
|
||||||
0},getFillStyle:function(b){var d=this.getDefinition();return d!=null&&d.createGradient?d.createGradient(a.ctx,b):d!=null&&d.createPattern?d.createPattern(a.ctx,b):null}};this.Length={DPI:function(){return 96},EM:function(b){var d=12,c=new a.Property("fontSize",a.Font.Parse(a.ctx.font).fontSize);c.hasValue()&&(d=c.Length.toPixels(b));return d},toPixels:function(d){if(!b.hasValue())return 0;var c=b.value+"";return c.match(/em$/)?b.numValue()*this.EM(d):c.match(/ex$/)?b.numValue()*this.EM(d)/2:c.match(/px$/)?
|
|
||||||
b.numValue():c.match(/pt$/)?b.numValue()*1.25:c.match(/pc$/)?b.numValue()*15:c.match(/cm$/)?b.numValue()*this.DPI(d)/2.54:c.match(/mm$/)?b.numValue()*this.DPI(d)/25.4:c.match(/in$/)?b.numValue()*this.DPI(d):c.match(/%$/)?b.numValue()*a.ViewPort.ComputeSize(d):b.numValue()}};this.Time={toMilliseconds:function(){if(!b.hasValue())return 0;var a=b.value+"";if(a.match(/s$/))return b.numValue()*1E3;a.match(/ms$/);return b.numValue()}};this.Angle={toRadians:function(){if(!b.hasValue())return 0;var a=b.value+
|
|
||||||
"";return a.match(/deg$/)?b.numValue()*(Math.PI/180):a.match(/grad$/)?b.numValue()*(Math.PI/200):a.match(/rad$/)?b.numValue():b.numValue()*(Math.PI/180)}}};a.Font=new function(){this.Styles=["normal","italic","oblique","inherit"];this.Variants=["normal","small-caps","inherit"];this.Weights="normal,bold,bolder,lighter,100,200,300,400,500,600,700,800,900,inherit".split(",");this.CreateFont=function(d,b,c,e,f,g){g=g!=null?this.Parse(g):this.CreateFont("","","","","",a.ctx.font);return{fontFamily:f||
|
|
||||||
g.fontFamily,fontSize:e||g.fontSize,fontStyle:d||g.fontStyle,fontWeight:c||g.fontWeight,fontVariant:b||g.fontVariant,toString:function(){return[this.fontStyle,this.fontVariant,this.fontWeight,this.fontSize,this.fontFamily].join(" ")}}};var c=this;this.Parse=function(d){for(var b={},d=a.trim(a.compressSpaces(d||"")).split(" "),k=!1,e=!1,f=!1,g=!1,j="",h=0;h<d.length;h++)if(!e&&c.Styles.indexOf(d[h])!=-1){if(d[h]!="inherit")b.fontStyle=d[h];e=!0}else if(!g&&c.Variants.indexOf(d[h])!=-1){if(d[h]!="inherit")b.fontVariant=
|
|
||||||
d[h];e=g=!0}else if(!f&&c.Weights.indexOf(d[h])!=-1){if(d[h]!="inherit")b.fontWeight=d[h];e=g=f=!0}else if(k)d[h]!="inherit"&&(j+=d[h]);else{if(d[h]!="inherit")b.fontSize=d[h].split("/")[0];e=g=f=k=!0}if(j!="")b.fontFamily=j;return b}};a.ToNumberArray=function(c){for(var c=a.trim(a.compressSpaces((c||"").replace(/,/g," "))).split(" "),d=0;d<c.length;d++)c[d]=parseFloat(c[d]);return c};a.Point=function(a,d){this.x=a;this.y=d;this.angleTo=function(b){return Math.atan2(b.y-this.y,b.x-this.x)};this.applyTransform=
|
|
||||||
function(b){var a=this.x*b[1]+this.y*b[3]+b[5];this.x=this.x*b[0]+this.y*b[2]+b[4];this.y=a}};a.CreatePoint=function(c){c=a.ToNumberArray(c);return new a.Point(c[0],c[1])};a.CreatePath=function(c){for(var c=a.ToNumberArray(c),d=[],b=0;b<c.length;b+=2)d.push(new a.Point(c[b],c[b+1]));return d};a.BoundingBox=function(a,d,b,k){this.y2=this.x2=this.y1=this.x1=Number.NaN;this.x=function(){return this.x1};this.y=function(){return this.y1};this.width=function(){return this.x2-this.x1};this.height=function(){return this.y2-
|
|
||||||
this.y1};this.addPoint=function(b,a){if(b!=null){if(isNaN(this.x1)||isNaN(this.x2))this.x2=this.x1=b;if(b<this.x1)this.x1=b;if(b>this.x2)this.x2=b}if(a!=null){if(isNaN(this.y1)||isNaN(this.y2))this.y2=this.y1=a;if(a<this.y1)this.y1=a;if(a>this.y2)this.y2=a}};this.addX=function(b){this.addPoint(b,null)};this.addY=function(b){this.addPoint(null,b)};this.addBoundingBox=function(b){this.addPoint(b.x1,b.y1);this.addPoint(b.x2,b.y2)};this.addQuadraticCurve=function(b,a,d,c,k,l){d=b+2/3*(d-b);c=a+2/3*(c-
|
|
||||||
a);this.addBezierCurve(b,a,d,d+1/3*(k-b),c,c+1/3*(l-a),k,l)};this.addBezierCurve=function(b,a,d,c,k,l,o,n){var q=[b,a],p=[d,c],t=[k,l],m=[o,n];this.addPoint(q[0],q[1]);this.addPoint(m[0],m[1]);for(i=0;i<=1;i++)b=function(b){return Math.pow(1-b,3)*q[i]+3*Math.pow(1-b,2)*b*p[i]+3*(1-b)*Math.pow(b,2)*t[i]+Math.pow(b,3)*m[i]},a=6*q[i]-12*p[i]+6*t[i],d=-3*q[i]+9*p[i]-9*t[i]+3*m[i],c=3*p[i]-3*q[i],d==0?a!=0&&(a=-c/a,0<a&&a<1&&(i==0&&this.addX(b(a)),i==1&&this.addY(b(a)))):(c=Math.pow(a,2)-4*c*d,c<0||(k=
|
|
||||||
(-a+Math.sqrt(c))/(2*d),0<k&&k<1&&(i==0&&this.addX(b(k)),i==1&&this.addY(b(k))),a=(-a-Math.sqrt(c))/(2*d),0<a&&a<1&&(i==0&&this.addX(b(a)),i==1&&this.addY(b(a)))))};this.isPointInBox=function(b,a){return this.x1<=b&&b<=this.x2&&this.y1<=a&&a<=this.y2};this.addPoint(a,d);this.addPoint(b,k)};a.Transform=function(c){var d=this;this.Type={};this.Type.translate=function(b){this.p=a.CreatePoint(b);this.apply=function(b){b.translate(this.p.x||0,this.p.y||0)};this.applyToPoint=function(b){b.applyTransform([1,
|
|
||||||
0,0,1,this.p.x||0,this.p.y||0])}};this.Type.rotate=function(b){b=a.ToNumberArray(b);this.angle=new a.Property("angle",b[0]);this.cx=b[1]||0;this.cy=b[2]||0;this.apply=function(b){b.translate(this.cx,this.cy);b.rotate(this.angle.Angle.toRadians());b.translate(-this.cx,-this.cy)};this.applyToPoint=function(b){var a=this.angle.Angle.toRadians();b.applyTransform([1,0,0,1,this.p.x||0,this.p.y||0]);b.applyTransform([Math.cos(a),Math.sin(a),-Math.sin(a),Math.cos(a),0,0]);b.applyTransform([1,0,0,1,-this.p.x||
|
|
||||||
0,-this.p.y||0])}};this.Type.scale=function(b){this.p=a.CreatePoint(b);this.apply=function(b){b.scale(this.p.x||1,this.p.y||this.p.x||1)};this.applyToPoint=function(b){b.applyTransform([this.p.x||0,0,0,this.p.y||0,0,0])}};this.Type.matrix=function(b){this.m=a.ToNumberArray(b);this.apply=function(b){b.transform(this.m[0],this.m[1],this.m[2],this.m[3],this.m[4],this.m[5])};this.applyToPoint=function(b){b.applyTransform(this.m)}};this.Type.SkewBase=function(b){this.base=d.Type.matrix;this.base(b);this.angle=
|
|
||||||
new a.Property("angle",b)};this.Type.SkewBase.prototype=new this.Type.matrix;this.Type.skewX=function(b){this.base=d.Type.SkewBase;this.base(b);this.m=[1,0,Math.tan(this.angle.Angle.toRadians()),1,0,0]};this.Type.skewX.prototype=new this.Type.SkewBase;this.Type.skewY=function(b){this.base=d.Type.SkewBase;this.base(b);this.m=[1,Math.tan(this.angle.Angle.toRadians()),0,1,0,0]};this.Type.skewY.prototype=new this.Type.SkewBase;this.transforms=[];this.apply=function(b){for(var a=0;a<this.transforms.length;a++)this.transforms[a].apply(b)};
|
|
||||||
this.applyToPoint=function(b){for(var a=0;a<this.transforms.length;a++)this.transforms[a].applyToPoint(b)};for(var c=a.trim(a.compressSpaces(c)).split(/\s(?=[a-z])/),b=0;b<c.length;b++){var k=c[b].split("(")[0],e=c[b].split("(")[1].replace(")","");this.transforms.push(new this.Type[k](e))}};a.AspectRatio=function(c,d,b,k,e,f,g,j,h,l){var d=a.compressSpaces(d),d=d.replace(/^defer\s/,""),o=d.split(" ")[0]||"xMidYMid",d=d.split(" ")[1]||"meet",n=b/k,q=e/f,p=Math.min(n,q),m=Math.max(n,q);d=="meet"&&(k*=
|
|
||||||
p,f*=p);d=="slice"&&(k*=m,f*=m);h=new a.Property("refX",h);l=new a.Property("refY",l);h.hasValue()&&l.hasValue()?c.translate(-p*h.Length.toPixels("x"),-p*l.Length.toPixels("y")):(o.match(/^xMid/)&&(d=="meet"&&p==q||d=="slice"&&m==q)&&c.translate(b/2-k/2,0),o.match(/YMid$/)&&(d=="meet"&&p==n||d=="slice"&&m==n)&&c.translate(0,e/2-f/2),o.match(/^xMax/)&&(d=="meet"&&p==q||d=="slice"&&m==q)&&c.translate(b-k,0),o.match(/YMax$/)&&(d=="meet"&&p==n||d=="slice"&&m==n)&&c.translate(0,e-f));o=="none"?c.scale(n,
|
|
||||||
q):d=="meet"?c.scale(p,p):d=="slice"&&c.scale(m,m);c.translate(g==null?0:-g,j==null?0:-j)};a.Element={};a.Element.ElementBase=function(c){this.attributes={};this.styles={};this.children=[];this.attribute=function(b,d){var c=this.attributes[b];if(c!=null)return c;c=new a.Property(b,"");d==!0&&(this.attributes[b]=c);return c};this.style=function(b,d){var c=this.styles[b];if(c!=null)return c;c=this.attribute(b);if(c!=null&&c.hasValue())return c;c=this.parent;if(c!=null&&(c=c.style(b),c!=null&&c.hasValue()))return c;
|
|
||||||
c=new a.Property(b,"");d==!0&&(this.styles[b]=c);return c};this.render=function(b){if(this.style("display").value!="none"&&this.attribute("visibility").value!="hidden"){b.save();this.setContext(b);if(this.attribute("mask").hasValue()){var a=this.attribute("mask").Definition.getDefinition();a!=null&&a.apply(b,this)}else this.style("filter").hasValue()?(a=this.style("filter").Definition.getDefinition(),a!=null&&a.apply(b,this)):this.renderChildren(b);this.clearContext(b);b.restore()}};this.setContext=
|
|
||||||
function(){};this.clearContext=function(){};this.renderChildren=function(b){for(var a=0;a<this.children.length;a++)this.children[a].render(b)};this.addChild=function(b,d){var c=b;d&&(c=a.CreateElement(b));c.parent=this;this.children.push(c)};if(c!=null&&c.nodeType==1){for(var d=0;d<c.childNodes.length;d++){var b=c.childNodes[d];b.nodeType==1&&this.addChild(b,!0)}for(d=0;d<c.attributes.length;d++)b=c.attributes[d],this.attributes[b.nodeName]=new a.Property(b.nodeName,b.nodeValue);b=a.Styles[c.nodeName];
|
|
||||||
if(b!=null)for(var k in b)this.styles[k]=b[k];if(this.attribute("class").hasValue())for(var d=a.compressSpaces(this.attribute("class").value).split(" "),e=0;e<d.length;e++){b=a.Styles["."+d[e]];if(b!=null)for(k in b)this.styles[k]=b[k];b=a.Styles[c.nodeName+"."+d[e]];if(b!=null)for(k in b)this.styles[k]=b[k]}if(this.attribute("style").hasValue()){b=this.attribute("style").value.split(";");for(d=0;d<b.length;d++)a.trim(b[d])!=""&&(c=b[d].split(":"),k=a.trim(c[0]),c=a.trim(c[1]),this.styles[k]=new a.Property(k,
|
|
||||||
c))}this.attribute("id").hasValue()&&a.Definitions[this.attribute("id").value]==null&&(a.Definitions[this.attribute("id").value]=this)}};a.Element.RenderedElementBase=function(c){this.base=a.Element.ElementBase;this.base(c);this.setContext=function(d){if(this.style("fill").Definition.isUrl()){var b=this.style("fill").Definition.getFillStyle(this);if(b!=null)d.fillStyle=b}else if(this.style("fill").hasValue())b=this.style("fill"),this.style("fill-opacity").hasValue()&&(b=b.Color.addOpacity(this.style("fill-opacity").value)),
|
|
||||||
d.fillStyle=b.value=="none"?"rgba(0,0,0,0)":b.value;if(this.style("stroke").Definition.isUrl()){if(b=this.style("stroke").Definition.getFillStyle(this),b!=null)d.strokeStyle=b}else if(this.style("stroke").hasValue())b=this.style("stroke"),this.style("stroke-opacity").hasValue()&&(b=b.Color.addOpacity(this.style("stroke-opacity").value)),d.strokeStyle=b.value=="none"?"rgba(0,0,0,0)":b.value;if(this.style("stroke-width").hasValue())d.lineWidth=this.style("stroke-width").Length.toPixels();if(this.style("stroke-linecap").hasValue())d.lineCap=
|
|
||||||
this.style("stroke-linecap").value;if(this.style("stroke-linejoin").hasValue())d.lineJoin=this.style("stroke-linejoin").value;if(this.style("stroke-miterlimit").hasValue())d.miterLimit=this.style("stroke-miterlimit").value;if(typeof d.font!="undefined")d.font=a.Font.CreateFont(this.style("font-style").value,this.style("font-variant").value,this.style("font-weight").value,this.style("font-size").hasValue()?this.style("font-size").Length.toPixels()+"px":"",this.style("font-family").value).toString();
|
|
||||||
this.attribute("transform").hasValue()&&(new a.Transform(this.attribute("transform").value)).apply(d);this.attribute("clip-path").hasValue()&&(b=this.attribute("clip-path").Definition.getDefinition(),b!=null&&b.apply(d));if(this.style("opacity").hasValue())d.globalAlpha=this.style("opacity").numValue()}};a.Element.RenderedElementBase.prototype=new a.Element.ElementBase;a.Element.PathElementBase=function(c){this.base=a.Element.RenderedElementBase;this.base(c);this.path=function(d){d!=null&&d.beginPath();
|
|
||||||
return new a.BoundingBox};this.renderChildren=function(d){this.path(d);a.Mouse.checkPath(this,d);d.fillStyle!=""&&d.fill();d.strokeStyle!=""&&d.stroke();var b=this.getMarkers();if(b!=null){if(this.style("marker-start").Definition.isUrl()){var c=this.style("marker-start").Definition.getDefinition();c.render(d,b[0][0],b[0][1])}if(this.style("marker-mid").Definition.isUrl())for(var c=this.style("marker-mid").Definition.getDefinition(),e=1;e<b.length-1;e++)c.render(d,b[e][0],b[e][1]);this.style("marker-end").Definition.isUrl()&&
|
|
||||||
(c=this.style("marker-end").Definition.getDefinition(),c.render(d,b[b.length-1][0],b[b.length-1][1]))}};this.getBoundingBox=function(){return this.path()};this.getMarkers=function(){return null}};a.Element.PathElementBase.prototype=new a.Element.RenderedElementBase;a.Element.svg=function(c){this.base=a.Element.RenderedElementBase;this.base(c);this.baseClearContext=this.clearContext;this.clearContext=function(d){this.baseClearContext(d);a.ViewPort.RemoveCurrent()};this.baseSetContext=this.setContext;
|
|
||||||
this.setContext=function(d){d.strokeStyle="rgba(0,0,0,0)";d.lineCap="butt";d.lineJoin="miter";d.miterLimit=4;this.baseSetContext(d);this.attribute("x").hasValue()&&this.attribute("y").hasValue()&&d.translate(this.attribute("x").Length.toPixels("x"),this.attribute("y").Length.toPixels("y"));var b=a.ViewPort.width(),c=a.ViewPort.height();if(typeof this.root=="undefined"&&this.attribute("width").hasValue()&&this.attribute("height").hasValue()){var b=this.attribute("width").Length.toPixels("x"),c=this.attribute("height").Length.toPixels("y"),
|
|
||||||
e=0,f=0;this.attribute("refX").hasValue()&&this.attribute("refY").hasValue()&&(e=-this.attribute("refX").Length.toPixels("x"),f=-this.attribute("refY").Length.toPixels("y"));d.beginPath();d.moveTo(e,f);d.lineTo(b,f);d.lineTo(b,c);d.lineTo(e,c);d.closePath();d.clip()}a.ViewPort.SetCurrent(b,c);if(this.attribute("viewBox").hasValue()){var e=a.ToNumberArray(this.attribute("viewBox").value),f=e[0],g=e[1],b=e[2],c=e[3];a.AspectRatio(d,this.attribute("preserveAspectRatio").value,a.ViewPort.width(),b,a.ViewPort.height(),
|
|
||||||
c,f,g,this.attribute("refX").value,this.attribute("refY").value);a.ViewPort.RemoveCurrent();a.ViewPort.SetCurrent(e[2],e[3])}}};a.Element.svg.prototype=new a.Element.RenderedElementBase;a.Element.rect=function(c){this.base=a.Element.PathElementBase;this.base(c);this.path=function(d){var b=this.attribute("x").Length.toPixels("x"),c=this.attribute("y").Length.toPixels("y"),e=this.attribute("width").Length.toPixels("x"),f=this.attribute("height").Length.toPixels("y"),g=this.attribute("rx").Length.toPixels("x"),
|
|
||||||
j=this.attribute("ry").Length.toPixels("y");this.attribute("rx").hasValue()&&!this.attribute("ry").hasValue()&&(j=g);this.attribute("ry").hasValue()&&!this.attribute("rx").hasValue()&&(g=j);d!=null&&(d.beginPath(),d.moveTo(b+g,c),d.lineTo(b+e-g,c),d.quadraticCurveTo(b+e,c,b+e,c+j),d.lineTo(b+e,c+f-j),d.quadraticCurveTo(b+e,c+f,b+e-g,c+f),d.lineTo(b+g,c+f),d.quadraticCurveTo(b,c+f,b,c+f-j),d.lineTo(b,c+j),d.quadraticCurveTo(b,c,b+g,c),d.closePath());return new a.BoundingBox(b,c,b+e,c+f)}};a.Element.rect.prototype=
|
|
||||||
new a.Element.PathElementBase;a.Element.circle=function(c){this.base=a.Element.PathElementBase;this.base(c);this.path=function(d){var b=this.attribute("cx").Length.toPixels("x"),c=this.attribute("cy").Length.toPixels("y"),e=this.attribute("r").Length.toPixels();d!=null&&(d.beginPath(),d.arc(b,c,e,0,Math.PI*2,!0),d.closePath());return new a.BoundingBox(b-e,c-e,b+e,c+e)}};a.Element.circle.prototype=new a.Element.PathElementBase;a.Element.ellipse=function(c){this.base=a.Element.PathElementBase;this.base(c);
|
|
||||||
this.path=function(d){var b=4*((Math.sqrt(2)-1)/3),c=this.attribute("rx").Length.toPixels("x"),e=this.attribute("ry").Length.toPixels("y"),f=this.attribute("cx").Length.toPixels("x"),g=this.attribute("cy").Length.toPixels("y");d!=null&&(d.beginPath(),d.moveTo(f,g-e),d.bezierCurveTo(f+b*c,g-e,f+c,g-b*e,f+c,g),d.bezierCurveTo(f+c,g+b*e,f+b*c,g+e,f,g+e),d.bezierCurveTo(f-b*c,g+e,f-c,g+b*e,f-c,g),d.bezierCurveTo(f-c,g-b*e,f-b*c,g-e,f,g-e),d.closePath());return new a.BoundingBox(f-c,g-e,f+c,g+e)}};a.Element.ellipse.prototype=
|
|
||||||
new a.Element.PathElementBase;a.Element.line=function(c){this.base=a.Element.PathElementBase;this.base(c);this.getPoints=function(){return[new a.Point(this.attribute("x1").Length.toPixels("x"),this.attribute("y1").Length.toPixels("y")),new a.Point(this.attribute("x2").Length.toPixels("x"),this.attribute("y2").Length.toPixels("y"))]};this.path=function(d){var b=this.getPoints();d!=null&&(d.beginPath(),d.moveTo(b[0].x,b[0].y),d.lineTo(b[1].x,b[1].y));return new a.BoundingBox(b[0].x,b[0].y,b[1].x,b[1].y)};
|
|
||||||
this.getMarkers=function(){var a=this.getPoints(),b=a[0].angleTo(a[1]);return[[a[0],b],[a[1],b]]}};a.Element.line.prototype=new a.Element.PathElementBase;a.Element.polyline=function(c){this.base=a.Element.PathElementBase;this.base(c);this.points=a.CreatePath(this.attribute("points").value);this.path=function(d){var b=new a.BoundingBox(this.points[0].x,this.points[0].y);d!=null&&(d.beginPath(),d.moveTo(this.points[0].x,this.points[0].y));for(var c=1;c<this.points.length;c++)b.addPoint(this.points[c].x,
|
|
||||||
this.points[c].y),d!=null&&d.lineTo(this.points[c].x,this.points[c].y);return b};this.getMarkers=function(){for(var a=[],b=0;b<this.points.length-1;b++)a.push([this.points[b],this.points[b].angleTo(this.points[b+1])]);a.push([this.points[this.points.length-1],a[a.length-1][1]]);return a}};a.Element.polyline.prototype=new a.Element.PathElementBase;a.Element.polygon=function(c){this.base=a.Element.polyline;this.base(c);this.basePath=this.path;this.path=function(a){var b=this.basePath(a);a!=null&&(a.lineTo(this.points[0].x,
|
|
||||||
this.points[0].y),a.closePath());return b}};a.Element.polygon.prototype=new a.Element.polyline;a.Element.path=function(c){this.base=a.Element.PathElementBase;this.base(c);c=this.attribute("d").value;c=c.replace(/,/gm," ");c=c.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");c=c.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");c=c.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm,"$1 $2");c=c.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");c=c.replace(/([0-9])([+\-])/gm,
|
|
||||||
"$1 $2");c=c.replace(/(\.[0-9]*)(\.)/gm,"$1 $2");c=c.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm,"$1 $3 $4 ");c=a.compressSpaces(c);c=a.trim(c);this.PathParser=new function(d){this.tokens=d.split(" ");this.reset=function(){this.i=-1;this.previousCommand=this.command="";this.start=new a.Point(0,0);this.control=new a.Point(0,0);this.current=new a.Point(0,0);this.points=[];this.angles=[]};this.isEnd=function(){return this.i>=this.tokens.length-1};this.isCommandOrEnd=function(){return this.isEnd()?
|
|
||||||
!0:this.tokens[this.i+1].match(/^[A-Za-z]$/)!=null};this.isRelativeCommand=function(){return this.command==this.command.toLowerCase()};this.getToken=function(){this.i+=1;return this.tokens[this.i]};this.getScalar=function(){return parseFloat(this.getToken())};this.nextCommand=function(){this.previousCommand=this.command;this.command=this.getToken()};this.getPoint=function(){return this.makeAbsolute(new a.Point(this.getScalar(),this.getScalar()))};this.getAsControlPoint=function(){var b=this.getPoint();
|
|
||||||
return this.control=b};this.getAsCurrentPoint=function(){var b=this.getPoint();return this.current=b};this.getReflectedControlPoint=function(){return this.previousCommand.toLowerCase()!="c"&&this.previousCommand.toLowerCase()!="s"?this.current:new a.Point(2*this.current.x-this.control.x,2*this.current.y-this.control.y)};this.makeAbsolute=function(b){if(this.isRelativeCommand())b.x=this.current.x+b.x,b.y=this.current.y+b.y;return b};this.addMarker=function(b,a,d){d!=null&&this.angles.length>0&&this.angles[this.angles.length-
|
|
||||||
1]==null&&(this.angles[this.angles.length-1]=this.points[this.points.length-1].angleTo(d));this.addMarkerAngle(b,a==null?null:a.angleTo(b))};this.addMarkerAngle=function(b,a){this.points.push(b);this.angles.push(a)};this.getMarkerPoints=function(){return this.points};this.getMarkerAngles=function(){for(var b=0;b<this.angles.length;b++)if(this.angles[b]==null)for(var a=b+1;a<this.angles.length;a++)if(this.angles[a]!=null){this.angles[b]=this.angles[a];break}return this.angles}}(c);this.path=function(d){var b=
|
|
||||||
this.PathParser;b.reset();var c=new a.BoundingBox;for(d!=null&&d.beginPath();!b.isEnd();)switch(b.nextCommand(),b.command.toUpperCase()){case "M":var e=b.getAsCurrentPoint();b.addMarker(e);c.addPoint(e.x,e.y);d!=null&&d.moveTo(e.x,e.y);for(b.start=b.current;!b.isCommandOrEnd();)e=b.getAsCurrentPoint(),b.addMarker(e,b.start),c.addPoint(e.x,e.y),d!=null&&d.lineTo(e.x,e.y);break;case "L":for(;!b.isCommandOrEnd();){var f=b.current,e=b.getAsCurrentPoint();b.addMarker(e,f);c.addPoint(e.x,e.y);d!=null&&
|
|
||||||
d.lineTo(e.x,e.y)}break;case "H":for(;!b.isCommandOrEnd();)e=new a.Point((b.isRelativeCommand()?b.current.x:0)+b.getScalar(),b.current.y),b.addMarker(e,b.current),b.current=e,c.addPoint(b.current.x,b.current.y),d!=null&&d.lineTo(b.current.x,b.current.y);break;case "V":for(;!b.isCommandOrEnd();)e=new a.Point(b.current.x,(b.isRelativeCommand()?b.current.y:0)+b.getScalar()),b.addMarker(e,b.current),b.current=e,c.addPoint(b.current.x,b.current.y),d!=null&&d.lineTo(b.current.x,b.current.y);break;case "C":for(;!b.isCommandOrEnd();){var g=
|
|
||||||
b.current,f=b.getPoint(),j=b.getAsControlPoint(),e=b.getAsCurrentPoint();b.addMarker(e,j,f);c.addBezierCurve(g.x,g.y,f.x,f.y,j.x,j.y,e.x,e.y);d!=null&&d.bezierCurveTo(f.x,f.y,j.x,j.y,e.x,e.y)}break;case "S":for(;!b.isCommandOrEnd();)g=b.current,f=b.getReflectedControlPoint(),j=b.getAsControlPoint(),e=b.getAsCurrentPoint(),b.addMarker(e,j,f),c.addBezierCurve(g.x,g.y,f.x,f.y,j.x,j.y,e.x,e.y),d!=null&&d.bezierCurveTo(f.x,f.y,j.x,j.y,e.x,e.y);break;case "Q":for(;!b.isCommandOrEnd();)g=b.current,j=b.getAsControlPoint(),
|
|
||||||
e=b.getAsCurrentPoint(),b.addMarker(e,j,j),c.addQuadraticCurve(g.x,g.y,j.x,j.y,e.x,e.y),d!=null&&d.quadraticCurveTo(j.x,j.y,e.x,e.y);break;case "T":for(;!b.isCommandOrEnd();)g=b.current,j=b.getReflectedControlPoint(),b.control=j,e=b.getAsCurrentPoint(),b.addMarker(e,j,j),c.addQuadraticCurve(g.x,g.y,j.x,j.y,e.x,e.y),d!=null&&d.quadraticCurveTo(j.x,j.y,e.x,e.y);break;case "A":for(;!b.isCommandOrEnd();){var g=b.current,h=b.getScalar(),l=b.getScalar(),f=b.getScalar()*(Math.PI/180),o=b.getScalar(),j=b.getScalar(),
|
|
||||||
e=b.getAsCurrentPoint(),n=new a.Point(Math.cos(f)*(g.x-e.x)/2+Math.sin(f)*(g.y-e.y)/2,-Math.sin(f)*(g.x-e.x)/2+Math.cos(f)*(g.y-e.y)/2),q=Math.pow(n.x,2)/Math.pow(h,2)+Math.pow(n.y,2)/Math.pow(l,2);q>1&&(h*=Math.sqrt(q),l*=Math.sqrt(q));o=(o==j?-1:1)*Math.sqrt((Math.pow(h,2)*Math.pow(l,2)-Math.pow(h,2)*Math.pow(n.y,2)-Math.pow(l,2)*Math.pow(n.x,2))/(Math.pow(h,2)*Math.pow(n.y,2)+Math.pow(l,2)*Math.pow(n.x,2)));isNaN(o)&&(o=0);var p=new a.Point(o*h*n.y/l,o*-l*n.x/h),g=new a.Point((g.x+e.x)/2+Math.cos(f)*
|
|
||||||
p.x-Math.sin(f)*p.y,(g.y+e.y)/2+Math.sin(f)*p.x+Math.cos(f)*p.y),m=function(b,a){return(b[0]*a[0]+b[1]*a[1])/(Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2))*Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)))},s=function(b,a){return(b[0]*a[1]<b[1]*a[0]?-1:1)*Math.acos(m(b,a))},o=s([1,0],[(n.x-p.x)/h,(n.y-p.y)/l]),q=[(n.x-p.x)/h,(n.y-p.y)/l],p=[(-n.x-p.x)/h,(-n.y-p.y)/l],n=s(q,p);if(m(q,p)<=-1)n=Math.PI;m(q,p)>=1&&(n=0);j==0&&n>0&&(n-=2*Math.PI);j==1&&n<0&&(n+=2*Math.PI);q=new a.Point(g.x-h*Math.cos((o+n)/
|
|
||||||
2),g.y-l*Math.sin((o+n)/2));b.addMarkerAngle(q,(o+n)/2+(j==0?1:-1)*Math.PI/2);b.addMarkerAngle(e,n+(j==0?1:-1)*Math.PI/2);c.addPoint(e.x,e.y);d!=null&&(m=h>l?h:l,e=h>l?1:h/l,h=h>l?l/h:1,d.translate(g.x,g.y),d.rotate(f),d.scale(e,h),d.arc(0,0,m,o,o+n,1-j),d.scale(1/e,1/h),d.rotate(-f),d.translate(-g.x,-g.y))}break;case "Z":d!=null&&d.closePath(),b.current=b.start}return c};this.getMarkers=function(){for(var a=this.PathParser.getMarkerPoints(),b=this.PathParser.getMarkerAngles(),c=[],e=0;e<a.length;e++)c.push([a[e],
|
|
||||||
b[e]]);return c}};a.Element.path.prototype=new a.Element.PathElementBase;a.Element.pattern=function(c){this.base=a.Element.ElementBase;this.base(c);this.createPattern=function(d){var b=new a.Element.svg;b.attributes.viewBox=new a.Property("viewBox",this.attribute("viewBox").value);b.attributes.x=new a.Property("x",this.attribute("x").value);b.attributes.y=new a.Property("y",this.attribute("y").value);b.attributes.width=new a.Property("width",this.attribute("width").value);b.attributes.height=new a.Property("height",
|
|
||||||
this.attribute("height").value);b.children=this.children;var c=document.createElement("canvas");c.width=this.attribute("width").Length.toPixels("x");c.height=this.attribute("height").Length.toPixels("y");b.render(c.getContext("2d"));return d.createPattern(c,"repeat")}};a.Element.pattern.prototype=new a.Element.ElementBase;a.Element.marker=function(c){this.base=a.Element.ElementBase;this.base(c);this.baseRender=this.render;this.render=function(d,b,c){d.translate(b.x,b.y);this.attribute("orient").valueOrDefault("auto")==
|
|
||||||
"auto"&&d.rotate(c);this.attribute("markerUnits").valueOrDefault("strokeWidth")=="strokeWidth"&&d.scale(d.lineWidth,d.lineWidth);d.save();var e=new a.Element.svg;e.attributes.viewBox=new a.Property("viewBox",this.attribute("viewBox").value);e.attributes.refX=new a.Property("refX",this.attribute("refX").value);e.attributes.refY=new a.Property("refY",this.attribute("refY").value);e.attributes.width=new a.Property("width",this.attribute("markerWidth").value);e.attributes.height=new a.Property("height",
|
|
||||||
this.attribute("markerHeight").value);e.attributes.fill=new a.Property("fill",this.attribute("fill").valueOrDefault("black"));e.attributes.stroke=new a.Property("stroke",this.attribute("stroke").valueOrDefault("none"));e.children=this.children;e.render(d);d.restore();this.attribute("markerUnits").valueOrDefault("strokeWidth")=="strokeWidth"&&d.scale(1/d.lineWidth,1/d.lineWidth);this.attribute("orient").valueOrDefault("auto")=="auto"&&d.rotate(-c);d.translate(-b.x,-b.y)}};a.Element.marker.prototype=
|
|
||||||
new a.Element.ElementBase;a.Element.defs=function(c){this.base=a.Element.ElementBase;this.base(c);this.render=function(){}};a.Element.defs.prototype=new a.Element.ElementBase;a.Element.GradientBase=function(c){this.base=a.Element.ElementBase;this.base(c);this.gradientUnits=this.attribute("gradientUnits").valueOrDefault("objectBoundingBox");this.stops=[];for(c=0;c<this.children.length;c++)this.stops.push(this.children[c]);this.getGradient=function(){};this.createGradient=function(d,b){var c=this;this.attribute("xlink:href").hasValue()&&
|
|
||||||
(c=this.attribute("xlink:href").Definition.getDefinition());for(var e=this.getGradient(d,b),f=0;f<c.stops.length;f++)e.addColorStop(c.stops[f].offset,c.stops[f].color);if(this.attribute("gradientTransform").hasValue()){c=a.ViewPort.viewPorts[0];f=new a.Element.rect;f.attributes.x=new a.Property("x",-a.MAX_VIRTUAL_PIXELS/3);f.attributes.y=new a.Property("y",-a.MAX_VIRTUAL_PIXELS/3);f.attributes.width=new a.Property("width",a.MAX_VIRTUAL_PIXELS);f.attributes.height=new a.Property("height",a.MAX_VIRTUAL_PIXELS);
|
|
||||||
var g=new a.Element.g;g.attributes.transform=new a.Property("transform",this.attribute("gradientTransform").value);g.children=[f];f=new a.Element.svg;f.attributes.x=new a.Property("x",0);f.attributes.y=new a.Property("y",0);f.attributes.width=new a.Property("width",c.width);f.attributes.height=new a.Property("height",c.height);f.children=[g];g=document.createElement("canvas");g.width=c.width;g.height=c.height;c=g.getContext("2d");c.fillStyle=e;f.render(c);return c.createPattern(g,"no-repeat")}return e}};
|
|
||||||
a.Element.GradientBase.prototype=new a.Element.ElementBase;a.Element.linearGradient=function(c){this.base=a.Element.GradientBase;this.base(c);this.getGradient=function(a,b){var c=b.getBoundingBox(),e=this.gradientUnits=="objectBoundingBox"?c.x()+c.width()*this.attribute("x1").numValue():this.attribute("x1").Length.toPixels("x"),f=this.gradientUnits=="objectBoundingBox"?c.y()+c.height()*this.attribute("y1").numValue():this.attribute("y1").Length.toPixels("y"),g=this.gradientUnits=="objectBoundingBox"?
|
|
||||||
c.x()+c.width()*this.attribute("x2").numValue():this.attribute("x2").Length.toPixels("x"),c=this.gradientUnits=="objectBoundingBox"?c.y()+c.height()*this.attribute("y2").numValue():this.attribute("y2").Length.toPixels("y");return a.createLinearGradient(e,f,g,c)}};a.Element.linearGradient.prototype=new a.Element.GradientBase;a.Element.radialGradient=function(c){this.base=a.Element.GradientBase;this.base(c);this.getGradient=function(a,b){var c=b.getBoundingBox(),e=this.gradientUnits=="objectBoundingBox"?
|
|
||||||
c.x()+c.width()*this.attribute("cx").numValue():this.attribute("cx").Length.toPixels("x"),f=this.gradientUnits=="objectBoundingBox"?c.y()+c.height()*this.attribute("cy").numValue():this.attribute("cy").Length.toPixels("y"),g=e,j=f;this.attribute("fx").hasValue()&&(g=this.gradientUnits=="objectBoundingBox"?c.x()+c.width()*this.attribute("fx").numValue():this.attribute("fx").Length.toPixels("x"));this.attribute("fy").hasValue()&&(j=this.gradientUnits=="objectBoundingBox"?c.y()+c.height()*this.attribute("fy").numValue():
|
|
||||||
this.attribute("fy").Length.toPixels("y"));c=this.gradientUnits=="objectBoundingBox"?(c.width()+c.height())/2*this.attribute("r").numValue():this.attribute("r").Length.toPixels();return a.createRadialGradient(g,j,0,e,f,c)}};a.Element.radialGradient.prototype=new a.Element.GradientBase;a.Element.stop=function(c){this.base=a.Element.ElementBase;this.base(c);this.offset=this.attribute("offset").numValue();c=this.style("stop-color");this.style("stop-opacity").hasValue()&&(c=c.Color.addOpacity(this.style("stop-opacity").value));
|
|
||||||
this.color=c.value};a.Element.stop.prototype=new a.Element.ElementBase;a.Element.AnimateBase=function(c){this.base=a.Element.ElementBase;this.base(c);a.Animations.push(this);this.duration=0;this.begin=this.attribute("begin").Time.toMilliseconds();this.maxDuration=this.begin+this.attribute("dur").Time.toMilliseconds();this.getProperty=function(){var a=this.attribute("attributeType").value,b=this.attribute("attributeName").value;return a=="CSS"?this.parent.style(b,!0):this.parent.attribute(b,!0)};this.initialValue=
|
|
||||||
null;this.removed=!1;this.calcValue=function(){return""};this.update=function(a){if(this.initialValue==null)this.initialValue=this.getProperty().value;if(this.duration>this.maxDuration)if(this.attribute("repeatCount").value=="indefinite")this.duration=0;else return this.attribute("fill").valueOrDefault("remove")=="remove"&&!this.removed?(this.removed=!0,this.getProperty().value=this.initialValue,!0):!1;this.duration+=a;a=!1;if(this.begin<this.duration)a=this.calcValue(),this.attribute("type").hasValue()&&
|
|
||||||
(a=this.attribute("type").value+"("+a+")"),this.getProperty().value=a,a=!0;return a};this.progress=function(){return(this.duration-this.begin)/(this.maxDuration-this.begin)}};a.Element.AnimateBase.prototype=new a.Element.ElementBase;a.Element.animate=function(c){this.base=a.Element.AnimateBase;this.base(c);this.calcValue=function(){var a=this.attribute("from").numValue(),b=this.attribute("to").numValue();return a+(b-a)*this.progress()}};a.Element.animate.prototype=new a.Element.AnimateBase;a.Element.animateColor=
|
|
||||||
function(c){this.base=a.Element.AnimateBase;this.base(c);this.calcValue=function(){var a=new RGBColor(this.attribute("from").value),b=new RGBColor(this.attribute("to").value);if(a.ok&&b.ok){var c=a.r+(b.r-a.r)*this.progress(),e=a.g+(b.g-a.g)*this.progress(),a=a.b+(b.b-a.b)*this.progress();return"rgb("+parseInt(c,10)+","+parseInt(e,10)+","+parseInt(a,10)+")"}return this.attribute("from").value}};a.Element.animateColor.prototype=new a.Element.AnimateBase;a.Element.animateTransform=function(c){this.base=
|
|
||||||
a.Element.animate;this.base(c)};a.Element.animateTransform.prototype=new a.Element.animate;a.Element.font=function(c){this.base=a.Element.ElementBase;this.base(c);this.horizAdvX=this.attribute("horiz-adv-x").numValue();this.isArabic=this.isRTL=!1;this.missingGlyph=this.fontFace=null;this.glyphs=[];for(c=0;c<this.children.length;c++){var d=this.children[c];if(d.type=="font-face")this.fontFace=d,d.style("font-family").hasValue()&&(a.Definitions[d.style("font-family").value]=this);else if(d.type=="missing-glyph")this.missingGlyph=
|
|
||||||
d;else if(d.type=="glyph")d.arabicForm!=""?(this.isArabic=this.isRTL=!0,typeof this.glyphs[d.unicode]=="undefined"&&(this.glyphs[d.unicode]=[]),this.glyphs[d.unicode][d.arabicForm]=d):this.glyphs[d.unicode]=d}};a.Element.font.prototype=new a.Element.ElementBase;a.Element.fontface=function(c){this.base=a.Element.ElementBase;this.base(c);this.ascent=this.attribute("ascent").value;this.descent=this.attribute("descent").value;this.unitsPerEm=this.attribute("units-per-em").numValue()};a.Element.fontface.prototype=
|
|
||||||
new a.Element.ElementBase;a.Element.missingglyph=function(c){this.base=a.Element.path;this.base(c);this.horizAdvX=0};a.Element.missingglyph.prototype=new a.Element.path;a.Element.glyph=function(c){this.base=a.Element.path;this.base(c);this.horizAdvX=this.attribute("horiz-adv-x").numValue();this.unicode=this.attribute("unicode").value;this.arabicForm=this.attribute("arabic-form").value};a.Element.glyph.prototype=new a.Element.path;a.Element.text=function(c){this.base=a.Element.RenderedElementBase;
|
|
||||||
this.base(c);if(c!=null){this.children=[];for(var d=0;d<c.childNodes.length;d++){var b=c.childNodes[d];b.nodeType==1?this.addChild(b,!0):b.nodeType==3&&this.addChild(new a.Element.tspan(b),!1)}}this.baseSetContext=this.setContext;this.setContext=function(b){this.baseSetContext(b);if(this.style("dominant-baseline").hasValue())b.textBaseline=this.style("dominant-baseline").value;if(this.style("alignment-baseline").hasValue())b.textBaseline=this.style("alignment-baseline").value};this.renderChildren=
|
|
||||||
function(b){for(var a=this.style("text-anchor").valueOrDefault("start"),c=this.attribute("x").Length.toPixels("x"),d=this.attribute("y").Length.toPixels("y"),j=0;j<this.children.length;j++){var h=this.children[j];h.attribute("x").hasValue()?h.x=h.attribute("x").Length.toPixels("x"):(h.attribute("dx").hasValue()&&(c+=h.attribute("dx").Length.toPixels("x")),h.x=c);c=h.measureText(b);if(a!="start"&&(j==0||h.attribute("x").hasValue())){for(var l=c,o=j+1;o<this.children.length;o++){var n=this.children[o];
|
|
||||||
if(n.attribute("x").hasValue())break;l+=n.measureText(b)}h.x-=a=="end"?l:l/2}c=h.x+c;h.attribute("y").hasValue()?h.y=h.attribute("y").Length.toPixels("y"):(h.attribute("dy").hasValue()&&(d+=h.attribute("dy").Length.toPixels("y")),h.y=d);d=h.y;h.render(b)}}};a.Element.text.prototype=new a.Element.RenderedElementBase;a.Element.TextElementBase=function(c){this.base=a.Element.RenderedElementBase;this.base(c);this.getGlyph=function(a,b,c){var e=b[c],f=null;if(a.isArabic){var g="isolated";if((c==0||b[c-
|
|
||||||
1]==" ")&&c<b.length-2&&b[c+1]!=" ")g="terminal";c>0&&b[c-1]!=" "&&c<b.length-2&&b[c+1]!=" "&&(g="medial");if(c>0&&b[c-1]!=" "&&(c==b.length-1||b[c+1]==" "))g="initial";typeof a.glyphs[e]!="undefined"&&(f=a.glyphs[e][g],f==null&&a.glyphs[e].type=="glyph"&&(f=a.glyphs[e]))}else f=a.glyphs[e];if(f==null)f=a.missingGlyph;return f};this.renderChildren=function(c){var b=this.parent.style("font-family").Definition.getDefinition();if(b!=null){var k=this.parent.style("font-size").numValueOrDefault(a.Font.Parse(a.ctx.font).fontSize),
|
|
||||||
e=this.parent.style("font-style").valueOrDefault(a.Font.Parse(a.ctx.font).fontStyle),f=this.getText();b.isRTL&&(f=f.split("").reverse().join(""));for(var g=a.ToNumberArray(this.parent.attribute("dx").value),j=0;j<f.length;j++){var h=this.getGlyph(b,f,j),l=k/b.fontFace.unitsPerEm;c.translate(this.x,this.y);c.scale(l,-l);var o=c.lineWidth;c.lineWidth=c.lineWidth*b.fontFace.unitsPerEm/k;e=="italic"&&c.transform(1,0,0.4,1,0,0);h.render(c);e=="italic"&&c.transform(1,0,-0.4,1,0,0);c.lineWidth=o;c.scale(1/
|
|
||||||
l,-1/l);c.translate(-this.x,-this.y);this.x+=k*(h.horizAdvX||b.horizAdvX)/b.fontFace.unitsPerEm;typeof g[j]!="undefined"&&!isNaN(g[j])&&(this.x+=g[j])}}else c.strokeStyle!=""&&c.strokeText(a.compressSpaces(this.getText()),this.x,this.y),c.fillStyle!=""&&c.fillText(a.compressSpaces(this.getText()),this.x,this.y)};this.getText=function(){};this.measureText=function(c){var b=this.parent.style("font-family").Definition.getDefinition();if(b!=null){var c=this.parent.style("font-size").numValueOrDefault(a.Font.Parse(a.ctx.font).fontSize),
|
|
||||||
k=0,e=this.getText();b.isRTL&&(e=e.split("").reverse().join(""));for(var f=a.ToNumberArray(this.parent.attribute("dx").value),g=0;g<e.length;g++){var j=this.getGlyph(b,e,g);k+=(j.horizAdvX||b.horizAdvX)*c/b.fontFace.unitsPerEm;typeof f[g]!="undefined"&&!isNaN(f[g])&&(k+=f[g])}return k}b=a.compressSpaces(this.getText());if(!c.measureText)return b.length*10;c.save();this.setContext(c);b=c.measureText(b).width;c.restore();return b}};a.Element.TextElementBase.prototype=new a.Element.RenderedElementBase;
|
|
||||||
a.Element.tspan=function(c){this.base=a.Element.TextElementBase;this.base(c);this.text=c.nodeType==3?c.nodeValue:c.childNodes.length>0?c.childNodes[0].nodeValue:c.text;this.getText=function(){return this.text}};a.Element.tspan.prototype=new a.Element.TextElementBase;a.Element.tref=function(c){this.base=a.Element.TextElementBase;this.base(c);this.getText=function(){var a=this.attribute("xlink:href").Definition.getDefinition();if(a!=null)return a.children[0].getText()}};a.Element.tref.prototype=new a.Element.TextElementBase;
|
|
||||||
a.Element.a=function(c){this.base=a.Element.TextElementBase;this.base(c);this.hasText=!0;for(var d=0;d<c.childNodes.length;d++)if(c.childNodes[d].nodeType!=3)this.hasText=!1;this.text=this.hasText?c.childNodes[0].nodeValue:"";this.getText=function(){return this.text};this.baseRenderChildren=this.renderChildren;this.renderChildren=function(b){if(this.hasText){this.baseRenderChildren(b);var c=new a.Property("fontSize",a.Font.Parse(a.ctx.font).fontSize);a.Mouse.checkBoundingBox(this,new a.BoundingBox(this.x,
|
|
||||||
this.y-c.Length.toPixels("y"),this.x+this.measureText(b),this.y))}else c=new a.Element.g,c.children=this.children,c.parent=this,c.render(b)};this.onclick=function(){window.open(this.attribute("xlink:href").value)};this.onmousemove=function(){a.ctx.canvas.style.cursor="pointer"}};a.Element.a.prototype=new a.Element.TextElementBase;a.Element.image=function(c){this.base=a.Element.RenderedElementBase;this.base(c);a.Images.push(this);this.img=document.createElement("img");this.loaded=!1;var d=this;this.img.onload=
|
|
||||||
function(){d.loaded=!0};this.img.src=this.attribute("xlink:href").value;this.renderChildren=function(b){var c=this.attribute("x").Length.toPixels("x"),d=this.attribute("y").Length.toPixels("y"),f=this.attribute("width").Length.toPixels("x"),g=this.attribute("height").Length.toPixels("y");f==0||g==0||(b.save(),b.translate(c,d),a.AspectRatio(b,this.attribute("preserveAspectRatio").value,f,this.img.width,g,this.img.height,0,0),b.drawImage(this.img,0,0),b.restore())}};a.Element.image.prototype=new a.Element.RenderedElementBase;
|
|
||||||
a.Element.g=function(c){this.base=a.Element.RenderedElementBase;this.base(c);this.getBoundingBox=function(){for(var c=new a.BoundingBox,b=0;b<this.children.length;b++)c.addBoundingBox(this.children[b].getBoundingBox());return c}};a.Element.g.prototype=new a.Element.RenderedElementBase;a.Element.symbol=function(c){this.base=a.Element.RenderedElementBase;this.base(c);this.baseSetContext=this.setContext;this.setContext=function(c){this.baseSetContext(c);if(this.attribute("viewBox").hasValue()){var b=
|
|
||||||
a.ToNumberArray(this.attribute("viewBox").value),k=b[0],e=b[1];width=b[2];height=b[3];a.AspectRatio(c,this.attribute("preserveAspectRatio").value,this.attribute("width").Length.toPixels("x"),width,this.attribute("height").Length.toPixels("y"),height,k,e);a.ViewPort.SetCurrent(b[2],b[3])}}};a.Element.symbol.prototype=new a.Element.RenderedElementBase;a.Element.style=function(c){this.base=a.Element.ElementBase;this.base(c);for(var c=c.childNodes[0].nodeValue+(c.childNodes.length>1?c.childNodes[1].nodeValue:
|
|
||||||
""),c=c.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,""),c=a.compressSpaces(c),c=c.split("}"),d=0;d<c.length;d++)if(a.trim(c[d])!="")for(var b=c[d].split("{"),k=b[0].split(","),b=b[1].split(";"),e=0;e<k.length;e++){var f=a.trim(k[e]);if(f!=""){for(var g={},j=0;j<b.length;j++){var h=b[j].indexOf(":"),l=b[j].substr(0,h),h=b[j].substr(h+1,b[j].length-h);l!=null&&h!=null&&(g[a.trim(l)]=new a.Property(a.trim(l),a.trim(h)))}a.Styles[f]=g;if(f=="@font-face"){f=g["font-family"].value.replace(/"/g,
|
|
||||||
"");g=g.src.value.split(",");for(j=0;j<g.length;j++)if(g[j].indexOf('format("svg")')>0){l=g[j].indexOf("url");h=g[j].indexOf(")",l);l=g[j].substr(l+5,h-l-6);l=a.parseXml(a.ajax(l)).getElementsByTagName("font");for(h=0;h<l.length;h++){var o=a.CreateElement(l[h]);a.Definitions[f]=o}}}}}};a.Element.style.prototype=new a.Element.ElementBase;a.Element.use=function(c){this.base=a.Element.RenderedElementBase;this.base(c);this.baseSetContext=this.setContext;this.setContext=function(a){this.baseSetContext(a);
|
|
||||||
this.attribute("x").hasValue()&&a.translate(this.attribute("x").Length.toPixels("x"),0);this.attribute("y").hasValue()&&a.translate(0,this.attribute("y").Length.toPixels("y"))};this.getDefinition=function(){var a=this.attribute("xlink:href").Definition.getDefinition();if(this.attribute("width").hasValue())a.attribute("width",!0).value=this.attribute("width").value;if(this.attribute("height").hasValue())a.attribute("height",!0).value=this.attribute("height").value;return a};this.path=function(a){var b=
|
|
||||||
this.getDefinition();b!=null&&b.path(a)};this.renderChildren=function(a){var b=this.getDefinition();b!=null&&b.render(a)}};a.Element.use.prototype=new a.Element.RenderedElementBase;a.Element.mask=function(c){this.base=a.Element.ElementBase;this.base(c);this.apply=function(a,b){var c=this.attribute("x").Length.toPixels("x"),e=this.attribute("y").Length.toPixels("y"),f=this.attribute("width").Length.toPixels("x"),g=this.attribute("height").Length.toPixels("y"),j=b.attribute("mask").value;b.attribute("mask").value=
|
|
||||||
"";var h=document.createElement("canvas");h.width=c+f;h.height=e+g;var l=h.getContext("2d");this.renderChildren(l);var o=document.createElement("canvas");o.width=c+f;o.height=e+g;var n=o.getContext("2d");b.render(n);n.globalCompositeOperation="destination-in";n.fillStyle=l.createPattern(h,"no-repeat");n.fillRect(0,0,c+f,e+g);a.fillStyle=n.createPattern(o,"no-repeat");a.fillRect(0,0,c+f,e+g);b.attribute("mask").value=j};this.render=function(){}};a.Element.mask.prototype=new a.Element.ElementBase;a.Element.clipPath=
|
|
||||||
function(c){this.base=a.Element.ElementBase;this.base(c);this.apply=function(a){for(var b=0;b<this.children.length;b++)this.children[b].path&&(this.children[b].path(a),a.clip())};this.render=function(){}};a.Element.clipPath.prototype=new a.Element.ElementBase;a.Element.filter=function(c){this.base=a.Element.ElementBase;this.base(c);this.apply=function(a,b){var c=b.getBoundingBox(),e=this.attribute("x").Length.toPixels("x"),f=this.attribute("y").Length.toPixels("y");if(e==0||f==0)e=c.x1,f=c.y1;var g=
|
|
||||||
this.attribute("width").Length.toPixels("x"),j=this.attribute("height").Length.toPixels("y");if(g==0||j==0)g=c.width(),j=c.height();c=b.style("filter").value;b.style("filter").value="";var h=0.2*g,l=0.2*j,o=document.createElement("canvas");o.width=g+2*h;o.height=j+2*l;var n=o.getContext("2d");n.translate(-e+h,-f+l);b.render(n);for(var q=0;q<this.children.length;q++)this.children[q].apply(n,0,0,g+2*h,j+2*l);a.drawImage(o,0,0,g+2*h,j+2*l,e-h,f-l,g+2*h,j+2*l);b.style("filter",!0).value=c};this.render=
|
|
||||||
function(){}};a.Element.filter.prototype=new a.Element.ElementBase;a.Element.feGaussianBlur=function(c){function d(a,c,d,f,g){for(var j=0;j<g;j++)for(var h=0;h<f;h++)for(var l=a[j*f*4+h*4+3]/255,o=0;o<4;o++){for(var n=d[0]*(l==0?255:a[j*f*4+h*4+o])*(l==0||o==3?1:l),q=1;q<d.length;q++){var p=Math.max(h-q,0),m=a[j*f*4+p*4+3]/255,p=Math.min(h+q,f-1),p=a[j*f*4+p*4+3]/255,s=d[q],r;m==0?r=255:(r=Math.max(h-q,0),r=a[j*f*4+r*4+o]);m=r*(m==0||o==3?1:m);p==0?r=255:(r=Math.min(h+q,f-1),r=a[j*f*4+r*4+o]);n+=
|
|
||||||
s*(m+r*(p==0||o==3?1:p))}c[h*g*4+j*4+o]=n}}this.base=a.Element.ElementBase;this.base(c);this.apply=function(a,c,e,f,g){var e=this.attribute("stdDeviation").numValue(),c=a.getImageData(0,0,f,g),e=Math.max(e,0.01),j=Math.ceil(e*4)+1;mask=[];for(var h=0;h<j;h++)mask[h]=Math.exp(-0.5*(h/e)*(h/e));e=mask;j=0;for(h=1;h<e.length;h++)j+=Math.abs(e[h]);j=2*j+Math.abs(e[0]);for(h=0;h<e.length;h++)e[h]/=j;tmp=[];d(c.data,tmp,e,f,g);d(tmp,c.data,e,g,f);a.clearRect(0,0,f,g);a.putImageData(c,0,0)}};a.Element.filter.prototype=
|
|
||||||
new a.Element.feGaussianBlur;a.Element.title=function(){};a.Element.title.prototype=new a.Element.ElementBase;a.Element.desc=function(){};a.Element.desc.prototype=new a.Element.ElementBase;a.Element.MISSING=function(a){console.log("ERROR: Element '"+a.nodeName+"' not yet implemented.")};a.Element.MISSING.prototype=new a.Element.ElementBase;a.CreateElement=function(c){var d=c.nodeName.replace(/^[^:]+:/,""),d=d.replace(/\-/g,""),b=null,b=typeof a.Element[d]!="undefined"?new a.Element[d](c):new a.Element.MISSING(c);
|
|
||||||
b.type=c.nodeName;return b};a.load=function(c,d){a.loadXml(c,a.ajax(d))};a.loadXml=function(c,d){a.loadXmlDoc(c,a.parseXml(d))};a.loadXmlDoc=function(c,d){a.init(c);var b=function(a){for(var b=c.canvas;b;)a.x-=b.offsetLeft,a.y-=b.offsetTop,b=b.offsetParent;window.scrollX&&(a.x+=window.scrollX);window.scrollY&&(a.y+=window.scrollY);return a};if(a.opts.ignoreMouse!=!0)c.canvas.onclick=function(c){c=b(new a.Point(c!=null?c.clientX:event.clientX,c!=null?c.clientY:event.clientY));a.Mouse.onclick(c.x,c.y)},
|
|
||||||
c.canvas.onmousemove=function(c){c=b(new a.Point(c!=null?c.clientX:event.clientX,c!=null?c.clientY:event.clientY));a.Mouse.onmousemove(c.x,c.y)};var k=a.CreateElement(d.documentElement),e=k.root=!0,f=function(){a.ViewPort.Clear();c.canvas.parentNode&&a.ViewPort.SetCurrent(c.canvas.parentNode.clientWidth,c.canvas.parentNode.clientHeight);if(a.opts.ignoreDimensions!=!0){if(k.style("width").hasValue())c.canvas.width=k.style("width").Length.toPixels("x"),c.canvas.style.width=c.canvas.width+"px";if(k.style("height").hasValue())c.canvas.height=
|
|
||||||
k.style("height").Length.toPixels("y"),c.canvas.style.height=c.canvas.height+"px"}var b=c.canvas.clientWidth||c.canvas.width,d=c.canvas.clientHeight||c.canvas.height;a.ViewPort.SetCurrent(b,d);if(a.opts!=null&&a.opts.offsetX!=null)k.attribute("x",!0).value=a.opts.offsetX;if(a.opts!=null&&a.opts.offsetY!=null)k.attribute("y",!0).value=a.opts.offsetY;if(a.opts!=null&&a.opts.scaleWidth!=null&&a.opts.scaleHeight!=null){var f=1,g=1;k.attribute("width").hasValue()&&(f=k.attribute("width").Length.toPixels("x")/
|
|
||||||
a.opts.scaleWidth);k.attribute("height").hasValue()&&(g=k.attribute("height").Length.toPixels("y")/a.opts.scaleHeight);k.attribute("width",!0).value=a.opts.scaleWidth;k.attribute("height",!0).value=a.opts.scaleHeight;k.attribute("viewBox",!0).value="0 0 "+b*f+" "+d*g;k.attribute("preserveAspectRatio",!0).value="none"}a.opts.ignoreClear!=!0&&c.clearRect(0,0,b,d);k.render(c);e&&(e=!1,a.opts!=null&&typeof a.opts.renderCallback=="function"&&a.opts.renderCallback())},g=!0;a.ImagesLoaded()&&(g=!1,f());
|
|
||||||
a.intervalID=setInterval(function(){var b=!1;g&&a.ImagesLoaded()&&(g=!1,b=!0);a.opts.ignoreMouse!=!0&&(b|=a.Mouse.hasEvents());if(a.opts.ignoreAnimation!=!0)for(var c=0;c<a.Animations.length;c++)b|=a.Animations[c].update(1E3/a.FRAMERATE);a.opts!=null&&typeof a.opts.forceRedraw=="function"&&a.opts.forceRedraw()==!0&&(b=!0);b&&(f(),a.Mouse.runEvents())},1E3/a.FRAMERATE)};a.stop=function(){a.intervalID&&clearInterval(a.intervalID)};a.Mouse=new function(){this.events=[];this.hasEvents=function(){return this.events.length!=
|
|
||||||
0};this.onclick=function(a,d){this.events.push({type:"onclick",x:a,y:d,run:function(a){if(a.onclick)a.onclick()}})};this.onmousemove=function(a,d){this.events.push({type:"onmousemove",x:a,y:d,run:function(a){if(a.onmousemove)a.onmousemove()}})};this.eventElements=[];this.checkPath=function(a,d){for(var b=0;b<this.events.length;b++){var k=this.events[b];d.isPointInPath&&d.isPointInPath(k.x,k.y)&&(this.eventElements[b]=a)}};this.checkBoundingBox=function(a,d){for(var b=0;b<this.events.length;b++){var k=
|
|
||||||
this.events[b];d.isPointInBox(k.x,k.y)&&(this.eventElements[b]=a)}};this.runEvents=function(){a.ctx.canvas.style.cursor="";for(var c=0;c<this.events.length;c++)for(var d=this.events[c],b=this.eventElements[c];b;)d.run(b),b=b.parent;this.events=[];this.eventElements=[]}};return a}this.canvg=function(a,c,d){if(a==null&&c==null&&d==null)for(var c=document.getElementsByTagName("svg"),b=0;b<c.length;b++){a=c[b];d=document.createElement("canvas");d.width=a.clientWidth;d.height=a.clientHeight;a.parentNode.insertBefore(d,
|
|
||||||
a);a.parentNode.removeChild(a);var k=document.createElement("div");k.appendChild(a);canvg(d,k.innerHTML)}else d=d||{},typeof a=="string"&&(a=document.getElementById(a)),a.svg==null?(b=m(),a.svg=b):(b=a.svg,b.stop()),b.opts=d,a=a.getContext("2d"),typeof c.documentElement!="undefined"?b.loadXmlDoc(a,c):c.substr(0,1)=="<"?b.loadXml(a,c):b.load(a,c)}})();
|
|
||||||
if(CanvasRenderingContext2D)CanvasRenderingContext2D.prototype.drawSvg=function(m,a,c,d,b){canvg(this.canvas,m,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0,offsetX:a,offsetY:c,scaleWidth:d,scaleHeight:b})};
|
|
||||||
(function(m){var a=m.css,c=m.CanVGRenderer,d=m.SVGRenderer,b=m.extend,k=m.merge,e=m.addEvent,f=m.createElement,g=m.discardElement;b(c.prototype,d.prototype);b(c.prototype,{create:function(a,b,c,d){this.setContainer(b,c,d);this.configure(a)},setContainer:function(a,b,c){var d=a.style,e=a.parentNode,g=d.left,d=d.top,k=a.offsetWidth,m=a.offsetHeight,s={visibility:"hidden",position:"absolute"};this.init.apply(this,[a,b,c]);this.canvas=f("canvas",{width:k,height:m},{position:"relative",left:g,top:d},a);
|
|
||||||
this.ttLine=f("div",null,s,e);this.ttDiv=f("div",null,s,e);this.ttTimer=void 0;this.hiddenSvg=a=f("div",{width:k,height:m},{visibility:"hidden",left:g,top:d},e);a.appendChild(this.box)},configure:function(b){var c=this,d=b.options.tooltip,f=d.borderWidth,g=c.ttDiv,m=d.style,p=c.ttLine,t=parseInt(m.padding,10),m=k(m,{padding:t+"px","background-color":d.backgroundColor,"border-style":"solid","border-width":f+"px","border-radius":d.borderRadius+"px"});d.shadow&&(m=k(m,{"box-shadow":"1px 1px 3px gray",
|
|
||||||
"-webkit-box-shadow":"1px 1px 3px gray"}));a(g,m);a(p,{"border-left":"1px solid darkgray"});e(b,"tooltipRefresh",function(d){var e=b.container,f=e.offsetLeft,e=e.offsetTop,k;g.innerHTML=d.text;k=b.tooltip.getPosition(g.offsetWidth,g.offsetHeight,{plotX:d.x,plotY:d.y});a(g,{visibility:"visible",left:k.x+"px",top:k.y+"px","border-color":d.borderColor});a(p,{visibility:"visible",left:f+d.x+"px",top:e+b.plotTop+"px",height:b.plotHeight+"px"});c.ttTimer!==void 0&&clearTimeout(c.ttTimer);c.ttTimer=setTimeout(function(){a(g,
|
|
||||||
{visibility:"hidden"});a(p,{visibility:"hidden"})},3E3)})},destroy:function(){g(this.canvas);this.ttTimer!==void 0&&clearTimeout(this.ttTimer);g(this.ttLine);g(this.ttDiv);g(this.hiddenSvg);return d.prototype.destroy.apply(this)},color:function(a,b,c){a&&a.linearGradient&&(a=a.stops[a.stops.length-1][1]);return d.prototype.color.call(this,a,b,c)},draw:function(){window.canvg(this.canvas,this.hiddenSvg.innerHTML)}})})(Highcharts);
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,14 +0,0 @@
|
|||||||
/*
|
|
||||||
Data plugin for Highcharts v0.1
|
|
||||||
|
|
||||||
(c) 2012 Torstein Hønsi
|
|
||||||
|
|
||||||
License: www.highcharts.com/license
|
|
||||||
*/
|
|
||||||
(function(h){var l=h.each,m=function(a){this.init(a)};h.extend(m.prototype,{init:function(a){this.options=a;this.columns=a.columns||this.rowsToColumns(a.rows)||[];this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},dataFound:function(){this.parseTypes();this.findHeaderRow();this.parsed();this.complete()},parseCSV:function(){var a=this.options,b=a.csv,d=this.columns,c=a.startRow||0,g=a.endRow||Number.MAX_VALUE,f=a.startColumn||0,j=a.endColumn||Number.MAX_VALUE;
|
|
||||||
b&&(b=b.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(a.lineDelimiter||"\n"),l(b,function(b,k){if(k>=c&&k<=g){var e=b.split(a.itemDelimiter||",");l(e,function(a,b){b>=f&&b<=j&&(d[b-f]||(d[b-f]=[]),d[b-f][k-c]=a)})}}),this.dataFound())},parseTable:function(){var a=this.options,b=a.table,d=this.columns,c=a.startRow||0,g=a.endRow||Number.MAX_VALUE,f=a.startColumn||0,j=a.endColumn||Number.MAX_VALUE,i;b&&(typeof b==="string"&&(b=document.getElementById(b)),l(b.getElementsByTagName("tr"),function(a,b){i=
|
|
||||||
0;b>=c&&b<=g&&l(a.childNodes,function(a){if((a.tagName==="TD"||a.tagName==="TH")&&i>=f&&i<=j)d[i]||(d[i]=[]),d[i][b-c]=a.innerHTML,i+=1})}),this.dataFound())},parseGoogleSpreadsheet:function(){var a=this,b=this.options,d=b.googleSpreadsheetKey,c=this.columns;d&&jQuery.getJSON("https://spreadsheets.google.com/feeds/cells/"+d+"/"+(b.googleSpreadsheetWorksheet||"od6")+"/public/values?alt=json-in-script&callback=?",function(b){var b=b.feed.entry,d,j=b.length,i=0,k=0,e;for(e=0;e<j;e++)d=b[e],i=Math.max(i,
|
|
||||||
d.gs$cell.col),k=Math.max(k,d.gs$cell.row);for(e=0;e<i;e++)c[e]=Array(k);for(e=0;e<j;e++)d=b[e],c[d.gs$cell.col-1][d.gs$cell.row-1]=d.content.$t;a.dataFound()})},findHeaderRow:function(){l(this.columns,function(){});this.headerRow=0},trim:function(a){return typeof a==="string"?a.replace(/^\s+|\s+$/g,""):a},parseTypes:function(){for(var a=this.columns,b=a.length,d,c,g,f;b--;)for(d=a[b].length;d--;)c=a[b][d],g=parseFloat(c),f=this.trim(c),f==g?(a[b][d]=g,g>31536E6?a[b].isDatetime=!0:a[b].isNumeric=
|
|
||||||
!0):(c=this.parseDate(c),b===0&&typeof c==="number"&&!isNaN(c)?(a[b][d]=c,a[b].isDatetime=!0):a[b][d]=f)},dateFormats:{"YYYY-mm-dd":{regex:"^([0-9]{4})-([0-9]{2})-([0-9]{2})$",parser:function(a){return Date.UTC(+a[1],a[2]-1,+a[3])}}},parseDate:function(a){var b=this.options.parseDate,d,c,g;b&&(d=b);if(typeof a==="string")for(c in this.dateFormats)b=this.dateFormats[c],(g=a.match(b.regex))&&(d=b.parser(g));return d},rowsToColumns:function(a){var b,d,c,g,f;if(a){f=[];d=a.length;for(b=0;b<d;b++){g=a[b].length;
|
|
||||||
for(c=0;c<g;c++)f[c]||(f[c]=[]),f[c][b]=a[b][c]}}return f},parsed:function(){this.options.parsed&&this.options.parsed.call(this,this.columns)},complete:function(){var a=this.columns,b,d,c,g,f=this.options,j,i,k,e,h;if(f.complete){a.length>1&&(c=a.shift(),this.headerRow===0&&c.shift(),(b=c.isNumeric||c.isDatetime)||(d=c),c.isDatetime&&(g="datetime"));j=[];for(e=0;e<a.length;e++){this.headerRow===0&&(k=a[e].shift());i=[];for(h=0;h<a[e].length;h++)i[h]=a[e][h]!==void 0?b?[c[h],a[e][h]]:a[e][h]:null;
|
|
||||||
j[e]={name:k,data:i}}f.complete({xAxis:{categories:d,type:g},series:j})}}});h.Data=m;h.data=function(a){return new m(a)};h.wrap(h.Chart.prototype,"init",function(a,b,d){var c=this;b&&b.data?h.data(h.extend(b.data,{complete:function(g){var f=[];l(g.series,function(a,b){f[b]=a.data;a.data=null});b=h.merge(g,b);l(f,function(a,c){b.series[c].data=a});a.call(c,b,d)}})):a.call(c,b,d)})})(Highcharts);
|
|
||||||
@@ -1,512 +0,0 @@
|
|||||||
/**
|
|
||||||
* @license Data plugin for Highcharts v0.1
|
|
||||||
*
|
|
||||||
* (c) 2012 Torstein Hønsi
|
|
||||||
*
|
|
||||||
* License: www.highcharts.com/license
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The Highcharts Data plugin is a utility to ease parsing of input sources like
|
|
||||||
* CSV, HTML tables or grid views into basic configuration options for use
|
|
||||||
* directly in the Highcharts constructor.
|
|
||||||
*
|
|
||||||
* Demo: http://jsfiddle.net/highcharts/SnLFj/
|
|
||||||
*
|
|
||||||
* --- OPTIONS ---
|
|
||||||
*
|
|
||||||
* - columns : Array<Array<Mixed>>
|
|
||||||
* A two-dimensional array representing the input data on tabular form. This input can
|
|
||||||
* be used when the data is already parsed, for example from a grid view component.
|
|
||||||
* Each cell can be a string or number. If not switchRowsAndColumns is set, the columns
|
|
||||||
* are interpreted as series. See also the rows option.
|
|
||||||
*
|
|
||||||
* - complete : Function(chartOptions)
|
|
||||||
* The callback that is evaluated when the data is finished loading, optionally from an
|
|
||||||
* external source, and parsed. The first argument passed is a finished chart options
|
|
||||||
* object, containing series and an xAxis with categories if applicable. Thise options
|
|
||||||
* can be extended with additional options and passed directly to the chart constructor.
|
|
||||||
*
|
|
||||||
* - csv : String
|
|
||||||
* A comma delimited string to be parsed. Related options are startRow, endRow, startColumn
|
|
||||||
* and endColumn to delimit what part of the table is used. The lineDelimiter and
|
|
||||||
* itemDelimiter options define the CSV delimiter formats.
|
|
||||||
*
|
|
||||||
* - endColumn : Integer
|
|
||||||
* In tabular input data, the first row (indexed by 0) to use. Defaults to the last
|
|
||||||
* column containing data.
|
|
||||||
*
|
|
||||||
* - endRow : Integer
|
|
||||||
* In tabular input data, the last row (indexed by 0) to use. Defaults to the last row
|
|
||||||
* containing data.
|
|
||||||
*
|
|
||||||
* - googleSpreadsheetKey : String
|
|
||||||
* A Google Spreadsheet key. See https://developers.google.com/gdata/samples/spreadsheet_sample
|
|
||||||
* for general information on GS.
|
|
||||||
*
|
|
||||||
* - googleSpreadsheetKey : String
|
|
||||||
* The Google Spreadsheet worksheet. The available id's can be read from
|
|
||||||
* https://spreadsheets.google.com/feeds/worksheets/{key}/public/basic
|
|
||||||
*
|
|
||||||
* - itemDilimiter : String
|
|
||||||
* Item or cell delimiter for parsing CSV. Defaults to ",".
|
|
||||||
*
|
|
||||||
* - lineDilimiter : String
|
|
||||||
* Line delimiter for parsing CSV. Defaults to "\n".
|
|
||||||
*
|
|
||||||
* - parsed : Function
|
|
||||||
* A callback function to access the parsed columns, the two-dimentional input data
|
|
||||||
* array directly, before they are interpreted into series data and categories.
|
|
||||||
*
|
|
||||||
* - parseDate : Function
|
|
||||||
* A callback function to parse string representations of dates into JavaScript timestamps.
|
|
||||||
* Return an integer on success.
|
|
||||||
*
|
|
||||||
* - rows : Array<Array<Mixed>>
|
|
||||||
* The same as the columns input option, but defining rows intead of columns.
|
|
||||||
*
|
|
||||||
* - startColumn : Integer
|
|
||||||
* In tabular input data, the first column (indexed by 0) to use.
|
|
||||||
*
|
|
||||||
* - startRow : Integer
|
|
||||||
* In tabular input data, the first row (indexed by 0) to use.
|
|
||||||
*
|
|
||||||
* - table : String|HTMLElement
|
|
||||||
* A HTML table or the id of such to be parsed as input data. Related options ara startRow,
|
|
||||||
* endRow, startColumn and endColumn to delimit what part of the table is used.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*global jQuery */
|
|
||||||
(function (Highcharts) {
|
|
||||||
|
|
||||||
// Utilities
|
|
||||||
var each = Highcharts.each;
|
|
||||||
|
|
||||||
|
|
||||||
// The Data constructor
|
|
||||||
var Data = function (options) {
|
|
||||||
this.init(options);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Set the prototype properties
|
|
||||||
Highcharts.extend(Data.prototype, {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the Data object with the given options
|
|
||||||
*/
|
|
||||||
init: function (options) {
|
|
||||||
this.options = options;
|
|
||||||
this.columns = options.columns || this.rowsToColumns(options.rows) || [];
|
|
||||||
|
|
||||||
// No need to parse or interpret anything
|
|
||||||
if (this.columns.length) {
|
|
||||||
this.dataFound();
|
|
||||||
|
|
||||||
// Parse and interpret
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// Parse a CSV string if options.csv is given
|
|
||||||
this.parseCSV();
|
|
||||||
|
|
||||||
// Parse a HTML table if options.table is given
|
|
||||||
this.parseTable();
|
|
||||||
|
|
||||||
// Parse a Google Spreadsheet
|
|
||||||
this.parseGoogleSpreadsheet();
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
dataFound: function () {
|
|
||||||
|
|
||||||
// Interpret the values into right types
|
|
||||||
this.parseTypes();
|
|
||||||
|
|
||||||
// Use first row for series names?
|
|
||||||
this.findHeaderRow();
|
|
||||||
|
|
||||||
// Handle columns if a handleColumns callback is given
|
|
||||||
this.parsed();
|
|
||||||
|
|
||||||
// Complete if a complete callback is given
|
|
||||||
this.complete();
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse a CSV input string
|
|
||||||
*/
|
|
||||||
parseCSV: function () {
|
|
||||||
var options = this.options,
|
|
||||||
csv = options.csv,
|
|
||||||
columns = this.columns,
|
|
||||||
startRow = options.startRow || 0,
|
|
||||||
endRow = options.endRow || Number.MAX_VALUE,
|
|
||||||
startColumn = options.startColumn || 0,
|
|
||||||
endColumn = options.endColumn || Number.MAX_VALUE,
|
|
||||||
lines;
|
|
||||||
|
|
||||||
if (csv) {
|
|
||||||
|
|
||||||
lines = csv
|
|
||||||
.replace(/\r\n/g, "\n") // Unix
|
|
||||||
.replace(/\r/g, "\n") // Mac
|
|
||||||
.split(options.lineDelimiter || "\n");
|
|
||||||
|
|
||||||
each(lines, function (line, rowNo) {
|
|
||||||
if (rowNo >= startRow && rowNo <= endRow) {
|
|
||||||
var items = line.split(options.itemDelimiter || ',');
|
|
||||||
each(items, function (item, colNo) {
|
|
||||||
if (colNo >= startColumn && colNo <= endColumn) {
|
|
||||||
if (!columns[colNo - startColumn]) {
|
|
||||||
columns[colNo - startColumn] = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
columns[colNo - startColumn][rowNo - startRow] = item;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.dataFound();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse a HTML table
|
|
||||||
*/
|
|
||||||
parseTable: function () {
|
|
||||||
var options = this.options,
|
|
||||||
table = options.table,
|
|
||||||
columns = this.columns,
|
|
||||||
startRow = options.startRow || 0,
|
|
||||||
endRow = options.endRow || Number.MAX_VALUE,
|
|
||||||
startColumn = options.startColumn || 0,
|
|
||||||
endColumn = options.endColumn || Number.MAX_VALUE,
|
|
||||||
colNo;
|
|
||||||
|
|
||||||
if (table) {
|
|
||||||
|
|
||||||
if (typeof table === 'string') {
|
|
||||||
table = document.getElementById(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
each(table.getElementsByTagName('tr'), function (tr, rowNo) {
|
|
||||||
colNo = 0;
|
|
||||||
if (rowNo >= startRow && rowNo <= endRow) {
|
|
||||||
each(tr.childNodes, function (item) {
|
|
||||||
if ((item.tagName === 'TD' || item.tagName === 'TH') && colNo >= startColumn && colNo <= endColumn) {
|
|
||||||
if (!columns[colNo]) {
|
|
||||||
columns[colNo] = [];
|
|
||||||
}
|
|
||||||
columns[colNo][rowNo - startRow] = item.innerHTML;
|
|
||||||
|
|
||||||
colNo += 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.dataFound(); // continue
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO:
|
|
||||||
* - switchRowsAndColumns
|
|
||||||
* - startRow, endRow etc.
|
|
||||||
*/
|
|
||||||
parseGoogleSpreadsheet: function () {
|
|
||||||
var self = this,
|
|
||||||
options = this.options,
|
|
||||||
googleSpreadsheetKey = options.googleSpreadsheetKey,
|
|
||||||
columns = this.columns;
|
|
||||||
|
|
||||||
if (googleSpreadsheetKey) {
|
|
||||||
jQuery.getJSON('https://spreadsheets.google.com/feeds/cells/' +
|
|
||||||
googleSpreadsheetKey + '/' + (options.googleSpreadsheetWorksheet || 'od6') +
|
|
||||||
'/public/values?alt=json-in-script&callback=?',
|
|
||||||
function (json) {
|
|
||||||
|
|
||||||
// Prepare the data from the spreadsheat
|
|
||||||
var cells = json.feed.entry,
|
|
||||||
cell,
|
|
||||||
cellCount = cells.length,
|
|
||||||
colCount = 0,
|
|
||||||
rowCount = 0,
|
|
||||||
i;
|
|
||||||
|
|
||||||
// First, find the total number of columns and rows that
|
|
||||||
// are actually filled with data
|
|
||||||
for (i = 0; i < cellCount; i++) {
|
|
||||||
cell = cells[i];
|
|
||||||
colCount = Math.max(colCount, cell.gs$cell.col);
|
|
||||||
rowCount = Math.max(rowCount, cell.gs$cell.row);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set up arrays containing the column data
|
|
||||||
for (i = 0; i < colCount; i++) {
|
|
||||||
columns[i] = new Array(rowCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loop over the cells and assign the value to the right
|
|
||||||
// place in the column arrays
|
|
||||||
for (i = 0; i < cellCount; i++) {
|
|
||||||
cell = cells[i];
|
|
||||||
columns[cell.gs$cell.col - 1][cell.gs$cell.row - 1] =
|
|
||||||
cell.content.$t;
|
|
||||||
}
|
|
||||||
self.dataFound();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Find the header row. For now, we just check whether the first row contains
|
|
||||||
* numbers or strings. Later we could loop down and find the first row with
|
|
||||||
* numbers.
|
|
||||||
*/
|
|
||||||
findHeaderRow: function () {
|
|
||||||
var headerRow = 0;
|
|
||||||
each(this.columns, function (column) {
|
|
||||||
if (typeof column[0] !== 'string') {
|
|
||||||
headerRow = null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.headerRow = 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Trim a string from whitespace
|
|
||||||
*/
|
|
||||||
trim: function (str) {
|
|
||||||
//return typeof str === 'number' ? str : str.replace(/^\s+|\s+$/g, ''); // fails with spreadsheet
|
|
||||||
return typeof str === 'string' ? str.replace(/^\s+|\s+$/g, '') : str;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse numeric cells in to number types and date types in to true dates.
|
|
||||||
* @param {Object} columns
|
|
||||||
*/
|
|
||||||
parseTypes: function () {
|
|
||||||
var columns = this.columns,
|
|
||||||
col = columns.length,
|
|
||||||
row,
|
|
||||||
val,
|
|
||||||
floatVal,
|
|
||||||
trimVal,
|
|
||||||
dateVal;
|
|
||||||
|
|
||||||
while (col--) {
|
|
||||||
row = columns[col].length;
|
|
||||||
while (row--) {
|
|
||||||
val = columns[col][row];
|
|
||||||
floatVal = parseFloat(val);
|
|
||||||
trimVal = this.trim(val);
|
|
||||||
/*jslint eqeq: true*/
|
|
||||||
if (trimVal == floatVal) { // is numeric
|
|
||||||
/*jslint eqeq: false*/
|
|
||||||
columns[col][row] = floatVal;
|
|
||||||
|
|
||||||
// If the number is greater than milliseconds in a year, assume datetime
|
|
||||||
if (floatVal > 365 * 24 * 3600 * 1000) {
|
|
||||||
columns[col].isDatetime = true;
|
|
||||||
} else {
|
|
||||||
columns[col].isNumeric = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else { // string, continue to determine if it is a date string or really a string
|
|
||||||
dateVal = this.parseDate(val);
|
|
||||||
|
|
||||||
if (col === 0 && typeof dateVal === 'number' && !isNaN(dateVal)) { // is date
|
|
||||||
columns[col][row] = dateVal;
|
|
||||||
columns[col].isDatetime = true;
|
|
||||||
|
|
||||||
} else { // string
|
|
||||||
columns[col][row] = trimVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
//*
|
|
||||||
dateFormats: {
|
|
||||||
'YYYY-mm-dd': {
|
|
||||||
regex: '^([0-9]{4})-([0-9]{2})-([0-9]{2})$',
|
|
||||||
parser: function (match) {
|
|
||||||
return Date.UTC(+match[1], match[2] - 1, +match[3]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// */
|
|
||||||
/**
|
|
||||||
* Parse a date and return it as a number. Overridable through options.parseDate.
|
|
||||||
*/
|
|
||||||
parseDate: function (val) {
|
|
||||||
var parseDate = this.options.parseDate,
|
|
||||||
ret,
|
|
||||||
key,
|
|
||||||
format,
|
|
||||||
match;
|
|
||||||
|
|
||||||
if (parseDate) {
|
|
||||||
ret = parseDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof val === 'string') {
|
|
||||||
for (key in this.dateFormats) {
|
|
||||||
format = this.dateFormats[key];
|
|
||||||
match = val.match(format.regex);
|
|
||||||
if (match) {
|
|
||||||
ret = format.parser(match);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reorganize rows into columns
|
|
||||||
*/
|
|
||||||
rowsToColumns: function (rows) {
|
|
||||||
var row,
|
|
||||||
rowsLength,
|
|
||||||
col,
|
|
||||||
colsLength,
|
|
||||||
columns;
|
|
||||||
|
|
||||||
if (rows) {
|
|
||||||
columns = [];
|
|
||||||
rowsLength = rows.length;
|
|
||||||
for (row = 0; row < rowsLength; row++) {
|
|
||||||
colsLength = rows[row].length;
|
|
||||||
for (col = 0; col < colsLength; col++) {
|
|
||||||
if (!columns[col]) {
|
|
||||||
columns[col] = [];
|
|
||||||
}
|
|
||||||
columns[col][row] = rows[row][col];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return columns;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A hook for working directly on the parsed columns
|
|
||||||
*/
|
|
||||||
parsed: function () {
|
|
||||||
if (this.options.parsed) {
|
|
||||||
this.options.parsed.call(this, this.columns);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If a complete callback function is provided in the options, interpret the
|
|
||||||
* columns into a Highcharts options object.
|
|
||||||
*/
|
|
||||||
complete: function () {
|
|
||||||
|
|
||||||
var columns = this.columns,
|
|
||||||
hasXData,
|
|
||||||
categories,
|
|
||||||
firstCol,
|
|
||||||
type,
|
|
||||||
options = this.options,
|
|
||||||
series,
|
|
||||||
data,
|
|
||||||
name,
|
|
||||||
i,
|
|
||||||
j;
|
|
||||||
|
|
||||||
|
|
||||||
if (options.complete) {
|
|
||||||
|
|
||||||
// Use first column for X data or categories?
|
|
||||||
if (columns.length > 1) {
|
|
||||||
firstCol = columns.shift();
|
|
||||||
if (this.headerRow === 0) {
|
|
||||||
firstCol.shift(); // remove the first cell
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use the first column for categories or X values
|
|
||||||
hasXData = firstCol.isNumeric || firstCol.isDatetime;
|
|
||||||
if (!hasXData) { // means type is neither datetime nor linear
|
|
||||||
categories = firstCol;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (firstCol.isDatetime) {
|
|
||||||
type = 'datetime';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use the next columns for series
|
|
||||||
series = [];
|
|
||||||
for (i = 0; i < columns.length; i++) {
|
|
||||||
if (this.headerRow === 0) {
|
|
||||||
name = columns[i].shift();
|
|
||||||
}
|
|
||||||
data = [];
|
|
||||||
for (j = 0; j < columns[i].length; j++) {
|
|
||||||
data[j] = columns[i][j] !== undefined ?
|
|
||||||
(hasXData ?
|
|
||||||
[firstCol[j], columns[i][j]] :
|
|
||||||
columns[i][j]
|
|
||||||
) :
|
|
||||||
null;
|
|
||||||
}
|
|
||||||
series[i] = {
|
|
||||||
name: name,
|
|
||||||
data: data
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do the callback
|
|
||||||
options.complete({
|
|
||||||
xAxis: {
|
|
||||||
categories: categories,
|
|
||||||
type: type
|
|
||||||
},
|
|
||||||
series: series
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register the Data prototype and data function on Highcharts
|
|
||||||
Highcharts.Data = Data;
|
|
||||||
Highcharts.data = function (options) {
|
|
||||||
return new Data(options);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Extend Chart.init so that the Chart constructor accepts a new configuration
|
|
||||||
// option group, data.
|
|
||||||
Highcharts.wrap(Highcharts.Chart.prototype, 'init', function (proceed, userOptions, callback) {
|
|
||||||
var chart = this;
|
|
||||||
|
|
||||||
if (userOptions && userOptions.data) {
|
|
||||||
Highcharts.data(Highcharts.extend(userOptions.data, {
|
|
||||||
complete: function (dataOptions) {
|
|
||||||
var datasets = [];
|
|
||||||
|
|
||||||
// Don't merge the data arrays themselves
|
|
||||||
each(dataOptions.series, function (series, i) {
|
|
||||||
datasets[i] = series.data;
|
|
||||||
series.data = null;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Do the merge
|
|
||||||
userOptions = Highcharts.merge(dataOptions, userOptions);
|
|
||||||
|
|
||||||
// Re-insert the data
|
|
||||||
each(datasets, function (data, i) {
|
|
||||||
userOptions.series[i].data = data;
|
|
||||||
});
|
|
||||||
proceed.call(chart, userOptions, callback);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
} else {
|
|
||||||
proceed.call(chart, userOptions, callback);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}(Highcharts));
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
/*
|
|
||||||
Highcharts JS v2.3.5 (2012-12-19)
|
|
||||||
Exporting module
|
|
||||||
|
|
||||||
(c) 2010-2011 Torstein Hønsi
|
|
||||||
|
|
||||||
License: www.highcharts.com/license
|
|
||||||
*/
|
|
||||||
(function(e){function y(a){for(var b=a.length;b--;)typeof a[b]==="number"&&(a[b]=Math.round(a[b])-0.5);return a}var z=e.Chart,u=e.addEvent,B=e.removeEvent,j=e.createElement,v=e.discardElement,t=e.css,l=e.merge,k=e.each,o=e.extend,C=Math.max,i=document,D=window,E=e.isTouchDevice,A=e.Renderer.prototype.symbols,w=e.getOptions();o(w.lang,{downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",exportButtonTitle:"Export to raster or vector image",
|
|
||||||
printButtonTitle:"Print the chart"});w.navigation={menuStyle:{border:"1px solid #A0A0A0",background:"#FFFFFF"},menuItemStyle:{padding:"0 5px",background:"none",color:"#303030",fontSize:E?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{align:"right",backgroundColor:{linearGradient:[0,0,0,20],stops:[[0.4,"#F7F7F7"],[0.6,"#E3E3E3"]]},borderColor:"#B0B0B0",borderRadius:3,borderWidth:1,height:20,hoverBorderColor:"#909090",hoverSymbolFill:"#81A7CF",hoverSymbolStroke:"#4572A5",
|
|
||||||
symbolFill:"#E0E0E0",symbolStroke:"#A0A0A0",symbolX:11.5,symbolY:10.5,verticalAlign:"top",width:24,y:10}};w.exporting={type:"image/png",url:"http://export.highcharts.com/",width:800,buttons:{exportButton:{symbol:"exportIcon",x:-10,symbolFill:"#A8BF77",hoverSymbolFill:"#768F3E",_id:"exportButton",_titleKey:"exportButtonTitle",menuItems:[{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",
|
|
||||||
onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]},printButton:{symbol:"printIcon",x:-36,symbolFill:"#B5C9DF",hoverSymbolFill:"#779ABF",_id:"printButton",_titleKey:"printButtonTitle",onclick:function(){this.print()}}}};e.post=function(a,b){var c,d;d=j("form",{method:"post",action:a,enctype:"multipart/form-data"},{display:"none"},i.body);for(c in b)j("input",{type:"hidden",name:c,value:b[c]},null,d);
|
|
||||||
d.submit();v(d)};o(z.prototype,{getSVG:function(a){var b=this,c,d,f,g=l(b.options,a);if(!i.createElementNS)i.createElementNS=function(a,b){return i.createElement(b)};a=j("div",null,{position:"absolute",top:"-9999em",width:b.chartWidth+"px",height:b.chartHeight+"px"},i.body);o(g.chart,{renderTo:a,forExport:!0});g.exporting.enabled=!1;g.chart.plotBackgroundImage=null;g.series=[];k(b.series,function(a){f=l(a.options,{animation:!1,showCheckbox:!1,visible:a.visible});f.isInternal||g.series.push(f)});c=
|
|
||||||
new e.Chart(g);k(["xAxis","yAxis"],function(a){k(b[a],function(b,d){var f=c[a][d],g=b.getExtremes(),e=g.userMin,g=g.userMax;(e!==void 0||g!==void 0)&&f.setExtremes(e,g,!0,!1)})});d=c.container.innerHTML;g=null;c.destroy();v(a);d=d.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/isTracker="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ href=/g,
|
|
||||||
" xlink:href=").replace(/\n/," ").replace(/<\/svg>.*?$/,"</svg>").replace(/ /g," ").replace(/­/g,"").replace(/<IMG /g,"<image ").replace(/height=([^" ]+)/g,'height="$1"').replace(/width=([^" ]+)/g,'width="$1"').replace(/hc-svg-href="([^"]+)">/g,'xlink:href="$1"/>').replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" ]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){return a.toLowerCase()});d=d.replace(/(url\(#highcharts-[0-9]+)"/g,
|
|
||||||
"$1").replace(/"/g,"'");d.match(/ xmlns="/g).length===2&&(d=d.replace(/xmlns="[^"]+"/,""));return d},exportChart:function(a,b){var c=this.options.exporting,d=this.getSVG(l(c.chartOptions,b)),a=l(c,a);e.post(a.url,{filename:a.filename||"chart",type:a.type,width:a.width,scale:a.scale||2,svg:d})},print:function(){var a=this,b=a.container,c=[],d=b.parentNode,f=i.body,g=f.childNodes;if(!a.isPrinting)a.isPrinting=!0,k(g,function(a,b){if(a.nodeType===1)c[b]=a.style.display,a.style.display="none"}),
|
|
||||||
f.appendChild(b),D.print(),setTimeout(function(){d.appendChild(b);k(g,function(a,b){if(a.nodeType===1)a.style.display=c[b]});a.isPrinting=!1},1E3)},contextMenu:function(a,b,c,d,f,g){var e=this,p=e.options.navigation,i=p.menuItemStyle,q=e.chartWidth,r=e.chartHeight,s="cache-"+a,h=e[s],m=C(f,g),x,n,l;if(!h)e[s]=h=j("div",{className:"highcharts-"+a},{position:"absolute",zIndex:1E3,padding:m+"px"},e.container),x=j("div",null,o({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},
|
|
||||||
p.menuStyle),h),n=function(){t(h,{display:"none"})},u(h,"mouseleave",function(){l=setTimeout(n,500)}),u(h,"mouseenter",function(){clearTimeout(l)}),k(b,function(a){if(a){var b=j("div",{onmouseover:function(){t(this,p.menuItemHoverStyle)},onmouseout:function(){t(this,i)},innerHTML:a.text||e.options.lang[a.textKey]},o({cursor:"pointer"},i),x);b.onclick=function(){n();a.onclick.apply(e,arguments)};e.exportDivElements.push(b)}}),e.exportDivElements.push(x,h),e.exportMenuWidth=h.offsetWidth,e.exportMenuHeight=
|
|
||||||
h.offsetHeight;a={display:"block"};c+e.exportMenuWidth>q?a.right=q-c-f-m+"px":a.left=c-m+"px";d+g+e.exportMenuHeight>r?a.bottom=r-d-m+"px":a.top=d+g-m+"px";t(h,a)},addButton:function(a){function b(){r.attr(k);q.attr(m)}var c=this,d=c.renderer,f=l(c.options.navigation.buttonOptions,a),e=f.onclick,i=f.menuItems,p=f.width,j=f.height,q,r,s,h,a=f.borderWidth,m={stroke:f.borderColor},k={stroke:f.symbolStroke,fill:f.symbolFill},n=f.symbolSize||12;if(!c.btnCount)c.btnCount=0;h=c.btnCount++;if(!c.exportDivElements)c.exportDivElements=
|
|
||||||
[],c.exportSVGElements=[];f.enabled!==!1&&(q=d.rect(0,0,p,j,f.borderRadius,a).align(f,!0).attr(o({fill:f.backgroundColor,"stroke-width":a,zIndex:19},m)).add(),s=d.rect(0,0,p,j,0).align(f).attr({id:f._id,fill:"rgba(255, 255, 255, 0.001)",title:c.options.lang[f._titleKey],zIndex:21}).css({cursor:"pointer"}).on("mouseover",function(){r.attr({stroke:f.hoverSymbolStroke,fill:f.hoverSymbolFill});q.attr({stroke:f.hoverBorderColor})}).on("mouseout",b).on("click",b).add(),i&&(e=function(){b();var a=s.getBBox();
|
|
||||||
c.contextMenu("menu"+h,i,a.x,a.y,p,j)}),s.on("click",function(){e.apply(c,arguments)}),r=d.symbol(f.symbol,f.symbolX-n/2,f.symbolY-n/2,n,n).align(f,!0).attr(o(k,{"stroke-width":f.symbolStrokeWidth||1,zIndex:20})).add(),c.exportSVGElements.push(q,s,r))},destroyExport:function(){var a,b;for(a=0;a<this.exportSVGElements.length;a++)b=this.exportSVGElements[a],b.onclick=b.ontouchstart=null,this.exportSVGElements[a]=b.destroy();for(a=0;a<this.exportDivElements.length;a++)b=this.exportDivElements[a],B(b,
|
|
||||||
"mouseleave"),this.exportDivElements[a]=b.onmouseout=b.onmouseover=b.ontouchstart=b.onclick=null,v(b)}});A.exportIcon=function(a,b,c,d){return y(["M",a,b+c,"L",a+c,b+d,a+c,b+d*0.8,a,b+d*0.8,"Z","M",a+c*0.5,b+d*0.8,"L",a+c*0.8,b+d*0.4,a+c*0.4,b+d*0.4,a+c*0.4,b,a+c*0.6,b,a+c*0.6,b+d*0.4,a+c*0.2,b+d*0.4,"Z"])};A.printIcon=function(a,b,c,d){return y(["M",a,b+d*0.7,"L",a+c,b+d*0.7,a+c,b+d*0.4,a,b+d*0.4,"Z","M",a+c*0.2,b+d*0.4,"L",a+c*0.2,b,a+c*0.8,b,a+c*0.8,b+d*0.4,"Z","M",a+c*0.2,b+d*0.7,"L",a,b+d,a+
|
|
||||||
c,b+d,a+c*0.8,b+d*0.7,"Z"])};z.prototype.callbacks.push(function(a){var b,c=a.options.exporting,d=c.buttons;if(c.enabled!==!1){for(b in d)a.addButton(d[b]);u(a,"destroy",a.destroyExport)}})})(Highcharts);
|
|
||||||
@@ -1,752 +0,0 @@
|
|||||||
/**
|
|
||||||
* @license Highcharts JS v2.3.5 (2012-12-19)
|
|
||||||
* Exporting module
|
|
||||||
*
|
|
||||||
* (c) 2010-2011 Torstein Hønsi
|
|
||||||
*
|
|
||||||
* License: www.highcharts.com/license
|
|
||||||
*/
|
|
||||||
|
|
||||||
// JSLint options:
|
|
||||||
/*global Highcharts, document, window, Math, setTimeout */
|
|
||||||
|
|
||||||
(function (Highcharts) { // encapsulate
|
|
||||||
|
|
||||||
// create shortcuts
|
|
||||||
var Chart = Highcharts.Chart,
|
|
||||||
addEvent = Highcharts.addEvent,
|
|
||||||
removeEvent = Highcharts.removeEvent,
|
|
||||||
createElement = Highcharts.createElement,
|
|
||||||
discardElement = Highcharts.discardElement,
|
|
||||||
css = Highcharts.css,
|
|
||||||
merge = Highcharts.merge,
|
|
||||||
each = Highcharts.each,
|
|
||||||
extend = Highcharts.extend,
|
|
||||||
math = Math,
|
|
||||||
mathMax = math.max,
|
|
||||||
doc = document,
|
|
||||||
win = window,
|
|
||||||
isTouchDevice = Highcharts.isTouchDevice,
|
|
||||||
M = 'M',
|
|
||||||
L = 'L',
|
|
||||||
DIV = 'div',
|
|
||||||
HIDDEN = 'hidden',
|
|
||||||
NONE = 'none',
|
|
||||||
PREFIX = 'highcharts-',
|
|
||||||
ABSOLUTE = 'absolute',
|
|
||||||
PX = 'px',
|
|
||||||
UNDEFINED,
|
|
||||||
symbols = Highcharts.Renderer.prototype.symbols,
|
|
||||||
defaultOptions = Highcharts.getOptions();
|
|
||||||
|
|
||||||
// Add language
|
|
||||||
extend(defaultOptions.lang, {
|
|
||||||
downloadPNG: 'Download PNG image',
|
|
||||||
downloadJPEG: 'Download JPEG image',
|
|
||||||
downloadPDF: 'Download PDF document',
|
|
||||||
downloadSVG: 'Download SVG vector image',
|
|
||||||
exportButtonTitle: 'Export to raster or vector image',
|
|
||||||
printButtonTitle: 'Print the chart'
|
|
||||||
});
|
|
||||||
|
|
||||||
// Buttons and menus are collected in a separate config option set called 'navigation'.
|
|
||||||
// This can be extended later to add control buttons like zoom and pan right click menus.
|
|
||||||
defaultOptions.navigation = {
|
|
||||||
menuStyle: {
|
|
||||||
border: '1px solid #A0A0A0',
|
|
||||||
background: '#FFFFFF'
|
|
||||||
},
|
|
||||||
menuItemStyle: {
|
|
||||||
padding: '0 5px',
|
|
||||||
background: NONE,
|
|
||||||
color: '#303030',
|
|
||||||
fontSize: isTouchDevice ? '14px' : '11px'
|
|
||||||
},
|
|
||||||
menuItemHoverStyle: {
|
|
||||||
background: '#4572A5',
|
|
||||||
color: '#FFFFFF'
|
|
||||||
},
|
|
||||||
|
|
||||||
buttonOptions: {
|
|
||||||
align: 'right',
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: [0, 0, 0, 20],
|
|
||||||
stops: [
|
|
||||||
[0.4, '#F7F7F7'],
|
|
||||||
[0.6, '#E3E3E3']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderColor: '#B0B0B0',
|
|
||||||
borderRadius: 3,
|
|
||||||
borderWidth: 1,
|
|
||||||
//enabled: true,
|
|
||||||
height: 20,
|
|
||||||
hoverBorderColor: '#909090',
|
|
||||||
hoverSymbolFill: '#81A7CF',
|
|
||||||
hoverSymbolStroke: '#4572A5',
|
|
||||||
symbolFill: '#E0E0E0',
|
|
||||||
//symbolSize: 12,
|
|
||||||
symbolStroke: '#A0A0A0',
|
|
||||||
//symbolStrokeWidth: 1,
|
|
||||||
symbolX: 11.5,
|
|
||||||
symbolY: 10.5,
|
|
||||||
verticalAlign: 'top',
|
|
||||||
width: 24,
|
|
||||||
y: 10
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Add the export related options
|
|
||||||
defaultOptions.exporting = {
|
|
||||||
//enabled: true,
|
|
||||||
//filename: 'chart',
|
|
||||||
type: 'image/png',
|
|
||||||
url: 'http://export.highcharts.com/',
|
|
||||||
width: 800,
|
|
||||||
buttons: {
|
|
||||||
exportButton: {
|
|
||||||
//enabled: true,
|
|
||||||
symbol: 'exportIcon',
|
|
||||||
x: -10,
|
|
||||||
symbolFill: '#A8BF77',
|
|
||||||
hoverSymbolFill: '#768F3E',
|
|
||||||
_id: 'exportButton',
|
|
||||||
_titleKey: 'exportButtonTitle',
|
|
||||||
menuItems: [{
|
|
||||||
textKey: 'downloadPNG',
|
|
||||||
onclick: function () {
|
|
||||||
this.exportChart();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
textKey: 'downloadJPEG',
|
|
||||||
onclick: function () {
|
|
||||||
this.exportChart({
|
|
||||||
type: 'image/jpeg'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
textKey: 'downloadPDF',
|
|
||||||
onclick: function () {
|
|
||||||
this.exportChart({
|
|
||||||
type: 'application/pdf'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
textKey: 'downloadSVG',
|
|
||||||
onclick: function () {
|
|
||||||
this.exportChart({
|
|
||||||
type: 'image/svg+xml'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Enable this block to add "View SVG" to the dropdown menu
|
|
||||||
/*
|
|
||||||
,{
|
|
||||||
|
|
||||||
text: 'View SVG',
|
|
||||||
onclick: function () {
|
|
||||||
var svg = this.getSVG()
|
|
||||||
.replace(/</g, '\n<')
|
|
||||||
.replace(/>/g, '>');
|
|
||||||
|
|
||||||
doc.body.innerHTML = '<pre>' + svg + '</pre>';
|
|
||||||
}
|
|
||||||
} // */
|
|
||||||
]
|
|
||||||
|
|
||||||
},
|
|
||||||
printButton: {
|
|
||||||
//enabled: true,
|
|
||||||
symbol: 'printIcon',
|
|
||||||
x: -36,
|
|
||||||
symbolFill: '#B5C9DF',
|
|
||||||
hoverSymbolFill: '#779ABF',
|
|
||||||
_id: 'printButton',
|
|
||||||
_titleKey: 'printButtonTitle',
|
|
||||||
onclick: function () {
|
|
||||||
this.print();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add the Highcharts.post utility
|
|
||||||
Highcharts.post = function (url, data) {
|
|
||||||
var name,
|
|
||||||
form;
|
|
||||||
|
|
||||||
// create the form
|
|
||||||
form = createElement('form', {
|
|
||||||
method: 'post',
|
|
||||||
action: url,
|
|
||||||
enctype: 'multipart/form-data'
|
|
||||||
}, {
|
|
||||||
display: NONE
|
|
||||||
}, doc.body);
|
|
||||||
|
|
||||||
// add the data
|
|
||||||
for (name in data) {
|
|
||||||
createElement('input', {
|
|
||||||
type: HIDDEN,
|
|
||||||
name: name,
|
|
||||||
value: data[name]
|
|
||||||
}, null, form);
|
|
||||||
}
|
|
||||||
|
|
||||||
// submit
|
|
||||||
form.submit();
|
|
||||||
|
|
||||||
// clean up
|
|
||||||
discardElement(form);
|
|
||||||
};
|
|
||||||
|
|
||||||
extend(Chart.prototype, {
|
|
||||||
/**
|
|
||||||
* Return an SVG representation of the chart
|
|
||||||
*
|
|
||||||
* @param additionalOptions {Object} Additional chart options for the generated SVG representation
|
|
||||||
*/
|
|
||||||
getSVG: function (additionalOptions) {
|
|
||||||
var chart = this,
|
|
||||||
chartCopy,
|
|
||||||
sandbox,
|
|
||||||
svg,
|
|
||||||
seriesOptions,
|
|
||||||
options = merge(chart.options, additionalOptions); // copy the options and add extra options
|
|
||||||
|
|
||||||
// IE compatibility hack for generating SVG content that it doesn't really understand
|
|
||||||
if (!doc.createElementNS) {
|
|
||||||
/*jslint unparam: true*//* allow unused parameter ns in function below */
|
|
||||||
doc.createElementNS = function (ns, tagName) {
|
|
||||||
return doc.createElement(tagName);
|
|
||||||
};
|
|
||||||
/*jslint unparam: false*/
|
|
||||||
}
|
|
||||||
|
|
||||||
// create a sandbox where a new chart will be generated
|
|
||||||
sandbox = createElement(DIV, null, {
|
|
||||||
position: ABSOLUTE,
|
|
||||||
top: '-9999em',
|
|
||||||
width: chart.chartWidth + PX,
|
|
||||||
height: chart.chartHeight + PX
|
|
||||||
}, doc.body);
|
|
||||||
|
|
||||||
// override some options
|
|
||||||
extend(options.chart, {
|
|
||||||
renderTo: sandbox,
|
|
||||||
forExport: true
|
|
||||||
});
|
|
||||||
options.exporting.enabled = false; // hide buttons in print
|
|
||||||
options.chart.plotBackgroundImage = null; // the converter doesn't handle images
|
|
||||||
|
|
||||||
// prepare for replicating the chart
|
|
||||||
options.series = [];
|
|
||||||
each(chart.series, function (serie) {
|
|
||||||
seriesOptions = merge(serie.options, {
|
|
||||||
animation: false, // turn off animation
|
|
||||||
showCheckbox: false,
|
|
||||||
visible: serie.visible
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!seriesOptions.isInternal) { // used for the navigator series that has its own option set
|
|
||||||
options.series.push(seriesOptions);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// generate the chart copy
|
|
||||||
chartCopy = new Highcharts.Chart(options);
|
|
||||||
|
|
||||||
// reflect axis extremes in the export
|
|
||||||
each(['xAxis', 'yAxis'], function (axisType) {
|
|
||||||
each(chart[axisType], function (axis, i) {
|
|
||||||
var axisCopy = chartCopy[axisType][i],
|
|
||||||
extremes = axis.getExtremes(),
|
|
||||||
userMin = extremes.userMin,
|
|
||||||
userMax = extremes.userMax;
|
|
||||||
|
|
||||||
if (userMin !== UNDEFINED || userMax !== UNDEFINED) {
|
|
||||||
axisCopy.setExtremes(userMin, userMax, true, false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// get the SVG from the container's innerHTML
|
|
||||||
svg = chartCopy.container.innerHTML;
|
|
||||||
|
|
||||||
// free up memory
|
|
||||||
options = null;
|
|
||||||
chartCopy.destroy();
|
|
||||||
discardElement(sandbox);
|
|
||||||
|
|
||||||
// sanitize
|
|
||||||
svg = svg
|
|
||||||
.replace(/zIndex="[^"]+"/g, '')
|
|
||||||
.replace(/isShadow="[^"]+"/g, '')
|
|
||||||
.replace(/symbolName="[^"]+"/g, '')
|
|
||||||
.replace(/jQuery[0-9]+="[^"]+"/g, '')
|
|
||||||
.replace(/isTracker="[^"]+"/g, '')
|
|
||||||
.replace(/url\([^#]+#/g, 'url(#')
|
|
||||||
.replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
|
|
||||||
.replace(/ href=/g, ' xlink:href=')
|
|
||||||
.replace(/\n/, ' ')
|
|
||||||
.replace(/<\/svg>.*?$/, '</svg>') // any HTML added to the container after the SVG (#894)
|
|
||||||
/* This fails in IE < 8
|
|
||||||
.replace(/([0-9]+)\.([0-9]+)/g, function(s1, s2, s3) { // round off to save weight
|
|
||||||
return s2 +'.'+ s3[0];
|
|
||||||
})*/
|
|
||||||
|
|
||||||
// Replace HTML entities, issue #347
|
|
||||||
.replace(/ /g, '\u00A0') // no-break space
|
|
||||||
.replace(/­/g, '\u00AD') // soft hyphen
|
|
||||||
|
|
||||||
// IE specific
|
|
||||||
.replace(/<IMG /g, '<image ')
|
|
||||||
.replace(/height=([^" ]+)/g, 'height="$1"')
|
|
||||||
.replace(/width=([^" ]+)/g, 'width="$1"')
|
|
||||||
.replace(/hc-svg-href="([^"]+)">/g, 'xlink:href="$1"/>')
|
|
||||||
.replace(/id=([^" >]+)/g, 'id="$1"')
|
|
||||||
.replace(/class=([^" ]+)/g, 'class="$1"')
|
|
||||||
.replace(/ transform /g, ' ')
|
|
||||||
.replace(/:(path|rect)/g, '$1')
|
|
||||||
.replace(/style="([^"]+)"/g, function (s) {
|
|
||||||
return s.toLowerCase();
|
|
||||||
});
|
|
||||||
|
|
||||||
// IE9 beta bugs with innerHTML. Test again with final IE9.
|
|
||||||
svg = svg.replace(/(url\(#highcharts-[0-9]+)"/g, '$1')
|
|
||||||
.replace(/"/g, "'");
|
|
||||||
if (svg.match(/ xmlns="/g).length === 2) {
|
|
||||||
svg = svg.replace(/xmlns="[^"]+"/, '');
|
|
||||||
}
|
|
||||||
|
|
||||||
return svg;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Submit the SVG representation of the chart to the server
|
|
||||||
* @param {Object} options Exporting options. Possible members are url, type and width.
|
|
||||||
* @param {Object} chartOptions Additional chart options for the SVG representation of the chart
|
|
||||||
*/
|
|
||||||
exportChart: function (options, chartOptions) {
|
|
||||||
var exportingOptions = this.options.exporting,
|
|
||||||
svg = this.getSVG(merge(exportingOptions.chartOptions, chartOptions));
|
|
||||||
|
|
||||||
// merge the options
|
|
||||||
options = merge(exportingOptions, options);
|
|
||||||
|
|
||||||
// do the post
|
|
||||||
Highcharts.post(options.url, {
|
|
||||||
filename: options.filename || 'chart',
|
|
||||||
type: options.type,
|
|
||||||
width: options.width,
|
|
||||||
scale: options.scale || 2,
|
|
||||||
svg: svg
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Print the chart
|
|
||||||
*/
|
|
||||||
print: function () {
|
|
||||||
|
|
||||||
var chart = this,
|
|
||||||
container = chart.container,
|
|
||||||
origDisplay = [],
|
|
||||||
origParent = container.parentNode,
|
|
||||||
body = doc.body,
|
|
||||||
childNodes = body.childNodes;
|
|
||||||
|
|
||||||
if (chart.isPrinting) { // block the button while in printing mode
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
chart.isPrinting = true;
|
|
||||||
|
|
||||||
// hide all body content
|
|
||||||
each(childNodes, function (node, i) {
|
|
||||||
if (node.nodeType === 1) {
|
|
||||||
origDisplay[i] = node.style.display;
|
|
||||||
node.style.display = NONE;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// pull out the chart
|
|
||||||
body.appendChild(container);
|
|
||||||
|
|
||||||
// print
|
|
||||||
win.print();
|
|
||||||
|
|
||||||
// allow the browser to prepare before reverting
|
|
||||||
setTimeout(function () {
|
|
||||||
|
|
||||||
// put the chart back in
|
|
||||||
origParent.appendChild(container);
|
|
||||||
|
|
||||||
// restore all body content
|
|
||||||
each(childNodes, function (node, i) {
|
|
||||||
if (node.nodeType === 1) {
|
|
||||||
node.style.display = origDisplay[i];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
chart.isPrinting = false;
|
|
||||||
|
|
||||||
}, 1000);
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display a popup menu for choosing the export type
|
|
||||||
*
|
|
||||||
* @param {String} name An identifier for the menu
|
|
||||||
* @param {Array} items A collection with text and onclicks for the items
|
|
||||||
* @param {Number} x The x position of the opener button
|
|
||||||
* @param {Number} y The y position of the opener button
|
|
||||||
* @param {Number} width The width of the opener button
|
|
||||||
* @param {Number} height The height of the opener button
|
|
||||||
*/
|
|
||||||
contextMenu: function (name, items, x, y, width, height) {
|
|
||||||
var chart = this,
|
|
||||||
navOptions = chart.options.navigation,
|
|
||||||
menuItemStyle = navOptions.menuItemStyle,
|
|
||||||
chartWidth = chart.chartWidth,
|
|
||||||
chartHeight = chart.chartHeight,
|
|
||||||
cacheName = 'cache-' + name,
|
|
||||||
menu = chart[cacheName],
|
|
||||||
menuPadding = mathMax(width, height), // for mouse leave detection
|
|
||||||
boxShadow = '3px 3px 10px #888',
|
|
||||||
innerMenu,
|
|
||||||
hide,
|
|
||||||
hideTimer,
|
|
||||||
menuStyle;
|
|
||||||
|
|
||||||
// create the menu only the first time
|
|
||||||
if (!menu) {
|
|
||||||
|
|
||||||
// create a HTML element above the SVG
|
|
||||||
chart[cacheName] = menu = createElement(DIV, {
|
|
||||||
className: PREFIX + name
|
|
||||||
}, {
|
|
||||||
position: ABSOLUTE,
|
|
||||||
zIndex: 1000,
|
|
||||||
padding: menuPadding + PX
|
|
||||||
}, chart.container);
|
|
||||||
|
|
||||||
innerMenu = createElement(DIV, null,
|
|
||||||
extend({
|
|
||||||
MozBoxShadow: boxShadow,
|
|
||||||
WebkitBoxShadow: boxShadow,
|
|
||||||
boxShadow: boxShadow
|
|
||||||
}, navOptions.menuStyle), menu);
|
|
||||||
|
|
||||||
// hide on mouse out
|
|
||||||
hide = function () {
|
|
||||||
css(menu, { display: NONE });
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hide the menu some time after mouse leave (#1357)
|
|
||||||
addEvent(menu, 'mouseleave', function () {
|
|
||||||
hideTimer = setTimeout(hide, 500);
|
|
||||||
});
|
|
||||||
addEvent(menu, 'mouseenter', function () {
|
|
||||||
clearTimeout(hideTimer);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// create the items
|
|
||||||
each(items, function (item) {
|
|
||||||
if (item) {
|
|
||||||
var div = createElement(DIV, {
|
|
||||||
onmouseover: function () {
|
|
||||||
css(this, navOptions.menuItemHoverStyle);
|
|
||||||
},
|
|
||||||
onmouseout: function () {
|
|
||||||
css(this, menuItemStyle);
|
|
||||||
},
|
|
||||||
innerHTML: item.text || chart.options.lang[item.textKey]
|
|
||||||
}, extend({
|
|
||||||
cursor: 'pointer'
|
|
||||||
}, menuItemStyle), innerMenu);
|
|
||||||
|
|
||||||
div.onclick = function () {
|
|
||||||
hide();
|
|
||||||
item.onclick.apply(chart, arguments);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Keep references to menu divs to be able to destroy them
|
|
||||||
chart.exportDivElements.push(div);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Keep references to menu and innerMenu div to be able to destroy them
|
|
||||||
chart.exportDivElements.push(innerMenu, menu);
|
|
||||||
|
|
||||||
chart.exportMenuWidth = menu.offsetWidth;
|
|
||||||
chart.exportMenuHeight = menu.offsetHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
menuStyle = { display: 'block' };
|
|
||||||
|
|
||||||
// if outside right, right align it
|
|
||||||
if (x + chart.exportMenuWidth > chartWidth) {
|
|
||||||
menuStyle.right = (chartWidth - x - width - menuPadding) + PX;
|
|
||||||
} else {
|
|
||||||
menuStyle.left = (x - menuPadding) + PX;
|
|
||||||
}
|
|
||||||
// if outside bottom, bottom align it
|
|
||||||
if (y + height + chart.exportMenuHeight > chartHeight) {
|
|
||||||
menuStyle.bottom = (chartHeight - y - menuPadding) + PX;
|
|
||||||
} else {
|
|
||||||
menuStyle.top = (y + height - menuPadding) + PX;
|
|
||||||
}
|
|
||||||
|
|
||||||
css(menu, menuStyle);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add the export button to the chart
|
|
||||||
*/
|
|
||||||
addButton: function (options) {
|
|
||||||
var chart = this,
|
|
||||||
renderer = chart.renderer,
|
|
||||||
btnOptions = merge(chart.options.navigation.buttonOptions, options),
|
|
||||||
onclick = btnOptions.onclick,
|
|
||||||
menuItems = btnOptions.menuItems,
|
|
||||||
buttonWidth = btnOptions.width,
|
|
||||||
buttonHeight = btnOptions.height,
|
|
||||||
box,
|
|
||||||
symbol,
|
|
||||||
button,
|
|
||||||
menuKey,
|
|
||||||
borderWidth = btnOptions.borderWidth,
|
|
||||||
boxAttr = {
|
|
||||||
stroke: btnOptions.borderColor
|
|
||||||
|
|
||||||
},
|
|
||||||
symbolAttr = {
|
|
||||||
stroke: btnOptions.symbolStroke,
|
|
||||||
fill: btnOptions.symbolFill
|
|
||||||
},
|
|
||||||
symbolSize = btnOptions.symbolSize || 12;
|
|
||||||
|
|
||||||
if (!chart.btnCount) {
|
|
||||||
chart.btnCount = 0;
|
|
||||||
}
|
|
||||||
menuKey = chart.btnCount++;
|
|
||||||
|
|
||||||
// Keeps references to the button elements
|
|
||||||
if (!chart.exportDivElements) {
|
|
||||||
chart.exportDivElements = [];
|
|
||||||
chart.exportSVGElements = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (btnOptions.enabled === false) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// element to capture the click
|
|
||||||
function revert() {
|
|
||||||
symbol.attr(symbolAttr);
|
|
||||||
box.attr(boxAttr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// the box border
|
|
||||||
box = renderer.rect(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
buttonWidth,
|
|
||||||
buttonHeight,
|
|
||||||
btnOptions.borderRadius,
|
|
||||||
borderWidth
|
|
||||||
)
|
|
||||||
//.translate(buttonLeft, buttonTop) // to allow gradients
|
|
||||||
.align(btnOptions, true)
|
|
||||||
.attr(extend({
|
|
||||||
fill: btnOptions.backgroundColor,
|
|
||||||
'stroke-width': borderWidth,
|
|
||||||
zIndex: 19
|
|
||||||
}, boxAttr)).add();
|
|
||||||
|
|
||||||
// the invisible element to track the clicks
|
|
||||||
button = renderer.rect(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
buttonWidth,
|
|
||||||
buttonHeight,
|
|
||||||
0
|
|
||||||
)
|
|
||||||
.align(btnOptions)
|
|
||||||
.attr({
|
|
||||||
id: btnOptions._id,
|
|
||||||
fill: 'rgba(255, 255, 255, 0.001)',
|
|
||||||
title: chart.options.lang[btnOptions._titleKey],
|
|
||||||
zIndex: 21
|
|
||||||
}).css({
|
|
||||||
cursor: 'pointer'
|
|
||||||
})
|
|
||||||
.on('mouseover', function () {
|
|
||||||
symbol.attr({
|
|
||||||
stroke: btnOptions.hoverSymbolStroke,
|
|
||||||
fill: btnOptions.hoverSymbolFill
|
|
||||||
});
|
|
||||||
box.attr({
|
|
||||||
stroke: btnOptions.hoverBorderColor
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.on('mouseout', revert)
|
|
||||||
.on('click', revert)
|
|
||||||
.add();
|
|
||||||
|
|
||||||
// add the click event
|
|
||||||
if (menuItems) {
|
|
||||||
|
|
||||||
onclick = function () {
|
|
||||||
revert();
|
|
||||||
var bBox = button.getBBox();
|
|
||||||
chart.contextMenu('menu' + menuKey, menuItems, bBox.x, bBox.y, buttonWidth, buttonHeight);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/*addEvent(button.element, 'click', function() {
|
|
||||||
onclick.apply(chart, arguments);
|
|
||||||
});*/
|
|
||||||
button.on('click', function () {
|
|
||||||
onclick.apply(chart, arguments);
|
|
||||||
});
|
|
||||||
|
|
||||||
// the icon
|
|
||||||
symbol = renderer.symbol(
|
|
||||||
btnOptions.symbol,
|
|
||||||
btnOptions.symbolX - (symbolSize / 2),
|
|
||||||
btnOptions.symbolY - (symbolSize / 2),
|
|
||||||
symbolSize,
|
|
||||||
symbolSize
|
|
||||||
)
|
|
||||||
.align(btnOptions, true)
|
|
||||||
.attr(extend(symbolAttr, {
|
|
||||||
'stroke-width': btnOptions.symbolStrokeWidth || 1,
|
|
||||||
zIndex: 20
|
|
||||||
})).add();
|
|
||||||
|
|
||||||
// Keep references to the renderer element so to be able to destroy them later.
|
|
||||||
chart.exportSVGElements.push(box, button, symbol);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Destroy the buttons.
|
|
||||||
*/
|
|
||||||
destroyExport: function () {
|
|
||||||
var i,
|
|
||||||
chart = this,
|
|
||||||
elem;
|
|
||||||
|
|
||||||
// Destroy the extra buttons added
|
|
||||||
for (i = 0; i < chart.exportSVGElements.length; i++) {
|
|
||||||
elem = chart.exportSVGElements[i];
|
|
||||||
// Destroy and null the svg/vml elements
|
|
||||||
elem.onclick = elem.ontouchstart = null;
|
|
||||||
chart.exportSVGElements[i] = elem.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Destroy the divs for the menu
|
|
||||||
for (i = 0; i < chart.exportDivElements.length; i++) {
|
|
||||||
elem = chart.exportDivElements[i];
|
|
||||||
|
|
||||||
// Remove the event handler
|
|
||||||
removeEvent(elem, 'mouseleave');
|
|
||||||
|
|
||||||
// Remove inline events
|
|
||||||
chart.exportDivElements[i] = elem.onmouseout = elem.onmouseover = elem.ontouchstart = elem.onclick = null;
|
|
||||||
|
|
||||||
// Destroy the div by moving to garbage bin
|
|
||||||
discardElement(elem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Crisp for 1px stroke width, which is default. In the future, consider a smarter,
|
|
||||||
* global function.
|
|
||||||
*/
|
|
||||||
function crisp(arr) {
|
|
||||||
var i = arr.length;
|
|
||||||
while (i--) {
|
|
||||||
if (typeof arr[i] === 'number') {
|
|
||||||
arr[i] = Math.round(arr[i]) - 0.5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the export icon
|
|
||||||
symbols.exportIcon = function (x, y, width, height) {
|
|
||||||
return crisp([
|
|
||||||
M, // the disk
|
|
||||||
x, y + width,
|
|
||||||
L,
|
|
||||||
x + width, y + height,
|
|
||||||
x + width, y + height * 0.8,
|
|
||||||
x, y + height * 0.8,
|
|
||||||
'Z',
|
|
||||||
M, // the arrow
|
|
||||||
x + width * 0.5, y + height * 0.8,
|
|
||||||
L,
|
|
||||||
x + width * 0.8, y + height * 0.4,
|
|
||||||
x + width * 0.4, y + height * 0.4,
|
|
||||||
x + width * 0.4, y,
|
|
||||||
x + width * 0.6, y,
|
|
||||||
x + width * 0.6, y + height * 0.4,
|
|
||||||
x + width * 0.2, y + height * 0.4,
|
|
||||||
'Z'
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
// Create the print icon
|
|
||||||
symbols.printIcon = function (x, y, width, height) {
|
|
||||||
return crisp([
|
|
||||||
M, // the printer
|
|
||||||
x, y + height * 0.7,
|
|
||||||
L,
|
|
||||||
x + width, y + height * 0.7,
|
|
||||||
x + width, y + height * 0.4,
|
|
||||||
x, y + height * 0.4,
|
|
||||||
'Z',
|
|
||||||
M, // the upper sheet
|
|
||||||
x + width * 0.2, y + height * 0.4,
|
|
||||||
L,
|
|
||||||
x + width * 0.2, y,
|
|
||||||
x + width * 0.8, y,
|
|
||||||
x + width * 0.8, y + height * 0.4,
|
|
||||||
'Z',
|
|
||||||
M, // the lower sheet
|
|
||||||
x + width * 0.2, y + height * 0.7,
|
|
||||||
L,
|
|
||||||
x, y + height,
|
|
||||||
x + width, y + height,
|
|
||||||
x + width * 0.8, y + height * 0.7,
|
|
||||||
'Z'
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// Add the buttons on chart load
|
|
||||||
Chart.prototype.callbacks.push(function (chart) {
|
|
||||||
var n,
|
|
||||||
exportingOptions = chart.options.exporting,
|
|
||||||
buttons = exportingOptions.buttons;
|
|
||||||
|
|
||||||
if (exportingOptions.enabled !== false) {
|
|
||||||
|
|
||||||
for (n in buttons) {
|
|
||||||
chart.addButton(buttons[n]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Destroy the export elements at chart destroy
|
|
||||||
addEvent(chart, 'destroy', chart.destroyExport);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
}(Highcharts));
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
/**
|
|
||||||
* Dark blue theme for Highcharts JS
|
|
||||||
* @author Torstein Hønsi
|
|
||||||
*/
|
|
||||||
|
|
||||||
Highcharts.theme = {
|
|
||||||
colors: ["#DDDF0D", "#55BF3B", "#DF5353", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee",
|
|
||||||
"#55BF3B", "#DF5353", "#7798BF", "#aaeeee"],
|
|
||||||
chart: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0, 'rgb(48, 48, 96)'],
|
|
||||||
[1, 'rgb(0, 0, 0)']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderColor: '#000000',
|
|
||||||
borderWidth: 2,
|
|
||||||
className: 'dark-container',
|
|
||||||
plotBackgroundColor: 'rgba(255, 255, 255, .1)',
|
|
||||||
plotBorderColor: '#CCCCCC',
|
|
||||||
plotBorderWidth: 1
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#C0C0C0',
|
|
||||||
font: 'bold 16px "Trebuchet MS", Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
subtitle: {
|
|
||||||
style: {
|
|
||||||
color: '#666666',
|
|
||||||
font: 'bold 12px "Trebuchet MS", Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
gridLineColor: '#333333',
|
|
||||||
gridLineWidth: 1,
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#A0A0A0'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lineColor: '#A0A0A0',
|
|
||||||
tickColor: '#A0A0A0',
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#CCC',
|
|
||||||
fontWeight: 'bold',
|
|
||||||
fontSize: '12px',
|
|
||||||
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
gridLineColor: '#333333',
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#A0A0A0'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lineColor: '#A0A0A0',
|
|
||||||
minorTickInterval: null,
|
|
||||||
tickColor: '#A0A0A0',
|
|
||||||
tickWidth: 1,
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#CCC',
|
|
||||||
fontWeight: 'bold',
|
|
||||||
fontSize: '12px',
|
|
||||||
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
backgroundColor: 'rgba(0, 0, 0, 0.75)',
|
|
||||||
style: {
|
|
||||||
color: '#F0F0F0'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
toolbar: {
|
|
||||||
itemStyle: {
|
|
||||||
color: 'silver'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
plotOptions: {
|
|
||||||
line: {
|
|
||||||
dataLabels: {
|
|
||||||
color: '#CCC'
|
|
||||||
},
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
spline: {
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scatter: {
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
candlestick: {
|
|
||||||
lineColor: 'white'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
itemStyle: {
|
|
||||||
font: '9pt Trebuchet MS, Verdana, sans-serif',
|
|
||||||
color: '#A0A0A0'
|
|
||||||
},
|
|
||||||
itemHoverStyle: {
|
|
||||||
color: '#FFF'
|
|
||||||
},
|
|
||||||
itemHiddenStyle: {
|
|
||||||
color: '#444'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
credits: {
|
|
||||||
style: {
|
|
||||||
color: '#666'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#CCC'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
navigation: {
|
|
||||||
buttonOptions: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#606060'],
|
|
||||||
[0.6, '#333333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderColor: '#000000',
|
|
||||||
symbolStroke: '#C0C0C0',
|
|
||||||
hoverSymbolStroke: '#FFFFFF'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
exporting: {
|
|
||||||
buttons: {
|
|
||||||
exportButton: {
|
|
||||||
symbolFill: '#55BE3B'
|
|
||||||
},
|
|
||||||
printButton: {
|
|
||||||
symbolFill: '#7797BE'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// scroll charts
|
|
||||||
rangeSelector: {
|
|
||||||
buttonTheme: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: '#CCC',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
},
|
|
||||||
states: {
|
|
||||||
hover: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#BBB'],
|
|
||||||
[0.6, '#888']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: 'white'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
select: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.1, '#000'],
|
|
||||||
[0.3, '#333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: 'yellow'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
inputStyle: {
|
|
||||||
backgroundColor: '#333',
|
|
||||||
color: 'silver'
|
|
||||||
},
|
|
||||||
labelStyle: {
|
|
||||||
color: 'silver'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
navigator: {
|
|
||||||
handles: {
|
|
||||||
backgroundColor: '#666',
|
|
||||||
borderColor: '#AAA'
|
|
||||||
},
|
|
||||||
outlineColor: '#CCC',
|
|
||||||
maskFill: 'rgba(16, 16, 16, 0.5)',
|
|
||||||
series: {
|
|
||||||
color: '#7798BF',
|
|
||||||
lineColor: '#A6C7ED'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
scrollbar: {
|
|
||||||
barBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
barBorderColor: '#CCC',
|
|
||||||
buttonArrowColor: '#CCC',
|
|
||||||
buttonBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
buttonBorderColor: '#CCC',
|
|
||||||
rifleColor: '#FFF',
|
|
||||||
trackBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0, '#000'],
|
|
||||||
[1, '#333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
trackBorderColor: '#666'
|
|
||||||
},
|
|
||||||
|
|
||||||
// special colors for some of the
|
|
||||||
legendBackgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
||||||
legendBackgroundColorSolid: 'rgb(35, 35, 70)',
|
|
||||||
dataLabelsColor: '#444',
|
|
||||||
textColor: '#C0C0C0',
|
|
||||||
maskColor: 'rgba(255,255,255,0.3)'
|
|
||||||
};
|
|
||||||
|
|
||||||
// Apply the theme
|
|
||||||
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
/**
|
|
||||||
* Dark blue theme for Highcharts JS
|
|
||||||
* @author Torstein Hønsi
|
|
||||||
*/
|
|
||||||
|
|
||||||
Highcharts.theme = {
|
|
||||||
colors: ["#DDDF0D", "#55BF3B", "#DF5353", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee",
|
|
||||||
"#55BF3B", "#DF5353", "#7798BF", "#aaeeee"],
|
|
||||||
chart: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: [0, 0, 250, 500],
|
|
||||||
stops: [
|
|
||||||
[0, 'rgb(48, 96, 48)'],
|
|
||||||
[1, 'rgb(0, 0, 0)']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderColor: '#000000',
|
|
||||||
borderWidth: 2,
|
|
||||||
className: 'dark-container',
|
|
||||||
plotBackgroundColor: 'rgba(255, 255, 255, .1)',
|
|
||||||
plotBorderColor: '#CCCCCC',
|
|
||||||
plotBorderWidth: 1
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#C0C0C0',
|
|
||||||
font: 'bold 16px "Trebuchet MS", Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
subtitle: {
|
|
||||||
style: {
|
|
||||||
color: '#666666',
|
|
||||||
font: 'bold 12px "Trebuchet MS", Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
gridLineColor: '#333333',
|
|
||||||
gridLineWidth: 1,
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#A0A0A0'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lineColor: '#A0A0A0',
|
|
||||||
tickColor: '#A0A0A0',
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#CCC',
|
|
||||||
fontWeight: 'bold',
|
|
||||||
fontSize: '12px',
|
|
||||||
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
gridLineColor: '#333333',
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#A0A0A0'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lineColor: '#A0A0A0',
|
|
||||||
minorTickInterval: null,
|
|
||||||
tickColor: '#A0A0A0',
|
|
||||||
tickWidth: 1,
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#CCC',
|
|
||||||
fontWeight: 'bold',
|
|
||||||
fontSize: '12px',
|
|
||||||
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
backgroundColor: 'rgba(0, 0, 0, 0.75)',
|
|
||||||
style: {
|
|
||||||
color: '#F0F0F0'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
toolbar: {
|
|
||||||
itemStyle: {
|
|
||||||
color: 'silver'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
plotOptions: {
|
|
||||||
line: {
|
|
||||||
dataLabels: {
|
|
||||||
color: '#CCC'
|
|
||||||
},
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
spline: {
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scatter: {
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
candlestick: {
|
|
||||||
lineColor: 'white'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
itemStyle: {
|
|
||||||
font: '9pt Trebuchet MS, Verdana, sans-serif',
|
|
||||||
color: '#A0A0A0'
|
|
||||||
},
|
|
||||||
itemHoverStyle: {
|
|
||||||
color: '#FFF'
|
|
||||||
},
|
|
||||||
itemHiddenStyle: {
|
|
||||||
color: '#444'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
credits: {
|
|
||||||
style: {
|
|
||||||
color: '#666'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#CCC'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
navigation: {
|
|
||||||
buttonOptions: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#606060'],
|
|
||||||
[0.6, '#333333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderColor: '#000000',
|
|
||||||
symbolStroke: '#C0C0C0',
|
|
||||||
hoverSymbolStroke: '#FFFFFF'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
exporting: {
|
|
||||||
buttons: {
|
|
||||||
exportButton: {
|
|
||||||
symbolFill: '#55BE3B'
|
|
||||||
},
|
|
||||||
printButton: {
|
|
||||||
symbolFill: '#7797BE'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// scroll charts
|
|
||||||
rangeSelector: {
|
|
||||||
buttonTheme: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: '#CCC',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
},
|
|
||||||
states: {
|
|
||||||
hover: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#BBB'],
|
|
||||||
[0.6, '#888']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: 'white'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
select: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.1, '#000'],
|
|
||||||
[0.3, '#333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: 'yellow'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
inputStyle: {
|
|
||||||
backgroundColor: '#333',
|
|
||||||
color: 'silver'
|
|
||||||
},
|
|
||||||
labelStyle: {
|
|
||||||
color: 'silver'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
navigator: {
|
|
||||||
handles: {
|
|
||||||
backgroundColor: '#666',
|
|
||||||
borderColor: '#AAA'
|
|
||||||
},
|
|
||||||
outlineColor: '#CCC',
|
|
||||||
maskFill: 'rgba(16, 16, 16, 0.5)',
|
|
||||||
series: {
|
|
||||||
color: '#7798BF',
|
|
||||||
lineColor: '#A6C7ED'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
scrollbar: {
|
|
||||||
barBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
barBorderColor: '#CCC',
|
|
||||||
buttonArrowColor: '#CCC',
|
|
||||||
buttonBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
buttonBorderColor: '#CCC',
|
|
||||||
rifleColor: '#FFF',
|
|
||||||
trackBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0, '#000'],
|
|
||||||
[1, '#333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
trackBorderColor: '#666'
|
|
||||||
},
|
|
||||||
|
|
||||||
// special colors for some of the
|
|
||||||
legendBackgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
||||||
legendBackgroundColorSolid: 'rgb(35, 35, 70)',
|
|
||||||
dataLabelsColor: '#444',
|
|
||||||
textColor: '#C0C0C0',
|
|
||||||
maskColor: 'rgba(255,255,255,0.3)'
|
|
||||||
};
|
|
||||||
|
|
||||||
// Apply the theme
|
|
||||||
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
|
|
||||||
@@ -1,262 +0,0 @@
|
|||||||
/**
|
|
||||||
* Gray theme for Highcharts JS
|
|
||||||
* @author Torstein Hønsi
|
|
||||||
*/
|
|
||||||
|
|
||||||
Highcharts.theme = {
|
|
||||||
colors: ["#DDDF0D", "#7798BF", "#55BF3B", "#DF5353", "#aaeeee", "#ff0066", "#eeaaee",
|
|
||||||
"#55BF3B", "#DF5353", "#7798BF", "#aaeeee"],
|
|
||||||
chart: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0, 'rgb(96, 96, 96)'],
|
|
||||||
[1, 'rgb(16, 16, 16)']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderWidth: 0,
|
|
||||||
borderRadius: 15,
|
|
||||||
plotBackgroundColor: null,
|
|
||||||
plotShadow: false,
|
|
||||||
plotBorderWidth: 0
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#FFF',
|
|
||||||
font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
subtitle: {
|
|
||||||
style: {
|
|
||||||
color: '#DDD',
|
|
||||||
font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
gridLineWidth: 0,
|
|
||||||
lineColor: '#999',
|
|
||||||
tickColor: '#999',
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#999',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#AAA',
|
|
||||||
font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
alternateGridColor: null,
|
|
||||||
minorTickInterval: null,
|
|
||||||
gridLineColor: 'rgba(255, 255, 255, .1)',
|
|
||||||
lineWidth: 0,
|
|
||||||
tickWidth: 0,
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#999',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#AAA',
|
|
||||||
font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
itemStyle: {
|
|
||||||
color: '#CCC'
|
|
||||||
},
|
|
||||||
itemHoverStyle: {
|
|
||||||
color: '#FFF'
|
|
||||||
},
|
|
||||||
itemHiddenStyle: {
|
|
||||||
color: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#CCC'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0, 'rgba(96, 96, 96, .8)'],
|
|
||||||
[1, 'rgba(16, 16, 16, .8)']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderWidth: 0,
|
|
||||||
style: {
|
|
||||||
color: '#FFF'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
plotOptions: {
|
|
||||||
line: {
|
|
||||||
dataLabels: {
|
|
||||||
color: '#CCC'
|
|
||||||
},
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
spline: {
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scatter: {
|
|
||||||
marker: {
|
|
||||||
lineColor: '#333'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
candlestick: {
|
|
||||||
lineColor: 'white'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
toolbar: {
|
|
||||||
itemStyle: {
|
|
||||||
color: '#CCC'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
navigation: {
|
|
||||||
buttonOptions: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#606060'],
|
|
||||||
[0.6, '#333333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderColor: '#000000',
|
|
||||||
symbolStroke: '#C0C0C0',
|
|
||||||
hoverSymbolStroke: '#FFFFFF'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
exporting: {
|
|
||||||
buttons: {
|
|
||||||
exportButton: {
|
|
||||||
symbolFill: '#55BE3B'
|
|
||||||
},
|
|
||||||
printButton: {
|
|
||||||
symbolFill: '#7797BE'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// scroll charts
|
|
||||||
rangeSelector: {
|
|
||||||
buttonTheme: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: '#CCC',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
},
|
|
||||||
states: {
|
|
||||||
hover: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#BBB'],
|
|
||||||
[0.6, '#888']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: 'white'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
select: {
|
|
||||||
fill: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.1, '#000'],
|
|
||||||
[0.3, '#333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
stroke: '#000000',
|
|
||||||
style: {
|
|
||||||
color: 'yellow'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
inputStyle: {
|
|
||||||
backgroundColor: '#333',
|
|
||||||
color: 'silver'
|
|
||||||
},
|
|
||||||
labelStyle: {
|
|
||||||
color: 'silver'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
navigator: {
|
|
||||||
handles: {
|
|
||||||
backgroundColor: '#666',
|
|
||||||
borderColor: '#AAA'
|
|
||||||
},
|
|
||||||
outlineColor: '#CCC',
|
|
||||||
maskFill: 'rgba(16, 16, 16, 0.5)',
|
|
||||||
series: {
|
|
||||||
color: '#7798BF',
|
|
||||||
lineColor: '#A6C7ED'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
scrollbar: {
|
|
||||||
barBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
barBorderColor: '#CCC',
|
|
||||||
buttonArrowColor: '#CCC',
|
|
||||||
buttonBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0.4, '#888'],
|
|
||||||
[0.6, '#555']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
buttonBorderColor: '#CCC',
|
|
||||||
rifleColor: '#FFF',
|
|
||||||
trackBackgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0, '#000'],
|
|
||||||
[1, '#333']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
trackBorderColor: '#666'
|
|
||||||
},
|
|
||||||
|
|
||||||
// special colors for some of the demo examples
|
|
||||||
legendBackgroundColor: 'rgba(48, 48, 48, 0.8)',
|
|
||||||
legendBackgroundColorSolid: 'rgb(70, 70, 70)',
|
|
||||||
dataLabelsColor: '#444',
|
|
||||||
textColor: '#E0E0E0',
|
|
||||||
maskColor: 'rgba(255,255,255,0.3)'
|
|
||||||
};
|
|
||||||
|
|
||||||
// Apply the theme
|
|
||||||
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
/**
|
|
||||||
* Grid theme for Highcharts JS
|
|
||||||
* @author Torstein Hønsi
|
|
||||||
*/
|
|
||||||
|
|
||||||
Highcharts.theme = {
|
|
||||||
colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'],
|
|
||||||
chart: {
|
|
||||||
backgroundColor: {
|
|
||||||
linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 },
|
|
||||||
stops: [
|
|
||||||
[0, 'rgb(255, 255, 255)'],
|
|
||||||
[1, 'rgb(240, 240, 255)']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
borderWidth: 2,
|
|
||||||
plotBackgroundColor: 'rgba(255, 255, 255, .9)',
|
|
||||||
plotShadow: true,
|
|
||||||
plotBorderWidth: 1
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#000',
|
|
||||||
font: 'bold 16px "Trebuchet MS", Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
subtitle: {
|
|
||||||
style: {
|
|
||||||
color: '#666666',
|
|
||||||
font: 'bold 12px "Trebuchet MS", Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
gridLineWidth: 1,
|
|
||||||
lineColor: '#000',
|
|
||||||
tickColor: '#000',
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#000',
|
|
||||||
font: '11px Trebuchet MS, Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#333',
|
|
||||||
fontWeight: 'bold',
|
|
||||||
fontSize: '12px',
|
|
||||||
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
minorTickInterval: 'auto',
|
|
||||||
lineColor: '#000',
|
|
||||||
lineWidth: 1,
|
|
||||||
tickWidth: 1,
|
|
||||||
tickColor: '#000',
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#000',
|
|
||||||
font: '11px Trebuchet MS, Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#333',
|
|
||||||
fontWeight: 'bold',
|
|
||||||
fontSize: '12px',
|
|
||||||
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
itemStyle: {
|
|
||||||
font: '9pt Trebuchet MS, Verdana, sans-serif',
|
|
||||||
color: 'black'
|
|
||||||
|
|
||||||
},
|
|
||||||
itemHoverStyle: {
|
|
||||||
color: '#039'
|
|
||||||
},
|
|
||||||
itemHiddenStyle: {
|
|
||||||
color: 'gray'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#99b'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Apply the theme
|
|
||||||
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
/**
|
|
||||||
* Skies theme for Highcharts JS
|
|
||||||
* @author Torstein Hønsi
|
|
||||||
*/
|
|
||||||
|
|
||||||
Highcharts.theme = {
|
|
||||||
colors: ["#514F78", "#42A07B", "#9B5E4A", "#72727F", "#1F949A", "#82914E", "#86777F", "#42A07B"],
|
|
||||||
chart: {
|
|
||||||
className: 'skies',
|
|
||||||
borderWidth: 0,
|
|
||||||
plotShadow: true,
|
|
||||||
plotBackgroundImage: '/demo/gfx/skies.jpg',
|
|
||||||
plotBackgroundColor: {
|
|
||||||
linearGradient: [0, 0, 250, 500],
|
|
||||||
stops: [
|
|
||||||
[0, 'rgba(255, 255, 255, 1)'],
|
|
||||||
[1, 'rgba(255, 255, 255, 0)']
|
|
||||||
]
|
|
||||||
},
|
|
||||||
plotBorderWidth: 1
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#3E576F',
|
|
||||||
font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
subtitle: {
|
|
||||||
style: {
|
|
||||||
color: '#6D869F',
|
|
||||||
font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
gridLineWidth: 0,
|
|
||||||
lineColor: '#C0D0E0',
|
|
||||||
tickColor: '#C0D0E0',
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#666',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#666',
|
|
||||||
font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
alternateGridColor: 'rgba(255, 255, 255, .5)',
|
|
||||||
lineColor: '#C0D0E0',
|
|
||||||
tickColor: '#C0D0E0',
|
|
||||||
tickWidth: 1,
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#666',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
style: {
|
|
||||||
color: '#666',
|
|
||||||
font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
itemStyle: {
|
|
||||||
font: '9pt Trebuchet MS, Verdana, sans-serif',
|
|
||||||
color: '#3E576F'
|
|
||||||
},
|
|
||||||
itemHoverStyle: {
|
|
||||||
color: 'black'
|
|
||||||
},
|
|
||||||
itemHiddenStyle: {
|
|
||||||
color: 'silver'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labels: {
|
|
||||||
style: {
|
|
||||||
color: '#3E576F'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Apply the theme
|
|
||||||
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
///#source 1 1 /ClientSource/Scripts/Modules/jQuery-SignalR/jquery.signalR-1.1.0.js
|
///#source 1 1 /ClientSource/Scripts/Modules/jQuery-SignalR/jquery.signalR-1.1.2.js
|
||||||
/* jquery.signalR.core.js */
|
/* jquery.signalR.core.js */
|
||||||
/*global window:false */
|
/*global window:false */
|
||||||
/*!
|
/*!
|
||||||
* ASP.NET SignalR JavaScript Library v1.1.0
|
* ASP.NET SignalR JavaScript Library v1.1.2
|
||||||
* http://signalr.net/
|
* http://signalr.net/
|
||||||
*
|
*
|
||||||
* Copyright Microsoft Open Technologies, Inc. All rights reserved.
|
* Copyright Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
@@ -2120,6 +2120,6 @@
|
|||||||
/*global window:false */
|
/*global window:false */
|
||||||
/// <reference path="jquery.signalR.core.js" />
|
/// <reference path="jquery.signalR.core.js" />
|
||||||
(function ($) {
|
(function ($) {
|
||||||
$.signalR.version = "1.1.0";
|
$.signalR.version = "1.1.2";
|
||||||
}(window.jQuery));
|
}(window.jQuery));
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<bundle minify="true" runOnBuild="true">
|
<bundle minify="true" runOnBuild="true">
|
||||||
<file>/ClientSource/Scripts/Modules/jQuery-SignalR/jquery.signalR-1.1.0.js</file>
|
<file>/ClientSource/Scripts/Modules/jQuery-SignalR/jquery.signalR-1.1.2.js</file>
|
||||||
</bundle>
|
</bundle>
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
/* jquery.signalR.core.js */
|
/* jquery.signalR.core.js */
|
||||||
/*global window:false */
|
/*global window:false */
|
||||||
/*!
|
/*!
|
||||||
* ASP.NET SignalR JavaScript Library v1.1.0
|
* ASP.NET SignalR JavaScript Library v1.1.2
|
||||||
* http://signalr.net/
|
* http://signalr.net/
|
||||||
*
|
*
|
||||||
* Copyright Microsoft Open Technologies, Inc. All rights reserved.
|
* Copyright Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
@@ -2119,5 +2119,5 @@
|
|||||||
/*global window:false */
|
/*global window:false */
|
||||||
/// <reference path="jquery.signalR.core.js" />
|
/// <reference path="jquery.signalR.core.js" />
|
||||||
(function ($) {
|
(function ($) {
|
||||||
$.signalR.version = "1.1.0";
|
$.signalR.version = "1.1.2";
|
||||||
}(window.jQuery));
|
}(window.jQuery));
|
||||||
+47
-48
@@ -43,20 +43,21 @@
|
|||||||
<UseVSHostingProcess>true</UseVSHostingProcess>
|
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="DotNet.Highcharts">
|
<Reference Include="DotNet.Highcharts, Version=1.1.0.0, Culture=neutral, PublicKeyToken=88854f873df851bf, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\DotNet.Highcharts.1.2\lib\DotNet.Highcharts.dll</HintPath>
|
<HintPath>..\packages\DotNet.Highcharts.1.2\lib\DotNet.Highcharts.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Core.1.1.0\lib\net40\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.Core.1.1.2\lib\net40\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.Owin, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.SignalR.Owin, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Owin.1.1.0\lib\net45\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.Owin.1.1.2\lib\net45\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.SignalR.SystemWeb, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.SignalR.SystemWeb, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.1.1.0\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.1.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="Microsoft.Owin.Host.SystemWeb">
|
<Reference Include="Microsoft.Owin.Host.SystemWeb">
|
||||||
@@ -92,6 +93,15 @@
|
|||||||
<Reference Include="System.IO.Compression" />
|
<Reference Include="System.IO.Compression" />
|
||||||
<Reference Include="System.IO.Compression.FileSystem" />
|
<Reference Include="System.IO.Compression.FileSystem" />
|
||||||
<Reference Include="System.Management" />
|
<Reference Include="System.Management" />
|
||||||
|
<Reference Include="System.Net.Http.Extensions">
|
||||||
|
<HintPath>..\packages\Microsoft.Net.Http.2.1.10\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net.Http.Primitives">
|
||||||
|
<HintPath>..\packages\Microsoft.Net.Http.2.1.10\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Reactive.Core">
|
<Reference Include="System.Reactive.Core">
|
||||||
<HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath>
|
<HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@@ -110,9 +120,35 @@
|
|||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<Private>True</Private>
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<Private>True</Private>
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<Private>True</Private>
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<Private>True</Private>
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<Private>True</Private>
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
@@ -133,40 +169,11 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http">
|
<Reference Include="System.Net.Http">
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Net.Http.WebRequest">
|
<Reference Include="System.Net.Http.WebRequest">
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<Private>True</Private>
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.20710.0\lib\net40\System.Web.Http.WebHost.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<Private>True</Private>
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.20710.0\lib\net40\System.Web.Mvc.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<Private>True</Private>
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<Private>True</Private>
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<Private>True</Private>
|
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="T4MVCExtensions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=7b26dc2a43f6a0d4, processorArchitecture=MSIL">
|
<Reference Include="T4MVCExtensions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=7b26dc2a43f6a0d4, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\T4MVCExtensions.3.6.4\lib\net40\T4MVCExtensions.dll</HintPath>
|
<HintPath>..\packages\T4MVCExtensions.3.6.5\lib\net40\T4MVCExtensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="WebActivatorEx">
|
<Reference Include="WebActivatorEx">
|
||||||
<HintPath>..\packages\WebActivatorEx.2.0.1\lib\net40\WebActivatorEx.dll</HintPath>
|
<HintPath>..\packages\WebActivatorEx.2.0.1\lib\net40\WebActivatorEx.dll</HintPath>
|
||||||
@@ -806,7 +813,7 @@
|
|||||||
<DependentUpon>Disco-AjaxHelperIcons.js.bundle</DependentUpon>
|
<DependentUpon>Disco-AjaxHelperIcons.js.bundle</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
<None Include="ClientSource\Scripts\Core\jquery-ui-1.10.3.js" />
|
<None Include="ClientSource\Scripts\Core\jquery-ui-1.10.3.js" />
|
||||||
<None Include="ClientSource\Scripts\Core\jquery-2.0.0.js" />
|
<None Include="ClientSource\Scripts\Core\jquery-2.0.2.js" />
|
||||||
<Content Include="ClientSource\Scripts\Modules\Disco-AjaxHelperIcons.min.js">
|
<Content Include="ClientSource\Scripts\Modules\Disco-AjaxHelperIcons.min.js">
|
||||||
<DependentUpon>Disco-AjaxHelperIcons.js.bundle</DependentUpon>
|
<DependentUpon>Disco-AjaxHelperIcons.js.bundle</DependentUpon>
|
||||||
</Content>
|
</Content>
|
||||||
@@ -834,16 +841,6 @@
|
|||||||
<None Include="ClientSource\Scripts\Modules\Highcharts.min.js.map">
|
<None Include="ClientSource\Scripts\Modules\Highcharts.min.js.map">
|
||||||
<DependentUpon>Highcharts.js.bundle</DependentUpon>
|
<DependentUpon>Highcharts.js.bundle</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\highcharts.src.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\modules\canvas-tools.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\modules\canvas-tools.src.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\modules\exporting.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\modules\exporting.src.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\themes\dark-blue.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\themes\dark-green.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\themes\gray.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\themes\grid.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Highcharts\themes\skies.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\jQuery-Isotope.min.js.map">
|
<None Include="ClientSource\Scripts\Modules\jQuery-Isotope.min.js.map">
|
||||||
<DependentUpon>jQuery-Isotope.js.bundle</DependentUpon>
|
<DependentUpon>jQuery-Isotope.js.bundle</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
@@ -932,7 +929,6 @@
|
|||||||
<None Include="ClientSource\Scripts\Modules\jQueryUI-DynaTree.js">
|
<None Include="ClientSource\Scripts\Modules\jQueryUI-DynaTree.js">
|
||||||
<DependentUpon>jQueryUI-DynaTree.js.bundle</DependentUpon>
|
<DependentUpon>jQueryUI-DynaTree.js.bundle</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
<Content Include="ClientSource\Scripts\Modules\jQuery-SignalR\jquery.signalR-1.1.0.js" />
|
|
||||||
<Content Include="ClientSource\Scripts\Modules\jQueryUI-DynaTree.min.js">
|
<Content Include="ClientSource\Scripts\Modules\jQueryUI-DynaTree.min.js">
|
||||||
<DependentUpon>jQueryUI-DynaTree.js.bundle</DependentUpon>
|
<DependentUpon>jQueryUI-DynaTree.js.bundle</DependentUpon>
|
||||||
</Content>
|
</Content>
|
||||||
@@ -1309,7 +1305,6 @@
|
|||||||
</None>
|
</None>
|
||||||
<None Include="Properties\PublishProfiles\HADES3.pubxml" />
|
<None Include="Properties\PublishProfiles\HADES3.pubxml" />
|
||||||
<None Include="ClientSource\Scripts\Core\jquery.validate.js" />
|
<None Include="ClientSource\Scripts\Core\jquery.validate.js" />
|
||||||
<None Include="ClientSource\Scripts\Core\jquery.validate.unobtrusive.js" />
|
|
||||||
<None Include="ClientSource\Scripts\Modules\Knockout\knockout-2.2.1.js" />
|
<None Include="ClientSource\Scripts\Modules\Knockout\knockout-2.2.1.js" />
|
||||||
<None Include="ClientSource\Scripts\Modules\tinymce\jquery.tinymce.js" />
|
<None Include="ClientSource\Scripts\Modules\tinymce\jquery.tinymce.js" />
|
||||||
<Content Include="ClientSource\Scripts\Modules\tinymce\langs\en.js" />
|
<Content Include="ClientSource\Scripts\Modules\tinymce\langs\en.js" />
|
||||||
@@ -1381,6 +1376,9 @@
|
|||||||
<Content Include="ClientSource\Scripts\Modules\tinymce\utils\form_utils.js" />
|
<Content Include="ClientSource\Scripts\Modules\tinymce\utils\form_utils.js" />
|
||||||
<Content Include="ClientSource\Scripts\Modules\tinymce\utils\mctabs.js" />
|
<Content Include="ClientSource\Scripts\Modules\tinymce\utils\mctabs.js" />
|
||||||
<Content Include="ClientSource\Scripts\Modules\tinymce\utils\validate.js" />
|
<Content Include="ClientSource\Scripts\Modules\tinymce\utils\validate.js" />
|
||||||
|
<None Include="ClientSource\Scripts\Core\jquery.validate.unobtrusive.js" />
|
||||||
|
<None Include="ClientSource\Scripts\Modules\Highcharts\highcharts.src.js" />
|
||||||
|
<None Include="ClientSource\Scripts\Modules\jQuery-SignalR\jquery.signalR-1.1.2.js" />
|
||||||
<None Include="T4MVC.tt.hooks.t4" />
|
<None Include="T4MVC.tt.hooks.t4" />
|
||||||
<Content Include="T4MVC.tt">
|
<Content Include="T4MVC.tt">
|
||||||
<Generator>TextTemplatingFileGenerator</Generator>
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
@@ -1867,6 +1865,7 @@
|
|||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||||
|
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|||||||
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
|||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.2.0527.1408")]
|
[assembly: AssemblyVersion("1.2.0603.2017")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0527.1408")]
|
[assembly: AssemblyFileVersion("1.2.0603.2017")]
|
||||||
+2
-2
@@ -145,7 +145,7 @@ namespace Links
|
|||||||
|
|
||||||
public static readonly string disco_unobtrusiveValidation_extensions_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/disco.unobtrusiveValidation.extensions.min.js") ? Url("disco.unobtrusiveValidation.extensions.min.js") : Url("disco.unobtrusiveValidation.extensions.js");
|
public static readonly string disco_unobtrusiveValidation_extensions_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/disco.unobtrusiveValidation.extensions.min.js") ? Url("disco.unobtrusiveValidation.extensions.min.js") : Url("disco.unobtrusiveValidation.extensions.js");
|
||||||
|
|
||||||
public static readonly string jquery_2_0_0_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery-2.0.0.min.js") ? Url("jquery-2.0.0.min.js") : Url("jquery-2.0.0.js");
|
public static readonly string jquery_2_0_2_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery-2.0.2.min.js") ? Url("jquery-2.0.2.min.js") : Url("jquery-2.0.2.js");
|
||||||
|
|
||||||
public static readonly string jquery_ui_1_10_3_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery-ui-1.10.3.min.js") ? Url("jquery-ui-1.10.3.min.js") : Url("jquery-ui-1.10.3.js");
|
public static readonly string jquery_ui_1_10_3_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery-ui-1.10.3.min.js") ? Url("jquery-ui-1.10.3.min.js") : Url("jquery-ui-1.10.3.js");
|
||||||
|
|
||||||
@@ -336,7 +336,7 @@ namespace Links
|
|||||||
private const string URLPATH = "~/ClientSource/Scripts/Modules/jQuery-SignalR";
|
private const string URLPATH = "~/ClientSource/Scripts/Modules/jQuery-SignalR";
|
||||||
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
|
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
|
||||||
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
|
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
|
||||||
public static readonly string jquery_signalR_1_1_0_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery.signalR-1.1.0.min.js") ? Url("jquery.signalR-1.1.0.min.js") : Url("jquery.signalR-1.1.0.js");
|
public static readonly string jquery_signalR_1_1_2_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery.signalR-1.1.2.min.js") ? Url("jquery.signalR-1.1.2.min.js") : Url("jquery.signalR-1.1.2.js");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-3
@@ -1,6 +1,6 @@
|
|||||||
<#
|
<#
|
||||||
/*
|
/*
|
||||||
T4MVC Version 3.6.4
|
T4MVC Version 3.6.5
|
||||||
Find latest version and documentation at http://mvccontrib.codeplex.com/wikipage?title=T4MVC
|
Find latest version and documentation at http://mvccontrib.codeplex.com/wikipage?title=T4MVC
|
||||||
Discuss on StackOverflow or on Codeplex (https://t4mvc.codeplex.com/discussions)
|
Discuss on StackOverflow or on Codeplex (https://t4mvc.codeplex.com/discussions)
|
||||||
|
|
||||||
@@ -1732,8 +1732,11 @@ class ResultTypeInfo
|
|||||||
{
|
{
|
||||||
_codeType = codeType;
|
_codeType = codeType;
|
||||||
|
|
||||||
var ctor = _codeType.Members.OfType<CodeFunction2>().FirstOrDefault(
|
// Use the constructor with the least number of parameters
|
||||||
f => f.FunctionKind == vsCMFunction.vsCMFunctionConstructor);
|
var ctor = _codeType.Members.OfType<CodeFunction2>()
|
||||||
|
.Where(f => f.FunctionKind == vsCMFunction.vsCMFunctionConstructor)
|
||||||
|
.OrderBy(f => f.Parameters.Count)
|
||||||
|
.FirstOrDefault();
|
||||||
Constructor = new FunctionInfo(ctor);
|
Constructor = new FunctionInfo(ctor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+20
-18
@@ -3,25 +3,27 @@
|
|||||||
<package id="DotNet.Highcharts" version="1.2" targetFramework="net45" />
|
<package id="DotNet.Highcharts" version="1.2" targetFramework="net45" />
|
||||||
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
|
||||||
<package id="EntityFramework.SqlServerCompact" version="4.3.6" targetFramework="net45" />
|
<package id="EntityFramework.SqlServerCompact" version="4.3.6" targetFramework="net45" />
|
||||||
<package id="jQuery" version="2.0.0" targetFramework="net45" />
|
<package id="jQuery" version="2.0.1.1" targetFramework="net45" />
|
||||||
<package id="jQuery.UI.Combined" version="1.10.2" targetFramework="net45" />
|
<package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
|
||||||
<package id="jQuery.UI.Themes.lightness" version="1.8.22" targetFramework="net45" />
|
<package id="jQuery.UI.Themes.lightness" version="1.8.22" targetFramework="net45" />
|
||||||
<package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
|
<package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
|
||||||
<package id="knockoutjs" version="2.2.1" targetFramework="net45" />
|
<package id="knockoutjs" version="2.2.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.Razor" version="2.0.20715.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Razor" version="2.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.Core" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.Core" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.JS" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.JS" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.Owin" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.Owin" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.1.2" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.WebApi" version="4.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi" version="4.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.WebPages" version="2.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebPages" version="2.0.30506.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.30116.0" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.0.19" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.6" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.30506.0" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Net.Http" version="2.1.10" targetFramework="net45" />
|
||||||
<package id="Microsoft.Owin.Host.SystemWeb" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.Owin.Host.SystemWeb" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net45" />
|
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
||||||
@@ -35,8 +37,8 @@
|
|||||||
<package id="Rx-Main" version="2.1.30214.0" targetFramework="net45" />
|
<package id="Rx-Main" version="2.1.30214.0" targetFramework="net45" />
|
||||||
<package id="Rx-PlatformServices" version="2.1.30214.0" targetFramework="net45" />
|
<package id="Rx-PlatformServices" version="2.1.30214.0" targetFramework="net45" />
|
||||||
<package id="SqlServerCompact" version="4.0.8854.1" targetFramework="net45" />
|
<package id="SqlServerCompact" version="4.0.8854.1" targetFramework="net45" />
|
||||||
<package id="T4MVC" version="3.6.4" targetFramework="net45" />
|
<package id="T4MVC" version="3.6.5" targetFramework="net45" />
|
||||||
<package id="T4MVCExtensions" version="3.6.4" targetFramework="net45" />
|
<package id="T4MVCExtensions" version="3.6.5" targetFramework="net45" />
|
||||||
<package id="TinyMCE" version="3.5.8" targetFramework="net45" />
|
<package id="TinyMCE" version="3.5.8" targetFramework="net45" />
|
||||||
<package id="TinyMCE.JQuery" version="3.5.8" targetFramework="net45" />
|
<package id="TinyMCE.JQuery" version="3.5.8" targetFramework="net45" />
|
||||||
<package id="WebActivatorEx" version="2.0.1" targetFramework="net45" />
|
<package id="WebActivatorEx" version="2.0.1" targetFramework="net45" />
|
||||||
|
|||||||
Reference in New Issue
Block a user