solverforge-fsr / static /app-dataset.js
blackopsrepl's picture
feat(fsr): add snapshot-scoped route geometry
ae32abe
/* app-dataset.js - demo dataset loader for the Bergamo FSR demo */
(function () {
'use strict';
var FSR = window.FSR = window.FSR || {};
FSR.createDemoDataController = function (options) {
var utils = options.utils;
var selectedId = 'STANDARD';
var catalog = { defaultId: selectedId, availableIds: [selectedId] };
var loading = false;
var el = document.createDocumentFragment();
return {
bootstrap: bootstrap,
el: el,
getCatalog: function () { return catalog; },
getSelectedId: function () { return selectedId; },
isLoading: function () { return loading; },
resolvePlan: resolvePlan,
};
function bootstrap() {
setLoading(true);
notifyCatalog();
return utils.fetchDemoPlan(selectedId)
.then(function (plan) { notifyPlan(plan); })
.catch(function (err) { notifyError(err); })
.finally(function () { setLoading(false); });
}
function resolvePlan() {
var currentPlan = options.getCurrentPlan();
if (currentPlan) return Promise.resolve(utils.clonePlan(currentPlan));
return utils.fetchDemoPlan(selectedId);
}
function setLoading(nextLoading) {
loading = nextLoading;
if (options.onLoadingChange) options.onLoadingChange(loading);
}
function notifyCatalog() {
if (options.onCatalog) options.onCatalog(catalog, selectedId);
}
function notifyPlan(plan) {
if (options.onPlan) options.onPlan(plan, selectedId);
}
function notifyError(err) {
if (options.onError) options.onError(err);
}
};
})();