// License: LGPL-3.0-or-later const R = require('ramda') const h = require('snabbdom/h') const flyd = require('flyd') const render = require('ff-core/render') const snabbdom = require('snabbdom') const request = require('../../common/request') const listing = require('../listing-item') module.exports = pathPrefix => { const get = param => { const path = `${pathPrefix}?${param}=t` return request({path, method: 'get'}).load } const init = _ => { return { active: get('active') , past: get('past') , unpublished: get('unpublished') , deleted: get('deleted') } } const listings = (key, state) => { const resp$ = state[key] const mixin = content => h('section.u-marginBottom--30', [ h('h5.u-centered.u-marginBottom--20', key.charAt(0).toUpperCase() + key.slice(1) + ' Events') , h(`div.fundraiser--${key}`, content) ]) if(!resp$()) return mixin([h('p.u-padding--15', 'Loading...')]) if(!resp$().body.length) return mixin([h('p.u-padding--15', `No ${key} events`)]) return mixin(R.map(listing, resp$().body)) } const view = state => h('div', [ listings('active', state) , listings('past', state) , listings('unpublished', state) , listings('deleted', state) ]) const container = document.querySelector('#js-eventsListing') const patch = snabbdom.init([ require('snabbdom/modules/class') , require('snabbdom/modules/props') ]) render({ patch, container , view, state: init() }) }