'use strict'; const dom = React.createElement; const CONFIG = { "prof-a": { contactInformation: true, productFilter: products => products, prices: false, categories: [ [ "Higiene", "higiene" ], [ "Máscaras", "mascaras" ], [ "Ácido Hialurónico", "acido-hialuronico" ], [ "Peeling", "peeling" ], [ "Corporales", "corporales" ], [ "Hombres", "hombres" ], [ "Protección Intensiva", "proteccion-intensiva" ], [ "Monodosis", "monodosis" ], [ "Activos Concentrados", "activos-concentrados" ], [ "Protección Solar", "proteccion-solar" ] ] }, "prof-b": { contactInformation: false, productFilter: products => products, prices: false, categories: [ [ "Higiene", "higiene" ], [ "Máscaras", "mascaras" ], [ "Ácido Hialurónico", "acido-hialuronico" ], [ "Peeling", "peeling" ], [ "Corporales", "corporales" ], [ "Hombres", "hombres" ], [ "Protección Intensiva", "proteccion-intensiva" ], [ "Monodosis", "monodosis" ], [ "Activos Concentrados", "activos-concentrados" ], [ "Protección Solar", "proteccion-solar" ] ] }, "dom-a": { contactInformation: false, productFilter: products => products, prices: true, }, "dom-a": { contactInformation: false, productFilter: products => products, prices: false, }, }; console.log(process.env.MODE, CONFIG[process.env.MODE]); const Tag = (label, key, className) => ( {label} ); const Section = (title, paragraph, prepend) => (

{ title }

{ prepend }{ paragraph }

); const Product = (product, key) => (

{product.name}

{product.shortDesc}

{ Section('Descripción', product.fullDesc) } { product.application && Section('Aplicación', product.application) } { product.actives && Section( 'Activos', product.actives.join(', '), product.ph && Tag(`PH ${product.ph}`, null, 'is-ph') ) }
); const Category = (category, products) => ( { products.map((p, i) => ( )) }

{category[LABEL]}

{ Product(p, i) }
); const ToC = (categories, products) => ( { categories.map((category, i) => ( )) }

Indice

{ products[category[LABEL]].map(product => (
{ product.name }
)) }
) const Vademecum = (categories, products, prices) => { console.log(prices); return categories.map((categoryName, i) => (
{ Category(categoryName, products[categoryName[LABEL]]) }
)) } const domContainer = document.querySelector('#vademecum'); const LABEL = 0, TAG = 1; class VademecumData extends React.Component { constructor(props) { super(props); const config = CONFIG[process.env.MODE]; this.state = { config: config, categories: config.categories, products: null, } } componentDidMount() { fetch('data/products-by-category.json') .then(response => response.json()) .then(this.state.config.productFilter) .then(data => { this.setState({ products: data, }) }) } render() { const { categories, products, config } = this.state; if (products) { return (
{ ToC(categories, products) } { Vademecum(categories, products, config.prices) }
) } else { return (
); } } } ReactDOM.render(dom(VademecumData), domContainer);