Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task: Add device characteristics telemetry #2056

Merged
merged 29 commits into from
Aug 31, 2022
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
25a4a26
Add upgraded packages
Aug 18, 2022
538bf82
Collect device characteristics telemetry
MaryannGitonga Aug 19, 2022
85075ae
Add flag to track telemetry
MaryannGitonga Aug 22, 2022
ed48c77
Merge branch 'dev' into task/add-device-telemetry
MaryannGitonga Aug 22, 2022
325317b
Revert changes in package.json
MaryannGitonga Aug 22, 2022
38592cc
Merge branch 'dev' of https://github.com/microsoftgraph/microsoft-gra…
MaryannGitonga Aug 22, 2022
34fd4dd
Merge branch 'task/add-device-telemetry' of https://github.com/micros…
MaryannGitonga Aug 22, 2022
acfd291
Remove additional packages and refactor logic
MaryannGitonga Aug 23, 2022
34e4871
Refactor device telemetry collection logic
MaryannGitonga Aug 23, 2022
6a05689
Merge branch 'dev' into task/add-device-telemetry
MaryannGitonga Aug 23, 2022
92ba755
Merge branch 'dev' into task/add-device-telemetry
MaryannGitonga Aug 23, 2022
c6c431f
Move getDeviceScreenSize to a util file
MaryannGitonga Aug 24, 2022
29dbd90
Merge branch 'dev' of https://github.com/microsoftgraph/microsoft-gra…
MaryannGitonga Aug 24, 2022
cc39e5f
Merge branch 'task/add-device-telemetry' of https://github.com/micros…
MaryannGitonga Aug 24, 2022
d016758
Merge branch 'dev' of https://github.com/microsoftgraph/microsoft-gra…
MaryannGitonga Aug 25, 2022
3d1aea8
Add browser dimensions and device pixel ratio
MaryannGitonga Aug 26, 2022
3fa3d36
Add tests for device characteristics telemetry functions
MaryannGitonga Aug 29, 2022
48778c8
Refactor onresize event
MaryannGitonga Aug 29, 2022
1659e26
Refactor onresize event listener
MaryannGitonga Aug 29, 2022
a7e7db2
Remove console log
MaryannGitonga Aug 29, 2022
8c2ec4d
Modify browser screen size
MaryannGitonga Aug 29, 2022
0bb95d6
Merge branch 'dev' into task/add-device-telemetry
MaryannGitonga Aug 29, 2022
8cdbb00
Merge branch 'dev' of https://github.com/microsoftgraph/microsoft-gra…
MaryannGitonga Aug 30, 2022
c56a45a
Add format check on device chatacteristics test and add the track eve…
MaryannGitonga Aug 30, 2022
8c5023f
Merge branch 'task/add-device-telemetry' of https://github.com/micros…
MaryannGitonga Aug 30, 2022
1aea26a
Merge branch 'dev' into task/add-device-telemetry
MaryannGitonga Aug 30, 2022
ac34090
Add Object.assign for the default properties and the deviceProperties
MaryannGitonga Aug 30, 2022
3d3b740
Merge branch 'task/add-device-telemetry' of https://github.com/micros…
MaryannGitonga Aug 30, 2022
78a8714
check filtered suggestions
Onokaev Aug 31, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,4 @@
"resolutions": {
"@types/react": "17.0.30"
}
}
}
28 changes: 28 additions & 0 deletions src/app/utils/device-characteristics-telemetry.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { getDeviceScreenScale, getBrowserScreenSize } from './device-characteristics-telemetry'

Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation(query => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(), // Deprecated
removeListener: jest.fn(), // Deprecated
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn()
}))
});
describe('Device Telemetry', () => {
it('should get device screen scale', () => {
const percentage = '%';
expect(getDeviceScreenScale()).toContain(percentage);
});

it('should get device screen size', () => {
const deviceWidth = 1367;
const expectedScreenSize = 'xxl';
expect(getBrowserScreenSize(deviceWidth)).toBe(expectedScreenSize);
});
})

28 changes: 28 additions & 0 deletions src/app/utils/device-characteristics-telemetry.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
export function getBrowserScreenSize(browserWidth: number){
if(browserWidth >= 1920){
return 'xxxl';
}
else if(browserWidth >= 1366){
return 'xxl';
}
else if(browserWidth >= 1024){
return 'xl';
}
else if(browserWidth >= 640){
return 'l';
}
else if(browserWidth >= 480){
return 'm';
}

return 's';
}

export function getDeviceScreenScale(){
const scaleString = (window.devicePixelRatio * 100).toFixed(0);

matchMedia(`(resolution: ${scaleString})dppx`).addEventListener('change',
getDeviceScreenScale, {once: true})

return `${scaleString}%`;
}
2 changes: 2 additions & 0 deletions src/app/views/query-runner/QueryRunner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ IQueryRunnerState
SelectedVersion: sampleQuery.selectedVersion,
QuerySignature: `${sampleQuery.selectedVerb} ${sanitizedUrl}`
});

telemetry.trackDeviceCharacteristicsTelemetry();
}
this.setState({ sampleBody: '' });
};
Expand Down
1 change: 1 addition & 0 deletions src/telemetry/event-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ export const LINK_CLICK_EVENT = 'LINK_CLICK_EVENT';
export const LISTITEM_CLICK_EVENT = 'LISTITEM_CLICK_EVENT';
export const DROPDOWN_CHANGE_EVENT = 'DROPDOWN_CHANGE_EVENT';
export const WINDOW_OPEN_EVENT = 'WINDOW_OPEN_EVENT';
export const DEVICE_CHARACTERISTICS_EVENT = 'DEVICE_CHARACTERISTICS_EVENT';
16 changes: 16 additions & 0 deletions src/telemetry/telemetry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { sanitizeQueryUrl } from '../app/utils/query-url-sanitization';
import { IQuery } from '../types/query-runner';
import {
BUTTON_CLICK_EVENT,
DEVICE_CHARACTERISTICS_EVENT,
LINK_CLICK_EVENT,
TAB_CLICK_EVENT,
WINDOW_OPEN_EVENT
Expand All @@ -28,6 +29,7 @@ import {
} from './filters';
import ITelemetry from './ITelemetry';
import { getVersion } from '../app/utils/version';
import { getBrowserScreenSize, getDeviceScreenScale } from '../app/utils/device-characteristics-telemetry';

class Telemetry implements ITelemetry {
private appInsights: ApplicationInsights;
Expand Down Expand Up @@ -118,6 +120,20 @@ class Telemetry implements ITelemetry {
telemetry.trackEvent(WINDOW_OPEN_EVENT, properties);
}

public trackDeviceCharacteristicsTelemetry(properties?: any){
const deviceProperties = {
deviceHeight: screen.height,
deviceWidth: screen.width,
browserScreenSize: getBrowserScreenSize(window.innerWidth),
browserHeight: window.innerHeight,
browserWidth: window.innerWidth,
scale: getDeviceScreenScale()
};
properties = Object.assign(properties || {}, deviceProperties);

telemetry.trackEvent(DEVICE_CHARACTERISTICS_EVENT, properties);
}

private getInstrumentationKey() {
return (
(window as any).InstrumentationKey ||
Expand Down