StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
StackGenVis/frontend/node_modules/templates/lib/plugins/views.js

87 lines
2.1 KiB

4 years ago
'use strict';
var utils = require('../utils');
/**
* The `views` plugin is used to bubble up events:
*
* view => collection => app
*
* and to pass down sensible options:
*
* app => collection => view
*/
module.exports = function(app, views, options) {
if (!utils.isValid(views, 'templates-plugins-views', ['views'])) {
return;
}
/**
* If `renameKey` is not defined on collection options,
* use the `app.renameKey` settings.
*/
if (typeof views.options.renameKey !== 'function') {
views.option('renameKey', function(key, view) {
return app.renameKey(key, view);
});
}
/**
* Overwrite the collection's `extendView` method with
* `app.extendView()`
*/
utils.define(views, 'extendView', function() {
return app.extendView.apply(app, arguments);
});
/**
* Bubble up custom collection events to app, allowing the user
* to do: `app.on('page',...)`, `app.on('partial', ...)` etc.
*/
var singularName = views.options.inflection;
if (singularName && app.isApp) {
views.on(singularName, function() {
app.emit.bind(app, singularName).apply(app, arguments);
});
}
/**
* Listen for `view`
* - bubble event from `views` up to `app`
* - set default engine if not defined
* - set default layout if not defined
*/
views.on('view', function(view, collectionName, collection) {
views.setType(view);
// bind the `addView` method to allow chaining
utils.define(view, 'addView', views.addView.bind(views));
// pass the engine defined on `collection.options` to `view.options`
if (!view.engine) {
view.engine = views.options.engine;
}
app.extendView(view, options);
});
/**
* Listen for `load`
*/
views.on('load', function(view, collectionName, collection) {
app.emit.bind(app, 'view').apply(app, arguments);
app.emit.bind(app, 'load').apply(app, arguments);
if (app.options.onLoad !== false
&& views.options.onLoad !== false
&& view.options.onLoad !== false) {
app.handleOnce('onLoad', view);
}
});
};