'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) => (
{
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) => (
{
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);