Skip to content

Commit

Permalink
Add ga tracking
Browse files Browse the repository at this point in the history
Signed-off-by: Davit Yeghshatyan <[email protected]>
  • Loading branch information
Davit Yeghshatyan committed Jun 21, 2018
1 parent 33b1792 commit 301831a
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 5 deletions.
36 changes: 32 additions & 4 deletions packages/jaeger-ui/src/components/SearchTracePage/SearchForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import { formatDate, formatTime } from '../../utils/date';
import reduxFormFieldAdapter from '../../utils/redux-form-field-adapter';

import './SearchForm.css';
import { trackEvent } from '../../utils/tracking';
import { CATEGORY_BASE } from './SearchForm.track';

const FormItem = Form.Item;
const Option = Select.Option;
Expand All @@ -40,6 +42,21 @@ const AdaptedInput = reduxFormFieldAdapter(Input);
const AdaptedSelect = reduxFormFieldAdapter(Select);
const AdaptedVirtualSelect = reduxFormFieldAdapter(VirtSelect, option => (option ? option.value : null));

const DEFAULT_OPERATION = 'all';
const DEFAULT_LOOKBACK = '1h';
const DEFAULT_LIMIT = 20;

const ACTION_SET = 'set';
const ACTION_CLEAR = 'clear';
const ACTION_DEFAULT = 'default';

const CATEGORY_OPERATION = `${CATEGORY_BASE}/operation`;
const CATEGORY_LOOKBACK = `${CATEGORY_BASE}/lookback`;
const CATEGORY_TAGS = `${CATEGORY_BASE}/tags`;
const CATEGORY_MIN_DURATION = `${CATEGORY_BASE}/min_duration`;
const CATEGORY_MAX_DURATION = `${CATEGORY_BASE}/max_duration`;
const CATEGORY_LIMIT = `${CATEGORY_BASE}/limit`;

export function getUnixTimeStampInMSFromForm({ startDate, startDateTime, endDate, endDateTime }) {
const start = `${startDate} ${startDateTime}`;
const end = `${endDate} ${endDateTime}`;
Expand Down Expand Up @@ -96,6 +113,15 @@ export function convertQueryParamsToFormDates({ start, end }) {
};
}

function trackFormInput(resultsLimit, operation, tags, minDuration, maxDuration, lookback) {
trackEvent(CATEGORY_OPERATION, operation === DEFAULT_OPERATION ? ACTION_DEFAULT : ACTION_SET, operation);
trackEvent(CATEGORY_LIMIT, resultsLimit === DEFAULT_LIMIT ? ACTION_DEFAULT : ACTION_SET, resultsLimit);
trackEvent(CATEGORY_TAGS, tags ? ACTION_SET : ACTION_CLEAR, tags);
trackEvent(CATEGORY_MAX_DURATION, maxDuration ? ACTION_SET : ACTION_CLEAR, maxDuration);
trackEvent(CATEGORY_MIN_DURATION, minDuration ? ACTION_SET : ACTION_CLEAR, minDuration);
trackEvent(CATEGORY_LOOKBACK, lookback);
}

export function submitForm(fields, searchTraces) {
const {
resultsLimit,
Expand Down Expand Up @@ -134,9 +160,11 @@ export function submitForm(fields, searchTraces) {
end = times.end;
}

trackFormInput(resultsLimit, operation, tags, minDuration, maxDuration, lookback);

searchTraces({
service,
operation: operation !== 'all' ? operation : undefined,
operation: operation !== DEFAULT_OPERATION ? operation : undefined,
limit: resultsLimit,
lookback,
start,
Expand Down Expand Up @@ -459,13 +487,13 @@ export function mapStateToProps(state) {
destroyOnUnmount: false,
initialValues: {
service: service || lastSearchService || '-',
resultsLimit: limit || 20,
lookback: lookback || '1h',
resultsLimit: limit || DEFAULT_LIMIT,
lookback: lookback || DEFAULT_LOOKBACK,
startDate: queryStartDate || today,
startDateTime: queryStartDateTime || '00:00',
endDate: queryEndDate || today,
endDateTime: queryEndDateTime || currentTime,
operation: operation || lastSearchOperation || 'all',
operation: operation || lastSearchOperation || DEFAULT_OPERATION,
tags,
minDuration: minDuration || null,
maxDuration: maxDuration || null,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// @flow

// Copyright (c) 2017 Uber Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import type { Store } from 'redux';
import { trackEvent } from '../../utils/tracking';

export const CATEGORY_BASE = 'jaeger/ux/trace/search';
export const CATEGORY_SORTBY = `${CATEGORY_BASE}/sortby`;

export const middlewareHooks = {
'@@redux-form/CHANGE': (store: Store, action: any) => {
if (action.meta.form === 'sortBy') {
trackEvent(CATEGORY_SORTBY, action.payload);
}
},
};
5 changes: 4 additions & 1 deletion packages/jaeger-ui/src/middlewares/track.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.

import { middlewareHooks } from '../components/TracePage/TraceTimelineViewer/duck.track';
import { middlewareHooks as timelineHooks } from '../components/TracePage/TraceTimelineViewer/duck.track';
import { middlewareHooks as searchHooks } from '../components/SearchTracePage/SearchForm.track';
import { isGaEnabled } from '../utils/tracking';

const middlewareHooks = { ...timelineHooks, ...searchHooks };

function trackingMiddleware(store: { getState: () => any }) {
return function inner(next: any => void) {
return function core(action: any) {
Expand Down

0 comments on commit 301831a

Please sign in to comment.