corporate-frontend-mithril
Version:
Corporate frontend MithrilJS modules
39 lines (32 loc) • 1.17 kB
JavaScript
const ArtsConstant= require('./../constant/arts-constant');
const stream= require('mithril/stream');
const qs= require('query-string');
const FPO= require('fpo');
const _= require('lodash');
let resultStream = stream();
let queryStringFn = function({props}) {
return function(obj) {
return qs.stringify(FPO.pick({v:obj, props}));
};
};
let getUnitListQuery = queryStringFn({props: [ArtsConstant.kEY_DEPARTMENT, ArtsConstant.KEY_LEVEL]});
let fetchUnitList = function({obj}) {
resultStream(ArtsConstant.LOADING_RESULT);
m.redraw();
fetch(`${ArtsConstant.ARTS_UOS_API}?allUOS&${getUnitListQuery(obj)}`)
.then( response => response.json())
.then((result)=> {
let semester = obj[ArtsConstant.KEY_SEMESTER];
let data = result && result.data ? FPO.filterIn({
fn: ({v})=> semester ? Object.is(v.Period, semester) : true,
arr: result.data,
}) : ArtsConstant.NO_RESULT;
if(_.isEmpty(data)) data = ArtsConstant.NO_RESULT;
resultStream(data);
m.redraw();
});
};
module.exports = {
resultStream,
fetchUnitList,
};