'use strict'; const dom = React.createElement; const CONFIG = { "prof-a": { title: "Vademecum Profesional", 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": { title: "Vademecum Profesional", 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": { title: "Vademecum Apoyo Domiciliario", contactInformation: false, productFilter: products => Object.keys(products).reduce((acc, x) => { var filtered = products[x].filter(p => { let v = p.variants.filter(v => v.code < 2000 ); return v.length || p.category.includes('Protección Solar'); }); return { ...acc, [x]: filtered, } }, {}), prices: true, categories: [ [ "Higiene", "higiene" ], [ "Ácido Hialurónico", "acido-hialuronico" ], [ "Corporales", "corporales" ], [ "Hombres", "hombres" ], [ "Protección Intensiva", "proteccion-intensiva" ], [ "Monodosis", "monodosis" ], [ "Protección Solar", "proteccion-solar" ] ] }, "dom-b": { title: "Vademecum Apoyo Domiciliario", contactInformation: false, productFilter: products => products, prices: false, categories: [ [ "Higiene", "higiene" ], [ "Ácido Hialurónico", "acido-hialuronico" ], [ "Corporales", "corporales" ], [ "Hombres", "hombres" ], [ "Protección Intensiva", "proteccion-intensiva" ], [ "Monodosis", "monodosis" ], [ "Protección Solar", "proteccion-solar" ] ] }, }; const Tag = (label, key, className) => (
{label}
); const Section = (title, paragraph, prepend) => (

{ title }

{ prepend }{ paragraph }

); const Product = (product, key, prices) => (
{ prices ? ( ) : ( ) }

{product.name}

{product.shortDesc}

{ prices && (
$ {product.variants[0].sellPrice} 00
Cont. {product.variants[0].content}
) }
{ product.fullDesc && 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, prices) }
)) }
); const ToC = (categories, products) => (

Indice

{ categories.map((category, i) => (
{category[LABEL]} chevron_right
{ products[category[LABEL]].map(product => Tag(product.name, null, 'toc-tag')) }
)) }
) const Vademecum = (categories, products, prices) => { console.log("prices?", prices); return categories.map((categoryName, i) => (
{ Category(categoryName, products[categoryName[LABEL]], prices) }
)) } const ContactInformation = () => (

Contacto

Argentina

Dirección

Leopoldo Marechal 914, Ciudad Autónoma de Buenos Aires

Telefono

(+5411) 4139-6860/1

Email

consultas@especificosba.com.ar

México

Teléfono

(+5255)4170-8856

Email

contactos@skin-connect.com.mx

Ecuador

Dirección

Av. Felipe II s/n, Via Mall del Río

Teléfono

(+593)07245-5143 (+593)07288-6258

Email

kasanacorp@hotmail.com

) 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, } console.log(config); } componentDidMount() { fetch('data/products-by-category.json') .then(response => response.json()) .then(this.state.config.productFilter) .then(data => { console.log("data", data) this.setState({ products: data, }) }) } render() { const { categories, products, config } = this.state; if (products) { return (
{ ToC(categories, products) } { Vademecum(categories, products, config.prices) } { config.contactInformation && ContactInformation() }
) } else { return (
); } } } ReactDOM.render(dom(VademecumData), domContainer);