Passed
Push — master ( de752f...295ecd )
by
unknown
11:00
created

MultimediaViewerPlugin.js ➔ MultimediaViewerPlugin   F

Complexity

Conditions 17

Size

Total Lines 85
Code Lines 52

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 17
eloc 52
c 0
b 0
f 0
dl 0
loc 85
rs 1.8

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

Complexity

Complex classes like MultimediaViewerPlugin.js ➔ MultimediaViewerPlugin often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
/**
2
 * Multimedia Viewer Plugin using Video.js
3
 * @author Christoph Haas <[email protected]>
4
 * @author grommunio GmbH <[email protected]>
5
 */
6
function MultimediaViewerPlugin() {
7
    "use strict";
8
9
    var videoElement = undefined,
0 ignored issues
show
Unused Code Comprehensibility introduced by
The assignment of undefined is not necessary as videoElement is implicitly marked as undefined by the declaration.
Loading history...
10
        videoSource  = undefined,
0 ignored issues
show
Unused Code Comprehensibility introduced by
The assignment of undefined is not necessary as videoSource is implicitly marked as undefined by the declaration.
Loading history...
11
        self         = this;
12
13
    this.initialize = function ( viewerElement, documentUrl ) {
14
        if ( window.mimetype.indexOf("audio/") === 0 ) {
15
            videoElement = document.createElement("audio");
16
            videoElement.setAttribute('poster', 'data:image/png;base64,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');
17
        } else {
18
            videoElement = document.createElement("video");
19
        }
20
        videoElement.setAttribute('preload', 'auto');
21
        videoElement.setAttribute('id', 'multimedia_viewer');
22
        videoElement.setAttribute('controls', 'controls');
23
        videoElement.setAttribute('class', 'video-js vjs-default-skin');
24
25
        videoSource = document.createElement("source");
26
        videoSource.setAttribute('src', documentUrl);
27
        videoSource.setAttribute('type', window.mimetype);
28
        videoElement.appendChild(videoSource);
29
30
        viewerElement.appendChild(videoElement);
31
        viewerElement.style.overflow = "auto";
32
33
        // init viewerjs
34
        videojs(document.getElementById('multimedia_viewer'), {
35
            controls:  'enabled',
36
            techOrder: ['html5']
37
        }, function () {
38
            // This is functionally the same as the previous example.
39
        });
40
41
        self.onLoad();
42
    };
43
44
    this.isSlideshow = function () {
45
        return false;
46
    };
47
48
    this.onLoad = function () {
49
    };
50
51
    this.fitToWidth = function ( width ) {
52
    };
53
54
    this.fitToHeight = function ( height ) {
55
    };
56
57
    this.fitToPage = function ( width, height ) {
58
    };
59
60
    this.fitSmart = function ( width ) {
61
    };
62
63
    this.getZoomLevel = function () {
64
    };
65
66
    this.setZoomLevel = function ( value ) {
67
    };
68
69
    // return a list of tuples (pagename, pagenode)
70
    this.getPages = function () {
71
        return [videoElement];
72
    };
73
74
    this.showPage = function ( n ) {
75
        // hide middle toolbar
76
        document.getElementById('toolbarMiddleContainer').style.visibility = "hidden";
77
    };
78
79
    this.getPluginName = function () {
80
        return "MultimediaViewerPlugin";
81
    };
82
83
    this.getPluginVersion = function () {
84
        return "From Source";
85
    };
86
87
    this.getPluginURL = function () {
88
        return "https://grommunio.com";
89
    };
90
}
91