From fc8584775e4f54c591cd1917b37acb397e7407c4 Mon Sep 17 00:00:00 2001
From: Expo on server <expo@expo.survex.com>
Date: Sat, 29 Apr 2023 23:35:18 +0100
Subject: [PATCH] Get CaveView working again on cave pages. (v2.2.0) Move
 caveView section back to bottom of page.

---
 templates/cave.html | 440 ++------------------------------------------
 1 file changed, 14 insertions(+), 426 deletions(-)

diff --git a/templates/cave.html b/templates/cave.html
index df69201..8d6ea7e 100644
--- a/templates/cave.html
+++ b/templates/cave.html
@@ -2,426 +2,14 @@
 {% block extraheaders %}
 <!-- cave.html - this text visible because this template has been included -->
 {% if cave.survex_file %}
-
 <!--
 # We put every .3d file in the same folder as 
 # the .svx file, using the {{svx3d}} template variable set in rendercave() in 
 # core/views/caves.py but with a full path. THIS IS NOW DONE March 2022.
-
-
-# This css code below is very similar caveview.css but why is it copied here ?
-# Because it is NOT exactly the same as the distrubuted CaveView code.
-# e.g. the body {} bit in Caveview/css/caveview.css is missing here:
-
 #-->
-<style>
-
-div.cv-panel {
-    position: absolute;
-    top: 0;
-    left: 0;
-    z-index: 100;
-    background-color: rgba(50,50,50,0.5);
-    color: yellowgreen;
-    border: 1px solid black;
-    border-radius: 5px;
-}
-
-div.cv-compass, div.cv-ahi {
-    position: absolute; 
-    bottom: 95px;
-    right: 5px;
-    margin: 0;
-    padding-top: 2px;
-    /*    border: 1px solid white; */
-    text-align: center;
-    width: 78px;
-    height: 19px;
-    z-index: 50;
-    background-color: rgba(50,50,50,0.5);
-    background-color: black;
-    color: white;
-}
-    
-div.cv-ahi {
-    right: 95px;
-}
-
-div.scale-legend {
-    position: absolute;
-    color: white;
-    background-color: black;
-    bottom: 30px;
-}
-
-div.linear-scale {
-    position: absolute;
-    color: white;
-    background-color: black;
-    right: 30px;
-    width: 40px;
-    padding: 2px 0;
-    text-align: right;
-    border: 1px solid black;
-    font-size: 14px;
-}
-
-div.linear-scale-caption {
-    position: absolute;
-    color: white;
-    background-color: black;
-    right: 5px;
-    width: 65px;
-    padding: 2px 0 5px 0;
-    text-align: left;
-    border: 1px solid black;
-    font-size: 14px;
-}
-
-#min-div {
-    border-bottom: 1px solid white;
-}
-
-#max-div {
-    border-top: 1px solid white;
-}
-
-#angle-legend {
-    position: absolute;
-    width: 80px;
-    right: 5px;
-    bottom: 180px;
-    color: white;
-    background-color: black;
-    font-size: 14px;
-    text-align: center;
-}
-
-#scene {
-    width: 100%;
-    height: 700px;
-    position: relative;
-}
-
-#progress-bar {
-    position: absolute;
-    top: 55%;
-    height: 20px;
-    border: 1px solid white;
-    z-index: 100;
-}
-
-#status-text {
-    position: absolute;
-    top: 50%;
-    height: 20px;
-    padding-left: 4px;
-    background-color: black;
-    color: white;
-    z-index: 100;
-}
-
-#frame div.page ul {
-    list-style-type: none;
-    margin: 8px 0 0 0;
-    padding: 0;
-    width: 200px;
-    height: 100%;
-    cursor: default;
-    font-size: 12px;
-    overflow-y: auto;
-    overflow-x: hidden;
-}
-
-#frame div.page li {
-    position: relative;
-    margin-left: 16px;
-    border-bottom: 1px solid #444444;
-}
-
-#frame div.page li.selected {
-    color: #1ab4e5;
-}
-
-#frame div.page li:hover {
-    color: yellow;
-}
-
-#frame div.page div#ui-path {
-    font-size: 12px;
-    border-top: 1px solid grey;
-    border-bottom: 1px solid grey;
-    margin-top: 8px;
-    padding: 2px 0 2px 12px;
-}
-
-#frame div.page div#ui-path span {
-    color: #1ab4e5;
-}
-
-#frame div.page div.slide {
-    position: absolute;
-    top: 64px;
-    left: 0px;
-    height: auto; 
-    margin-top:0;
-    bottom: 44px;
-    background-color: #222222;
-    transition: transform 0.25s ease-in;
-}
-
-#frame div.slide-out {
-    border-right: 1px grey solid;
-    transform: translateX(-100%);
-}
-
-#frame div.page div.descend-tree {
-    position: absolute;
-    top: 0px;
-    right: 0px;
-    margin: 0;
-    color: #1ab4e5;
-    z-index: 110;
-}
-
-#frame {
-    position: absolute;
-    top: 0px;
-    left: 0px;
-    width: 240px;
-    height: 100%;
-    background-color: transparent;
-    transform: translateX(-200px);
-    transition: transform 0.25s ease-in;
-}
-
-#frame.onscreen {
-    transform: none;
-    transition: transform 0.25s ease-out;
-}
-
-#frame a.download {
-    border: 1px solid green;
-    display: block;
-    width: 180px;
-    box-sizing: border-box;
-    margin-top: 6px;
-    margin-bottom: 4px;
-    margin-left: 8px;
-    border: none;
-    border-bottom: 4px solid #1ab4e5;
-    color: #dddddd;
-    background-color: black;
-    padding-bottom: 4px;
-    box-shadow: 1px 1px 8px 0px #888888;
-    outline: nonlass="cavedisplay"e;
-    text-decoration: none;
-    text-align: center;
-}
-
-#frame a.download:hover {
-    color: white;
-}
-
-#frame a.download:active {
-    color: #dddddd;
-    border-bottom: 4px solid #0c536a;
-    box-shadow: none;
-    box-shadow: inset 1px 1px 8px 0px #888888;
-}
-#frame .tab {
-    position: absolute;
-    right: 0px;lass="cavedisplay"
-    width: 40px;
-    height: 40px;
-    box-sizing: border-box;
-    background-color: #444444;
-    border-left: 1px solid black;
-    background-position: center;
-    border-top: 1px solid black;
-}
-
-#frame #close {
-    position: absolute;
-    right: 40px;
-    bottom: 0px;
-    width: 40px;
-    height: 40px;
-    box-sizing: border-box;
-    z-index: 150;
-    background-image: url(../images/ic_remove.png);
-    background-position: center;
-}
-
-#icon_settings {
-    background-image: url(../images/ic_settings.png);
-}
-
-#icon_terrain {
-    background-image: url(../images/ic_terrain.png);
-}
-
-#icon_explore {
-    background-image: url(../images/ic_explore.png);
-}
-
-#icon_info {
-    background-image: url(../images/ic_info.png);
-}
-
-#icon_route {
-    background-image: url(../images/ic_route.png);
-}
-
-#icon_help {
-    background-image: url(../images/ic_help.png);
-}
-
-#frame div.toptab {
-    background-color: #222222;
-    border-left: none;
-    border-right: 1px solid grey;
-    border-top: 1px solid grey;
-}
-
-#frame div.page {
-    position: absolute;
-    top: 0px;
-    bottom: 40px;
-    left: 0px;
-    width: 200px;
-    height: 100%;
-    color: white;
-    background-color: #222222;
-    padding: 0 4px;
-    box-sizing: border-box;
-    cursor: default;
-    padding-bottom: 40px;
-}
-
-#frame div.page div.header {
-    margin: 16px 0px 8px 0px;
-    font-weight: bold;
-    height: 16px;
-    box-sizing: border-box;
-    padding-left: 2px;
-}
-
-#frame div.page div.control {
-    margin: 2px 0 2px 0;
-    padding-top: 2px;
-}
-
-#frame div.page label {
-    display: block;
-    border-top: 1px solid grey;
-    padding: 2px 0 2px 8px;
-    font-size: 12px;
-}
-
-#frame div.page select {
-    display: block;
-    width: 180px;
-    box-sizing: border-box;
-    padding-top: 2px;
-    margin: 2px 0 4px 8px;
-}
-
-#frame div.page select:empty {
-    background-color: #888888;
-}
-
-#frame div.page button {
-    display: block;
-    width: 180px;
-    box-sizing: border-box;
-    margin-top: 4px;
-    margin-bottom: 4px;
-    margin-left: 8px;
-    border: none;
-    border-bottom: 4px solid #1ab4e5;
-    color: #dddddd;
-    background-color: black;
-    padding-bottom: 4px;
-    box-shadow: 1px 1px 8px 0px #888888;
-    outline: none;
-}
-
-#frame div.page button:hover {
-    color: white;
-}
-
-#frame div.page button:active {
-    color: #dddddd;
-    border-bottom: 4px solid #0c536a;
-    box-shadow: none;
-    box-shadow: inset 1px 1px 8px 0px #888888;
-}
-
-#frame div.page input[type="text"] {
-    display: block;
-    width: 180px;
-    box-sizing: border-box;
-    margin-top: 2px;
-    margin-left: 8px;
-}
-
-#frame div.page input[type="checkbox"] {
-    position: absolute;
-    right: 0px;
-}
-
-#frame div.page input[type="range"] {
-    display: block;
-    width: 180px;
-    margin-left: 8px;
-}
-
-#frame dt, #frame dd {
-    font-size: 12px;
-}
-
-#frame dt {
-    clear: both;
-    float: left;
-    padding-left: 16px;
-}
-
-#frame dd {
-    margin-left: 40px;
-}
-
-#frame p {
-    font-size: 12px;
-    line-height: 18px;
-}
-
-div.station-info {
-    position: absolute;
-    border: 1px solid white;
-    background-color: #222222;
-    color: white;
-    padding: 4px;
-    z-index: 200;
-}
-
-
-.overlay-branding {
-    color: white;
-    margin: 4px;
-    position: absolute;
-    right: 0;
-    top: 0;
-}
-div#scene {
-            width: 100%;
-            height: 90%;        }
-
-</style>
-
+<link type="text/css" href="/javascript/CaveView/css/caveview.css" rel="stylesheet"/>
 <script type="text/javascript" src="/javascript/CaveView/js/CaveView2.js" ></script>
 
