import { Injectable } from '@angular/core'; import { Md5 } from 'ts-md5/dist/md5'; import pluralize from 'pluralize'; import * as moment from 'moment'; /** * Tracks page activity and store locally, * transmit to server on subsequent visit */ @Injectable() export class SpyService{ /** * should be called only once per session */ activate(){ /** * if a session log has been created before * send to server, then empty * and prepare the store for fresh log */ } /** * called in response to events * * add new log event to store * to be sent to server later * * activity: click, hover, scroll, type (search) * element: anchor, page, button * detail: url, title */ detect(activity: string, element: string, detail: string){ this.log('activity', { // dateTime: moment().format(), event: activity, element: element, value: detail }); } /** * non-activity based events */ session(){ this.log('activity', {}); } user(){ this.log('activity', { // id: datum['id'], // proprietorId: datum['proprietor_id'], // guestHashId: datum['guest_hash_id'], // name: datum['name'], // email: datum['email'], // role: datum['role'], // avatar: { title: datum['name'] + '/' + datum['avatar'], url: datum['avatar'] }, // summary: datum['summary'], // detail: datum['detail'], // status: datum['status'], // createdAt: moment(datum['created_at']).format(), // updatedAt: moment(datum['updated_at']).format() }); } page(){ this.log('activity', { // id: datum['id'], // guestHashId: datum['guest_hash_id'], // startTime: datum['start_time'], // endTime: datum['start_time'], // status: datum['status'], // createdAt: moment(datum['created_at']).format(), // updatedAt: moment(datum['updated_at']).format() }); } share(){ this.log('activity', { // id: datum['id'], // guestHashId: datum['guest_hash_id'], // stuffId: datum['stuff_id'], // key: datum['key'], // value: datum['value'], // status: datum['status'], // createdAt: moment(datum['created_at']).format(), // updatedAt: moment(datum['updated_at']).format() }); } track(){ this.log('activity', { // id: datum['id'], // guestHashId: datum['guest_hash_id'], // stuffId: datum['stuff_id'], // key: datum['key'], // value: datum['value'], // status: datum['status'], // createdAt: moment(datum['created_at']).format(), // updatedAt: moment(datum['updated_at']).format() }); } log(model: string, data: Object){ // let log: Object[] = JSON.parse(this.store.get(this.sessionId)); // log.push({ // model: model, // data: data // }); // this.store.set(this.sessionId, JSON.stringify(log)); } }