1
0
Форкнуть 0

Merge pull request #70 from Microsoft/sergkanz/htmlhelpter

use htmlhelpter in cshtml
This commit is contained in:
Sergey Kanzhelev 2015-05-08 10:13:55 -07:00
Родитель 058e283c42 e0d8b21e30
Коммит cf631db1cb
6 изменённых файлов: 44 добавлений и 36 удалений

Просмотреть файл

@ -1,19 +1,15 @@

namespace Microsoft.ApplicationInsights.AspNet.JavaScript
namespace Microsoft.ApplicationInsights.AspNet
{
using System;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.AspNet.Mvc.Rendering;
/// <summary>
/// This class helps to inject Application Insights JavaScript snippet into applicaiton code.
/// Usage:
/// Inject an instance of the class into your razor code using code:
/// @inject Microsoft.ApplicationInsights.AspNet.JavaScript.IJavaScriptSnippet ApplicationInsightsJavaScript
/// Place this code fragment just before closing "head" tag
/// @Html.Raw(ApplicationInsightsJavaScript.Write())
/// &lt;/head&gt;
/// </summary>
public class ApplicationInsightsJavaScript : IJavaScriptSnippet
public class JavaScriptSnippet
{
/// <summary>
/// Prefix of the code snippet. Use it if you need to initialize additional properties in javascript configuration.
@ -41,7 +37,7 @@ namespace Microsoft.ApplicationInsights.AspNet.JavaScript
private TelemetryConfiguration telemetryConfiguration;
public ApplicationInsightsJavaScript(TelemetryConfiguration telemetryConfiguration)
public JavaScriptSnippet(TelemetryConfiguration telemetryConfiguration)
{
this.telemetryConfiguration = telemetryConfiguration;
}
@ -50,17 +46,20 @@ namespace Microsoft.ApplicationInsights.AspNet.JavaScript
/// Returns code snippet with instrumentation key initialized from TelemetryConfiguration.
/// </summary>
/// <returns>JavaScript code snippet with instrumentation key or empty if instrumentation key was not set for the applicaiton.</returns>
public string Write()
public string FullScript
{
if (!string.IsNullOrEmpty(this.telemetryConfiguration.InstrumentationKey))
get
{
return ScriptPrefix + @"{
if (!string.IsNullOrEmpty(this.telemetryConfiguration.InstrumentationKey))
{
return ScriptPrefix + @"{
instrumentationKey: '" + this.telemetryConfiguration.InstrumentationKey + @"'
}" + ScriptPostfix;
}
else
{
return string.Empty;
}
else
{
return string.Empty;
}
}
}
}

Просмотреть файл

@ -6,7 +6,6 @@
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.AspNet;
using Microsoft.ApplicationInsights.AspNet.ContextInitializers;
using Microsoft.ApplicationInsights.AspNet.JavaScript;
using Microsoft.ApplicationInsights.AspNet.TelemetryInitializers;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.DataContracts;
@ -55,8 +54,6 @@
return telemetryConfiguration;
});
services.AddSingleton<IJavaScriptSnippet, ApplicationInsightsJavaScript>();
services.AddScoped<TelemetryClient>();
services.AddScoped<RequestTelemetry>((svcs) => {

Просмотреть файл

@ -0,0 +1,20 @@
namespace Microsoft.AspNet.Mvc.Rendering
{
using Microsoft.ApplicationInsights.AspNet;
using Microsoft.ApplicationInsights.Extensibility;
public static class ApplicationInsightsJavaScriptExtensions
{
/// <summary>
/// Extension method to inject Application Insights JavaScript snippet into cshml files.
/// </summary>
/// <param name="helper">Html helper object to align with razor code style.</param>
/// <param name="configuration">Telemetry configuraiton to initialize snippet.</param>
/// <returns>JavaScript snippt to insert into html page.</returns>
public static HtmlString ApplicationInsightsJavaScript(this IHtmlHelper helper, TelemetryConfiguration configuration)
{
JavaScriptSnippet snippet = new JavaScriptSnippet(configuration);
return new HtmlString(snippet.FullScript);
}
}
}

Просмотреть файл

@ -1,8 +0,0 @@

namespace Microsoft.ApplicationInsights.AspNet.JavaScript
{
public interface IJavaScriptSnippet
{
string Write();
}
}

Просмотреть файл

@ -1,6 +1,6 @@
namespace Microsoft.Framework.DependencyInjection
{
using Microsoft.ApplicationInsights.AspNet.JavaScript;
using Microsoft.ApplicationInsights.AspNet;
using Microsoft.ApplicationInsights.Extensibility;
using Xunit;
@ -10,16 +10,16 @@
public static void SnippetWillBeEmptyWhenInstrumentationKeyIsNotDefined()
{
var telemetryConfigurationWithNullKey = new TelemetryConfiguration();
var snippet = new ApplicationInsightsJavaScript(telemetryConfigurationWithNullKey);
Assert.Equal(string.Empty, snippet.Write());
var snippet = new JavaScriptSnippet(telemetryConfigurationWithNullKey);
Assert.Equal(string.Empty, snippet.FullScript.ToString());
}
[Fact]
public static void SnippetWillBeEmptyWhenInstrumentationKeyIsEmpty()
{
var telemetryConfigurationWithEmptyKey = new TelemetryConfiguration { InstrumentationKey = string.Empty };
var snippet = new ApplicationInsightsJavaScript(telemetryConfigurationWithEmptyKey);
Assert.Equal(string.Empty, snippet.Write());
var snippet = new JavaScriptSnippet(telemetryConfigurationWithEmptyKey);
Assert.Equal(string.Empty, snippet.FullScript.ToString());
}
@ -28,8 +28,8 @@
{
string unittestkey = "unittestkey";
var telemetryConfiguration = new TelemetryConfiguration { InstrumentationKey = unittestkey };
var snippet = new ApplicationInsightsJavaScript(telemetryConfiguration);
Assert.Contains("'" + unittestkey + "'", snippet.Write());
var snippet = new JavaScriptSnippet(telemetryConfiguration);
Assert.Contains("'" + unittestkey + "'", snippet.FullScript.ToString());
}
}
}

Просмотреть файл

@ -1,5 +1,5 @@
@inject IOptions<AppSettings> AppSettings
@inject Microsoft.ApplicationInsights.AspNet.JavaScript.IJavaScriptSnippet ApplicationInsightsJavaScript
@inject Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration TelemetryConfiguration
<!DOCTYPE html>
<html>
<head>
@ -21,7 +21,7 @@
asp-fallback-test-class="carousel-caption" asp-fallback-test-property="display" asp-fallback-test-value="none" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
@Html.Raw(ApplicationInsightsJavaScript.Write())
@Html.ApplicationInsightsJavaScript(TelemetryConfiguration)
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">