Source: pages/simplifier/magnetic/magneticPage.js

/**
 * Page where Magnetic tasks are solved
 * @extends SimplifierPage
 */
class MagneticPage extends SimplifierPage{
    constructor() {
        let content = {
        }
        super(content, "MagneticPage");
    }

    setup() {
        if (!super.beforeSetup()) return;
        //class specific setup of content

        //after content is added to page
        super.afterSetup();
    }

    get step0(){
        /** @type {string} */
        let svgData = state.step0Data.svgData;
        let simplifierSVG = new SimplifierSVG(svgData, "Mag");

        // First svg, set valuesShown to false
        // Also set to zero if labels contain Z because they can't be toggled
        state.valuesShown.set(simplifierSVG.div.id, false);

        simplifierSVG.fillLabels();
        simplifierSVG.increaseLabelFontSize();

        simplifierSVG.hideSourceLabel();
        simplifierSVG.hideElementLabels();

        simplifierSVG.hideCurrentArrows();
        simplifierSVG.hideVoltageArrows();
        simplifierSVG.hideItotArrow();

        simplifierSVG.hideSourceLabel();
        simplifierSVG.hideElementLabels();
        simplifierSVG.updateColor();

        // SVG Data written, now add eventListeners, only afterward because they would be removed on rewrite of svgData
        // Add button on first voltage and first current svg
        addKirchhoffInfoHelpButton(simplifierSVG.div);

        return simplifierSVG.div;
    }

    async initialize() {
        if (!super.beforeInit()) return;

        SimplifierPage.resetSolvers();
        await state.solvers.stepwise.init(state.currentCircuitMap);
        //class specific code
        state.step0Data = await state.solvers.stepwise.createStep0();
        state.currentStep = 0;

        const firstStep = Containers.Circuit
        firstStep.appendChild(this.step0);

        this.contentDiv.appendChild(firstStep);

        let electricalElements= getElementsFromSvgContainer(document.getElementById('svgDivMag0'));
        const nextElementsContainer = Containers.NextElements

        /** @type {HTMLDivElement} */
        // The order of function-calls is important
        makeElementsClickable(electricalElements, nextElementsContainer);
        prepareNextElementsContainer(this.contentDiv, nextElementsContainer);

        super.afterInit();
    }

    reset() {
        this.initializationStarted = false;
        this.isInitialized = false;
    }

    resetBtn() {

    }

    updateLang() {
        super.updateLang();
    }

    updateColor() {
        super.updateColor();
    }

    addEventListeners() {
        super.addEventListeners();
    }

    afterPyodideLoaded() {

    }

}