@@ -67,9 +67,10 @@ export default class DomainFacet extends React.PureComponent { | |||
const { domain, selected } = this.props; | |||
const measureSelected = domain.measures.find(measure => measure.metric.key === selected); | |||
const overviewSelected = domain.name === selected && hasBubbleChart(domain.name); | |||
return measureSelected | |||
? [getLocalizedMetricName(measureSelected.metric)] | |||
: overviewSelected ? [translate('component_measures.domain_overview')] : []; | |||
if (measureSelected) { | |||
return [getLocalizedMetricName(measureSelected.metric)]; | |||
} | |||
return overviewSelected ? [translate('component_measures.domain_overview')] : []; | |||
}; | |||
renderItemFacetStat = (item /*: MeasureEnhanced */) => | |||
@@ -80,11 +81,19 @@ export default class DomainFacet extends React.PureComponent { | |||
const items = addMeasureCategories(domain.name, filterMeasures(domain.measures)); | |||
const hasCategories = items.some(item => typeof item === 'string'); | |||
const translateMetric = hasCategories ? getLocalizedCategoryMetricName : getLocalizedMetricName; | |||
const sortedItems = sortMeasures(domain.name, items); | |||
let sortedItems = sortMeasures(domain.name, items); | |||
sortedItems = sortedItems.filter((item, index) => { | |||
return ( | |||
typeof item !== 'string' || | |||
(index + 1 !== sortedItems.length && typeof sortedItems[index + 1] !== 'string') | |||
); | |||
}); | |||
return sortedItems.map( | |||
item => | |||
typeof item === 'string' ? ( | |||
<span key={item} className="facet search-navigator-facet facet-category"> | |||
<span className="facet search-navigator-facet facet-category" key={item}> | |||
<span className="facet-name"> | |||
{translate('component_measures.facet_category', item)} | |||
</span> |
@@ -69,3 +69,51 @@ it('should render closed', () => { | |||
const wrapper = shallow(<DomainFacet {...PROPS} open={false} />); | |||
expect(wrapper.find('FacetItemsList')).toHaveLength(0); | |||
}); | |||
it('should not display subtitles of new measures if there is none', () => { | |||
const domain = { | |||
name: 'Reliability', | |||
measures: [ | |||
{ | |||
metric: { key: 'bugs', type: 'INT', name: 'Bugs', domain: 'Reliability' }, | |||
value: '5' | |||
} | |||
] | |||
}; | |||
expect( | |||
shallow( | |||
<DomainFacet | |||
domain={domain} | |||
onChange={() => {}} | |||
onToggle={() => {}} | |||
open={true} | |||
selected={'foo'} | |||
/> | |||
) | |||
).toMatchSnapshot(); | |||
}); | |||
it('should not display subtitles of new measures if there is none, even on last line', () => { | |||
const domain = { | |||
name: 'Reliability', | |||
measures: [ | |||
{ | |||
metric: { key: 'new_bugs', type: 'INT', name: 'New Bugs', domain: 'Reliability' }, | |||
value: '5' | |||
} | |||
] | |||
}; | |||
expect( | |||
shallow( | |||
<DomainFacet | |||
domain={domain} | |||
onChange={() => {}} | |||
onToggle={() => {}} | |||
open={true} | |||
selected={'foo'} | |||
/> | |||
) | |||
).toMatchSnapshot(); | |||
}); |
@@ -263,3 +263,155 @@ exports[`should display facet item list with bugs selected 1`] = ` | |||
</FacetItemsList> | |||
</FacetBox> | |||
`; | |||
exports[`should not display subtitles of new measures if there is none 1`] = ` | |||
<FacetBox | |||
property="Reliability" | |||
> | |||
<FacetHeader | |||
name="Reliability" | |||
onClick={[Function]} | |||
open={true} | |||
values={Array []} | |||
/> | |||
<FacetItemsList> | |||
<FacetItem | |||
active={false} | |||
disabled={false} | |||
halfWidth={false} | |||
key="Reliability" | |||
name={ | |||
<span | |||
id="measure-overview-Reliability-name" | |||
> | |||
component_measures.domain_overview | |||
</span> | |||
} | |||
onClick={[Function]} | |||
stat={ | |||
<BubblesIcon | |||
size={14} | |||
/> | |||
} | |||
value="Reliability" | |||
/> | |||
<span | |||
className="facet search-navigator-facet facet-category" | |||
key="overall_category" | |||
> | |||
<span | |||
className="facet-name" | |||
> | |||
component_measures.facet_category.overall_category | |||
</span> | |||
</span> | |||
<FacetItem | |||
active={false} | |||
disabled={false} | |||
halfWidth={false} | |||
key="bugs" | |||
name={ | |||
<span | |||
className="big-spacer-left" | |||
id="measure-bugs-name" | |||
> | |||
Bugs | |||
</span> | |||
} | |||
onClick={[Function]} | |||
stat={ | |||
<FacetMeasureValue | |||
measure={ | |||
Object { | |||
"metric": Object { | |||
"domain": "Reliability", | |||
"key": "bugs", | |||
"name": "Bugs", | |||
"type": "INT", | |||
}, | |||
"value": "5", | |||
} | |||
} | |||
/> | |||
} | |||
value="bugs" | |||
/> | |||
</FacetItemsList> | |||
</FacetBox> | |||
`; | |||
exports[`should not display subtitles of new measures if there is none, even on last line 1`] = ` | |||
<FacetBox | |||
property="Reliability" | |||
> | |||
<FacetHeader | |||
name="Reliability" | |||
onClick={[Function]} | |||
open={true} | |||
values={Array []} | |||
/> | |||
<FacetItemsList> | |||
<FacetItem | |||
active={false} | |||
disabled={false} | |||
halfWidth={false} | |||
key="Reliability" | |||
name={ | |||
<span | |||
id="measure-overview-Reliability-name" | |||
> | |||
component_measures.domain_overview | |||
</span> | |||
} | |||
onClick={[Function]} | |||
stat={ | |||
<BubblesIcon | |||
size={14} | |||
/> | |||
} | |||
value="Reliability" | |||
/> | |||
<span | |||
className="facet search-navigator-facet facet-category" | |||
key="new_code_category" | |||
> | |||
<span | |||
className="facet-name" | |||
> | |||
component_measures.facet_category.new_code_category | |||
</span> | |||
</span> | |||
<FacetItem | |||
active={false} | |||
disabled={false} | |||
halfWidth={false} | |||
key="new_bugs" | |||
name={ | |||
<span | |||
className="big-spacer-left" | |||
id="measure-new_bugs-name" | |||
> | |||
New Bugs | |||
</span> | |||
} | |||
onClick={[Function]} | |||
stat={ | |||
<FacetMeasureValue | |||
measure={ | |||
Object { | |||
"metric": Object { | |||
"domain": "Reliability", | |||
"key": "new_bugs", | |||
"name": "New Bugs", | |||
"type": "INT", | |||
}, | |||
"value": "5", | |||
} | |||
} | |||
/> | |||
} | |||
value="new_bugs" | |||
/> | |||
</FacetItemsList> | |||
</FacetBox> | |||
`; |