webglimpse
Version:
Webglimpse is a data visualization library for the web.
63 lines • 10.5 kB
JavaScript
import { hasval } from '../util/util';
/**
* A layout similar to overlay_layout except only one child pane is visible at a time.
* That child pane has its size set to the size of the parent pane. The other children panes
* are made invisible until they are the active pane.
*
* The layoutArg for each child is a boolean, true if it should be the active pane. One is chosen
* arbitrarily if multiple panes have true layoutArg.
*/
export function newCardLayout() {
return {
updatePrefSize: function (parentPrefSize, children) {
let activeChild;
for (let c = 0; c < children.length; c++) {
const child = children[c];
const isActive = child.layoutArg;
if (isActive) {
activeChild = child;
}
}
if (hasval(activeChild)) {
const childPrefSize = activeChild.prefSize;
const childPrefWidth = childPrefSize.w;
if (hasval(childPrefWidth)) {
parentPrefSize.w = childPrefWidth;
}
else {
parentPrefSize.w = null;
}
const childPrefHeight = childPrefSize.h;
if (hasval(childPrefHeight)) {
parentPrefSize.h = childPrefHeight;
}
else {
parentPrefSize.h = null;
}
}
else {
parentPrefSize.w = 0;
parentPrefSize.h = 0;
}
},
updateChildViewports: function (children, parentViewport) {
let activeChildIndex;
for (let c = 0; c < children.length; c++) {
const child = children[c];
const isActive = child.layoutArg;
if (isActive) {
activeChildIndex = c;
}
}
for (let c = 0; c < children.length; c++) {
if (c === activeChildIndex) {
children[c].viewport.setBounds(parentViewport);
}
else {
children[c].viewport.setEdges(0, 0, 0, 0);
}
}
}
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZF9sYXlvdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd2ViZ2xpbXBzZS9sYXlvdXQvY2FyZF9sYXlvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHdEM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxhQUFhO0lBRXpCLE9BQWU7UUFFWCxjQUFjLEVBQUUsVUFBVSxjQUFvQixFQUFFLFFBQXVCO1lBQ25FLElBQUksV0FBd0IsQ0FBQztZQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUNqQyxJQUFJLFFBQVEsRUFBRTtvQkFDVixXQUFXLEdBQUcsS0FBSyxDQUFDO2lCQUN2QjthQUNKO1lBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBRXJCLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBRTNDLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFO29CQUN4QixjQUFjLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztpQkFDckM7cUJBQ0k7b0JBQ0QsY0FBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzNCO2dCQUVELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUN6QixjQUFjLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztpQkFDdEM7cUJBQ0k7b0JBQ0QsY0FBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzNCO2FBQ0o7aUJBQ0k7Z0JBQ0QsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQztRQUVELG9CQUFvQixFQUFFLFVBQVUsUUFBdUIsRUFBRSxjQUFrQztZQUN2RixJQUFJLGdCQUF3QixDQUFDO1lBRTdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ2pDLElBQUksUUFBUSxFQUFFO29CQUNWLGdCQUFnQixHQUFHLENBQUMsQ0FBQztpQkFDeEI7YUFDSjtZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxnQkFBZ0IsRUFBRTtvQkFDeEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ2xEO3FCQUNJO29CQUNELFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM3QzthQUNKO1FBQ0wsQ0FBQztLQUVKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE0LCBNZXRyb24sIEluYy5cclxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICpcclxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbixcclxuICogYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxyXG4gKlxyXG4gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcclxuICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXHJcbiAqXHJcbiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcclxuICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxyXG4gKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cclxuICpcclxuICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnNcclxuICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcclxuICogICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxyXG4gKlxyXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcclxuICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcclxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxyXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxyXG4gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcclxuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xyXG4gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT05cclxuICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcclxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcclxuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXHJcbiAqL1xyXG5pbXBvcnQgeyBMYXlvdXQsIExheW91dEVudHJ5IH0gZnJvbSAnLi4vY29yZSc7XHJcbmltcG9ydCB7IFNpemUsIEJvdW5kc1VubW9kaWZpYWJsZSB9IGZyb20gJy4uL2JvdW5kcyc7XHJcbmltcG9ydCB7IGhhc3ZhbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEEgbGF5b3V0IHNpbWlsYXIgdG8gb3ZlcmxheV9sYXlvdXQgZXhjZXB0IG9ubHkgb25lIGNoaWxkIHBhbmUgaXMgdmlzaWJsZSBhdCBhIHRpbWUuXHJcbiAqIFRoYXQgY2hpbGQgcGFuZSBoYXMgaXRzIHNpemUgc2V0IHRvIHRoZSBzaXplIG9mIHRoZSBwYXJlbnQgcGFuZS4gVGhlIG90aGVyIGNoaWxkcmVuIHBhbmVzXHJcbiAqIGFyZSBtYWRlIGludmlzaWJsZSB1bnRpbCB0aGV5IGFyZSB0aGUgYWN0aXZlIHBhbmUuXHJcbiAqXHJcbiAqIFRoZSBsYXlvdXRBcmcgZm9yIGVhY2ggY2hpbGQgaXMgYSBib29sZWFuLCB0cnVlIGlmIGl0IHNob3VsZCBiZSB0aGUgYWN0aXZlIHBhbmUuIE9uZSBpcyBjaG9zZW5cclxuICogYXJiaXRyYXJpbHkgaWYgbXVsdGlwbGUgcGFuZXMgaGF2ZSB0cnVlIGxheW91dEFyZy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBuZXdDYXJkTGF5b3V0KCk6IExheW91dCB7XHJcblxyXG4gICAgcmV0dXJuIDxMYXlvdXQ+e1xyXG5cclxuICAgICAgICB1cGRhdGVQcmVmU2l6ZTogZnVuY3Rpb24gKHBhcmVudFByZWZTaXplOiBTaXplLCBjaGlsZHJlbjogTGF5b3V0RW50cnlbXSkge1xyXG4gICAgICAgICAgICBsZXQgYWN0aXZlQ2hpbGQ6IExheW91dEVudHJ5O1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjaGlsZHJlbi5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltjXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gY2hpbGQubGF5b3V0QXJnO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2hpbGQgPSBjaGlsZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGhhc3ZhbChhY3RpdmVDaGlsZCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFByZWZTaXplID0gYWN0aXZlQ2hpbGQucHJlZlNpemU7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRQcmVmV2lkdGggPSBjaGlsZFByZWZTaXplLnc7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzdmFsKGNoaWxkUHJlZldpZHRoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLncgPSBjaGlsZFByZWZXaWR0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLncgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUHJlZkhlaWdodCA9IGNoaWxkUHJlZlNpemUuaDtcclxuICAgICAgICAgICAgICAgIGlmIChoYXN2YWwoY2hpbGRQcmVmSGVpZ2h0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLmggPSBjaGlsZFByZWZIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRQcmVmU2l6ZS5oID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLncgPSAwO1xyXG4gICAgICAgICAgICAgICAgcGFyZW50UHJlZlNpemUuaCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB1cGRhdGVDaGlsZFZpZXdwb3J0czogZnVuY3Rpb24gKGNoaWxkcmVuOiBMYXlvdXRFbnRyeVtdLCBwYXJlbnRWaWV3cG9ydDogQm91bmRzVW5tb2RpZmlhYmxlKSB7XHJcbiAgICAgICAgICAgIGxldCBhY3RpdmVDaGlsZEluZGV4OiBudW1iZXI7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNoaWxkcmVuLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2NdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBjaGlsZC5sYXlvdXRBcmc7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVDaGlsZEluZGV4ID0gYztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjaGlsZHJlbi5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT09IGFjdGl2ZUNoaWxkSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltjXS52aWV3cG9ydC5zZXRCb3VuZHMocGFyZW50Vmlld3BvcnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5bY10udmlld3BvcnQuc2V0RWRnZXMoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfTtcclxufVxyXG4iXX0=