• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CenterForOpenScience / ember-osf-web / 13206780108

07 Feb 2025 07:33PM UTC coverage: 66.63% (-0.2%) from 66.833%
13206780108

Pull #2490

github

web-flow
Merge f400645ac into 7005478ea
Pull Request #2490: [wip][ENG-6953][ENG-6954][ENG-6955] send usage metrics to datacite

3113 of 5101 branches covered (61.03%)

Branch coverage included in aggregate %.

18 of 53 new or added lines in 4 files covered. (33.96%)

13 existing lines in 2 files now uncovered.

7915 of 11450 relevant lines covered (69.13%)

189.65 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

70.0
/lib/osf-components/addon/modifiers/track-download.ts
1
import { registerDestructor } from '@ember/destroyable';
2
import { inject as service } from '@ember/service';
3

4
import Analytics from 'ember-osf-web/services/analytics';
5

6
import Modifier from 'ember-modifier';
7

8
interface TrackDownloadModifierArgs {
9
    Args: {
10
        Positional: [string],
11
        Named: {
12
            doi?: string,
13
        },
14
    };
15
}
16

17
function cleanup(instance: TrackDownloadModifier) {
18
    const { element, event, handler } = instance;
11✔
19

20
    if (element && event && handler) {
11!
NEW
21
        element.removeEventListener(event, handler);
×
22

NEW
23
        instance.element = undefined;
×
NEW
24
        instance.event = null;
×
NEW
25
        instance.handler = null;
×
26
    }
27
}
28

29
export default class TrackDownloadModifier extends Modifier<TrackDownloadModifierArgs> {
30
    @service analytics!: Analytics;
31

32
    element?: Element;
33
    event?: any;
34
    handler?: any;
35

36
    constructor(owner: any, args: any) {
37
        super(owner, args);
11✔
38
        registerDestructor(this, cleanup);
11✔
39
    }
40

41
    modify(element: any, [osfguid]: [string], {doi}: {doi?: string}): void {
42
        const doTrackDownload = () => this.analytics.trackDownload(osfguid, doi);
11✔
43
        this.addEventListener(element, event, doTrackDownload);
11✔
44
    }
45

46
    // methods for reuse
47
    addEventListener = (element: any, event: any, handler: any) => {
11✔
48
        // Store the current element, event, and handler for when we need to remove
49
        // them during cleanup.
50
        this.element = element;
11✔
51
        this.event = event;
11✔
52
        this.handler = handler;
11✔
53

54
        element.addEventListener(event, handler);
11✔
55
    };
56

57
}
58

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc