Update Matsui, combine changes until the next render frame
This commit is contained in:
parent
7ca118b3d4
commit
cd947e7d63
@ -186,7 +186,7 @@
|
|||||||
</script>
|
</script>
|
||||||
</section>
|
</section>
|
||||||
<template @foreach>
|
<template @foreach>
|
||||||
<div class="plot" @if="${d => d.$type == 'Spectrum'}">
|
<div class="plot" @if="${d => d.$type == 'Spectrum'}" $fullscreentoggle='foo'>
|
||||||
<canvas class="plot-grid" $update="${drawSpectrum}" $resize="${drawSpectrum}"></canvas>
|
<canvas class="plot-grid" $update="${drawSpectrum}" $resize="${drawSpectrum}"></canvas>
|
||||||
<canvas class="plot-data" $update="${drawSpectrum}" $resize="${drawSpectrum}"></canvas>
|
<canvas class="plot-data" $update="${drawSpectrum}" $resize="${drawSpectrum}"></canvas>
|
||||||
<canvas class="plot-labels" $update="${drawSpectrum}" $resize="${drawSpectrum}"></canvas>
|
<canvas class="plot-labels" $update="${drawSpectrum}" $resize="${drawSpectrum}"></canvas>
|
||||||
@ -294,25 +294,34 @@
|
|||||||
<script src="cbor.min.js"></script>
|
<script src="cbor.min.js"></script>
|
||||||
<script src="matsui-bundle.min.js"></script>
|
<script src="matsui-bundle.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
Matsui.global.attributes.resize = (element, fn) => {
|
Matsui.global.attributes.fullscreentoggle = (element) => {
|
||||||
element.classList.add('_matsuiResize');
|
Matsui.global.attributes.press(element, count => {
|
||||||
element._matsuiResize = fn;
|
if (count == 2) {
|
||||||
};
|
if (document.fullscreenElement == element) {
|
||||||
addEventListener('resize', e => {
|
document.exitFullscreen();
|
||||||
document.querySelectorAll('._matsuiResize').forEach(e => {
|
} else {
|
||||||
let fn = e._matsuiResize;
|
element.requestFullscreen();
|
||||||
if (fn) fn(e, e.offsetWidth, e.offsetHeight);
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
};
|
||||||
|
|
||||||
let state = Matsui.replace(document.body, {name: "..."});
|
let state = Matsui.replace(document.body, {name: "..."});
|
||||||
state.trackMerges(merge => {
|
state.trackMerges(merge => {
|
||||||
window.parent.postMessage(CBOR.encode(merge), '*');
|
window.parent.postMessage(CBOR.encode(merge), '*');
|
||||||
});
|
});
|
||||||
|
let pendingMerge = null;
|
||||||
addEventListener('message', e => {
|
addEventListener('message', e => {
|
||||||
let merge = CBOR.decode(e.data);
|
let merge = CBOR.decode(e.data);
|
||||||
window.merge = merge;//console.log(merge);
|
if (pendingMerge !== null) {
|
||||||
state.merge(merge);
|
Matsui.merge.apply(pendingMerge, merge);
|
||||||
|
} else {
|
||||||
|
pendingMerge = merge;
|
||||||
|
requestAnimationFrame(_ => {
|
||||||
|
pendingMerge = null;
|
||||||
|
state.merge(merge);
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
window.parent.postMessage(CBOR.encode("ready"), '*');
|
window.parent.postMessage(CBOR.encode("ready"), '*');
|
||||||
|
|||||||
4
stfx/ui/html/matsui-bundle.min.js
vendored
4
stfx/ui/html/matsui-bundle.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user