{
  "information": {
    "Title": "Transpiration_Virtual_Lab_Factors_affecting_Transpiration_Virtual_Lab_(Control_Plastic_Bag_Fan_Lamp_and_Heater)_in_3_hours",
    "Author": [
      "weelookang@gmail.com",
      "Francisco Esquembre",
      "Felix J. Garcia Clemente",
      "story by jiawen"
    ],
    "AuthorLogo": [
      "./1authorlookangphoto5050.png",
      "./01authorPacoEsquembre2011.png",
      "./01authorFelix_J_Garcia_Clemente.png",
      ""
    ],
    "Password": "",
    "Keywords": "",
    "Abstract": "",
    "Copyright": "",
    "Level": "",
    "Language": "",
    "Logo": [
      "./Screenshot 2023-12-01 at 10.30.14 AM (2).png"
    ],
    "RunAlways": "true",
    "ModelTab": "",
    "ModelTabTitle": "",
    "ModelName": "",
    "FixedNavigationBar": "false",
    "CSSFile": "",
    "DetectedFiles": [
      "./01authorFelix_J_Garcia_Clemente.png",
      "./01authorPacoEsquembre2011.png",
      "./1authorlookangphoto5050.png",
      "./Screenshot 2023-12-01 at 10.30.14 AM (2).png"
    ],
    "AuxiliaryFiles": [
      "./images/"
    ],
    "HTMLHead": "<script async=\"true\" src=\"https://www.googletagmanager.com/gtag/js?id=UA-3326007-19\"></script>\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n  gtag('config', 'UA-3326007-19');\n</script>\n<script data-ad-client=\"ca-pub-0121577198857509\" async=\"true\" src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>\n\n",
    "SaveInXMLFormat": "false",
    "IncludeSource": "true",
    "IncludeLibrary": "true",
    "UglifyJS": "false",
    "PreviewFullModel": "false",
    "UseInterpreter": "true",
    "UseDeltaForODE": "false"
  },
  "description": {
    "pages": []
  },
  "model": {
    "variables": {
      "pages": [
        {
          "Name": "Var Table",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "t",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dt",
              "Value": "0.1",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "pi",
              "Value": "Math.PI",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "font",
              "Value": "\"normal normal 2vw \"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "n",
              "Value": "32",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "angle",
              "Value": "pi",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "circle",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "rulerX",
              "Value": "0.29",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "rulerY",
              "Value": "-1.6",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "rulerSizeX",
              "Value": "3.2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "rulerSizeY",
              "Value": "0.3",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "x",
              "Value": "",
              "Type": "double",
              "Dimension": "[n+1]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "y",
              "Value": "",
              "Type": "double",
              "Dimension": "[n+1]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "theta",
              "Value": "pi/4",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "clockX",
              "Value": "-2.5",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "clockY",
              "Value": "3.15",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "clockHourSize",
              "Value": "0.6",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "clockMinSize",
              "Value": "0.8",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "clockSize",
              "Value": "0.6",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "clockHourAngle",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "clockMinAngle",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "imageURL",
              "Value": "\"./images/004-min.png\"",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "temperatureText",
              "Value": "\"25 \u2070C\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "bubbleX",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "bubbleY",
              "Value": "-2.11",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "bubblevX",
              "Value": "-0.4",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "data",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "dataTime",
              "Value": "[0,1,2,3]",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dataControl",
              "Value": "[0,0.6,0.8,1]",
              "Type": "double",
              "Dimension": "[4]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dataLight",
              "Value": "[0,0.8,1,1.4]",
              "Type": "double",
              "Dimension": "[4]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dataWind",
              "Value": "[0,0.9,1.1,1.7]",
              "Type": "double",
              "Dimension": "[4]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dataTemp",
              "Value": "[0,0.8,1.1,1.3]",
              "Type": "double",
              "Dimension": "[4]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dataHumidity",
              "Value": "[0,0.4,0.3,0.2]",
              "Type": "double",
              "Dimension": "[4]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "datatable",
              "Value": "[[0,0,0,0,0,0],[1,\"?\",\"?\",\"?\",\"?\",\"?\"],[2,\"?\",\"?\",\"?\",\"?\",\"?\"],[3,\"?\",\"?\",\"?\",\"?\",\"?\"]]",
              "Type": "Object",
              "Dimension": "",
              "Comment": "[[0,0,0,0,0,0],[1,0,0,0,0,0],[2,0,0,0,0,0],[3,0,0,0,0,0]]",
              "Domain": "protected"
            },
            {
              "Name": "datatableStore",
              "Value": "[[],[],[],[]]",
              "Type": "Object",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "layout",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "Width",
              "Value": "(_isEPub)?\"400\":\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Height",
              "Value": "(_isEPub)?\"500\":\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "Width1",
              "Value": "\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Width2",
              "Value": "\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "world",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "graph",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "disabledworld",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "disabled",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "cells",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "imageSizeX",
              "Value": "10500",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "imageSizeY",
              "Value": "6300",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "offSetX",
              "Value": "-6",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xmin",
              "Value": "-10",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xmax",
              "Value": "10",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ymin",
              "Value": "-10",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ymax",
              "Value": "10",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        }
      ]
    },
    "initialization": {
      "pages": [
        {
          "Name": "Init Page",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "//[[dataTime[0],dataControl[0],dataLight[0],dataWind[0],dataTemp[0],dataHumidity[0]],[dataTime[1],dataControl[1],dataLight[1],dataWind[1],dataTemp[1],dataHumidity[1]],[dataTime[2],dataControl[2],dataLight[2],dataWind[2],dataTemp[2],dataHumidity[2]],[dataTime[3],dataControl[3],dataLight[3],dataWind[3],dataTemp[3],dataHumidity[3]]] \n\n//datatable = datatableStore\n\n\n"
        }
      ]
    },
    "evolution": {
      "information": {
        "FPS": "20",
        "SPD": "1",
        "RealTimeVariable": "",
        "Autoplay": "false"
      },
      "pages": [
        {
          "Name": "Evol Page",
          "Active": "true",
          "Internal": "false",
          "Type": "ODE_EDITOR",
          "Comment": "",
          "IndependentVariable": "t",
          "Increment": "dt",
          "Equations": [
            {
              "state": "bubbleX",
              "rate": "-bubblevX"
            },
            {
              "state": "",
              "rate": ""
            }
          ],
          "Method": "RungeKutta",
          "AbsoluteTolerance": "0.00001",
          "PreliminaryCode": {
            "Code": "",
            "Comment": "Code to be executed before rate equations are evaluated"
          },
          "EventMaximumStep": "",
          "Events": {
            "pages": [
              {
                "Name": "Event",
                "Active": "true",
                "Internal": "false",
                "Type": "EVENT_EDITOR",
                "Action": "_pause()\n_tools.showOkDialog(\"Click 'Ok ' button to continue the experiment\", \n    function(){ \n      _play()\n    //_update(); // to force update view\n    });",
                "Comment": "",
                "EventType": "CROSSING_EVENT",
                "Iterations": "100",
                "Method": "BISECTION",
                "StopAtEvent": "true",
                "Tolerance": "1.0e-5",
                "ZeroCondition": "return t - 1.0;"
              },
              {
                "Name": "Event 2",
                "Active": "true",
                "Internal": "false",
                "Type": "EVENT_EDITOR",
                "Action": "_pause()\n_tools.showOkDialog(\"Click 'Ok ' button to continue the experiment\", \n    function(){ \n      _play()\n    //_update(); // to force update view\n    });\n",
                "Comment": "",
                "EventType": "CROSSING_EVENT",
                "Iterations": "100",
                "Method": "BISECTION",
                "StopAtEvent": "true",
                "Tolerance": "1.0e-5",
                "ZeroCondition": "return t - 2.0;"
              },
              {
                "Name": "Event 2 2",
                "Active": "true",
                "Internal": "false",
                "Type": "EVENT_EDITOR",
                "Action": "_pause()\npopup()\n//popupChatGPT()",
                "Comment": "",
                "EventType": "CROSSING_EVENT",
                "Iterations": "100",
                "Method": "BISECTION",
                "StopAtEvent": "true",
                "Tolerance": "1.0e-5",
                "ZeroCondition": "return t - 3.0;"
              }
            ]
          },
          "ZenoEffect": {
            "Code": "",
            "Comment": "",
            "StopAfterEffect": "true"
          },
          "AccelerationIndependentOfVelocity": "false",
          "ForceSynchronization": "false",
          "UseBestInterpolation": "false",
          "EstimateFirstStep": "false",
          "MemoryLength": "",
          "InternalStep": "",
          "MaximumStep": "",
          "MaximumNumberOfSteps": "10000",
          "RelativeTolerance": "",
          "DelayList": "",
          "DelayMaximum": "",
          "DelayAddDiscont": "",
          "DelayInitialCondition": {
            "Code": "",
            "Comment": ""
          },
          "DirectIncidenceMatrix": "",
          "Discontinuities": {
            "pages": []
          },
          "ErrorHandling": {
            "pages": []
          }
        }
      ]
    },
    "fixed_relations": {
      "pages": [
        {
          "Name": "clock",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "// t is in hour?\nclockHourAngle = -t*2*pi/12\nclockMinAngle = -t*2*pi/12*12\n"
        },
        {
          "Name": "bubble",
          "Active": "false",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "var option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n\nif (option ==\"Control\"){\n  if (t<1){\n    bubblevX = (dataControl[1] - dataControl[0])\n    }\n    else if (t<2&&t>=1){\n    bubblevX = (dataControl[2] - dataControl[1])\n    }\n     else if (t<3&&t>=2){\n    bubblevX = (dataControl[3] - dataControl[2])\n    }\n    else {\n      bubblevX = 0\n      }\n  \n  }\n else if (option ==\"Pastic Bag\"){\n  if (t<1){\n    bubblevX = (dataHumidity[1] - dataHumidity[0])\n    }\n    else if (t<2&&t>=1){\n    bubblevX = (dataHumidity[2] - dataHumidity[1])\n    }\n     else if (t<3&&t>=2){\n    bubblevX = (dataHumidity[3] - dataHumidity[2])\n    }\n    else {\n      bubblevX = 0\n      }\n  \n  }\n  \n  else if (option ==\"Fan\"){\n  if (t<1){\n    bubblevX = (dataWind[1] - dataWind[0])\n    }\n    else if (t<2&&t>=1){\n    bubblevX = (dataWind[2] - dataWind[1])\n    }\n     else if (t<3&&t>=2){\n    bubblevX = (dataWind[3] - dataWind[2])\n    }\n    else {\n      bubblevX = 0\n      }\n  \n  }\n  \n  else if (option ==\"Lamp\"){\n  if (t<1){\n    bubblevX = (dataLight[1] - dataLight[0])\n    }\n    else if (t<2&&t>=1){\n    bubblevX = (dataWind[2] - dataLight[1])\n    }\n     else if (t<3&&t>=2){\n    bubblevX = (dataLight[3] - dataLight[2])\n    }\n    else {\n      bubblevX = 0\n      }\n  \n  }\n  \n    else if (option ==\"Heater\"){\n  if (t<1){\n    bubblevX = (dataTemp[1] - dataTemp[0])\n    }\n    else if (t<2&&t>=1){\n    bubblevX = (dataTemp[2] - dataTemp[1])\n    }\n     else if (t<3&&t>=2){\n    bubblevX = (dataTemp[3] - dataTemp[2])\n    }\n    else {\n      bubblevX = 0\n      }\n  \n  }\n"
        },
        {
          "Name": "bubbleBing",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "var option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n\nvar dataMap = {\n  \"Control\": dataControl,\n  \"Plastic Bag\": dataHumidity,\n  \"Fan\": dataWind,\n  \"Lamp\": dataLight,\n  \"Heater\": dataTemp\n};\n\nif (dataMap.hasOwnProperty(option)) {\n  var data = dataMap[option];\n  if (t < 1) {\n    bubblevX = data[1] - data[0];\n    \n  } else if (t < 2 && t >= 1) {\n    bubblevX = data[2] - data[1];\n    \n  } else if (t < 3 && t >= 2) {\n    bubblevX = data[3] - data[2];\n   \n  } else {\n    bubblevX = 0;\n  }\n}\n"
        },
        {
          "Name": "data",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "var option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n\nvar offSet = 0.1\nif (option ==\"Control\"){\n  //alert()\n  if (Math.floor(t+offSet)==1){\n    datatable[1][1] = dataControl[1]\n    }\n    else if (Math.floor(t+offSet)==2){\n    datatable[2][1] = dataControl[2]\n    }\n     else if (Math.floor(t+offSet)==3){\n   datatable[3][1] = dataControl[3]\n    }\n    \n  \n  }\n else if (option ==\"Plastic Bag\"){\n  \n  if (Math.floor(t+offSet)==1){\n    datatable[1][2] = dataHumidity[1]\n    }\n    else if (Math.floor(t+offSet)==2){\n    datatable[2][2] = dataHumidity[2]\n    }\n     else if (Math.floor(t+offSet)==3){\n   datatable[3][2] = dataHumidity[3]\n    }\n  //alert()\n  }\n  \n  else if (option ==\"Fan\"){\n  if (Math.floor(t+offSet)==1){\n    datatable[1][3] = dataWind[1]\n    }\n    else if (Math.floor(t+offSet)==2){\n    datatable[2][3] = dataWind[2]\n    }\n     else if (Math.floor(t+offSet)==3){\n   datatable[3][3] = dataWind[3]\n    }\n  \n  }\n  \n  else if (option ==\"Lamp\"){\n  if (Math.floor(t+offSet)==1){\n    datatable[1][4] = dataLight[1]\n    }\n    else if (Math.floor(t+offSet)==2){\n    datatable[2][4] = dataLight[2]\n    }\n     else if (Math.floor(t+offSet)==3){\n   datatable[3][4] = dataLight[3]\n    }\n  \n  }\n  \n    else if (option ==\"Heater\"){\n  if (Math.floor(t+offSet)==1){\n    datatable[1][5] = dataTemp[1]\n    }\n    else if (Math.floor(t+offSet)==2){\n    datatable[2][5] = dataTemp[2]\n    }\n     else if (Math.floor(t+offSet)==3){\n   datatable[3][5] = dataTemp[3]\n    }\n  \n  }\n//console.log(datatable)"
        },
        {
          "Name": "dataBing",
          "Active": "false",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "/*\nvar option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\nvar offSet = 0.1;\n\nvar dataMap = {\n  \"Control\": dataControl,\n  \"Plastic Bag\": dataHumidity,\n  \"Fan\": dataWind,\n  \"Lamp\": dataLight,\n  \"Heater\": dataTemp\n};\n\nif (dataMap.hasOwnProperty(option)) {\n  var data = dataMap[option];\n  var tFloor = Math.floor(t + offSet);\n  if (tFloor >= 0 && tFloor <= 3) {\n    datatable[tFloor][datatable[0].indexOf(option)] = data[tFloor];\n    console.log(datatable)\n  }\n}\n*/\n/*\nvar option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\nvar offSet = 0.1;\nvar tFloor = Math.floor(t + offSet);\n\nvar dataOptions = {\n  \"Control\": dataControl,\n  \"Plastic Bag\": dataHumidity,\n  \"Fan\": dataWind,\n  \"Lamp\": dataLight,\n  \"Heater\": dataTemp\n};\n\nif (dataOptions.hasOwnProperty(option)) {\n  if (tFloor >= 1 && tFloor <= 3) {\n    datatable[tFloor][dataOptions[option].length] = dataOptions[option][tFloor];\n  }\n}\n\nconsole.log(datatable);\n*/\n/*\nvar option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\nvar offSet = 0.1;\nvar tFloor = Math.floor(t + offSet);\n\nvar dataOptions = {\n  \"Control\": dataControl,\n  \"Plastic Bag\": dataHumidity,\n  \"Fan\": dataWind,\n  \"Lamp\": dataLight,\n  \"Heater\": dataTemp\n};\n\nif (dataOptions.hasOwnProperty(option)) {\n  if (tFloor >= 1 && tFloor <= 3) {\n    if (dataOptions[option][tFloor] !== undefined) {\n      datatable[tFloor][dataOptions[option].length] = dataOptions[option][tFloor];\n    } else {\n      console.log('Error: data for option \"' + option + '\" at index ' + tFloor + ' is undefined.');\n    }\n  }\n}\n\nconsole.log(datatable);\n*/\nvar option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\nvar offSet = 0.1;\nvar tFloor = Math.floor(t + offSet);\n\nvar dataOptions = {\n  \"Control\": dataControl,\n  \"Plastic Bag\": dataHumidity,\n  \"Fan\": dataWind,\n  \"Lamp\": dataLight,\n  \"Heater\": dataTemp\n};\n\nif (dataOptions.hasOwnProperty(option)) {\n  if (tFloor >= 1 && tFloor <= 3) {\n    var columnIndex = Object.keys(dataOptions).indexOf(option);\n    if (dataOptions[option][tFloor] !== undefined) {\n      datatable[tFloor][columnIndex] = dataOptions[option][tFloor];\n    } else {\n      console.log('Error: data for option \"' + option + '\" at index ' + tFloor + ' is undefined.');\n    }\n  }\n}\n\nconsole.log(datatable);\n\n"
        }
      ]
    },
    "custom": {
      "pages": [
        {
          "Name": "fullscreen",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "//https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n// does not work for iOS \n/*jslint browser:true */\nfunction toggleFullScreen() {\n  if (!document.fullscreenElement &&    // alternative standard method\n      !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {  // current working methods\n    if (document.documentElement.requestFullscreen) {\n      document.documentElement.requestFullscreen();\n    } else if (document.documentElement.msRequestFullscreen) {\n      document.documentElement.msRequestFullscreen();\n    } else if (document.documentElement.mozRequestFullScreen) {\n      document.documentElement.mozRequestFullScreen();\n    } else if (document.documentElement.webkitRequestFullscreen) {\n      document.documentElement.webkitRequestFullscreen();\n    }\n  } else {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document.msExitFullscreen) {\n      document.msExitFullscreen();\n    } else if (document.mozCancelFullScreen) {\n      document.mozCancelFullScreen();\n    } else if (document.webkitExitFullscreen) {\n      document.webkitExitFullscreen();\n    }\n  }\n}"
        },
        {
          "Name": "changeOrientation",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// code to be copied to EJSS source code under Custom and used in drawingPanel3D and plottingPanel2D\n// address the problem is height difference is iOS app , epub, and Firefox\n// user need to change only k and kepub\n// copy %changeOrientation()% into the Height Field of drawingPanel3D and plottingPanel2D\nfunction changeOrientation() {\n \nvar k =0.7 ; // k control height 1 is for full screen, 0.9 shorten etc\nvar kapple =0.70 // control apple app height\nvar kepub =0.70 ;\n// check platform for Apps\ntry { // allow code to run in Student Learning Space \n  var iOSapp =  (typeof parent.device != 'undefined' && parent.device.platform == \"iOS\");\n  var Androidapp = (typeof parent.device != 'undefined' && parent.device.platform == \"Android\");\n} catch(e) {\n  var iOSapp = false;\n  var Androidapp = false;\n}\n// check platform for web browsers\nvar iOS =/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar iPad =/iPad/.test(navigator.userAgent) && !window.MSStream;\nvar iPhone = /iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar Android= /Android|android/i.test(navigator.userAgent);\n\n//navigator\nvar Firefox = navigator.userAgent.indexOf(\"Firefox\") != -1;\n \nswitch (window.orientation) { // using window.orientation as deciding factor\n  case 0:\n  case 180:\n    this.screenOrientation = 'portrait';\n    if (iOSapp){ // does not seems to work\n      \n      return window.screen.height*kapple;  //0.1 for app and 0.1 for nonfullscreenapp  \n    \n    }\n    else if (_isEPub){ // does not seems to work\n      //   return Math.max(window.screen.width,window.screen.height)*0.9;\n      return window.innerHeight*kepub;  //0.1 for app and 0.1 for nonfullscreenapp  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      // return document.documentElement.clientHeight;\n    }\n   \n    else {\n     \n      return 100*k+\"vh\";\n    }\n    break;\n  case 90:\n  case -90:\n    this.screenOrientation = 'landscape';\n \n    if (iOSapp){ // App\n      return window.screen.width*kapple;  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      //  return document.documentElement.clientHeight;\n    }\n    else if (_isEPub){ // does not seems to work\n      //   return Math.max(window.screen.width,window.screen.height)*0.9;\n      return window.innerHeight*kepub;  //0.1 for app and 0.1 for nonfullscreenapp  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      // return document.documentElement.clientHeight;\n    }\n   \n    else {\n      return 100*k+\"vh\";\n      }\n    break;\n  default:\n    this.screenOrientation = 'unknown';\n    //       return (iPad)?\"\"+(window.screen.width+window.screen.height)*0.4:((iPhone)?\"\"+window.screen.width:_view._format(window.innerHeight*0.9,\"0\"));\n     if (Firefox){\n      return window.innerHeight*k;// number as of 20180831 Firefox does not support vh yet so need a separate line to handle\n      }\n   //   else if (iOS&&(window.orientation==0)||(window.orientation==180)){\n   //   return  window.screen.height*k;// number as of 20180831 Firefox does not support vh yet so need a separate line to handle\n   //   }\n    //  else if (iOS&&(window.orientation==90)||(window.orientation==-90)){\n   //   return  window.screen.width*k;// number as of 20180831 Firefox does not support vh yet so need a separate line to handle\n   //   }\n      else {\n      //alert();\n      // return 100*k+\"%\"; // work on fullscreen works in EJSS6.0beta\n        //  works in EjsS_5.3_180131\n      return  window.innerHeight*k; // work on panel \n       \n}\n\n}\n \n}"
        },
        {
          "Name": "speech",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// copy this custom function\n// in iOS need to add speech to the play button as On iOS the API works but must be triggered by a user action callback, like a response to a tap event, to provide a better experience to users and avoid unexpected sounds out of your phone\nfunction speech (option) {\n\n\ntry { // allow code to run in Student Learning Space \nvar isCordova = (!!this.parent.cordova || !!window.cordova);\nif(isCordova) { // check it is running in Android or iOS\n       // parent.TTS.speak({text:option,locale:'zh-CN'});\n\tparent.TTS.speak({text:option,locale:'us-EN'});\n\t// parent.TTS.speak({text:option,locale:'en-US'});\n\t// parent.TTS.speak({text:option,locale:'id-ID'});\n} \n} \ncatch(e) {\n  var isCordova = false;\n  }\n  \n   var msg = new SpeechSynthesisUtterance(option);\n\n  //https://stackoverflow.com/questions/43983845/speechsynthesis-api-for-chinese-firefox\n  // Set the text.\n\t//msg.text = option; \n\t//https://forums.developer.apple.com/message/323564#323564\n\t// comment out the next 2 lines for english\n//msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Ting-Ting'; })[0];\n//msg.lang = 'zh-CH'; // need for android?\n//msg.lang = 'id-ID'; // need for android?\nmsg.lang = 'us-EN'; // need for android?\n\n//https://flaviocopes.com/speech-synthesis-api/\n//debug\n//console.log(`Voices #: ${speechSynthesis.getVoices().length}`)\n//speechSynthesis.getVoices().forEach(voice => {\n// console.log(voice.name, voice.lang)\n//})\n//debug\n\n// Queue this utterance.\nwindow.speechSynthesis.speak(msg);\n\n\n\n \n\n}"
        },
        {
          "Name": "popup",
          "Active": "false",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function popup () {\nvar opts = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n//var counter =0\nif (opts==\"Fan\"){ //1\nvar options = {text: [\"(a) Water loss is faster in moving air.  Rate of transpiration is higher in moving air than in still air (control).\", \"(b) Water loss is slower in moving air. Rate of transpiration is lower in moving air than in still air (control).\" ], value: [\"Correct!\",\"Incorrect. Please try again.\"]};\nvar temptext = \"State the effect of moving air on the water loss from the leafy shoot?\"; // so that copy and paste of qn is not needed\nvar styleing = function() {\n    //for styling the popup\ndocument.getElementById(\".BoxPanelSelect\").style.fontSize = \"2vw\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.fontSize = \"1vw\";\ndocument.getElementById(\".BoxPanelSelect\").style.color = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.background = \"white\";\ndocument.getElementById(\".BoxPanelSelect\").style.width = \"70%\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.width = \"100%\";\ndocument.getElementById(\".BoxPanelSelect\").style.left = \"20%\";\ndocument.getElementById(\".BoxPanelSelect\").style.border = \"white\";\n//document.getElementById(\".BoxPanelSelect.select\").background = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.top = \"center\";\n// to remove the cancel button\ndocument.getElementById(\".BoxPanelSelect.cancelbt\").style.display = \"none\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.textAlign = \"center\";\n  }\n\nvar okfunc = function(s) {  //2\n      alert(s);    \n     // counter=counter+1;\n    //  _play();\n      if (s != \"Correct!\") {\n        _view.audioWrong.play()\n        EJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //second title\n        styleing();\n      }\n      else if(s == \"Correct!\"){\n      // counter=counter+1;\n      //_play();\n      _view.audio.play()\n      }\n      //_update();      \n    }    \nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//1\n\n\n//2\nif (opts==\"Lamp\"){ //2\nvar options = {text: [\"(a) Water loss is faster in higher light intensity. Rate of transpiration is higher in higher light intensity than lower light intensity.(control).\", \"(b) Water loss is slower in lower light intensity. Rate of transpiration is lower in higher light intensity than lower light intensity.\" ], value: [\"Correct!\",\"Incorrect. Please try again.\"]};\nvar temptext = \"State the effect of light intensity on the water loss from the leafy shoot?\"; // so that copy and paste of qn is not needed\nvar styleing = function() {\n    //for styling the popup\ndocument.getElementById(\".BoxPanelSelect\").style.fontSize = \"2vw\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.fontSize = \"1vw\";\ndocument.getElementById(\".BoxPanelSelect\").style.color = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.background = \"white\";\ndocument.getElementById(\".BoxPanelSelect\").style.width = \"70%\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.width = \"100%\";\ndocument.getElementById(\".BoxPanelSelect\").style.left = \"20%\";\ndocument.getElementById(\".BoxPanelSelect\").style.border = \"white\";\n//document.getElementById(\".BoxPanelSelect.select\").background = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.top = \"center\";\n// to remove the cancel button\ndocument.getElementById(\".BoxPanelSelect.cancelbt\").style.display = \"none\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.textAlign = \"center\";\n  }\n\nvar okfunc = function(s) {  //2\n      alert(s);    \n     // counter=counter+1;\n    //  _play();\n      if (s != \"Correct!\") {\n        _view.audioWrong.play()\n        EJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //second title\n        styleing();\n      }\n      else if(s == \"Correct!\"){\n        _view.audio.play()\n      // counter=counter+1;\n      //_play();\n      }\n      //_update();      \n    }    \nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//2\n\n\n//3\n\nif (opts==\"Heater\"){ //3\nvar options = {text: [\"(a) Water loss is faster in higher temperature. Rate of transpiration is higher in higher temperature than lower temperature.(control).\", \"(b) Water loss is slower in lower temperature. Rate of transpiration is lower in higher temperature than lower temperature.\" ], value: [\"Correct!\",\"Incorrect. Please try again.\"]};\nvar temptext = \"State the effect of high temperature on the water loss from the leafy shoot?\"; // so that copy and paste of qn is not needed\nvar styleing = function() {\n    //for styling the popup\ndocument.getElementById(\".BoxPanelSelect\").style.fontSize = \"2vw\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.fontSize = \"1vw\";\ndocument.getElementById(\".BoxPanelSelect\").style.color = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.background = \"white\";\ndocument.getElementById(\".BoxPanelSelect\").style.width = \"70%\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.width = \"100%\";\ndocument.getElementById(\".BoxPanelSelect\").style.left = \"20%\";\ndocument.getElementById(\".BoxPanelSelect\").style.border = \"white\";\n//document.getElementById(\".BoxPanelSelect.select\").background = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.top = \"center\";\n// to remove the cancel button\ndocument.getElementById(\".BoxPanelSelect.cancelbt\").style.display = \"none\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.textAlign = \"center\";\n  }\n\nvar okfunc = function(s) {  //2\n      alert(s);    \n     // counter=counter+1;\n    //  _play();\n      if (s != \"Correct!\") {\n        _view.audioWrong.play()\n        EJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //second title\n        styleing();\n      }\n      else if(s == \"Correct!\"){\n      _view.audio.play()\n      // counter=counter+1;\n      //_play();\n      }\n      //_update();      \n    }    \nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//3\n\n//4\n\n\nif (opts==\"Plastic Bag\"){ //4\nvar options = {text: [\"(a) Water loss is faster in increased humidity . Rate of transpiration is higher in increased humidity than lower humidity.(control).\", \"(b) Water loss is slower in increased humidity . Rate of transpiration is lower in increased humidity than lower humidity.\" ], value: [\"Correct!\",\"Incorrect. Please try again.\"]};\nvar temptext = \"State the effect of increased humidity on the water loss from the leafy shoot?\"; // so that copy and paste of qn is not needed\nvar styleing = function() {\n    //for styling the popup\ndocument.getElementById(\".BoxPanelSelect\").style.fontSize = \"2vw\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.fontSize = \"1vw\";\ndocument.getElementById(\".BoxPanelSelect\").style.color = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.background = \"white\";\ndocument.getElementById(\".BoxPanelSelect\").style.width = \"70%\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.width = \"100%\";\ndocument.getElementById(\".BoxPanelSelect\").style.left = \"20%\";\ndocument.getElementById(\".BoxPanelSelect\").style.border = \"white\";\n//document.getElementById(\".BoxPanelSelect.select\").background = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.top = \"center\";\n// to remove the cancel button\ndocument.getElementById(\".BoxPanelSelect.cancelbt\").style.display = \"none\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.textAlign = \"center\";\n  }\n\nvar okfunc = function(s) {  //2\n      alert(s);    \n     // counter=counter+1;\n    //  _play();\n      if (s != \"Correct!\") {\n        _view.audioWrong.play()\n        EJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //second title\n        styleing();\n      }\n      else if(s == \"Correct!\"){\n      _view.audio.play()\n      // counter=counter+1;\n      //_play();\n      }\n      //_update();      \n    }    \nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//3\n\n\n}"
        },
        {
          "Name": "popup 2",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "\nfunction popup () {\nvar opts = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n//var counter =0\nvar styleing = function() {\n    //for styling the popup\ndocument.getElementById(\".BoxPanelSelect\").style.fontSize = \"2vw\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.fontSize = \"1vw\";\ndocument.getElementById(\".BoxPanelSelect\").style.color = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.background = \"white\";\ndocument.getElementById(\".BoxPanelSelect\").style.width = \"70%\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.width = \"100%\";\ndocument.getElementById(\".BoxPanelSelect\").style.left = \"20%\";\ndocument.getElementById(\".BoxPanelSelect\").style.border = \"white\";\n//document.getElementById(\".BoxPanelSelect.select\").background = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.top = \"center\";\n// to remove the cancel button\ndocument.getElementById(\".BoxPanelSelect.cancelbt\").style.display = \"none\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.textAlign = \"center\";\n  }\nvar correctFeedback = \"Correct!. You have completed this investigation. You may proceed to investigate other factors that may affect rate of water loss.\"\nvar incorrectFeedback = \"Incorrect. Please try again.\"\n\nvar okfunc = function(s) {  //2\n      alert(s);    \n     // counter=counter+1;\n    //  _play();\n      if (s != correctFeedback) {\n        _view.audioWrong.play()\n        EJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //second title\n        styleing();\n      }\n      else if(s == correctFeedback){\n      // counter=counter+1;\n      //_play();\n      _view.audio.play()\n      }\n      //_update();      \n    } \n\nvar correctFeedback = \"Correct!. You have completed this investigation. You may proceed to investigate other factors that may affect rate of water loss.\"\nvar incorrectFeedback = \"Incorrect. Please try again.\"\nvar sameTextHint = \" Click on the options below (a) or (b) and click Ok button to continue\" ;\nif (opts==\"Fan\"){ //1\nvar options = {text: [\"(a) Water loss is faster in moving air.  Rate of transpiration is higher in moving air than in still air (control).\", \"(b) Water loss is slower in moving air. Rate of transpiration is lower in moving air than in still air (control).\" ], value: [correctFeedback ,incorrectFeedback]};\nvar temptext = \" State the effect of moving air on the water loss from the leafy shoot.\"+sameTextHint; // so that copy and paste of qn is not needed\n\nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//1\n\n\n//2\nif (opts==\"Lamp\"){ //2\nvar options = {text: [\"(a) Water loss is faster in higher light intensity. Rate of transpiration is higher in higher light intensity than lower light intensity.(control).\", \"(b) Water loss is slower in lower light intensity. Rate of transpiration is lower in higher light intensity than lower light intensity.\" ], value: [correctFeedback ,incorrectFeedback]};\nvar temptext = \"State the effect of light intensity on the water loss from the leafy shoot.\"+sameTextHint; // so that copy and paste of qn is not needed\n\nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//2\n\n\n//3\n\nif (opts==\"Heater\"){ //3\nvar options = {text: [\"(a) Water loss is faster in higher temperature. Rate of transpiration is higher in higher temperature than lower temperature.(control).\", \"(b) Water loss is slower in lower temperature. Rate of transpiration is lower in higher temperature than lower temperature.\" ], value: [correctFeedback ,incorrectFeedback]};\nvar temptext = \"State the effect of high temperature on the water loss from the leafy shoot.\"+sameTextHint; // so that copy and paste of qn is not needed\n\nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//3\n\n//4\n\n\nif (opts==\"Plastic Bag\"){ //4\nvar options = {text: [\"(a) Water loss is faster in increased humidity . Rate of transpiration is higher in increased humidity than lower humidity.(control).\", \"(b) Water loss is slower in increased humidity . Rate of transpiration is lower in increased humidity than lower humidity.\" ], value: [incorrectFeedback ,correctFeedback]};\nvar temptext = \"State the effect of increased humidity on the water loss from the leafy shoot.\"+sameTextHint; // so that copy and paste of qn is not needed\n\nEJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc); //2 first title\nstyleing();\n  \n}//3\n\n\n}"
        },
        {
          "Name": "popupChatGPT",
          "Active": "false",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function popup() {\n  var opts = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n\n  var styleing = function() {\n    // For styling the popup\ndocument.getElementById(\".BoxPanelSelect\").style.fontSize = \"2vw\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.fontSize = \"1vw\";\ndocument.getElementById(\".BoxPanelSelect\").style.color = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.background = \"white\";\ndocument.getElementById(\".BoxPanelSelect\").style.width = \"70%\";\ndocument.getElementById(\".BoxPanelSelect.select\").style.width = \"100%\";\ndocument.getElementById(\".BoxPanelSelect\").style.left = \"20%\";\ndocument.getElementById(\".BoxPanelSelect\").style.border = \"white\";\n//document.getElementById(\".BoxPanelSelect.select\").background = \"black\";\ndocument.getElementById(\".BoxPanelSelect\").style.top = \"center\";\n// to remove the cancel button\ndocument.getElementById(\".BoxPanelSelect.cancelbt\").style.display = \"none\";\n  };\n\n  var showSelectDialog = function(temptext, options, okfunc) {\n    EJSS_INTERFACE.BoxPanel.showSelectDialog(temptext, options, okfunc);\n    styleing();\n  };\n\n  switch (opts) {\n    case \"Fan\":\n      var optionsFan = { text: [\"(a) Water loss is faster in moving air...\", \"(b) Water loss is slower in moving air...\"], value: [\"Correct!\", \"Incorrect. Please try again.\"] };\n      var temptextFan = \"State the effect of moving air on the water loss from the leafy shoot?\";\n      showSelectDialog(temptextFan, optionsFan, okfunc);\n      break;\n\n    case \"Lamp\":\n      var optionsLamp = { text: [\"(a) Water loss is faster in higher light intensity...\", \"(b) Water loss is slower in lower light intensity...\"], value: [\"Correct!\", \"Incorrect. Please try again.\"] };\n      var temptextLamp = \"State the effect of light intensity on the water loss from the leafy shoot?\";\n      showSelectDialog(temptextLamp, optionsLamp, okfunc);\n      break;\n\n    case \"Heater\":\n      var optionsHeater = { text: [\"(a) Water loss is faster in higher temperature...\", \"(b) Water loss is slower in lower temperature...\"], value: [\"Correct!\", \"Incorrect. Please try again.\"] };\n      var temptextHeater = \"State the effect of high temperature on the water loss from the leafy shoot?\";\n      showSelectDialog(temptextHeater, optionsHeater, okfunc);\n      break;\n\n    case \"Plastic Bag\":\n      var optionsPlasticBag = { text: [\"(a) Water loss is faster in increased humidity...\", \"(b) Water loss is slower in increased humidity...\"], value: [\"Correct!\", \"Incorrect. Please try again.\"] };\n      var temptextPlasticBag = \"State the effect of increased humidity on the water loss from the leafy shoot?\";\n      showSelectDialog(temptextPlasticBag, optionsPlasticBag, okfunc);\n      break;\n\n    default:\n      break;\n  }\n}\n"
        }
      ]
    },
    "elements": {
      "list": []
    }
  },
  "view": {
    "Tree": [
      {
        "Name": "fullscreen",
        "Type": "Panel",
        "Expanded": "true",
        "Properties": [
          {
            "name": "Width",
            "value": "Width"
          }
        ],
        "Children": [
          {
            "Name": "control",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "BorderWidth",
                "value": "1"
              }
            ],
            "Children": [
              {
                "Name": "controlPanel",
                "Type": "Panel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "Display",
                    "value": "\"inline-flex\""
                  }
                ],
                "Children": [
                  {
                    "Name": "audio",
                    "Type": "Audio",
                    "Properties": [
                      {
                        "name": "AudioUrl",
                        "value": "\"./images/sound/correct.mp3\""
                      }
                    ]
                  },
                  {
                    "Name": "audioWrong",
                    "Type": "Audio",
                    "Properties": [
                      {
                        "name": "AudioUrl",
                        "value": "\"./images/sound/Wrong-answer-sound-effect.mp3\""
                      }
                    ]
                  },
                  {
                    "Name": "comboBox",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"Control\",\"Plastic Bag\",\"Fan\",\"Lamp\",\"Heater\"]"
                      },
                      {
                        "name": "OnChange",
                        "value": "//[\"Plastic Bag\",\"Fan\",\"Lamp\",\"Heater\"]\nvar opts = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n    var option = (opts.length > 0)? opts[0]:\"\"; // selected option \nif ( option==\"Control\"){\n  imageURL = \"./images/004-min.png\"\n  temperatureText = \"25 \u2070C\"\n  }\n  else if ( option==\"Plastic Bag\"){\n  imageURL = \"./images/005-min.png\"\n   temperatureText = \"25 \u2070C\"\n   }\n  else if  ( option==\"Fan\"){\n  imageURL = \"./images/009-min.png\"\n   temperatureText = \"25 \u2070C\"\n   }\n else if  ( option==\"Lamp\"){\n  imageURL = \"./images/007-min.png\"\n   temperatureText = \"25 \u2070C\"\n   }\n   else if  ( option==\"Heater\"){\n  imageURL = \"./images/008-min.png\"\n   temperatureText = \"38 \u2070C\"\n   }\n"
                      },
                      {
                        "name": "Disabled",
                        "value": "t>0"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "playPauseButton2",
                    "Type": "TwoStateButton",
                    "Properties": [
                      {
                        "name": "OffClick",
                        "value": "_pause();\n//speech (\"paused\");"
                      },
                      {
                        "name": "TextOn",
                        "value": "\"Play \u25b6\""
                      },
                      {
                        "name": "State",
                        "value": "_isPaused"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Play/Pause\""
                      },
                      {
                        "name": "TextOff",
                        "value": "\"Pause \u275a\u275a\""
                      },
                      {
                        "name": "Disabled",
                        "value": "t>2"
                      },
                      {
                        "name": "Width",
                        "value": "\"20vw\""
                      },
                      {
                        "name": "OnClick",
                        "value": "_play();\n//speech (\"play\");"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "stepButton2",
                    "Type": "Button",
                    "Properties": [
                      {
                        "name": "Text",
                        "value": "\"|\u25ba\""
                      },
                      {
                        "name": "OnClick",
                        "value": "_step()"
                      },
                      {
                        "name": "Width",
                        "value": "\"20vw\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "\"none\""
                      }
                    ]
                  },
                  {
                    "Name": "resetButton3",
                    "Type": "Button",
                    "Properties": [
                      {
                        "name": "Text",
                        "value": "\"Reset \u21bb\""
                      },
                      {
                        "name": "Width",
                        "value": "\"20vw\""
                      },
                      {
                        "name": "OnClick",
                        "value": "//_reset();\n//speechzh (\"\u4f60\u597d\");\n t =0\n bubbleX= 0\n"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "Name": "panel",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "Height",
                "value": "\"90vh\""
              },
              {
                "name": "Width",
                "value": "\"100%\""
              },
              {
                "name": "Display",
                "value": "\"inline-block\""
              }
            ],
            "Children": [
              {
                "Name": "plottingPanel",
                "Type": "PlottingPanel",
                "Expanded": "false",
                "Properties": [
                  {
                    "name": "Gutters",
                    "value": "[0,0,0,0]"
                  },
                  {
                    "name": "ShowAreaRectangle",
                    "value": "false"
                  },
                  {
                    "name": "YScalePrecision",
                    "value": "0"
                  },
                  {
                    "name": "XFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "OnDoubleClick",
                    "value": "toggleFullScreen();"
                  },
                  {
                    "name": "AxisXShow",
                    "value": "false"
                  },
                  {
                    "name": "YFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "TRMessage",
                    "value": "\"Factors affecting Transpiration Virtual Lab\""
                  },
                  {
                    "name": "XTickStep",
                    "value": "1"
                  },
                  {
                    "name": "YTickStep",
                    "value": "1"
                  },
                  {
                    "name": "XAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "Height",
                    "value": "%changeOrientation()%"
                  },
                  {
                    "name": "OnPress",
                    "value": "var position = _view.plottingPanel.getInteraction().getInteractionPoint();\n"
                  },
                  {
                    "name": "GridXShow",
                    "value": "false"
                  },
                  {
                    "name": "Width",
                    "value": "Width1"
                  },
                  {
                    "name": "Enabled",
                    "value": "true"
                  },
                  {
                    "name": "SquareAspect",
                    "value": "true"
                  },
                  {
                    "name": "MaximumY",
                    "value": "5"
                  },
                  {
                    "name": "MaximumX",
                    "value": "5*imageSizeX/imageSizeY+offSetX"
                  },
                  {
                    "name": "EnabledDragging",
                    "value": "\"ENABLED_X\""
                  },
                  {
                    "name": "YAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "GridYShow",
                    "value": "false"
                  },
                  {
                    "name": "MinimumX",
                    "value": "-5*imageSizeX/imageSizeY+offSetX"
                  },
                  {
                    "name": "MinimumY",
                    "value": "-5"
                  },
                  {
                    "name": "AxisYShow",
                    "value": "false"
                  },
                  {
                    "name": "AutoScaleY",
                    "value": "false"
                  },
                  {
                    "name": "AutoScaleX",
                    "value": "false"
                  },
                  {
                    "name": "Visibility",
                    "value": "world===true"
                  },
                  {
                    "name": "XScalePrecision",
                    "value": "0"
                  },
                  {
                    "name": "Display",
                    "value": "\"inline-block\""
                  }
                ],
                "Children": [
                  {
                    "Name": "backgroundimage",
                    "Type": "Image2D",
                    "Properties": [
                      {
                        "name": "SizeX",
                        "value": "10*imageSizeX/imageSizeY"
                      },
                      {
                        "name": "X",
                        "value": "offSetX"
                      },
                      {
                        "name": "ImageUrl",
                        "value": "%imageURL%"
                      },
                      {
                        "name": "SizeY",
                        "value": "10"
                      }
                    ]
                  },
                  {
                    "Name": "ruler",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(224,158,95,1.0)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "rulerSizeX"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"EAST\""
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"RECTANGLE\""
                      },
                      {
                        "name": "X",
                        "value": "rulerX"
                      },
                      {
                        "name": "Y",
                        "value": "rulerY"
                      },
                      {
                        "name": "SizeY",
                        "value": "rulerSizeY"
                      },
                      {
                        "name": "LineWidth",
                        "value": "0"
                      }
                    ]
                  },
                  {
                    "Name": "ruler2",
                    "Type": "Ruler",
                    "Properties": [
                      {
                        "name": "Minimum",
                        "value": "0"
                      },
                      {
                        "name": "Maximum",
                        "value": "2"
                      },
                      {
                        "name": "NumberOfMarks",
                        "value": "3"
                      },
                      {
                        "name": "MediumMark",
                        "value": "30"
                      },
                      {
                        "name": "Length",
                        "value": "rulerSizeX"
                      },
                      {
                        "name": "BigMark",
                        "value": "3"
                      },
                      {
                        "name": "Digits",
                        "value": "1"
                      },
                      {
                        "name": "X",
                        "value": "rulerX"
                      },
                      {
                        "name": "Y",
                        "value": "rulerY"
                      },
                      {
                        "name": "Enabled",
                        "value": "true"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "Width",
                        "value": "rulerSizeY"
                      }
                    ]
                  },
                  {
                    "Name": "clockCentre",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"Blue\""
                      },
                      {
                        "name": "Sensitivity",
                        "value": "100"
                      },
                      {
                        "name": "SizeX",
                        "value": "0.1"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ELLIPSE\""
                      },
                      {
                        "name": "X",
                        "value": "clockX"
                      },
                      {
                        "name": "Y",
                        "value": "clockY"
                      },
                      {
                        "name": "OnPress",
                        "value": "if (t>=0&&t<(3-dt)){\n_play()\n}\n"
                      },
                      {
                        "name": "SizeY",
                        "value": "0.1"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_NO_MOVE\""
                      }
                    ]
                  },
                  {
                    "Name": "hourHandarrow",
                    "Type": "Arrow2D",
                    "Properties": [
                      {
                        "name": "SizeX",
                        "value": "clockHourSize"
                      },
                      {
                        "name": "Rotate",
                        "value": "pi/2+clockHourAngle"
                      },
                      {
                        "name": "X",
                        "value": "clockX"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Blue\""
                      },
                      {
                        "name": "Y",
                        "value": "clockY"
                      },
                      {
                        "name": "SizeY",
                        "value": "0"
                      },
                      {
                        "name": "LineWidth",
                        "value": "4"
                      }
                    ]
                  },
                  {
                    "Name": "minHandarrow",
                    "Type": "Arrow2D",
                    "Properties": [
                      {
                        "name": "SizeX",
                        "value": "clockMinSize"
                      },
                      {
                        "name": "Rotate",
                        "value": "pi/2+clockMinAngle"
                      },
                      {
                        "name": "X",
                        "value": "clockX"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Blue\""
                      },
                      {
                        "name": "Y",
                        "value": "clockY"
                      },
                      {
                        "name": "SizeY",
                        "value": "0"
                      },
                      {
                        "name": "LineWidth",
                        "value": "2"
                      }
                    ]
                  },
                  {
                    "Name": "Temperaturetext",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "0.6"
                      },
                      {
                        "name": "Y",
                        "value": "3.1"
                      },
                      {
                        "name": "Text",
                        "value": "%temperatureText%"
                      }
                    ]
                  },
                  {
                    "Name": "bubble",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"White\""
                      },
                      {
                        "name": "SizeX",
                        "value": "0.35"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ELLIPSE\""
                      },
                      {
                        "name": "X",
                        "value": "bubbleX"
                      },
                      {
                        "name": "Y",
                        "value": "bubbleY"
                      },
                      {
                        "name": "SizeY",
                        "value": "0.35"
                      }
                    ]
                  },
                  {
                    "Name": "magnifyingGlass",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(224,158,0,0.0)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "3.5"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ELLIPSE\""
                      },
                      {
                        "name": "X",
                        "value": "-1.2"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Cyan\""
                      },
                      {
                        "name": "Y",
                        "value": "-2.1"
                      },
                      {
                        "name": "SizeY",
                        "value": "3.5"
                      },
                      {
                        "name": "LineWidth",
                        "value": "3"
                      }
                    ]
                  },
                  {
                    "Name": "magnify",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "-1.2"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      },
                      {
                        "name": "Text",
                        "value": "\"Magnified View\""
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "panel2",
                "Type": "Panel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "Width",
                    "value": "Width2"
                  },
                  {
                    "name": "Display",
                    "value": "\"inline-block\""
                  }
                ],
                "Children": [
                  {
                    "Name": "dataTable",
                    "Type": "DataTable",
                    "Properties": [
                      {
                        "name": "Input",
                        "value": "datatable"
                      },
                      {
                        "name": "Active",
                        "value": "true"
                      },
                      {
                        "name": "CellsCSS",
                        "value": "{\"text-align\":\"center\"}"
                      },
                      {
                        "name": "HeadersText",
                        "value": "[\"Duration /h\",\"Distance moved by bubble /mm (Control) \",\"Distance moved by bubble with plastic bag /mm \",\"Distance moved by bubble with fan /mm \",\"Distance moved by bubble with lamp /mm \",\"Distance moved by bubble with heater /mm \"]"
                      },
                      {
                        "name": "CellsFormat",
                        "value": "[\"0\",\"0.0\",\"0.0\",\"0.0\",\"0.0\",\"0.0\"]"
                      },
                      {
                        "name": "NoRepeat",
                        "value": "true"
                      },
                      {
                        "name": "ClearAtInput",
                        "value": "true"
                      },
                      {
                        "name": "Width",
                        "value": "\"100%\""
                      },
                      {
                        "name": "Font",
                        "value": "\"normal normal 1vw \""
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "Name": "html",
            "Type": "Panel",
            "Properties": [
              {
                "name": "Html",
                "value": "\n<h2>Others</h2>\n<ul>\n\n  <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/biology/1182-transpiration-sec\" target=\"_blank\">Need a 3 hour version?</a></li>\n  <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/biology/1061-transpiration\" target=\"_blank\">Need a 1 hour version?</a></li>\n</ul>\n"
              }
            ]
          }
        ]
      }
    ],
    "RootProperties": []
  },
  "metadata": {
    "APP": "WebEJS",
    "CreatedWith": "WebEJS : The web version of Easy JavaScript Simulations",
    "MoreInfo": "WebEJS 1.1",
    "version": "https://www.um.es/fem/wikis/webejs/"
  }
}