const dom = React.createElement; const LABEL = 0, TAG = 1; const Tag = (label, key, className) => ( {label} ); const Product = (product, withPrice) => (

{ product.name }

{ product.shortDesc || product.fullDesc}

{ product.ph && Tag(`PH ${product.ph}`, null, 'is-ph') } { product.actives.map(a => Tag(a)) }
$ {product.variants[0].sellPrice} 00
Cont. {product.variants[0].content}
); const ProductList = (products, categories) => (
{ categories.map(category => ( { products[category[LABEL]].map(product => ( )) }

{category[LABEL]}

{ Product(product) }
)) }
); class VademecumDomiciliario extends React.Component { constructor(props) { super(props); this.state = { categories: [ [ "Higiene", "higiene" ], [ "Ácido Hialurónico", "acido-hialuronico" ], [ "Corporales", "corporales" ], [ "Hombres", "hombres" ], [ "Protección Intensiva", "proteccion-intensiva" ], [ "Monodosis", "monodosis" ], [ "Protección Solar", "proteccion-solar" ] ], products: null, } } componentDidMount() { fetch('data/products-by-category.json') .then(response => response.json()) .then(data => { const categories = Object.keys(data); return categories.reduce((products, categoryName) => { const filtered = data[categoryName].filter(product => { const valid = product.variants.filter(v => v.code < 2000); return valid.length || product.category.includes('Protección Solar'); // Sunscreens are also required for this Vademecum }); return { ...products, [categoryName]: filtered } }, {}) }) .then(data => { this.setState({ products: data, }) }) } render() { const { categories, products } = this.state; if (products) { return (
{ ProductList(products, categories) }
) } else { return (
); } } } const domContainer = document.querySelector('#vademecum-domiciliario'); ReactDOM.render(React.createElement(VademecumDomiciliario), domContainer);