UNPKG

ucsc-xena-datapages

Version:
90 lines (68 loc) 2.57 kB
/*global require: false, module: false */ 'use strict'; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } var _ = require('./underscore_ext'); var _require = require('./defaults'); var defaultState = _require.defaultState; var _require2 = require('./session'); var updateHostStatus = _require2.updateHostStatus; // After settings change, update the list of hosts that // are in use for the session. var setUserServers = function setUserServers(state) { var _state$servers = state.servers; var activeHosts = _state$servers.activeHosts; var userHosts = _state$servers.userHosts; return _.assocIn(state, ['servers', 'pending'], _.intersection(activeHosts, userHosts)); }; function updateAllHosts(state) { state.allHosts.forEach(function (host) { updateHostStatus(host); // only currently update sessinostorage, not state ( :( ) }); } function setHubs(state, _ref) { var hubs = _ref.hubs; return hubs ? hubs.reduce(function (state, hub) { return _.assocIn(state, ['servers', hub, 'user'], true); }, state) : state; } var controls = { init: function init(state, params) { return setHubs(_.updateIn(state, ['servers'], function (s) { return _.merge(defaultState, s); }), params); }, 'init-post!': function initPost(serverBus, state, newState) { return updateAllHosts(newState); }, 'add-host': function addHost(state, list, host) { return setUserServers(_.updateIn(state, ['servers', list], function (l) { return _.union(l, [host]); })); }, 'remove-host': function removeHost(state, list, host) { return setUserServers(_.updateIn(state, ['servers', list], function (l) { return _.difference(l, [host]); })); }, cohort: function cohort(state, _cohort) { return _.assoc(state, 'cohortPending', [{ name: _cohort }]); } }; var identity = function identity(x) { return x; }; module.exports = { action: function action(state, _ref2) { var _ref3 = _toArray(_ref2); var tag = _ref3[0]; var args = _ref3.slice(1); return (controls[tag] || identity).apply(undefined, [state].concat(_toConsumableArray(args))); }, postAction: function postAction(serverBus, state, _ref4) { var _ref5 = _toArray(_ref4); var tag = _ref5[0]; var args = _ref5.slice(1); return (controls[tag + '-post!'] || identity).apply(undefined, [serverBus, state].concat(_toConsumableArray(args))); } };