-
 <script type="text/javascript" >
     function onLoad () {
 
@@ -435,7 +23,7 @@ div#scene {
 
         // load a single survey to display
         // Note the special code in views.caves.py to do this. The appropriate .svx/.3d file may not be simply the cave name +.3d
-        //const ui = new CV2.CaveViewUI( viewer );
+        const ui = new CV2.CaveViewUI( viewer );
 
         ui.loadCave('{{svx3d}}.3d');
     }
@@ -485,18 +73,6 @@ div#scene {
 <p>{% if cave.explorers %}
     <h2>Explorers</h2>
     {{ cave.explorers|safe }}
-{% endif %}
-    <h2>Survex File(s)</h2>
-    All <a href="/survexfile/{{cave.kataster_number}}">survexfiles</a> for this cave  {<br />
-{% if cave.survex_file %}
-    Primary <a href="/survexfile/{{cave.survex_file}}">survex file</a> for this cave 
-    <p>[<a href="https://aardgoose.github.io/CaveView.js/">CaveView</a> display of the .3d file is temporarily disabled while we fix things (Nov.2021).<br> See <a href="/handbook/computing/todo.rst">/handbook/computing/todo.rst</a>.]<br><br>
-    
-    Download .3d file <a href="/cave/3d/{{cave}}">caves-{{  cave.area.all.0.kat_area }}/{{cave.kataster_number}}/{{svx3d}}.3d</a>
-<br>
-cave ID '{{cave.reference}}'<br>
-cave survex path '{{  cave.area.all.0.kat_area }}/{{cave.kataster_number}}'
-    <div id='scene'></div>
 {% endif %}
 {% if cave.underground_description %}
     <h2>Underground Description</h2>
@@ -609,4 +185,16 @@ cave survex path '{{  cave.area.all.0.kat_area }}/{{cave.kataster_number}}'
 {% endif %}</p>
 <a href="{% url "newentrance" cave.url_parent cave.slug %}">New Entrance</a>
 </div>
+    <h2>Survex File(s)</h2>
+    All <a href="/survexfile/{{cave.kataster_number}}">survexfiles</a> for this cave  {<br />
+{% if cave.survex_file %}
+    Primary <a href="/survexfile/{{cave.survex_file}}">survex file</a> for this cave 
+    <p>[<a href="https://aardgoose.github.io/CaveView.js/">CaveView</a> display of the .3d file is temporarily disabled while we fix things (Nov.2021).<br> See <a href="/handbook/computing/todo.rst">/handbook/computing/todo.rst</a>.]<br><br>
+    
+    Download .3d file <a href="/cave/3d/{{cave}}">caves-{{  cave.area.all.0.kat_area }}/{{cave.kataster_number}}/{{svx3d}}.3d</a>
+<br>
+cave ID '{{cave.reference}}'<br>
+cave survex path '{{  cave.area.all.0.kat_area }}/{{cave.kataster_number}}'
+    <div id='scene'></div>
+{% endif %}
 {% endblock content %}