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

mac-s-g / react-json-view / #1402

05 Mar 2021 11:32AM UTC coverage: 83.333% (+0.2%) from 83.138%
#1402

push

ahmedkhan1039
Linting Fix

287 of 352 branches covered (81.53%)

Branch coverage included in aggregate %.

3 of 3 new or added lines in 2 files covered. (100.0%)

48 existing lines in 3 files now uncovered.

513 of 608 relevant lines covered (84.38%)

45.32 hits per line

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

74.47
/src/js/components/VariableMeta.js
1
import React from 'react';
2
import dispatcher from './../helpers/dispatcher';
3

4
import CopyToClipboard from './CopyToClipboard';
5
import { toType } from './../helpers/util';
6

7
//icons
8
import {
9
    RemoveCircle as Remove,
10
    AddCircle as Add,
11
    SelectCircle as Select
12
} from './icons';
13

14
//theme
15
import Theme from './../themes/getStyle';
16

17
export default class extends React.PureComponent {
18
    getObjectSize = () => {
48✔
19
        const { size, theme, displayObjectSize } = this.props;
56✔
20
        if (displayObjectSize) {
56✔
21
            return (
23✔
22
                <span class="object-size" {...Theme(theme, 'object-size')}>
23
                    {size} item{size === 1 ? '' : 's'}
23✔
24
                </span>
25
            );
26
        }
27
    };
28

29
    getAddAttribute = rowHovered => {
48✔
30
        const { theme, namespace, name, src, rjvId, depth } = this.props;
22✔
31

32
        return (
22✔
33
            <span
34
                class="click-to-add"
35
                style={{
36
                    verticalAlign: 'top',
37
                    display: rowHovered ? 'inline-block' : 'none'
22!
38
                }}
39
            >
40
                <Add
41
                    class="click-to-add-icon"
42
                    {...Theme(theme, 'addVarIcon')}
43
                    onClick={() => {
UNCOV
44
                        const request = {
×
45
                            name: depth > 0 ? name : null,
×
46
                            namespace: namespace.splice(
47
                                0,
48
                                namespace.length - 1
49
                            ),
50
                            existing_value: src,
51
                            variable_removed: false,
52
                            key_name: null
53
                        };
UNCOV
54
                        if (toType(src) === 'object') {
×
UNCOV
55
                            dispatcher.dispatch({
×
56
                                name: 'ADD_VARIABLE_KEY_REQUEST',
57
                                rjvId: rjvId,
58
                                data: request
59
                            });
60
                        } else {
UNCOV
61
                            dispatcher.dispatch({
×
62
                                name: 'VARIABLE_ADDED',
63
                                rjvId: rjvId,
64
                                data: {
65
                                    ...request,
66
                                    new_value: [...src, null]
67
                                }
68
                            });
69
                        }
70
                    }}
71
                />
72
            </span>
73
        );
74
    };
75

76
    getRemoveObject = rowHovered => {
48✔
77
        const { theme, hover, namespace, name, src, rjvId } = this.props;
22✔
78

79
        //don't allow deleting of root node
80
        if (namespace.length === 1) {
22✔
81
            return;
16✔
82
        }
83
        return (
6✔
84
            <span
85
                class="click-to-remove"
86
                style={{
87
                    display: rowHovered ? 'inline-block' : 'none'
6!
88
                }}
89
            >
90
                <Remove
91
                    class="click-to-remove-icon"
92
                    {...Theme(theme, 'removeVarIcon')}
93
                    onClick={() => {
UNCOV
94
                        dispatcher.dispatch({
×
95
                            name: 'VARIABLE_REMOVED',
96
                            rjvId: rjvId,
97
                            data: {
98
                                name: name,
99
                                namespace: namespace.splice(
100
                                    0,
101
                                    namespace.length - 1
102
                                ),
103
                                existing_value: src,
104
                                variable_removed: true
105
                            }
106
                        });
107
                    }}
108
                />
109
            </span>
110
        );
111
    };
112

113
    getSelectObject = () => {
48✔
114
        const { theme, namespace, name, src, onSelect } = this.props;
27✔
115

116
        return (
27✔
117
            <span class="click-to-select" title="Select Object">
118
                <Select
119
                    class="click-to-select-icon"
120
                    {...Theme(theme, 'selectVarIcon')}
121
                    onClick={() => {
UNCOV
122
                        onSelect({
×
123
                            name,
124
                            type: typeof src,
125
                            namespace,
126
                            value: src
127
                        });
128
                    }}
129
                />
130
            </span>
131
        );
132
    };
133

134
    render = () => {
48✔
135
        const {
136
            theme,
137
            onDelete,
138
            onAdd,
139
            onSelect,
140
            enableClipboard,
141
            src,
142
            namespace,
143
            rowHovered
144
        } = this.props;
56✔
145
        return (
56✔
146
            <div
147
                {...Theme(theme, 'object-meta-data')}
148
                class="object-meta-data"
149
                onClick={e => {
150
                    e.stopPropagation();
1✔
151
                }}
152
            >
153
                {/* size badge display */}
154
                {this.getObjectSize()}
155
                {/* copy to clipboard icon */}
156
                {enableClipboard ? (
56✔
157
                    <CopyToClipboard
158
                        rowHovered={rowHovered}
159
                        clickCallback={enableClipboard}
160
                        {...{ src, theme, namespace }}
161
                    />
162
                ) : null}
163
                {/* copy add/remove icons */}
164
                {onAdd !== false ? this.getAddAttribute() : null}
56✔
165
                {onDelete !== false ? this.getRemoveObject() : null}
56✔
166
                {onSelect !== false ? this.getSelectObject() : null}
56✔
167
            </div>
168
        );
169
    };
170
}
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

© 2026 Coveralls, Inc