GitXplorerGitXplorer
a

browser-interaction-time

public
217 stars
14 forks
48 issues

Commits

List of commits on branch master.
Verified
7fec9483c6c1c2f174506131e380514ec7aa8fa0

Merge pull request #175 from atlassian/replace-blur-with-page-visibility-api

mmeandmax committed 3 years ago
Unverified
d2573ccdcded4ce1e1ebb3e997c31e20027c47ff

3.0.0

mmeandmax committed 3 years ago
Unverified
e97aea8cebde4a3ae584af01bbf9c59ad5da4b03

feat: change blur to visibility api

mmeandmax committed 3 years ago
Unverified
909a9edf961263627c227ef705a6d416fe4d0360

2.2.1

mmeandmax committed 3 years ago
Verified
0b7ebfaece701f58f927612dbbc9f904d5cedd0e

Merge pull request #168 from atlassian/fix-stop-timer

mmeandmax committed 3 years ago
Unverified
a6cac89c143d6fca3f55c958c68e39943406545f

fix: not working stopTimerOnTabchange

mmeandmax committed 3 years ago

README

The README file for this repository.

browser-interaction-time

PRs Welcome license Build Status npm SemVer semantic-release Greenkeeper badge

BrowserInteractionTime lets you track the time a user is active on your webpage while ignoring time spent on a different tab or with a minimized window. It also ignores the time spent while the user is idle on a web page meaning after a certain amount of time (idleTimeoutMs) without any user interactions (scroll, mousemovement etc) the time will stop until the next user interaction.

Importing BrowserInteractionTime

You can import the generated bundle to use the whole library like this:

import BrowserInteractionTime from 'browser-interaction-time'

Additionally, you can import the transpiled modules from dist/lib:

import BrowserInteractionTime from 'browser-interaction-time/dist/lib/'

API

Initialize

import BrowserInteractionTime from 'browser-interaction-time'

const browserInteractionTime = new BrowserInteractiontime({
  timeIntervalEllapsedCallbacks: [],
  absoluteTimeEllapsedCallbacks: [],
  browserTabInactiveCallbacks: [],
  browserTabActiveCallbacks: [],
  idleTimeoutMs: 3000,
  checkCallbacksIntervalMs: 250
})

Start timer

browserInteractionTime.startTimer()

Stop timer

browserInteractionTime.stopTimer()

Adding a callback that is executed on interval

const cb = {
  multiplier: time => time * 2,
  timeInMilliseconds: 1000,
  callback: () => console.log('callback')
}
browserInteractionTime.addTimeIntervalEllapsedCallback(cb)

Adding a callback that is executed on absolute time

const callbackData = {
  timeInMilliseconds: 1000,
  callback: () => console.log('callback')
  pending: true
}
browserInteractionTime.addAbsoluteTimeEllapsedCallback(callbackData)

Adding callback executed when browser tab becomes inactive

const callback = () => console.log('some callback')
browserInteractionTime.addBrowserTabInactiveCallback(callback)

Adding callback executed when browser tab becomes active

const callback = () => console.log('some callback')
browserInteractionTime.addBrowserTabActiveCallback(callback)
browserInteractionTime.mark('a-mark')
browserInteractionTime.mark('b-mark')
browserInteractionTime.getMarks('a-mark')
browserInteractionTime.measure('a-measure', 'a-mark', 'b-mark')

Get measure by name

browserInteractionTime.getMeasures('a-measure') // Array of measures with name

Get Time in Milliseconds

browserInteractionTime.getTimeInMilliseconds() // number

Check if timer is running

browserInteractionTime.isRunning() // boolean

Reset all times

browserInteractionTime.reset()

Cleanup event listeners and timers

browserInteractionTime.destroy()

NPM scripts

  • npm t: Run test suite
  • npm start: Run npm run build in watch mode
  • npm run test:watch: Run test suite in interactive watch mode
  • npm run test:prod: Run linting and generate coverage
  • npm run build: Generate bundles and typings, create docs
  • npm run lint: Lints code
  • npm run commit: Commit using conventional commit style (husky will tell you to use it if you haven't 😉)

Author

Maximilian Heinz @meandmax

Collaborators

❤️ Logo Design by Dominik Straka