var React = require('react/addons'), ScaleLog = require('../utils/scaleLog'); var Header = React.createClass({ mixins: [React.addons.PureRenderMixin], propTypes: { logos: React.PropTypes.array.isRequired }, componentWillMount () { let tags = {}, sizer = { min: 1, max: 0 }; this.props.logos.forEach(function (d) { d.tags.forEach(function (t) { if (!tags.hasOwnProperty(t)) { tags[t] = 0; } tags[t]++; }); }); tags = this.sortObject(tags); tags.forEach((t) => { if (t.value < sizer.min) { sizer.min = t.value; } if (t.value > sizer.max) { sizer.max = t.value; } }); this.setState({ tags: tags, scale: new ScaleLog(sizer) }); }, sortObject (obj) { var arr = []; for (var prop in obj) { if (obj.hasOwnProperty(prop)) { arr.push({ key: prop, value: obj[prop] }); } } /*arr.sort(function (a, b) { return b.value - a.value; });*/ arr.sort(function (a, b) { return a.key.toLowerCase().localeCompare(b.key.toLowerCase()); }); //use this to sort as strings return arr; }, render () { var state = this.state; return (

A collection of svg logos for developers.

{state.tags.map((d, i) => { return ({d.key + ' (' + d.value + ')'} ); })}
); } }); module.exports = Header;