windowmanager.js
A framework to manage multiple dockable HTML windows.
This extension is designed to support multiple different different encapsulation runtimes.
See API Documentation for more information.
Runtimes supported:
Future runtimes:
Examples
You can see a live demo at Eikos Partners Blotter Demonstration.
An open source example can be found at: https://github.com/aesalazar/windowmanagerjsdemo
A basic example to get started:
// Create a new window:
let childWindow = new windowmanager.Window({
url: "child.html", // Loads "child.html" based on the current window's url.
width: 500,
height: 500
});
// Execute code when window is ready for commands:
childWindow.onReady(() => {
childWindow.focus(); // Set focus to childWindow.
});
// Use the layout manager.
let state = {
width: 400,
height: 400,
url: 'child.html',
title: 'Child Window',
frame: false
};
let configs = [state, state, state];
let layout = new windowmanager.Layout('tabbed', 'layout-div', configs);
Installation - NPM package / express server
npm install --save windowmanager
Loading the package via require
in node only gives you access to the script paths to make it easier to serve up the script:
const windowmanager = require('windowmanager');
...
// Start windowmanager in this node instance:
windowmanager.start({
// Optionally override the windowmanager package.json options for Electron's runtime:
endpoint: "http://localhost:5000/", // The starting window's page location
config: "http://localhost:5000/app.json" // Where the OpenFin/Electron app.json startup file is
});
...
// Set up to access windowmanager debug, minified and map scripts via root url:
// Will give access to windowmanager through: example.com/windowmanager.js
app.use('/', express.static(windowmanager.distPath, { index: false }));
// Set up access to windowmanager.js via get:
app.get('/js/windowmanager.js', function (req, res) {
res.sendFile(windowmanager.debug.scriptPath);
});
app.get('/js/windowmanager.min.js', function (req, res) {
res.sendFile(windowmanager.min.scriptPath);
});
Installation - dist script
Manually download either one of the following scripts from the dist folder (which contains the latest nightly version), and add it to your application.
NOTE: Bundling or compiling with babelify will break the script.
Example installation with dist script and webpack
- Download dist script
- Put in its own folder in root directory
- in webpack config, under your
module:
rules:
test: /\.js$/,
make sure toexclude:/folderName/
- npm install
copy-webpack-plugin
and - in webpack config, import
const CopyWebpackPlugin = require('copy-webpack-plugin')
- under plugins include
new CopyWebpackPlugin([ {from:'folderName',to:'folderName'} ]),
- in your entry point html page, include
<script src="./folderName/windowmanager.js></script>