Skip to content
Snippets Groups Projects
SetScrollContent.js 1.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • "use strict";
    let currentScrollRef = ""; // ref of the scroll currently displayed 
    function RenderScroll() {
        const dataSource = document.querySelector("#Unity-Data-Interface");
        if (!(dataSource instanceof HTMLElement)
            || dataSource === null
            || dataSource.dataset.scrollDynamic === undefined) {
            console.error("No Scroll found in the Unity-Data-Interface");
            return;
        }
    
        const scroll_json = JSON.parse(dataSource.dataset.scrollDynamic);
    
        let scroll;
        try {
            scroll = backendObject_fromJSON(scroll_json);
            if (!Scroll.isScroll(scroll)) {
                throw {};
            }
        }
        catch (error) {
            console.error(error, `Cannot parse the scroll:`, scroll_json);
    
        //console.log(scroll.requiredFacts);
        const scrollContainer = document.querySelector("#scrollContainer");
        // replace the description if the scroll changed, otherwise only its content needs update
        // if (scroll.ref != currentScrollRef) {
        //     currentScrollRef = scroll.ref;
        //     scrollContainer.innerHTML = scroll.description;
        // }
        // go through the facts in the scroll, show their labels, add dropzones and limit the allowed types
        scroll.slots.forEach(slot => {
            $(`[data-slot-id='${slot.uri}']`)
                .html(slot.label)
                .attr("dropzone", "copy");
        });
        // acquired facts only need updated labels
        scroll.acquiredFacts.forEach(fact => {
            $(`[data-solution-id='${fact.uri}']`)
                .html(fact.label);
        });
        console.log(scroll.label + 'Scroll rendered');
    }
    $(function () {
        RenderScroll();
    });