Skip to content
Snippets Groups Projects
scrollView.html 20.8 KiB
Newer Older
  • Learn to ignore specific revisions
  • <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <title>Scroll View</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
            [dropzone] {
                background-color: grey;
                margin: 1px;
                border-width: 1px;
                border-style: dashed;
            }
    
            [data-fact-id] {
                background-color: lightgray;
            }
    
            [data-hint-available] {
                background-color: yellow
            }
    
            math {
                display: inline-flex;
                align-items: center;
                flex-wrap: wrap;
            }
    
            .legacySlot {
                width: 100px;
                height: 100px;
                margin: 50px;
                border-width: 1px;
            }
    
            #rectangle {
                width: 10px;
                height: 10px;
                position: absolute;
                background-color: red;
            }
        </style>
        <script src="jquery-3.7.1.slim.min.js"></script> 
    </head>
    
    <body>
    
        <!-- The canvas is initially hidden, it will be unhidden once the renderer is set up. 
            So, if that setup fails there is no empty space -->
        <canvas id="math-mind-canvas" width="400" height="300" hidden></canvas>
    
        <div id="scrollContainer">
            <scroll-description title='DefaultScroll' alt='No scroll loaded yet'>
                <div>No scroll selected yet.</div>
                <span>Given a triangle</span>
                <math>
                    <mi>&xutri;<!-- △ --></mi>
                    <mi data-slot-id="http://mathhub.info/FrameIT/frameworld?TriangleProblem?A"></mi>
                    <mi data-slot-id="http://mathhub.info/FrameIT/frameworld?TriangleProblem?B"></mi>
                    <mi data-slot-id="http://mathhub.info/FrameIT/frameworld?TriangleProblem?C"></mi>
                </math>
                <span>right-angled at</span>
                <math>
                    <!--<mi>&angrtvbd;</mi>--><!-- ⦝ -->
                    <mi data-slot-id="http://mathhub.info/FrameIT/frameworld?TriangleProblem_RightAngleAtC?rightAngleC">
                    </mi>
                </math>,<br />
                <span>the opposite side has length</span>
                <math>
                    <mi data-solution-id="http://mathhub.info/FrameIT/frameworld?OppositeLen/Solution?deducedLineCA"></mi>
                    <mo>&equals;</mo>
                    <mrow>
                        <mi>tan</mi>
                        <!--<mo>&#8289;</mo>-->
                        <mo>(</mo>
                        <mi data-slot-id="http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB"></mi>
                        <mo>)</mo>
                    </mrow>
                    <mo>&#8290;</mo>
                    <mi data-slot-id="http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC"></mi>
                </math>
                <span>.</span>
                <div>
                    <svg width='50mm' height='45mm' viewBox='35 0 90 70' version='1.1' id='triangle'
                        xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'>
                        <g id='shape'>
                            <path
                                style='fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
                                d='M 42.871972,64.67128 H 84.290656 V 7.6297578 Z' id='triangle' />
                            <path id='angleABC'
                                style='fill:none;stroke:#000000;stroke-width:0.265;stroke-dasharray:none;stroke-opacity:1'
                                d='m 46.024276,60.304806 a 5.3589964,5.3589964 0 0 1 2.252109,4.366474 h -5.358996 z' />
                            <g id='angleBCA'>
                                <path
                                    style='fill:none;stroke:#000000;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1'
                                    id='rightAngle'
                                    d='m 78.972396,64.665062 a 5.3308268,5.3308268 0 0 1 5.330827,-5.330827 v 5.330827 z' />
                                <circle
                                    style='fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1'
                                    id='rightAngleDot' cx='82.081886' cy='62.813831' r='0.32113415' />
                            </g>
                        </g>
                        <g id='labels'
                            style='font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583'>
                            <text xml:space='preserve' x='39.242592' y='67.117035' id='pointB' style='fill:#0000ff'
                                data-slot-id='http://mathhub.info/FrameIT/frameworld?TriangleProblem?B'>${lverb B}</text>
                            <text xml:space='preserve' x='85.100548' y='68.080437' id='pointC' style='fill:#0000ff'
                                data-slot-id='http://mathhub.info/FrameIT/frameworld?TriangleProblem?C'>${lverb C}</text>
                            <text xml:space='preserve' x='84.650963' y='6.551136' id='pointA' style='fill:#0000ff'
                                data-slot-id='http://mathhub.info/FrameIT/frameworld?TriangleProblem?A'>${lverb A}</text>
                            <text xml:space='preserve' x='48.234348' y='62.492699' id='angleAtB' style='fill:#ffcc00'
                                data-slot-id='http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB'>${lverb
                                angleB}</text>
                            <text xml:space='preserve' x='71.548683' y='60.951256' id='rightAngleAtC' style='fill:#ffcc00'
                                data-slot-id='http://mathhub.info/FrameIT/frameworld?TriangleProblem_RightAngleAtC?rightAngleC'>${lverb
                                rightAngleC}</text>
                            <text xml:space='preserve' x='59.409813' y='68.273117' id='distanceBC' style='fill:#008000'
                                data-slot-id='http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC'>${lverb
                                distanceBC}</text>
                            <text xml:space='preserve' x='84.972092' y='35.260529' id='solutionCA' style='fill:#008000'
                                data-solution-id='http://mathhub.info/FrameIT/frameworld?OppositeLen/Solution?deducedLineCA'>${lverb
                                deducedLineCA}</text>
                        </g>
                    </svg>
                </div>
            </scroll-description>
        </div>
        <button type="button" title="Apply the scroll" onclick="applyScroll('')">Apply</button><br>
        <p>You can right click on yellow slots to get a hint.</p>
    
        <script id="load-other-scripts">
            /** 
             * Load all .js files for interactive scrolls. (So we can use e.g. Typescript)
             * 
             * This is no more dangerous than having this file in the streaming assets. 
             * Any malicious code could just be written in here as well ¯\_(ツ)_/¯. 
            */
            function loadScript(url) {
                const head = document.getElementsByTagName('head')[0];
                const script = document.createElement('script');
                script.type = 'text/javascript';
                script.src = url;
                head.appendChild(script);
            }
    
            loadScript("./scroll_interaction/Drop_facts.js")
            loadScript("./scroll_interaction/SetScrollContent.js")
            //loadScript("./scroll_interaction/webgl-demo.js")
    
        </script>
        <script src="./scroll_interaction/Math_Mind.js" type="module"></script>
        <data id="Unity-Data-Interface" hidden
            data-assignments='{&quot;http://mathhub.info/FrameIT/frameworld?TriangleProblem?A&quot;:{&quot;Item1&quot;:&quot;(C)&quot;,&quot;Item2&quot;:&quot;http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact310&quot;},&quot;http://mathhub.info/FrameIT/frameworld?TriangleProblem?B&quot;:{&quot;Item1&quot;:&quot;(B)&quot;,&quot;Item2&quot;:&quot;http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact309&quot;},&quot;http://mathhub.info/FrameIT/frameworld?TriangleProblem?C&quot;:{&quot;Item1&quot;:&quot;C&quot;,&quot;Item2&quot;:&quot;&quot;},&quot;http://mathhub.info/FrameIT/frameworld?TriangleProblem_RightAngleAtC?rightAngleC&quot;:{&quot;Item1&quot;:&quot;⊾C&quot;,&quot;Item2&quot;:&quot;&quot;},&quot;http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC&quot;:{&quot;Item1&quot;:&quot;BC&quot;,&quot;Item2&quot;:&quot;&quot;},&quot;http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB&quot;:{&quot;Item1&quot;:&quot;∠ABC&quot;,&quot;Item2&quot;:&quot;&quot;},&quot;http://mathhub.info/FrameIT/frameworld?OppositeLen/Solution?deducedLineCA&quot;:{&quot;Item1&quot;:&quot;CA&quot;,&quot;Item2&quot;:&quot;&quot;}}' 
            data-scroll-dynamic='{"ref":"http://mathhub.info/FrameIT/frameworld?OppositeLen","label":"OppositeLen","description":"<scroll-description title=&#x27;OppositeLenScroll&#x27; alt=&#x27;Given a triangle △ABC right-angled at ⊾C, the opposite side has length CA = tan(∠ABC) ⋅ BC.&#x27;>     <span>Given a triangle</span>       <math>           <mi>&xutri;<!-- △ --></mi>           <mi data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem?A&#x27;></mi>           <mi data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem?B&#x27;></mi>           <mi data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem?C&#x27;></mi>       </math>       <span>right-angled at</span>       <math>           <!--<mi>&angrtvbd;</mi>--><!-- ⦝ -->           <mi data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem_RightAngleAtC?rightAngleC&#x27;></mi>       </math>,<br />       <span>the opposite side has length</span>       <math>           <mi data-solution-id=&#x27;http://mathhub.info/FrameIT/frameworld?OppositeLen/Solution?deducedLineCA&#x27;></mi>           <mo>&equals;</mo>           <mrow>               <mi>tan</mi>               <!--<mo>&#8289;</mo>-->               <mo>(</mo>               <mi data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB&#x27;></mi>               <mo>)</mo>           </mrow>           <mo>&#8290;</mo>           <mi data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC&#x27;></mi>       </math>       <span>.</span>       <div>           <svg           width=&#x27;50mm&#x27;           height=&#x27;45mm&#x27;           viewBox=&#x27;35 0 90 70&#x27;           version=&#x27;1.1&#x27;           id=&#x27;triangle&#x27;           xmlns=&#x27;http://www.w3.org/2000/svg&#x27;           xmlns:svg=&#x27;http://www.w3.org/2000/svg&#x27;>           <g id=&#x27;shape&#x27;>               <path                   style=&#x27;fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1&#x27;                   d=&#x27;M 42.871972,64.67128 H 84.290656 V 7.6297578 Z&#x27;                   id=&#x27;triangle&#x27; />               <path                   id=&#x27;angleABC&#x27;                   style=&#x27;fill:none;stroke:#000000;stroke-width:0.265;stroke-dasharray:none;stroke-opacity:1&#x27;                   d=&#x27;m 46.024276,60.304806 a 5.3589964,5.3589964 0 0 1 2.252109,4.366474 h -5.358996 z&#x27; />               <g                   id=&#x27;angleBCA&#x27;>                   <path                       style=&#x27;fill:none;stroke:#000000;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1&#x27;                       id=&#x27;rightAngle&#x27;                       d=&#x27;m 78.972396,64.665062 a 5.3308268,5.3308268 0 0 1 5.330827,-5.330827 v 5.330827 z&#x27; />                   <circle                       style=&#x27;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1&#x27;                       id=&#x27;rightAngleDot&#x27;                       cx=&#x27;82.081886&#x27;                       cy=&#x27;62.813831&#x27;                       r=&#x27;0.32113415&#x27; />               </g>           </g>           <g               id=&#x27;labels&#x27;               style=&#x27;font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583&#x27;           >               <text                   xml:space=&#x27;preserve&#x27;                   x=&#x27;39.242592&#x27;                   y=&#x27;67.117035&#x27;                   id=&#x27;pointB&#x27;                   style=&#x27;fill:#0000ff&#x27;                   data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem?B&#x27;>B</text>               <text                   xml:space=&#x27;preserve&#x27;                   x=&#x27;85.100548&#x27;                   y=&#x27;68.080437&#x27;                   id=&#x27;pointC&#x27;                   style=&#x27;fill:#0000ff&#x27;                   data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem?C&#x27;>C</text>               <text                   xml:space=&#x27;preserve&#x27;                   x=&#x27;84.650963&#x27;                   y=&#x27;6.551136&#x27;                   id=&#x27;pointA&#x27;                   style=&#x27;fill:#0000ff&#x27;                   data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem?A&#x27;>A</text>               <text                   xml:space=&#x27;preserve&#x27;                   x=&#x27;48.234348&#x27;                   y=&#x27;62.492699&#x27;                   id=&#x27;angleAtB&#x27;                   style=&#x27;fill:#ffcc00&#x27;                   data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB&#x27;>∠ABC</text>               <text                   xml:space=&#x27;preserve&#x27;                   x=&#x27;71.548683&#x27;                   y=&#x27;60.951256&#x27;                   id=&#x27;rightAngleAtC&#x27;                   style=&#x27;fill:#ffcc00&#x27;                   data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?TriangleProblem_RightAngleAtC?rightAngleC&#x27;>⊾C</text>               <text                   xml:space=&#x27;preserve&#x27;                   x=&#x27;59.409813&#x27;                   y=&#x27;68.273117&#x27;                   id=&#x27;distanceBC&#x27;                   style=&#x27;fill:#008000&#x27;                   data-slot-id=&#x27;http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC&#x27;>BC</text>               <text                   xml:space=&#x27;preserve&#x27;                   x=&#x27;84.972092&#x27;                   y=&#x27;35.260529&#x27;                   id=&#x27;solutionCA&#x27;                   style=&#x27;fill:#008000&#x27;                   data-solution-id=&#x27;http://mathhub.info/FrameIT/frameworld?OppositeLen/Solution?deducedLineCA&#x27;>CA</text>           </g>           </svg>       </div> </scroll-description>","requiredFacts":[{"tp":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?3DGeometry?point"},"df":null,"ref":{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?A"},"kind":"general","label":"A"},{"tp":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?3DGeometry?point"},"df":null,"ref":{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?B"},"kind":"general","label":"B"},{"tp":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?3DGeometry?point"},"df":null,"ref":{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?C"},"kind":"general","label":"C"},{"tp":{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?Logic?ded"},"arguments":[{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?Logic?eq"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?RealLiterals?real_lit"},{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?Geometry/Common?angle_between"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?B"},{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?C"},{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?A"}]},{"kind":"OMLIT<Double>","type":"http://mathhub.info/MitM/Foundation?RealLiterals?real_lit","value":90.0}]}]},"df":null,"ref":{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem_RightAngleAtC?rightAngleC"},"kind":"general","label":"⊾C"},{"lhs":{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?Geometry/Common?metric"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?B"},{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?C"}]},"valueTp":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?RealLiterals?real_lit"},"value":null,"proof":null,"ref":{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC"},"kind":"veq","label":"BC"},{"lhs":{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?Geometry/Common?angle_between"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?A"},{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?B"},{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?C"}]},"valueTp":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?RealLiterals?real_lit"},"value":null,"proof":null,"ref":{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB"},"kind":"veq","label":"∠ABC"}],"acquiredFacts":[{"lhs":{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?Geometry/Common?metric"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?C"},{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?A"}]},"valueTp":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?RealLiterals?real_lit"},"value":{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/arithmetics?RealArithmetics?multiplication"},"arguments":[{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?Trigonometry?tan"},"arguments":[{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://gl.mathhub.info/MMT/LFX/Sigma?Symbols?Projl"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB"}]}]},{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://gl.mathhub.info/MMT/LFX/Sigma?Symbols?Projl"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC"}]}]},"proof":{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?InformalProofs?proofsketch"},"arguments":[{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?Logic?eq"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?RealLiterals?real_lit"},{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/geometry?Geometry/Common?metric"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?C"},{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem?A"}]},{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/core/arithmetics?RealArithmetics?multiplication"},"arguments":[{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://mathhub.info/MitM/Foundation?Trigonometry?tan"},"arguments":[{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://gl.mathhub.info/MMT/LFX/Sigma?Symbols?Projl"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?TriangleProblem_AngleAtB?angleB"}]}]},{"kind":"OMA","applicant":{"kind":"OMS","uri":"http://gl.mathhub.info/MMT/LFX/Sigma?Symbols?Projl"},"arguments":[{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?OppositeLen/Problem?distanceBC"}]}]}]},{"kind":"OMLIT<String>","type":"http://cds.omdoc.org/urtheories?Strings?string","value":"OppositeLen Scroll"}]},"ref":{"kind":"OMS","uri":"http://mathhub.info/FrameIT/frameworld?OppositeLen/Solution?deducedLineCA"},"kind":"veq","label":"CA"}],"name":"http://mathhub.info/FrameIT/frameworld?OppositeLen","path":null}'>hi</data>
    
        <!--<script src="visualiseCursor.mjs" defer type="module"></script>-->
        <!--<script>
      /* mouse and pointer event handling */
      const rectangle = document.createElement("div");
      rectangle.id = "rectangle";
      
      console.log("appendChild to", document.body)
      document.body.appendChild(rectangle);
      
      function followCursor(event) {
      const cursorX = event.clientX;
      const cursorY = event.clientY +5;
      //console.log(`MouseEvent X: ${cursorX}, Y: ${cursorY}, Event type: ${event.type}`, event);
      rectangle.style.left = `${cursorX}px`;
      rectangle.style.top = `${cursorY}px`;
      }
      
      document.addEventListener("mousemove", followCursor);
      document.addEventListener("pointermove", followCursor);
      
      document.addEventListener("mouseover", followCursor);
      document.addEventListener("pointerover", followCursor);
      
      document.addEventListener("mouseout", followCursor);
      document.addEventListener("pointerout", followCursor);
      </script>-->
    </body>
    
    </html>