Minimal support for "sticky" machines (ie, machines that can't be scrolled off the top of the page)
This commit is contained in:
parent
6c21a2722c
commit
ae4d3196ef
3 changed files with 26 additions and 15 deletions
|
|
@ -103,7 +103,7 @@ of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'a
|
|||
{% capture machine_parms %}{{ site.left_brace }}autoMount:{{ machine_autoMount }}{{ machine_autoPower }}{{ machine_autoStart }}{{ machine_drives }},state:"{{ machine.state }}",messages:"{{ machine.messages }}",connection:"{{ machine.connection }}"{{ site.right_brace }}{% endcapture %}
|
||||
{% if site.pcjs.compiled == true and machine.uncompiled != true %}
|
||||
{% capture machine_script %}<!--suppress BadExpressionStatementJS -->
|
||||
<script type="text/javascript" src="{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/{{ machine_file }}.js"></script>{% endcapture %}
|
||||
<script type="text/javascript" src="{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/{{ machine_file }}.js"></script>{% endcapture %}
|
||||
{% unless machine_scripts contains machine_script %}
|
||||
{{ machine_script }}
|
||||
{% endunless %}
|
||||
|
|
@ -144,24 +144,35 @@ of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'a
|
|||
{% endif %}
|
||||
{% endif %}
|
||||
<script type="text/javascript">{{ machine_embed }}('{{ machine.id }}','{{ machine_config }}','{{ machine_template }}','{{ machine_parms }}');</script>
|
||||
{% if machine.cling == "top" }
|
||||
{% if machine.sticky == "top" %}
|
||||
<script type="text/javascript">
|
||||
var startMachinePos=-1;
|
||||
window.onscroll=function(){
|
||||
var startMachinePos = -1;
|
||||
window.onscroll = function() {
|
||||
var machine = document.getElementById('{{ machine.id }}');
|
||||
if (startMachinePos < 0) {
|
||||
startMachinePos = findTop(machine);
|
||||
}
|
||||
if (window.pageYOffset > startMachinePos) {
|
||||
machine.style.position = 'fixed';
|
||||
machine.style.top = 0;
|
||||
} else {
|
||||
machine.style.position = 'relative';
|
||||
if (machine) {
|
||||
var machineFooter = document.getElementById('{{ machine.id }}.footer');
|
||||
if (startMachinePos < 0) {
|
||||
startMachinePos = findTop(machine);
|
||||
}
|
||||
if (window.pageYOffset <= startMachinePos) {
|
||||
machine.style.position = 'relative';
|
||||
machine.style.zIndex = 'auto';
|
||||
machine.style.backgroundColor = '';
|
||||
machine.style.paddingRight = 0;
|
||||
if (machineFooter) machineFooter.style.paddingTop = 0;
|
||||
} else {
|
||||
machine.style.position = 'fixed';
|
||||
machine.style.zIndex = 1;
|
||||
machine.style.backgroundColor = 'white';
|
||||
machine.style.paddingRight = '30px';
|
||||
machine.style.top = 0;
|
||||
if (machineFooter) machineFooter.style.paddingTop = machine.offsetHeight + 'px';
|
||||
}
|
||||
}
|
||||
};
|
||||
function findTop(obj) {
|
||||
var curTop = 0;
|
||||
if (typeof (obj.offsetParent) != 'undefined' && obj.offsetParent) {
|
||||
if (typeof obj.offsetParent != 'undefined' && obj.offsetParent) {
|
||||
while (obj.offsetParent) {
|
||||
curTop += obj.offsetTop;
|
||||
obj = obj.offsetParent;
|
||||
|
|
@ -174,7 +185,7 @@ of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'a
|
|||
return curTop;
|
||||
}
|
||||
</script>
|
||||
{% endif }
|
||||
{% endif %}
|
||||
{% if page.build %}
|
||||
<script type="text/javascript" src="{{ site.baseurl }}/modules/build/lib/build.js"></script>
|
||||
<script type="text/javascript">buildPC("{{ page.build }}");</script>
|
||||
|
|
|
|||
|
|
@ -8,3 +8,4 @@
|
|||
{% endfor %}
|
||||
[{{ machine_name }}]
|
||||
</div>
|
||||
<p id="{{ include.id }}.footer"></p>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ machines:
|
|||
type: pc8080
|
||||
config: /devices/pc8080/machine/vt100/machine.xml
|
||||
connection: serialPort->test1170.dl11
|
||||
cling: top
|
||||
---
|
||||
|
||||
[PDPjs](/devices/pdp11/machine/) is the newest addition to the PCjs family of emulators, joining PCx86, PC8080, and C1Pjs.
|
||||
|
|
|
|||
Loading…
Reference in a new issue