Skip to content

Commit 4d627cc

Browse files
Fix:SonarQube duplicate lines issue
1 parent 158d788 commit 4d627cc

1 file changed

Lines changed: 33 additions & 23 deletions

File tree

src/components/Reports/JobAnalytics/JobAnalyticsFilters.jsx

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,28 @@ const GRANULARITY_OPTS = [
1010
{ value: "annually", label: "Annually" },
1111
];
1212

13+
function FilterField({ label, children, isDark }) {
14+
const labelStyle = {
15+
color: isDark ? "#e0e0e0" : "#111111",
16+
display: "flex",
17+
flexDirection: "column",
18+
fontSize: "0.9rem",
19+
};
20+
21+
return (
22+
<label style={labelStyle}>
23+
<span>{label}</span>
24+
{children}
25+
</label>
26+
);
27+
}
28+
29+
FilterField.propTypes = {
30+
label: PropTypes.string.isRequired,
31+
children: PropTypes.node.isRequired,
32+
isDark: PropTypes.bool.isRequired,
33+
};
34+
1335
function JobAnalyticsFilters({ filters, setFilters }) {
1436
const [roleOptions, setRoleOptions] = useState(["All"]);
1537
const [loadingRoles, setLoadingRoles] = useState(false);
@@ -98,13 +120,6 @@ function JobAnalyticsFilters({ filters, setFilters }) {
98120

99121
const nonTotalsDisabled = filters.dateMode !== "Custom";
100122

101-
const labelStyle = {
102-
color: isDark ? "#e0e0e0" : "#111111",
103-
display: "flex",
104-
flexDirection: "column",
105-
fontSize: "0.9rem",
106-
};
107-
108123
const inputStyle = {
109124
backgroundColor: isDark ? "#1b2a41" : "#ffffff",
110125
color: isDark ? "#e0e0e0" : "#111111",
@@ -115,8 +130,7 @@ function JobAnalyticsFilters({ filters, setFilters }) {
115130

116131
return (
117132
<div style={{ display: "flex", flexWrap: "wrap", gap: "1rem" }}>
118-
<label style={labelStyle}>
119-
<span>Dates</span>
133+
<FilterField label="Dates" isDark={isDark}>
120134
<select
121135
name="dateMode"
122136
value={filters.dateMode}
@@ -126,36 +140,33 @@ function JobAnalyticsFilters({ filters, setFilters }) {
126140
<option value="All">All</option>
127141
<option value="Custom">Custom</option>
128142
</select>
129-
</label>
143+
</FilterField>
130144

131145
{filters.dateMode === "Custom" && (
132146
<>
133-
<label style={labelStyle}>
134-
<span>Start Date</span>
147+
<FilterField label="Start Date" isDark={isDark}>
135148
<input
136149
type="date"
137150
name="startDate"
138151
value={filters.startDate}
139152
onChange={onChange}
140153
style={inputStyle}
141154
/>
142-
</label>
155+
</FilterField>
143156

144-
<label style={labelStyle}>
145-
<span>End Date</span>
157+
<FilterField label="End Date" isDark={isDark}>
146158
<input
147159
type="date"
148160
name="endDate"
149161
value={filters.endDate}
150162
onChange={onChange}
151163
style={inputStyle}
152164
/>
153-
</label>
165+
</FilterField>
154166
</>
155167
)}
156168

157-
<label style={labelStyle}>
158-
<span>Role</span>
169+
<FilterField label="Role" isDark={isDark}>
159170
<select
160171
name="roles"
161172
value={filters.roles}
@@ -169,10 +180,9 @@ function JobAnalyticsFilters({ filters, setFilters }) {
169180
</option>
170181
))}
171182
</select>
172-
</label>
183+
</FilterField>
173184

174-
<label style={labelStyle}>
175-
<span>Granularity</span>
185+
<FilterField label="Granularity" isDark={isDark}>
176186
<select
177187
name="granularity"
178188
value={filters.granularity}
@@ -189,7 +199,7 @@ function JobAnalyticsFilters({ filters, setFilters }) {
189199
</option>
190200
))}
191201
</select>
192-
</label>
202+
</FilterField>
193203
</div>
194204
);
195205
}
@@ -205,4 +215,4 @@ JobAnalyticsFilters.propTypes = {
205215
setFilters: PropTypes.func.isRequired,
206216
};
207217

208-
export default JobAnalyticsFilters;
218+
export default JobAnalyticsFilters;

0 commit comments

Comments
 (0)