Skip to content

Commit

Permalink
Added couple of events for analytics purposes
Browse files Browse the repository at this point in the history
  • Loading branch information
JBergVincit committed Jul 18, 2024
1 parent 9586b58 commit 98fa7a7
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 12 deletions.
8 changes: 6 additions & 2 deletions frontend/src/analytics/AnalyticsEvent.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
// Defines the common enum to use for event names across all analytics services
export enum AnalyticsEventEnum {
BOOKING,
END_BOOKING
BOOKING_END,
BOOKING_ADD_TIME,
BUILDING_SELECT
}

// Defines the common event names to use across all analytics services
export const analyticsEventMap: { [key in AnalyticsEventEnum]: string } = {
[AnalyticsEventEnum.BOOKING]: 'booking',
[AnalyticsEventEnum.END_BOOKING]: 'endBooking'
[AnalyticsEventEnum.BOOKING_END]: 'bookingEnd',
[AnalyticsEventEnum.BOOKING_ADD_TIME]: 'bookingAddTime',
[AnalyticsEventEnum.BUILDING_SELECT]: 'buildingSelect'
};
35 changes: 30 additions & 5 deletions frontend/src/analytics/googleAnalytics/googleAnalyticsEvents.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { AnalyticsEventEnum } from '../AnalyticsEvent';
import { Room } from '../../types';
import { Booking, Building, Room } from '../../types';

// Basic interface for all google analytics events
export interface GoogleAnalyticsEvent {
Expand All @@ -11,16 +11,17 @@ export class BookingEvent implements GoogleAnalyticsEvent {
eventType: AnalyticsEventEnum = AnalyticsEventEnum.BOOKING;
eventObject: object;

constructor(room: Room) {
constructor(room: Room, duration: number) {
this.eventObject = {
roomName: room.name,
building: room.building
building: room.building,
duration: duration
};
}
}

export class EndBookingEvent implements GoogleAnalyticsEvent {
eventType: AnalyticsEventEnum = AnalyticsEventEnum.END_BOOKING;
export class BookingEndEvent implements GoogleAnalyticsEvent {
eventType: AnalyticsEventEnum = AnalyticsEventEnum.BOOKING_END;
eventObject: object;

constructor(room: Room) {
Expand All @@ -30,3 +31,27 @@ export class EndBookingEvent implements GoogleAnalyticsEvent {
};
}
}

export class BookingAddTimeEvent implements GoogleAnalyticsEvent {
eventType: AnalyticsEventEnum = AnalyticsEventEnum.BOOKING_ADD_TIME;
eventObject: object;

constructor(booking: Booking) {
this.eventObject = {
roomName: booking.room.name,
building: booking.room.building,
bookingResources: booking.resourceStatus
};
}
}

export class ChooseBuildingEvent implements GoogleAnalyticsEvent {
eventType: AnalyticsEventEnum = AnalyticsEventEnum.BUILDING_SELECT;
eventObject: object;

constructor(building: Building) {
this.eventObject = {
buildingName: building.name
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ const AvailableRoomList = (props: BookingListProps) => {
setBookingLoading('false');
document.getElementById('main-view-content')?.scrollTo(0, 0);

triggerGoogleAnalyticsEvent(new BookingEvent(room));
triggerGoogleAnalyticsEvent(new BookingEvent(room, duration));
triggerClarityEvent(AnalyticsEventEnum.BOOKING);
})
.catch(() => {
Expand Down
5 changes: 5 additions & 0 deletions frontend/src/components/ChooseOfficeView/ChooseOfficeView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { Building, Preferences } from '../../types';
import CenteredProgress from '../util/CenteredProgress';
import { getBuildingsWithPosition } from '../../services/buildingService';
import { useUserSettings } from '../../contexts/UserSettingsContext';
import { triggerGoogleAnalyticsEvent } from '../../analytics/googleAnalytics/googleAnalyticsService';
import { ChooseBuildingEvent } from '../../analytics/googleAnalytics/googleAnalyticsEvents';

type ChooseOfficeViewProps = {
buildings: Building[];
Expand Down Expand Up @@ -66,6 +68,9 @@ const ChooseOfficeView = (props: ChooseOfficeViewProps) => {
.then((savedPreferences) => {
setPreferences(savedPreferences);
createSuccessNotification('Chose building ' + buildingId);
triggerGoogleAnalyticsEvent(
new ChooseBuildingEvent(foundBuilding)
);
goToMainView();
})
.catch(() => {
Expand Down
10 changes: 6 additions & 4 deletions frontend/src/components/CurrentBooking/CurrentBooking.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ import {
import { triggerGoogleAnalyticsEvent } from '../../analytics/googleAnalytics/googleAnalyticsService';
import { triggerClarityEvent } from '../../analytics/clarityService';
import { AnalyticsEventEnum } from '../../analytics/AnalyticsEvent';
import { EndBookingEvent } from '../../analytics/googleAnalytics/googleAnalyticsEvents';
import {
BookingAddTimeEvent,
BookingEndEvent
} from '../../analytics/googleAnalytics/googleAnalyticsEvents';

const NO_CONFIRMATION = true;

Expand Down Expand Up @@ -111,6 +114,7 @@ const CurrentBooking = (props: CurrentBookingProps) => {
updateBookings();
createSuccessNotification('Time added to booking');
window.scrollTo(0, 0);
triggerGoogleAnalyticsEvent(new BookingAddTimeEvent(booking));
})
.catch(() => {
setBookingProcessing('false');
Expand All @@ -131,9 +135,7 @@ const CurrentBooking = (props: CurrentBookingProps) => {
updateRooms();
createNotificationWithType('Booking ended', 'success');
window.scrollTo(0, 0);

triggerGoogleAnalyticsEvent(new EndBookingEvent(booking.room));
triggerClarityEvent(AnalyticsEventEnum.END_BOOKING);
triggerGoogleAnalyticsEvent(new BookingEndEvent(booking.room));
})
.catch(() => {
setBookingProcessing('false');
Expand Down

0 comments on commit 98fa7a7

Please sign in to comment.