// When running in the Jupyter notebook we've encountered version conflicts // with some dependencies. So instead of polluting the global require context, // we define a new context. var emperorRequire = require.config({ 'context': 'emperor', // the left side is the module name, and the right side is the path // relative to the baseUrl attribute, do NOT include the .js extension 'paths': { /* jQuery */ 'jquery': '{{ base_url }}/vendor/js/jquery-2.1.4.min', 'jqueryui': '{{ base_url }}/vendor/js/jquery-ui.min', 'jquery_drag': '{{ base_url }}/vendor/js/jquery.event.drag-2.2.min', /* jQuery plugins */ 'chosen': '{{ base_url }}/vendor/js/chosen.jquery.min', 'spectrum': '{{ base_url }}/vendor/js/spectrum.min', 'position': '{{ base_url }}/vendor/js/jquery.ui.position.min', 'contextmenu': '{{ base_url }}/vendor/js/jquery.contextMenu.min', /* other libraries */ 'underscore': '{{ base_url }}/vendor/js/underscore-min', 'chroma': '{{ base_url }}/vendor/js/chroma.min', 'filesaver': '{{ base_url }}/vendor/js/FileSaver.min', 'blob': '{{ base_url }}/vendor/js/Blob', 'canvastoblob': '{{ base_url }}/vendor/js/canvas-toBlob', 'd3': '{{ base_url }}/vendor/js/d3.min', /* THREE.js and plugins */ 'three': '{{ base_url }}/vendor/js/three.min', 'orbitcontrols': '{{ base_url }}/vendor/js/three.js-plugins/OrbitControls', 'projector': '{{ base_url }}/vendor/js/three.js-plugins/Projector', 'svgrenderer': '{{ base_url }}/vendor/js/three.js-plugins/SVGRenderer', 'canvasrenderer': '{{ base_url }}/vendor/js/three.js-plugins/CanvasRenderer', 'selectionbox': '{{ base_url }}/vendor/js/three.js-plugins/SelectionBox', 'selectionhelper': '{{ base_url }}/vendor/js/three.js-plugins/SelectionHelper', /* SlickGrid */ 'slickcore': '{{ base_url }}/vendor/js/slick.core.min', 'slickgrid': '{{ base_url }}/vendor/js/slick.grid.min', 'slickformatters': '{{ base_url }}/vendor/js/slick.editors.min', 'slickeditors': '{{ base_url }}/vendor/js/slick.formatters.min', 'slickdataview': '{{ base_url }}/vendor/js/slick.dataview.min', /* Emperor's objects */ 'util': '{{ base_url }}/js/util', 'model': '{{ base_url }}/js/model', 'multi-model': '{{ base_url }}/js/multi-model', 'view': '{{ base_url }}/js/view', 'controller': '{{ base_url }}/js/controller', 'draw': '{{ base_url }}/js/draw', 'scene3d': '{{ base_url }}/js/sceneplotview3d', 'shapes': '{{ base_url }}/js/shapes', 'animationdirector': '{{ base_url }}/js/animate', 'trajectory': '{{ base_url }}/js/trajectory', 'uistate': '{{ base_url }}/js/ui-state', /* controllers */ 'abcviewcontroller': '{{ base_url }}/js/abc-view-controller', 'viewcontroller': '{{ base_url }}/js/view-controller', 'colorviewcontroller': '{{ base_url }}/js/color-view-controller', 'visibilitycontroller': '{{ base_url }}/js/visibility-controller', 'opacityviewcontroller': '{{ base_url }}/js/opacity-view-controller', 'scaleviewcontroller': '{{ base_url }}/js/scale-view-controller', 'shapecontroller': '{{ base_url }}/js/shape-controller', 'axescontroller': '{{ base_url }}/js/axes-controller', 'animationscontroller': '{{ base_url }}/js/animations-controller', /* editors */ 'shape-editor': '{{ base_url }}/js/shape-editor', 'color-editor': '{{ base_url }}/js/color-editor', 'scale-editor': '{{ base_url }}/js/scale-editor' }, /* Libraries that are not AMD compatible need shim to declare their dependencies. */ 'shim': { 'jquery_drag': { 'deps': ['jquery', 'jqueryui'] }, 'chosen': { 'deps': ['jquery'], 'exports': 'jQuery.fn.chosen' }, 'contextmenu' : { 'deps': ['jquery', 'jqueryui', 'position'] }, 'filesaver' : { 'deps': ['blob'] }, 'canvastoblob' : { 'deps': ['blob'] }, 'slickcore': ['jqueryui'], 'slickgrid': ['slickcore', 'jquery_drag', 'slickformatters', 'slickeditors', 'slickdataview'] } }); emperorRequire( ["jquery", "model", "controller"], function($, model, EmperorController) { var DecompositionModel = model.DecompositionModel; var div = $('#{{ plot_id }}'); var data = {{ data | tojson }}; var plot, biplot = null, ec; function init() { // Initialize the DecompositionModel for the scatter plot, and optionally // add one for the biplot arrows plot = new DecompositionModel(data.plot.decomposition, data.plot.metadata_headers, data.plot.metadata, data.plot.type); if (data.biplot) { biplot = new DecompositionModel(data.biplot.decomposition, data.biplot.metadata_headers, data.biplot.metadata, data.biplot.type); } ec = new EmperorController(plot, biplot, {{ plot_id | tojson }}, undefined, data.info); } function animate() { requestAnimationFrame(animate); ec.render(); } $(window).resize(function() { ec.resize(div.innerWidth(), div.innerHeight()); }); $(function(){ init(); animate(); ec.ready = function () { // any other code that needs to be executed when emperor is loaded should // go here ec.loadConfig(data.plot.settings); // sets up generic callbacks for 3rd party consumers var plotView = ec.sceneViews[0]; /*__custom_on_ready_code__*/ {{ js_on_ready }} } }); }); // END REQUIRE.JS block