{
  "information": {
    "Title": "YourSimulation",
    "Author": [],
    "AuthorLogo": [],
    "Password": "unused",
    "Keywords": "",
    "Abstract": "",
    "Copyright": "",
    "Level": "",
    "Language": "",
    "Logo": [],
    "RunAlways": "true",
    "ModelTab": "",
    "ModelTabTitle": "",
    "ModelName": "",
    "FixedNavigationBar": "false",
    "CSSFile": "",
    "DetectedFiles": [],
    "AuxiliaryFiles": [
      "./lib/xapiwrapper.min.js"
    ],
    "HTMLHead": "",
    "SaveInXMLFormat": "false",
    "IncludeSource": "true",
    "IncludeLibrary": "true",
    "UglifyJS": "false",
    "PreviewFullModel": "false",
    "UseInterpreter": "true",
    "UseDeltaForODE": "false"
  },
  "description": {
    "pages": []
  },
  "model": {
    "variables": {
      "pages": [
        {
          "Name": "Var Table 1",
          "Active": "true",
          "Internal": "false",
          "Type": "undefined",
          "PageComment": "",
          "Variables": [
            {
              "Name": "score",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": ""
            },
            {
              "Name": "feedback",
              "Value": "\"\"",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": ""
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": ""
            }
          ]
        }
      ]
    },
    "initialization": {
      "pages": []
    },
    "evolution": {
      "information": {
        "FPS": "20",
        "SPD": "1",
        "RealTimeVariable": "",
        "Autoplay": "true"
      },
      "pages": []
    },
    "fixed_relations": {
      "pages": []
    },
    "custom": {
      "pages": [
        {
          "Name": "xAPI",
          "Active": "true",
          "Internal": "false",
          "Type": "undefined",
          "Comment": "",
          "Code": "// Using a namespace to prevent global variable clashes\nconst XAPIUtils = {\n  parameters: null, // Parameters store\n  getParameters: function () {\n    if (!this.parameters) { // Ensure fetch once\n      var urlParams = new URLSearchParams(window.location.search);\n      var endpoint = urlParams.get('endpoint');\n      var auth = urlParams.get('auth');\n      var agent = JSON.parse(urlParams.get('agent'));\n      var stateId = urlParams.get('stateId');\n      var activityId = urlParams.get('activityId');\n\n      // document.querySelector(\"#cookieId\").innerText = \"Cookie: \" + auth;\n      // document.querySelector(\"#questionId\").innerText = \"Question ID: \" + activityId;\n      // document.querySelector(\"#userId\").innerText = \"User ID: \" + stateId;\n\n      ADL.XAPIWrapper.changeConfig({\n        \"endpoint\": endpoint + \"/\",\n        \"auth\": `Basic ${auth}`\n      });\n      this.parameters = {\n        agent,\n        stateId,\n        activityId\n      };\n    }\n\n    return this.parameters;\n  }\n};\n\n// Immediately invoke getParameters on page load\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  XAPIUtils.getParameters(); // Fetch parameters once on load\n});\n\nfunction storeState(stateValue) { // Removed async\n  try {\n    const parameters = XAPIUtils.getParameters(); // Retrieve parameters from store\n    const activityId = parameters.activityId;\n    const stateId = parameters.stateId;\n    const agent = parameters.agent;\n    const registration = null;\n\n    ADL.XAPIWrapper.sendState(activityId, agent, stateId, registration, stateValue);\n    console.log(\"Submitted: \" + JSON.stringify(stateValue, null, 2));\n  } catch (err) {\n    console.error(\"An error has occurred!\", err);\n  }\n}\n\nfunction getState() {\n  try {\n    const parameters = XAPIUtils.getParameters(); // Retrieve parameters from store\n    const activityId = parameters.activityId;\n    const stateId = parameters.stateId;\n    const agent = parameters.agent;\n\n    const result = ADL.XAPIWrapper.getState(activityId, agent, stateId);\n    document.querySelector(\"#getState\").innerText = \"First Load State: \" + JSON.stringify(result, null, 2);\n    return result;\n  } catch (err) {\n    console.error(\"An error has occurred!\", err);\n    document.querySelector(\"#getState\").innerText = \"Error has occurred: \" + err;\n  }\n}\n"
        }
      ]
    },
    "elements": {
      "list": []
    }
  },
  "view": {
    "Tree": [
      {
        "Name": "singlePlotPanel",
        "Type": "Panel",
        "Expanded": "true",
        "Children": [
          {
            "Name": "labelPanel",
            "Type": "Panel",
            "Expanded": "true",
            "Children": [
              {
                "Name": "topLabel",
                "Type": "Label",
                "Properties": [
                  {
                    "name": "Text",
                    "value": "\"<h1>TopLabel</h1>\""
                  }
                ]
              }
            ]
          },
          {
            "Name": "wrappedPanel",
            "Type": "WrappedPanel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "CSS",
                "value": "{ \"display\":\"block\"}"
              }
            ],
            "Children": [
              {
                "Name": "plottingPanel",
                "Type": "PlottingPanel",
                "Properties": [
                  {
                    "name": "Height",
                    "value": "300"
                  },
                  {
                    "name": "Width",
                    "value": "400"
                  },
                  {
                    "name": "TRMessage",
                    "value": "\"score=\"+ score"
                  }
                ]
              },
              {
                "Name": "controlPanel",
                "Type": "Panel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "CSS",
                    "value": "{\"display\":\"block\"}"
                  },
                  {
                    "name": "BorderStyle",
                    "value": "\"solid\""
                  },
                  {
                    "name": "BorderColor",
                    "value": "\"Gray\""
                  },
                  {
                    "name": "BorderWidth",
                    "value": "1"
                  },
                  {
                    "name": "Width",
                    "value": "398"
                  }
                ],
                "Children": [
                  {
                    "Name": "firstRowPanel",
                    "Type": "Panel",
                    "Expanded": "true",
                    "Children": [
                      {
                        "Name": "executionPanel",
                        "Type": "Panel",
                        "Expanded": "true",
                        "Properties": [
                          {
                            "name": "Display",
                            "value": "\"inline-block\""
                          }
                        ],
                        "Children": [
                          {
                            "Name": "runPauseButton",
                            "Type": "TwoStateButton",
                            "Properties": [
                              {
                                "name": "OffClick",
                                "value": "%_pause%"
                              },
                              {
                                "name": "State",
                                "value": "_isPaused"
                              },
                              {
                                "name": "Tooltip",
                                "value": "\"Play/Pause\""
                              },
                              {
                                "name": "ImageOnUrl",
                                "value": "\"/org/opensourcephysics/resources/controls/images/play.gif\""
                              },
                              {
                                "name": "OnClick",
                                "value": "_play()\nscore = score + 1\nfeedback = '<div>' + '<div>' +\nfeedback + `<br>score = `+ score; \n'</div>' +\n          '</div>';\n            \n\n\nconsole.log(feedback)\n            console.log(score)\n            storeState({score, feedback});"
                              },
                              {
                                "name": "ImageOffUrl",
                                "value": "\"/org/opensourcephysics/resources/controls/images/pause.gif\""
                              }
                            ]
                          },
                          {
                            "Name": "stepButton",
                            "Type": "Button",
                            "Properties": [
                              {
                                "name": "Tooltip",
                                "value": "\"Step\""
                              },
                              {
                                "name": "ImageUrl",
                                "value": "\"/org/opensourcephysics/resources/controls/images/stepforward.gif\""
                              },
                              {
                                "name": "OnClick",
                                "value": "%_step%"
                              }
                            ]
                          },
                          {
                            "Name": "initButton",
                            "Type": "Button",
                            "Properties": [
                              {
                                "name": "Tooltip",
                                "value": "\"Initialize\""
                              },
                              {
                                "name": "ImageUrl",
                                "value": "\"/org/opensourcephysics/resources/controls/images/reset1.gif\""
                              },
                              {
                                "name": "OnClick",
                                "value": "%_initialize%"
                              }
                            ]
                          },
                          {
                            "Name": "resetButton",
                            "Type": "Button",
                            "Properties": [
                              {
                                "name": "Tooltip",
                                "value": "\"Reset\""
                              },
                              {
                                "name": "ImageUrl",
                                "value": "\"/org/opensourcephysics/resources/controls/images/reset.gif\""
                              },
                              {
                                "name": "OnClick",
                                "value": "%_reset%"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "Name": "narrativePanel",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "Html",
                "value": "`feedback`"
              }
            ],
            "Children": [
              {
                "Name": "textArea",
                "Type": "TextArea",
                "Properties": [
                  {
                    "name": "Value",
                    "value": "feedback"
                  }
                ]
              }
            ]
          }
        ]
      }
    ],
    "RootProperties": []
  },
  "metadata": {
    "APP": "WebEJS",
    "CreatedWith": "WebEJS : The web version of Easy JavaScript Simulations",
    "MoreInfo": "WebEJS 1.2",
    "version": "https://www.um.es/fem/wikis/webejs/"
  }
}