'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, }, }; 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( '', product.actives.map(p => Tag(p)), product.ph && Tag(`PH ${product.ph}`, null, 'is-ph') ) }
); const Category = (category, products, prices) => (

{category[LABEL]}

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

Indice

{ categories.map((category, i) => (
{category[LABEL]} chevron_right
{ products[category[LABEL]].map(product => (
{ product.name }
)) }
)) }
) const Vademecum = (categories, products, prices) => { return categories.map((categoryName, i) => (
{ Category(categoryName, products[categoryName[LABEL]], prices) }
)) } 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);