@metacell/geppetto-meta-client
Version:
Geppetto web frontend. Geppetto is an open-source platform to build web-based tools to visualize and simulate neuroscience data and models.
315 lines • 13.9 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import { clientActions } from '../actions';
export var clientInitialState = {
colorChanged: {
instance: undefined,
color: undefined
},
components: {
help: {
available: false,
visible: false
},
logo: {
latestUpdate: undefined,
running: false
},
persist_spinner: {
running: false
},
queryBuilder: {
available: false,
visible: false
},
spinner: {}
},
controls_disabled: false,
error: {
latestUpdate: undefined,
message: undefined
},
info: {
latestUpdate: undefined,
message: undefined
},
instances: [],
instance_focused: undefined,
instance_selected: undefined,
jupyter_geppetto_extension: {
loaded: false
},
model: {
id: undefined,
status: undefined
},
project: {
id: undefined,
status: undefined,
properties: {
"public": false,
properties_saved: false,
config_loaded: false,
configuration: undefined
}
},
pythonMessages: {
id: undefined,
type: undefined,
response: undefined,
timestamp: undefined
},
visibility_records: [],
websocket_status: undefined
};
export default function geppettoClientReducer() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 ? arguments[1] : undefined;
return _objectSpread(_objectSpread({}, state), clientReducer(state, action));
}
function clientReducer(state, action) {
var _state$components;
// Hide the spinner when the correspondin offAction arrives
if (state !== null && state !== void 0 && (_state$components = state.components) !== null && _state$components !== void 0 && _state$components.spinner && state.components.spinner[action.type]) {
delete state.components.spinner[action.type];
state.components.spinner = _objectSpread({}, state.components.spinner);
}
switch (action.type) {
case clientActions.SELECT:
if (action.data !== undefined) {
return _objectSpread(_objectSpread({}, state), {}, {
instance_selected: action.data
});
}
break;
case clientActions.VISIBILITY_CHANGED:
if (action.data !== undefined && action.data.instance !== null && action.data.instance !== undefined) {
var instanceName = action.data.instance.getName();
var newVisibility = _toConsumableArray(state.visibility_records);
newVisibility.unshift(instanceName);
return _objectSpread(_objectSpread({}, state), {}, {
visibility_records: newVisibility
});
}
return _objectSpread({}, state);
case clientActions.FOCUS_CHANGED:
if (action.data !== undefined && action.data.instance !== null && action.data.instance !== undefined) {
var instanceName = action.data.instance.getName();
return _objectSpread(_objectSpread({}, state), {}, {
instance_focused: instanceName
});
}
return _objectSpread({}, state);
case clientActions.PROJECT_LOADING:
return _objectSpread(_objectSpread({}, state), {}, {
project: _objectSpread(_objectSpread({}, state.project), {}, {
status: action.data.project_status
})
});
case clientActions.PROJECT_LOADED:
return _objectSpread(_objectSpread({}, state), {}, {
project: _objectSpread(_objectSpread({}, state.project), {}, {
status: action.data.project_status
})
});
case clientActions.PROJECT_DOWNLOADED:
return _objectSpread(_objectSpread({}, state), {}, {
project: _objectSpread(_objectSpread({}, state.project), {}, {
status: action.data.project_status
})
});
case clientActions.PROJECT_CONFIG_LOADED:
return _objectSpread(_objectSpread({}, state), {}, {
project: _objectSpread(_objectSpread({}, state.project), {}, {
properties: _objectSpread(_objectSpread({}, state.project.properties), {}, {
config_loaded: true,
configuration: action.data
})
})
});
case clientActions.MODEL_LOADED:
return _objectSpread(_objectSpread({}, state), {}, {
model: _objectSpread(_objectSpread({}, state.model), {}, {
status: action.data.model_status
})
});
case clientActions.MODELTREE_POPULATED:
return _objectSpread({}, state);
case clientActions.SIMULATIONTREE_POPULATED:
return _objectSpread({}, state);
case clientActions.INSTANCE_DELETED:
var deletedInstances = state.instances.filter(function (item) {
item !== action.data;
});
return _objectSpread(_objectSpread({}, state), {}, {
instances: deletedInstances
});
case clientActions.INSTANCES_CREATED:
var createdInstances = _toConsumableArray(state.instances);
action.data.forEach(function (instance) {
var path = instance.getInstancePath();
if (state.instances.indexOf(path) == -1) {
createdInstances.push(path);
}
});
return _objectSpread(_objectSpread({}, state), {}, {
instances: createdInstances
});
case clientActions.SHOW_QUERYBUILDER:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
queryBuilder: _objectSpread(_objectSpread({}, state.components.queryBuilder), {}, {
visible: true
})
})
});
case clientActions.HIDE_QUERYBUILDER:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
queryBuilder: _objectSpread(_objectSpread({}, state.components.queryBuilder), {}, {
visible: false
})
})
});
case clientActions.SHOW_SPINNER:
var offAction = action.data.offAction || clientActions.HIDE_SPINNER;
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
spinner: _objectSpread(_objectSpread({}, state.components.spinner), {}, _defineProperty({}, offAction, action.data.message))
})
});
case clientActions.SHOW_HELP:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
help: _objectSpread(_objectSpread({}, state.components.help), {}, {
visible: true
})
})
});
case clientActions.HIDE_HELP:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
help: _objectSpread(_objectSpread({}, state.components.help), {}, {
visible: false
})
})
});
case clientActions.COLOR_SET:
action.data.instance.setColor(action.data.color);
return _objectSpread(_objectSpread({}, state), {}, {
colorChanged: _objectSpread(_objectSpread({}, state.colorChanged), {}, {
color: action.data.color,
instance: action.data.instance
})
});
case clientActions.PROJECT_MADE_PUBLIC:
return _objectSpread(_objectSpread({}, state), {}, {
project: _objectSpread(_objectSpread({}, state.project), {}, {
properties: _objectSpread(_objectSpread({}, state.project.properties), {}, {
"public": true
})
})
});
case clientActions.LIT_ENTITIES_CHANGED:
return _objectSpread({}, state);
case clientActions.COMPONENT_DESTROYED:
return _objectSpread({}, state);
case clientActions.PROJECT_PROPERTIES_SAVED:
return _objectSpread(_objectSpread({}, state), {}, {
project: _objectSpread(_objectSpread({}, state.project), {}, {
properties: _objectSpread(_objectSpread({}, state.project.properties), {}, {
properties_saved: true
})
})
});
case clientActions.RECEIVE_PYTHON_MESSAGE:
return _objectSpread(_objectSpread({}, state), {}, {
pythonMessages: _objectSpread(_objectSpread({}, state.pythonMessages), {}, {
id: action.data.id,
type: action.data.type,
response: action.data.response,
timestamp: action.data.timestamp
})
});
case clientActions.ERROR_WHILE_EXEC_PYTHON_COMMAND:
return _objectSpread(_objectSpread({}, state), {}, {
pythonMessages: _objectSpread(_objectSpread({}, state.pythonMessages), {}, {
id: action.data.id,
type: action.data.type,
response: action.data.response,
timestamp: action.data.timestamp
})
});
case clientActions.WEBSOCKET_DISCONNECTED:
return _objectSpread(_objectSpread({}, state), {}, {
websocket_status: clientActions.WEBSOCKET_DISCONNECTED
});
case clientActions.SPIN_LOGO:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
logo: _objectSpread(_objectSpread({}, state.components.logo), {}, {
running: true
})
})
});
case clientActions.STOP_LOGO:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
logo: _objectSpread(_objectSpread({}, state.components.logo), {}, {
running: false
})
})
});
case clientActions.GEPPETTO_ERROR:
return _objectSpread(_objectSpread({}, state), {}, {
error: _objectSpread(_objectSpread({}, state.error), {}, {
latestUpdate: action.data.latestUpdate,
message: action.data.message
})
});
case clientActions.GEPPETTO_INFO:
return _objectSpread(_objectSpread({}, state), {}, {
info: _objectSpread(_objectSpread({}, state.info), {}, {
latestUpdate: action.data.latestUpdate,
message: action.data.message
})
});
case clientActions.SPIN_PERSIST:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
persist_spinner: _objectSpread(_objectSpread({}, state.components.persist_spinner), {}, {
running: true
})
})
});
case clientActions.STOP_PERSIST:
return _objectSpread(_objectSpread({}, state), {}, {
components: _objectSpread(_objectSpread({}, state.components), {}, {
persist_spinner: _objectSpread(_objectSpread({}, state.components.persist_spinner), {}, {
running: false
})
})
});
case clientActions.JUPYTER_GEPPETTO_EXTENSION_READY:
return _objectSpread(_objectSpread({}, state), {}, {
jupyter_geppetto_extension: _objectSpread(_objectSpread({}, state.jupyter_geppetto_extension), {}, {
loaded: true
})
});
case clientActions.DISABLE_CONTROLS:
return _objectSpread(_objectSpread({}, state), {}, {
controls_disabled: true
});
default:
}
}