Skip to content

Commit 9e084be

Browse files
App insights clientside (#705)
Co-authored-by: devkokov <dm.kokov@gmail.com>
1 parent 9f40e2c commit 9e084be

File tree

9 files changed

+199
-16
lines changed

9 files changed

+199
-16
lines changed

assets/js/appInsights.js

+13-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
import { ApplicationInsights } from '@microsoft/applicationinsights-web'
22
import { ClickAnalyticsPlugin } from '@microsoft/applicationinsights-clickanalytics-js'
33

4-
document.addEventListener('DOMContentLoaded', function () {
5-
if (!applicationInsightsConnectionString) {
4+
document.initialiseTelemetry = (
5+
applicationInsightsConnectionString,
6+
applicationInsightsRoleName,
7+
assessmentId,
8+
assessmentVersion,
9+
userId,
10+
sectionCode,
11+
) => {
12+
if (!Boolean(applicationInsightsConnectionString)) {
613
console.log('AppInsights not configured')
7-
return
14+
return
815
}
916

1017
console.log('Configuring AppInsights')
@@ -18,11 +25,12 @@ document.addEventListener('DOMContentLoaded', function () {
1825
config: {
1926
connectionString: applicationInsightsConnectionString,
2027
autoTrackPageVisitTime: true,
28+
// extensions: [clickPluginInstance],
2129
extensionConfig: {
2230
[clickPluginInstance.identifier]: clickPluginConfig
2331
},
2432
}
25-
})
33+
})
2634

2735
const telemetryInitializer = (envelope) => {
2836
envelope.tags["ai.cloud.role"] = applicationInsightsRoleName
@@ -42,4 +50,4 @@ document.addEventListener('DOMContentLoaded', function () {
4250
name: 'AutoSaved',
4351
})
4452
})
45-
})
53+
}

assets/js/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as mojFrontend from '@ministryofjustice/frontend'
33
import accessibleAutocomplete from 'accessible-autocomplete'
44
import './save-on-exit'
55
import './modules'
6+
import './appInsights'
67

78
govukFrontend.initAll()
89
mojFrontend.initAll()

docker-compose.test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services:
55
HMPPS_AUTH_EXTERNAL_URL: http://hmpps-auth:9090/auth
66
HMPPS_ARNS_HANDOVER_EXTERNAL_URL: http://arns-handover:7070
77
OASYS_URL: http://oasys-ui:3000
8-
KEEP_ALIVE: 30000
8+
KEEP_ALIVE: 30000
99

1010
arns-handover:
1111
environment:

package-lock.json

+170
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/middleware/setUpWebSecurity.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default function setUpWebSecurity(): Router {
1717
helmet({
1818
contentSecurityPolicy: {
1919
directives: {
20-
defaultSrc: ["'self'", 'js.monitor.azure.com', '*.applicationinsights.azure.com'],
20+
defaultSrc: ["'self'", 'js.monitor.azure.com', '*.applicationinsights.azure.com/v2/track'],
2121
// This nonce allows us to use scripts with the use of the `cspNonce` local, e.g (in a Nunjucks template):
2222
// <script nonce="{{ cspNonce }}">
2323
// or

server/views/forms/default.njk

-4
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,3 @@
7575
</form>
7676
</div>
7777
{% endblock %}
78-
79-
{% block bodyEnd %}
80-
<script type="module" src="/assets/js/app.js"></script>
81-
{% endblock %}

server/views/forms/layout.njk

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
</nav>
7272
</div>
7373
<div class="govuk-grid-column-three-quarters">
74-
{% block backLink %}
74+
{% block backLink %}
7575
{% endblock %}
7676
{%- if errors | length -%}
7777
{{ govukErrorSummary({

server/views/forms/summary.njk

-4
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,3 @@
6767
<p class="govuk-body">This section is incomplete</p>
6868
{% endif %}
6969
{% endblock %}
70-
71-
{% block bodyEnd %}
72-
<script type="module" src="/assets/js/app.js"></script>
73-
{% endblock %}

server/views/partials/layout.njk

+12
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@
2828

2929
{% block bodyEnd %}
3030
<script type="module" src="/assets/js/app.js"></script>
31+
<script nonce="{{ cspNonce }}">
32+
document.addEventListener('DOMContentLoaded', function () {
33+
document.initialiseTelemetry(
34+
'{{ applicationInsightsConnectionString | default('') }}',
35+
'{{ applicationInsightsRoleName }}',
36+
'{{ sessionData.assessmentId }}',
37+
'{{ assessmentVersion }}',
38+
'{{ sessionData.user.identifier }}',
39+
'{{ form.section }}',
40+
)
41+
})
42+
</script>
3143
{% endblock %}
3244

3345
{% block footer %}

0 commit comments

Comments
 (0)