UNPKG

trc-client-core

Version:
76 lines (72 loc) 2.14 kB
var Reflux = require('reflux'); var ImmutableStoreMixin = require('reflux-immutable/ImmutableStoreMixin'); var Immutable = require('immutable'); var SodataActions = require('trc-client-core/src/sodata/SodataActions'); import _ from 'lodash'; var SodataStore = Reflux.createStore({ listenables: SodataActions, mixins: [ImmutableStoreMixin], init: function () { this.setState({ technicalTrainers: [], courseCalendar: null }); }, onFetchSoDataCompleted: function (data) { this.setState({ soData: data }); }, onFetchOverEnrolledSoItemsCompleted: function (items) { this.setState({ overEnrollledSoItems: items }); }, onFetchOverEnrolledSoItemCompleted: function (items) { this.setState({ overEnrollledSoData: Immutable.Map(items[items.length - 1].soData), overEnrollledParticipants: Immutable.List(items.map(function(item, key){ item.key = key; return item; })) }); }, onFetchCourseCalendar() { this.setState({ courseCalendar: null }); }, onFetchCourseCalendarCompleted: function (items){ var calendar = _(items).map((month, key) => { return { month: key, courses: _.groupBy(month, 'course.courseCode') }; }).value(); this.setState({ courseCalendar: calendar }); }, onFetchSoItemFailed: console.error.bind(console), onFetchSoItemCompleted: function(payload){ this.setState({ soItem: payload }); }, onPostSingleEnrollment: function() { this.setState({ sendingEnrollemnt: true }); }, onPostSingleEnrollmentCompleted: function(){ this.setState({ sendingEnrollemnt: false }); }, onFetchUpcomingSessionsCompleted: function (items){ this.setState({ upcomingCourses: items }); } }); module.exports = SodataStore;