From 2f0eb49eeead423e88db62509e4b21dd74c7fa0b Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Tue, 16 Jun 2026 15:21:28 +0000 Subject: [PATCH] Checkpoint: UPRN 10093116543 Elmhurst build + devcontainer VNC/Playwright + perms - Add SAP-accuracy sample for uprn_10093116543 (epc.json, elmhurst_inputs.md, summary/worksheet PDFs) - Persist hyde viewer stack (xvfb/fluxbox/x11vnc/novnc/websockify) and Playwright chromium in the backend devcontainer; forward noVNC 6080 - Broaden .claude/settings.local.json allowlist (display/python/grep/tail) - In-progress campaign mapper/cert_to_inputs work carried from prior cert Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/settings.json | 168 +++ .../reference/mapping.md | 15 + .../expand-sap-accuracy-corpus/SKILL.md | 65 +- .../expand-sap-accuracy-corpus/worklist.md | 2 +- .devcontainer/asset_list/docker-compose.yml | 3 + .devcontainer/backend/Dockerfile | 23 + .devcontainer/backend/devcontainer.json | 6 +- .devcontainer/backend/docker-compose.yml | 8 + .gitignore | 1 + .../uprn_10093116528/elmhurst_inputs.md | 180 +++ .../uprn_10093116528/elmhurst_summary.pdf | Bin 0 -> 63543 bytes .../uprn_10093116528/elmhurst_worksheet.pdf | Bin 0 -> 43025 bytes .../uprn_10093116543/elmhurst_inputs.md | 118 ++ .../uprn_10093116543/elmhurst_summary.pdf | Bin 0 -> 77579 bytes .../uprn_10093116543/elmhurst_worksheet.pdf | Bin 0 -> 44600 bytes .../SAP-Schema-17.1/uprn_10093116543/epc.json | 470 ++++++++ datatypes/epc/domain/epc_property_data.py | 6 + datatypes/epc/domain/mapper.py | 9 +- .../sap10_calculator/rdsap/cert_to_inputs.py | 9 +- scripts/hyde/elmhurst_README.md | 71 ++ scripts/hyde/elmhurst_dom/address.json | 583 +++++++++ scripts/hyde/elmhurst_dom/conservatories.json | 187 +++ scripts/hyde/elmhurst_dom/dimensions.json | 254 ++++ scripts/hyde/elmhurst_dom/flats.json | 270 +++++ scripts/hyde/elmhurst_dom/floors.json | 298 +++++ .../hyde/elmhurst_dom/newtechnologies.json | 284 +++++ scripts/hyde/elmhurst_dom/openings.json | 682 +++++++++++ .../elmhurst_dom/propertydescription.json | 1068 +++++++++++++++++ .../hyde/elmhurst_dom/propertydetails.json | 328 +++++ scripts/hyde/elmhurst_dom/roofs.json | 373 ++++++ scripts/hyde/elmhurst_dom/spaceheating.json | 1011 ++++++++++++++++ scripts/hyde/elmhurst_dom/summary.json | 231 ++++ .../elmhurst_dom/ventilationandcooling.json | 502 ++++++++ scripts/hyde/elmhurst_dom/walls.json | 317 +++++ scripts/hyde/elmhurst_dom/waterheating.json | 911 ++++++++++++++ scripts/hyde/elmhurst_download.py | 103 ++ scripts/hyde/elmhurst_explore.py | 186 +++ scripts/hyde/elmhurst_fill.py | 311 +++++ scripts/hyde/elmhurst_lib.py | 228 ++++ scripts/hyde/elmhurst_session.py | 175 +++ .../hyde/full_sap_17_1_remapper_handoff.md | 153 +++ scripts/hyde/main.py | 312 +++++ scripts/hyde/mapping_decisions.md | 110 ++ scripts/hyde/perimeter_decision.md | 122 ++ scripts/hyde/start_viewer.sh | 89 ++ .../test_real_cert_sap_accuracy.py | 40 +- 46 files changed, 10256 insertions(+), 26 deletions(-) create mode 100644 .claude/settings.json create mode 100644 backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_inputs.md create mode 100644 backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_summary.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_worksheet.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_inputs.md create mode 100644 backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_summary.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_worksheet.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/epc.json create mode 100644 scripts/hyde/elmhurst_README.md create mode 100644 scripts/hyde/elmhurst_dom/address.json create mode 100644 scripts/hyde/elmhurst_dom/conservatories.json create mode 100644 scripts/hyde/elmhurst_dom/dimensions.json create mode 100644 scripts/hyde/elmhurst_dom/flats.json create mode 100644 scripts/hyde/elmhurst_dom/floors.json create mode 100644 scripts/hyde/elmhurst_dom/newtechnologies.json create mode 100644 scripts/hyde/elmhurst_dom/openings.json create mode 100644 scripts/hyde/elmhurst_dom/propertydescription.json create mode 100644 scripts/hyde/elmhurst_dom/propertydetails.json create mode 100644 scripts/hyde/elmhurst_dom/roofs.json create mode 100644 scripts/hyde/elmhurst_dom/spaceheating.json create mode 100644 scripts/hyde/elmhurst_dom/summary.json create mode 100644 scripts/hyde/elmhurst_dom/ventilationandcooling.json create mode 100644 scripts/hyde/elmhurst_dom/walls.json create mode 100644 scripts/hyde/elmhurst_dom/waterheating.json create mode 100644 scripts/hyde/elmhurst_download.py create mode 100644 scripts/hyde/elmhurst_explore.py create mode 100644 scripts/hyde/elmhurst_fill.py create mode 100644 scripts/hyde/elmhurst_lib.py create mode 100644 scripts/hyde/elmhurst_session.py create mode 100644 scripts/hyde/full_sap_17_1_remapper_handoff.md create mode 100644 scripts/hyde/main.py create mode 100644 scripts/hyde/mapping_decisions.md create mode 100644 scripts/hyde/perimeter_decision.md create mode 100755 scripts/hyde/start_viewer.sh diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 00000000..f9ab3156 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,168 @@ +{ + "permissions": { + "allow": [ + "Bash(python -c ' *)", + "Bash(python -m pytest tests/ -v --no-cov)", + "Bash(git -C /workspaces/model diff --stat)", + "Bash(python -c \"import moto; print\\('moto installed:', moto.__version__\\)\")", + "Bash(grep -E \"\\\\.\\(py|sql\\)$\")", + "Bash(xargs basename -a)", + "Bash(ls -la /workspaces/home 2>/dev/null | head -20)", + "Read(//workspaces/home/**)", + "Bash(command -v uv)", + "Bash(uv --version)", + "Bash(echo \"uv: $\\(uv --version\\)\")", + "Bash(python -m pyright --version)", + "Bash(npx --no-install pyright --version)", + "Bash(node /home/vscode/.npm/_npx/110e52990071af13/node_modules/pyright/dist/pyright.js --outputjson etl/hubspot/hubspotClient.py etl/hubspot/hubspotDataTodB.py etl/hubspot/project_data.py etl/hubspot/scripts/scraper/main.py backend/app/db/models/hubspot_project_data.py backend/app/db/models/hubspot_deal_data.py etl/hubspot/tests/test_scraper_handler.py etl/hubspot/tests/test_hubspot_data_to_db.py etl/hubspot/tests/test_hubspot_client_integration.py)", + "Bash(python -c \"import sys,json; d=json.load\\(sys.stdin\\); s=d['summary']; print\\('errors',s['errorCount'],'warnings',s['warningCount']\\); [print\\(f\\\\\"{x['severity']}: {x['file'].split\\('/'\\)[-1]}:{x['range']['start']['line']+1} {x['rule'] if 'rule' in x else ''} -- {x['message'].splitlines\\(\\)[0]}\\\\\"\\) for x in d['generalDiagnostics'] if x['severity']=='error']\")", + "Bash(node /home/vscode/.npm/_npx/110e52990071af13/node_modules/pyright/dist/pyright.js etl/hubspot/project_data.py backend/app/db/models/hubspot_project_data.py)", + "Bash(python -c \"import sqlmodel, sqlalchemy, hubspot; print\\('deps importable'\\)\")", + "Bash(python -m pytest --version)", + "Bash(python -m pytest etl/hubspot/tests/ -m \"not integration\" -p no:cacheprovider -o addopts=\"\" -q)", + "Bash(node /home/vscode/.npm/_npx/110e52990071af13/node_modules/pyright/dist/pyright.js --pythonpath /usr/local/bin/python etl/hubspot/project_data.py backend/app/db/models/hubspot_project_data.py)", + "Bash(node /home/vscode/.npm/_npx/110e52990071af13/node_modules/pyright/dist/pyright.js --pythonpath /usr/local/bin/python etl/hubspot/company_data.py)", + "Bash(python /tmp/inspect_project.py)", + "Read(//home/vscode/github/**)", + "Bash(find / -maxdepth 6 -type d -name assessment-model)", + "Bash(terraform fmt *)", + "Bash(terraform init *)", + "Bash(terraform validate *)", + "Bash(python -m pytest tests/orchestration/test_landlord_description_overrides_orchestrator.py -q)", + "Bash(python -m pytest tests/orchestration/test_landlord_description_overrides_orchestrator.py tests/repositories/landlord_overrides -q --no-cov)", + "Bash(python -m py_compile tests/infrastructure/chatgpt/test_chatgpt_column_classifier.py)", + "Bash(git add *)", + "Bash(git status *)", + "Bash(cp pyrightconfig.json /tmp/pyrightconfig.bak.json)", + "Bash(python3 -)", + "Bash(npx --yes pyright infrastructure/postgres/landlord_overrides_postgres_repository.py applications/landlord_description_overrides/handler.py tests/repositories/landlord_overrides/postgres/test_landlord_overrides_postgres_repository.py orchestration/classifiable_column.py)", + "Bash(git stash *)", + "Bash(npx --yes pyright applications/landlord_description_overrides/handler.py)", + "Bash(python3 -m pytest tests/repositories/landlord_overrides/postgres/test_landlord_overrides_postgres_repository.py -q)", + "Bash(python3 -m pytest tests/orchestration/test_landlord_description_overrides_orchestrator.py tests/repositories/landlord_overrides/ -q -p no:cov)", + "Bash(python3 -m pytest tests/orchestration/test_landlord_description_overrides_orchestrator.py tests/repositories/landlord_overrides/ -q)", + "Bash(cp pyrightconfig.json /tmp/pyrightconfig.bak2.json)", + "Bash(npx --yes pyright infrastructure/landlord_overrides/landlord_overrides_postgres_repository.py tests/repositories/landlord_overrides/postgres/test_landlord_overrides_postgres_repository.py)", + "Bash(GIT_EDITOR=true git rebase --continue)", + "Bash(git worktree *)", + "Bash(git branch *)", + "Bash(echo \"exit: $?\")", + "Bash(git reset *)", + "Bash(echo \"fetch-exit: $?\")", + "Bash(sed -n *)", + "Bash(set -e)", + "Bash(git rm *)", + "Bash(git ls-tree *)", + "Bash(command -v pyright)", + "Bash(git merge *)", + "Bash(git rev-list *)", + "Bash(git remote *)", + "Bash(git ls-remote *)", + "Bash(grep -v '\\\\.sample$')", + "Bash([ -f \".git/hooks/$h\" ])", + "Bash(python3 -m pytest tests/test_lambda_packaging.py -p no:cacheprovider --no-header -q)", + "Bash(python3 -m pytest tests/test_lambda_packaging.py -p no:cov --no-header -q)", + "Bash(python3 -m pytest tests/test_lambda_packaging.py --no-cov -p no:cacheprovider -q)", + "Bash(python3 -m pytest tests/test_lambda_packaging.py --no-cov -q)", + "Bash(python3 -m pyright tests/test_lambda_packaging.py)", + "Bash(python3 -m pytest tests/ --collect-only --no-cov -q)", + "Bash(python3 -c \"import yaml; [print\\(f, 'OK'\\) for f in ['.github/workflows/ddd_tests.yml','.github/workflows/unit_tests.yml'] if yaml.safe_load\\(open\\(f\\)\\)]\")", + "Bash(python3 -m pytest tests/ -q --no-cov)", + "Bash(python3 -c ' *)", + "Bash(python3 -m pyright --outputjson scripts/hyde/main.py)", + "Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); s=d['summary']; print\\('errors:',s['errorCount'],'warnings:',s['warningCount']\\); [print\\(f\\\\\" L{e['range']['start']['line']+1}: {e['message'].splitlines\\(\\)[0]}\\\\\"\\) for e in d['generalDiagnostics'] if e['severity']=='error']\")", + "Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); s=d['summary']; print\\('pyright errors:',s['errorCount'],'warnings:',s['warningCount']\\); [print\\(f\\\\\" L{e['range']['start']['line']+1}: {e['message'].splitlines\\(\\)[0]}\\\\\"\\) for e in d['generalDiagnostics'] if e['severity']=='error']\")", + "Bash(python3 main.py)", + "Bash(netstat -ltnp)", + "Bash(fuser 8000/tcp)", + "Bash(kill 351610 685390 351625)", + "Read(//proc/531213/net/**)", + "Bash(ps -p 351610 -o pid=)", + "Bash(python -)", + "Bash(python -m pytest \"datatypes/epc/domain/tests/test_from_rdsap_schema.py::TestRdSap20_0_0ReducedFieldSynthesis::test_cert_omitting_sap_windows_maps_without_missing_required_field\")", + "Bash(python -m pytest datatypes/epc/domain/tests/test_from_rdsap_schema.py infrastructure/epc_client/tests/test_mapper_corpus.py)", + "Bash(git -C /workspaces/model stash push -u -- datatypes/epc/schema/rdsap_schema_20_0_0.py datatypes/epc/domain/mapper.py datatypes/epc/domain/tests/test_from_rdsap_schema.py)", + "Bash(python -m pytest \"datatypes/epc/domain/tests/test_from_rdsap_schema.py::TestFromRdSapSchema21_0_1::test_total_floor_area\")", + "Bash(git -C /workspaces/model stash pop)", + "Bash(python -m pytest \"datatypes/epc/domain/tests/test_from_rdsap_schema.py::TestRdSap20_0_0ReducedFieldSynthesis::test_band_more_than_typical_scales_glazing_by_1_25\")", + "Bash(python -m pytest \"datatypes/epc/domain/tests/test_from_rdsap_schema.py::TestRdSap20_0_0ReducedFieldSynthesis\")", + "Bash(python -m pytest \"datatypes/epc/domain/tests/test_from_rdsap_schema.py::TestRdSap20_0_0ReducedFieldSynthesis::test_synthesised_glazing_type_routed_through_cascade\")", + "Bash(python -m pytest infrastructure/epc_client/tests/test_mapper_corpus.py -k \"wip_schema_20\" -q -p no:cov --no-header -rN)", + "Bash(python -m pytest infrastructure/epc_client/tests/test_mapper_corpus.py -k \"wip_schema_20\" -q --no-header)", + "Bash(timeout 150 python scripts/eon/find_epc_data.py)", + "Bash(python -m scripts.run_modelling_e2e --scenario-id 1266 --portfolio-id 785 --measures high_heat_retention_storage_heaters,solar_pv 709634 709635 709636 709638 709639 709640 709641 709642 709644)", + "Read(//home/vscode/.claude/skills/grill-me/**)", + "Bash(awk '{print $9, $5}')", + "Bash(grep -E \"\\\\.py$\")", + "Bash(python3 scripts/eon/harvest_certs.py)", + "Bash(python scripts/eon/harvest_certs.py)", + "Bash(git commit -q -m ' *)", + "Bash(timeout 250 npx -y pyright@1.1.410 datatypes/epc/domain/mapper.py)", + "Bash(git check-ignore *)", + "Bash(timeout 250 npx -y pyright@1.1.410 datatypes/epc/schema/rdsap_schema_18_0.py datatypes/epc/domain/mapper.py)", + "Bash(timeout 250 npx -y pyright@1.1.410 datatypes/epc/schema/rdsap_schema_17_1.py datatypes/epc/domain/mapper.py)", + "Bash(python -m scripts.run_modelling_e2e --scenario-id 1266 --portfolio-id 785 --measures high_heat_retention_storage_heaters,solar_pv 709634 709635 709636 709638 709639 709640 709641 709642 709643 709644 709645 709637)", + "Read(//workspaces/**)", + "Bash(python -m scripts.run_modelling_e2e --scenario-id 1266 --portfolio-id 785 --measures high_heat_retention_storage_heaters,solar_pv 709634)", + "Bash(python 2_export_data.py)", + "Bash(git commit -q -m 'Map RdSAP-Schema-17.0 certs to EpcPropertyData 🟥 *)", + "Bash(python -m py_compile tests/utilities/floats.py backend/app/db/functions/tests/test_portfolio_functions.py backend/documents_parser/tests/test_summary_pdf_mapper_chain.py backend/documents_parser/tests/test_heating_systems_corpus.py)", + "Bash(PYTHONPATH=/workspaces/model python -)", + "Bash(npx --no-install pyright datatypes/epc/schema/sap_schema_17_1.py datatypes/epc/domain/mapper.py datatypes/epc/domain/tests/test_from_sap_schema.py)", + "Bash(git commit -q -m 'Map full-SAP cert identity and scalar fields to EpcPropertyData 🟩 *)", + "Bash(npx --no-install pyright --outputjson datatypes/epc/domain/mapper.py)", + "Bash(git commit -q -m 'Carry full-SAP measured fabric U-value descriptions into the domain model 🟩 *)", + "Bash(python scripts/hyde/elmhurst_session.py --help)", + "Bash(python scripts/hyde/elmhurst_session.py status)", + "Bash(DISPLAY=:99 import -window root /tmp/hyde-viewer/elm_now2.png)", + "Bash(DISPLAY=:99 timeout 90 python scripts/hyde/elmhurst_explore.py \"https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormAddress.aspx?Guid=B44A0DB4-4C08-4241-B818-86F060172105&Referrer=https%3a%2f%2fmembers.elmhurstenergy.co.uk%2fRdsapZone%2fHome.aspx\")", + "Bash(DISPLAY=:99 timeout 90 python scripts/hyde/elmhurst_explore.py \"https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormPropertyDescription.aspx?Guid=B44A0DB4-4C08-4241-B818-86F060172105\")", + "Bash(DISPLAY=:99 timeout 90 python scripts/hyde/elmhurst_explore.py \"https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormAddress.aspx?Guid=B44A0DB4-4C08-4241-B818-86F060172105\")", + "Bash(DISPLAY=:99 timeout 150 python scripts/hyde/elmhurst_fill.py)", + "Bash(pkill -f \"rdsap10\\\\|for-testing\")", + "Bash(rm -f scripts/hyde/.elmhurst-session/Singleton*)", + "Bash(DISPLAY=:99 timeout 280 python -u scripts/hyde/elmhurst_fill.py --page property_description --commit)", + "Bash(npx --no-install pyright scripts/hyde/elmhurst_download.py)", + "Edit(/.claude/skills/expand-sap-accuracy-corpus/**)", + "Bash(PYTHONPATH=/workspaces/model python scripts/fetch_real_life_epc_sample.py 10093116528)", + "Bash(PYTHONPATH=/workspaces/model python -c ' *)", + "Bash(bash scripts/hyde/start_viewer.sh)", + "Bash(DISPLAY=:99 ELMHURST_URL=\"https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormAddress.aspx?Guid=B44A0DB4-4C08-4241-B818-86F060172105\" python scripts/hyde/elmhurst_session.py login)", + "Bash(break)", + "Bash(DISPLAY=:99 timeout 90 python /tmp/check_session.py)", + "Bash(pkill -9 -f \"elm_login_hold.py\")", + "Bash(pkill -9 -f \"elmhurst-session\")", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 150 python /tmp/elm_build_dims.py)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 120 python /tmp/elm_dump_full.py Walls WebFormWalls.aspx)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 120 python /tmp/elm_walls_disc.py)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 120 python /tmp/elm_roof_disc.py)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 120 python /tmp/elm_dump_full.py Openings WebFormOpenings.aspx)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 120 python /tmp/elm_win_probe.py)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 220 python /tmp/elm_build_openings.py)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 120 python /tmp/elm_tab_probe.py)", + "Bash(ELM_ACCESS=\"P960-0001\" ELM_PWD=\"y22bseGUzr\" DISPLAY=:99 timeout 120 python /tmp/elm_del_probe.py)", + "Bash(npx --no-install pyright datatypes/epc/domain/epc_property_data.py datatypes/epc/domain/mapper.py domain/sap10_calculator/rdsap/cert_to_inputs.py)", + "Bash(PYTHONPATH=/workspaces/model python -m pytest domain/sap10_calculator/tests/test_sap_accuracy_corpus.py -q --no-cov)", + "Bash(PYTHONPATH=/workspaces/model python -m pytest tests/domain/sap10_calculator/test_real_cert_sap_accuracy.py -q --no-cov)", + "Edit(/.claude/skills/epc-to-elmhurst-rdsap-inputs/**)", + "Bash(python3 -c \"import sys; sys.path.insert\\(0,'scripts/hyde'\\); import elmhurst_lib; print\\('elmhurst_lib imports OK:', [f for f in dir\\(elmhurst_lib\\) if not f.startswith\\('_'\\)][:12]\\)\")", + "Bash(PYTHONPATH=/workspaces/model python -m pytest tests/domain/sap10_calculator/test_real_cert_sap_accuracy.py tests/infrastructure/epc_client/test_sap_accuracy_corpus.py -q --no-cov)", + "Bash(PYTHONPATH=/workspaces/model python scripts/fetch_real_life_epc_sample.py 10093116543)", + "Bash(echo \"---EXIT $?---\")", + "Bash(sudo apt-get update -o Dir::Etc::sourceparts=-)", + "Bash(apt-cache policy *)", + "Bash(sudo apt-get update)", + "Bash(bash scripts/hyde/start_viewer.sh restart)", + "Bash(echo \"=== listen sockets \\(port 6080 / 5900\\) ===\"; ss -ltnp 2>/dev/null | grep -E ':6080|:5900' || netstat -ltnp 2>/dev/null | grep -E ':6080|:5900' || echo \"ss/netstat unavailable\" *)", + "Read(//proc/5476/**)", + "Bash(sudo python -m playwright install-deps chromium)", + "Bash(python -m playwright install chromium)", + "Bash(python -m playwright --version)", + "Bash(pip show *)" + ], + "additionalDirectories": [ + "/tmp", + "/workspaces/model/scripts/hyde/.elmhurst-session" + ] + } +} diff --git a/.claude/skills/epc-to-elmhurst-rdsap-inputs/reference/mapping.md b/.claude/skills/epc-to-elmhurst-rdsap-inputs/reference/mapping.md index d3741489..1aab0298 100644 --- a/.claude/skills/epc-to-elmhurst-rdsap-inputs/reference/mapping.md +++ b/.claude/skills/epc-to-elmhurst-rdsap-inputs/reference/mapping.md @@ -112,6 +112,21 @@ Per-window fields: `door_count` when `percent_draughtproofed` 100. Engine default uninsulated door U = 3.0 W/m²K, area 1.85 m² → `doors_w_per_k` ≈ count × 1.85 × 3.0. +## Air permeability (CRITICAL — q50 is AP50, not AP4) + +A lodged "Air permeability X m³/h.m² (as tested)" is a **q50** result (Blower-Door, +at 50 Pa). SAP/RdSAP infiltration line `(18) = AP50/20 + (8)` — Elmhurst's worksheet +labels it **"Measured/design AP50"** and divides by 20 (worksheet lines 17/18). + +⚠️ **Do not confuse with AP4** (air permeability at 4 Pa, from a *Pulse* test), +whose cascade is `(18) = 0.263 × AP4^0.924 + (8)` — a much larger number for the +same value. Mapping a q50 onto the AP4 path massively over-counts infiltration +(e.g. q50 4.5 → 1.0 ach vs the correct 4.5/20 = 0.225). The full-SAP mapper now +routes the lodged air permeability to `SapVentilation.air_permeability_ap50_m3_h_m2` +(the `/20` path); fixed in the uprn_10093116528 campaign (gov-API SAP 78→82, vs +Elmhurst worksheet 81). In Elmhurst enter it via Air Pressure Test → **Blower Door** +→ result (and a certificate number, which the validation requires). + ## Ventilation & Lighting - **Ventilation**: open chimneys = `open_fireplaces_count`; flues/passive diff --git a/.claude/skills/expand-sap-accuracy-corpus/SKILL.md b/.claude/skills/expand-sap-accuracy-corpus/SKILL.md index 2507f61e..9c2d4062 100644 --- a/.claude/skills/expand-sap-accuracy-corpus/SKILL.md +++ b/.claude/skills/expand-sap-accuracy-corpus/SKILL.md @@ -58,13 +58,60 @@ worksheet exposes calculator holes. `[ ]` todo · `[x]` pinned (≤0.5) · `🔧` mapper extended · `⚠` xfail (engine bug) · `⛔` blocked. Annotate each done line: `— · eng / elm · `. +## Elmhurst build playbook (READ THIS before driving the browser) +Use **`scripts/hyde/elmhurst_lib.py`** — it encodes the auth + DOM gotchas below. +Pattern: `with E.session() as (ctx,page): E.goto(...); E.set_text/set_select(...); E.save_close(page)`. + +- **Auth is a SESSION cookie** — Playwright's persistent context does NOT restore + it across process launches, so the old "log in once, reuse session" flow breaks. + Instead **log in fresh every run** (`E.session()` reads creds from `ELM_ACCESS`/ + `ELM_PWD` or gitignored `scripts/hyde/.elmhurst-creds.json`). Assessment DATA + persists server-side via **Save & Close**, so you can build/verify ONE page per + run across separate processes. Start the viewer first: `bash scripts/hyde/start_viewer.sh`. +- **Build page-by-page, Save & Close each** — overwrite the reused assessment's + prior-UPRN state (incl. property type House↔Flat, which reveals/hides fields). + After each `set_*`, the page AutoPostBacks — re-locate the next control. +- **Sub-tabs hide fields** — Doors, Air Pressure Test, Lighting, FGHRS etc. are + Ajax tabs; their inputs exist in the DOM but are invisible until you + `E.click_tab(page, "TabContainer_TabPanelPanel")`. Forgetting this → "element + not visible" timeouts AND missing-required-field validation errors. +- **Window grid is the hard part.** (a) delete is a Yes/No MODAL + (`E.delete_first_window`); (b) it WON'T delete the last row; (c) **each Add wipes + the previously-added row** → multi-row entry doesn't stick. So enter **ONE + combined window**: `E.add_combined_window(page, total_glazed_area, orientation)` + then delete the prior rows. Use a standard band glazing ("Double post or during + 2022" ≈ U1.4/g0.72) — the "...known data" option demands per-row Frame-Factor/ + Data-Source/Location/Building-Part and fails validation. Trust the grid only + after Save & Close + reload (the live grid mis-shows older rows as 0.00). +- **U-value-known overrides** (walls/roof/floor) don't toggle via automation → + accept the natural RdSAP age-band U-value; note the divergence for reconciliation. +- **Recommendations page = validation gate.** It must show ZERO errors before the + summary/worksheet PDFs download. Usual culprits: insulated-door U-value, and the + air-pressure-test **certificate number** (required when method=Blower Door). +- **Air permeability**: enter the lodged q50 via Air Pressure Test → Blower Door → + result. Elmhurst treats it as **AP50** and uses `(18)=AP50/20+(8)` (worksheet + lines 17/18). This drove the first campaign mapper fix — see Banked findings. + +## Banked findings (fold new ones in here as the corpus grows) +- **Air-permeability AP50 fix** (uprn_10093116528, the first campaign cert): the + full-SAP mapper was routing the lodged q50 to the engine's AP4/Pulse formula + (`0.263×AP4^0.924`) instead of the AP50 `/20` path — a big infiltration + over-count. Fixed via `SapVentilation.air_permeability_ap50_m3_h_m2` + + `_sap_17_1_ventilation` + `cert_to_inputs`. Re-pinned uprn_10092973954 77→80. + See `epc-to-elmhurst-rdsap-inputs/reference/mapping.md` (Air permeability). +- **Full-SAP-through-RdSAP residual ≈ +1–2 SAP** is expected and usually NOT a + bug: the engine uses the cert's *measured* U-values (often better than RdSAP + age-band proxies) and Elmhurst RdSAP uses age-band defaults + a party-wall + default. Pin the engine's observed value; document the Elmhurst delta (don't tune). +- **FGHRS** (full-SAP `has_fghrs`/`fghrs_index_number`) is dropped by the mapper + and not yet modelled — omit it on BOTH sides so the comparison stays clean. + ## Limitations / next improvements (make the campaign scale) -- **Per-assessment GUID** — `elmhurst_fill.py` / `elmhurst_download.py` hard-code - `ASSESSMENT_GUID` (the Khalim-test cert). Each UPRN needs its own Elmhurst - assessment; create one and update the GUID, or parameterize it (`--guid`). -- **Cert-specific fill values** — `PAGES` in `elmhurst_fill.py` hold one cert's - values. Make it **data-driven** (read field values from each cert's - `elmhurst_inputs.md` or a JSON sidecar) so one filler serves all UPRNs. Until - then, build each cert guided by its `elmhurst_inputs.md` (the filler is a template). -- **More dialogs** — boiler is automated (cascade); apply the same - open→select→OK pattern to the control code (2110) and the MV unit when wanted. +- **Per-assessment GUID** — `elmhurst_lib.py` reuses one `ASSESSMENT_GUID` + (Khalim-test), overwritten per UPRN. For parallelism, create one assessment per + UPRN and parameterize the GUID. +- **Data-driven fill** — `elmhurst_lib.py` gives the primitives; a per-cert driver + that reads field values straight from `elmhurst_inputs.md` (or a JSON sidecar) + would remove the remaining hand-keying. `elmhurst_fill.py` is the older template. +- **More dialogs** — boiler cascade is automatable; the control-code (2110) and + FGHRS/MV-unit search dialogs still need the open→search→select→OK pattern. diff --git a/.claude/skills/expand-sap-accuracy-corpus/worklist.md b/.claude/skills/expand-sap-accuracy-corpus/worklist.md index 6794e933..7f382483 100644 --- a/.claude/skills/expand-sap-accuracy-corpus/worklist.md +++ b/.claude/skills/expand-sap-accuracy-corpus/worklist.md @@ -12,7 +12,7 @@ inputs 79 (calculator faithful within ~1). Use it to sanity-check the pipeline. ## The 100 -- [ ] 10093116528 +- [x] 🔧 10093116528 — SAP-17.1 (full-SAP semi) · eng 82 / elm 81 · 🔧 air-perm AP50 fix: q50 Blower-Door routed to (18)=AP50/20 not the AP4/Pulse formula (was eng 78). Residual +1 = lodged-U vs RdSAP age-band-U; FGHRS (60031) omitted both sides. Worked-ref 10092973954 re-pinned 77→80 by same fix. - [ ] 10093116543 - [ ] 10093116529 - [ ] 100020933699 diff --git a/.devcontainer/asset_list/docker-compose.yml b/.devcontainer/asset_list/docker-compose.yml index d567162b..aed1a2ef 100644 --- a/.devcontainer/asset_list/docker-compose.yml +++ b/.devcontainer/asset_list/docker-compose.yml @@ -1,4 +1,7 @@ version: '3.8' +# Unique Compose project name (see backend/docker-compose.yml) so this repo's +# devcontainer doesn't collide with other model-* clones. +name: model-asset-list services: model-sal: diff --git a/.devcontainer/backend/Dockerfile b/.devcontainer/backend/Dockerfile index 9a75ffc7..1514f78f 100644 --- a/.devcontainer/backend/Dockerfile +++ b/.devcontainer/backend/Dockerfile @@ -13,6 +13,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ ripgrep fd-find make unzip bash-completion \ && rm -rf /var/lib/apt/lists/* +# 1b) Headed-browser viewer stack for the hyde Elmhurst automation. +# scripts/hyde/start_viewer.sh chains these: Xvfb (virtual :99 screen) -> +# fluxbox (window manager) -> x11vnc (VNC on 5900) -> novnc/websockify +# (browser-accessible desktop on 6080). Lets a human watch/click the headed +# Playwright browser while building certs in Elmhurst. +RUN apt-get update && apt-get install -y --no-install-recommends \ + xvfb fluxbox x11vnc novnc websockify \ + && rm -rf /var/lib/apt/lists/* + # Neovim latest (LazyVim needs >=0.9) RUN curl -fsSL https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz \ | tar -xz -C /opt \ @@ -36,6 +45,13 @@ ADD etl/hubspot/requirements.txt requirements4.txt RUN cat requirements1.txt requirements2.txt requirements3.txt requirements4.txt > requirements.txt RUN pip install -r requirements.txt +# Playwright OS dependencies for the hyde Elmhurst automation (scripts/hyde/). +# The pip `playwright` package is in requirements above; this pulls the apt +# libraries chromium needs. The browser BINARY itself is downloaded as the +# vscode user further down (its cache lives in /home/vscode/.cache/ms-playwright, +# which is where the automation runs from). +RUN python -m playwright install-deps chromium + # 5) Workdir WORKDIR /workspaces/model @@ -86,4 +102,11 @@ RUN git clone https://github.com/LazyVim/starter /home/${USER}/.config/nvim \ # Install Claude Code CLI (skills are installed via postCreate from Hestia-Homes/agentic-toolkit) RUN curl -fsSL https://claude.ai/install.sh | bash ENV PATH="/home/vscode/.local/bin:${PATH}" + +# Playwright chromium browser for the hyde Elmhurst automation. Run as the +# vscode user so the download lands in /home/vscode/.cache/ms-playwright (the +# OS deps were installed as root above). Headed chromium is required — the +# automation launches with headless=False onto the noVNC desktop (:99). +RUN python -m playwright install chromium + USER root diff --git a/.devcontainer/backend/devcontainer.json b/.devcontainer/backend/devcontainer.json index d5133df3..a9693502 100644 --- a/.devcontainer/backend/devcontainer.json +++ b/.devcontainer/backend/devcontainer.json @@ -42,11 +42,15 @@ "containerEnv": { "PYTHONFLAGS": "-Xfrozen_modules=off" }, - "forwardPorts": ["model-backend:8000"], + "forwardPorts": ["model-backend:8000", "model-backend:6080"], "portsAttributes": { "model-backend:8000": { "label": "FastAPI", "onAutoForward": "notify" + }, + "model-backend:6080": { + "label": "hyde noVNC desktop", + "onAutoForward": "silent" } } } diff --git a/.devcontainer/backend/docker-compose.yml b/.devcontainer/backend/docker-compose.yml index 9b4873c2..a9350c81 100644 --- a/.devcontainer/backend/docker-compose.yml +++ b/.devcontainer/backend/docker-compose.yml @@ -1,4 +1,8 @@ version: '3.8' +# Unique Compose project name so this repo's devcontainer doesn't collide with +# other model-* clones (which all live in .devcontainer/backend/ and would +# otherwise default to the same project name "backend", clobbering each other). +name: model-backend services: model-backend: @@ -14,6 +18,10 @@ services: # worktrees of this repo run at once without colliding. VS Code's # forwardPorts (in devcontainer.json) forwards container :8000 to your machine. - "8000" + # noVNC desktop for the hyde Elmhurst automation (scripts/hyde/start_viewer.sh). + # Dynamic host port like 8000; VS Code forwardPorts maps container :6080 to + # a stable localhost:6080 on your machine. + - "6080" volumes: - ../../:/workspaces/model - ~/.gitconfig:/home/vscode/.gitconfig:ro diff --git a/.gitignore b/.gitignore index df5276a2..9cb34cb3 100644 --- a/.gitignore +++ b/.gitignore @@ -311,3 +311,4 @@ scripts/eon/epc_cache.pkl # Elmhurst Playwright session (auth cookies) + captured PDFs (scripts/hyde) scripts/hyde/.elmhurst-session/ scripts/hyde/elmhurst_downloads/ +scripts/hyde/.elmhurst-creds.json diff --git a/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_inputs.md b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_inputs.md new file mode 100644 index 00000000..edc1a83c --- /dev/null +++ b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_inputs.md @@ -0,0 +1,180 @@ +# Elmhurst RdSAP inputs — UPRN 10093116528 (cert 8000-8495-2839-2607-9683, SAP-Schema-17.1) + +**Lodged SAP:** 84 (band B) **Our engine:** 78 (continuous 78.04) ← compare Elmhurst against this +**Total fuel cost (engine):** £505.43/yr **Heat transfer coeff:** 177.05 W/K +**Known divergences (candidate mapper gaps — confirm against Elmhurst worksheet):** +- **Party wall U = 0.25 (engine) vs 0 (lodged).** Full-SAP Wall 2 (`wall_type` 4, area 79.1 m², `u_value` 0) is a party wall lodged at U=0. The mapper (`_sap_17_1_building_part`) derives party *length* but drops the lodged U and never sets `party_wall_construction`, so the engine applies the RdSAP house default **0.25** → `party_walls_w_per_k` **19.775 W/K** (≈11 % of HTC). Likely the dominant under-prediction driver. +- **FGHRS dropped.** Raw cert: `has_fghrs:"true"`, `fghrs_index_number:60031`, HW description "flue gas heat recovery". `_sap_17_1_heating` hard-codes `has_fghrs=False` and carries no FGHRS index → engine ignores the flue-gas heat-recovery credit. Enter FGHRS 60031 in Elmhurst to expose the gap. + +> Full-SAP cert forced through RdSAP. Windows keep **real geometry** (mapper preserved +> `sap_openings`, not a glazed-area band). 🔸 = assessor-only field the EPC can't supply. +> The **Fields to clear** table at the bottom is the explicit "absent" set. +> Reuse Elmhurst assessment GUID **B44A0DB4-4C08-4241-B818-86F060172105**; overwrite +> every prior-UPRN value (clears included). NEVER click Submit. + +--- + +## Property Details (admin — does NOT affect SAP) +| Elmhurst field (`id`) | Enter | Notes | +|---|---|---| +| `DropDownListPurpose` | None of the above | not a retrofit/modelling job | +| `DropDownListTenure` | Owner-occupied | `tenure` ND; tenure doesn't affect SAP | +| `DropDownListTransactionType` | None of the above | `transaction_type` 6 = new dwelling | +| `TextBoxInspectionDate` | 2018-06-01 | admin only | + +## Property Description +| Elmhurst field (`id`) | Enter | Notes | +|---|---|---| +| `DropDownListPropertyType1` | **H House** | `property_type` 0 | +| `DropDownListPropertyType2` | **S Semi-Detached** | `built_form` 2 | +| `TextBoxStoreys` | **2** | two storeys (`sap_floor_dimensions` storey 0 + 1) | +| `TextBoxHabitableRooms` | **5** 🔸 | not lodged; estimate for a 2-storey 90 m² semi — confirm/key by hand | +| `TextBoxHeatedHabitableRooms` | **5** 🔸 | all heated | +| `DropDownListDateBuiltMain` | **L 2012-2022** | `construction_year` 2017 — by YEAR (engine band differs; see gotcha) | + +## Dimensions (Type = Internal) +Two floors, each `total_floor_area` 44.93 m², `storey_height` 2.6 m. TFA engine 89.86 (cert top-level 90). +| Floor | Field | Enter | Notes | +|---|---|---|---| +| Lowest (Ground) | `TextBoxFloorAreaLowestFloor` | **44.93** | `sap_floor_dimensions[storey 0]` | +| Lowest | `TextBoxRoomHeightLowestFloor` | **2.60** | storey height | +| Lowest | `TextBoxWallPerimeterLowestFloor` | **12.94** | exposed wall 67.29 m² ÷ Σheight 5.2 | +| Lowest | `TextBoxPartyWallLengthLowestFloor` | **15.21** | party wall 79.1 m² ÷ 5.2 (P1/P4 TB lengths confirm ≈15.2) | +| First | `TextBoxFloorAreaFirstFloor` | **44.93** | `sap_floor_dimensions[storey 1]` | +| First | `TextBoxRoomHeightFirstFloor` | **2.60** | storey height | +| First | `TextBoxWallPerimeterFirstFloor` | **12.94** | same perimeter | +| First | `TextBoxPartyWallLengthFirstFloor` | **15.21** | same party length | + +## Conservatory +| Elmhurst field (`id`) | Enter | Notes | +|---|---|---| +| `CheckBoxIsConservatory` | unchecked | `conservatory_type` 1 = none | + +## Walls (Main + Party) +| Elmhurst field (`id`, under `…WallMain_`) | Enter | Notes | +|---|---|---| +| `DropDownListType` | **TI Timber Frame** | 2017 new build, U 0.187; pick per construction | +| `DropDownListInsulation` | **A As Built** | factory-insulated | +| `CheckBoxUvalueKnown` + U-value | **0.19** | cert Wall 1 `u_value` 0.187 / "0.19 W/m²K"; engine walls 7.91 W/K | +| **Party wall** `DropDownListPartyWallType` | **Solid (U=0)** ⚠ | Wall 2 lodged `u_value` **0** → solid/sealed party wall. Engine wrongly uses 0.25 — this is the candidate gap. Do NOT leave "Unable to determine". | + +## Roofs +| Elmhurst field (`id`, under `…RoofMain_`) | Enter | Notes | +|---|---|---| +| `DropDownListType` | **PB Pitched, insulation between/above joists** | `roof_type` 2, U 0.113 | +| `DropDownListInsulation` + thickness / U | **U-value 0.11** | cert "0.11 W/m²K"; engine roof 4.94 W/K | + +## Floors +| Elmhurst field (`id`, under `…FloorsMain_`) | Enter | Notes | +|---|---|---| +| `DropDownListLocation` | **G Ground floor** | storey 0 | +| `DropDownListType` | **S Solid** | `floor_type` 2 | +| `DropDownListInsulation` | **A As built** | new-build | +| `CheckBoxUValueKnown` + U-value | **0.11** | cert "0.11 W/m²K"; engine floor 4.94 W/K | + +## Openings — Windows (real geometry retained, 7 windows) +Mapper kept the lodged `sap_openings`: 7 windows totalling **23.82 m²**, whole-window +**U 1.4**, **g 0.72** (opening-type `name` 1, `glazing_type` 4 high-performance). +Engine windows = **31.59 W/K**. +| Elmhurst grid field (`id`, under `…WindowsPanel_`) | Enter | Notes | +|---|---|---| +| `DropDownListExtGlazing` | **Double, high performance** | `glazing_type` 4, 100% multiple-glazed | +| `DropDownListExtFrameType` | **PVC** | high-performance frame (frame factor 0.7) | +| `TextBoxExtUValue` | **1.4** | opening-type U | +| `TextBoxExtGValue` | **0.72** | opening-type g | +| 🔸 per-row geometry | enter rows totalling **23.82 m²** | real widths×2.5/2.45/2.2 (0.9,2.85,0.8,1.4,1.0,1.45,1.35) | +| `DropDownListExtOrientation` | as lodged | orientations 3 (×4 = S/E?) + 7 (×3); RdSAP treats per-window | + +## Openings — Doors +| Elmhurst field (`id`, under `…DoorsPanel_`) | Enter | Notes | +|---|---|---| +| `TextBoxDoors` | **1** | `door_count` 1 (opening `name` 5, type 5) | +| `TextBoxDoorsInsulated` | **1** | `insulated_door_count` 1, door U 1.6; engine `doors_w_per_k` 2.96 | + +## Ventilation & Lighting +| Elmhurst field (`id`) | Enter | Notes | +|---|---|---| +| `TabPanelMechVent_CheckBoxMechanicalVentilation` | **unchecked** | `ventilation_type` 1 = natural w/ intermittent extract | +| `TabPanelVentilationPanel_*` extract fans | **3** | `extract_fans_count` 3 (intermittent) | +| chimneys / open flues / flueless gas / PSV | **0** | none lodged | +| `TabPanelAirPressureTest_DropDownListTestMethod` | **Blower Door → 4.5** | `air_permeability` 4.5, `pressure_test` 1 (as tested) | +| Sheltered sides | **1** | `sheltered_sides_count` 1 (RdSAP defaults 2 — change) | +| `TabPanelLighting_*` low-energy | **100% LED** (10 of 10) | 10 fixed outlets, 10 low-energy | + +## Space Heating — Main Heating 1 +Cert: "Boiler and radiators, mains gas", `main_fuel_type` 1, **PCDB boiler index 17644**, +radiators, controls **2110** (time + temp zone, interlocked), fan-assisted balanced flue, +**FGHRS index 60031** (`has_fghrs` true on raw cert). +| Elmhurst field (`id`, under `…MainHeating1_`) | Enter | Notes | +|---|---|---| +| 🔸 `TextBoxPCDFBoilerReference` (via `SelectBoilerDialog`) | **17644** | PCDB index via boiler-search dialog | +| `RadioButtonListHeatEmitter` | **Radiators** | `heat_emitter_type` 1 | +| `RadioButtonListFlueType` | **Balanced** | room-sealed; `fan_flue_present` true | +| `RadioButtonListFanAssistedFlue` | **Yes** | `boiler_flue_type` 2 | +| `RadioButtonListHeatingPumpAge` | **2013 or later** | `central_heating_pump_age` 2, in heated space | +| 🔸 `TextBoxMainHeatingControls` (via `SelectHeatingControlsDialog`) | **2110** | time & temperature zone control; interlocked | +| 🔸 **FGHRS** (`SelectFGHRSDialog` / FGHRS index field) | **60031** | flue-gas heat recovery — engine drops it; enter to expose gap | +| `TextBoxPercentageOfHeat` | **100** | single main system (`main_heating_fraction` 1) | + +## Space Heating — Meters +| Elmhurst field (`id`, under `TabPanelMeters_`) | Enter | Notes | +|---|---|---| +| `RadioButtonListElectricityType` | **Single** | `electricity_tariff` 1 — not Economy 7 | +| `CheckBoxMainGas` | **checked** | mains gas (`main_fuel_type` 1) | + +## Water Heating +Cert: from main system (combi), `water_heating_code` 901, mains gas (`water_heating_fuel` 1), +no cylinder (`has_hot_water_cylinder` false), `thermal_store` 1, **FGHRS to HW (60031)**. +Engine HW = **2,684 kWh/yr**. +| Elmhurst field (`id`, under `TabPanelWaterHeating_`) | Enter | Notes | +|---|---|---| +| 🔸 `TextBoxWaterHeatingCode` | **from main system** (901) | combi; Boiler Circulator / from-main category | +| `CheckBoxHotWaterCylinder` | **unchecked** | combi instantaneous — no cylinder | +| `TabPanelFGHRS_*` | **FGHRS 60031** | flue-gas heat recovery present on HW | +| `TabPanelWWHRS_DropDownListWWHRSPresent` | **No** | none lodged (instantaneous_wwhrs empty) | + +## New Technologies (all none) +| Elmhurst field (`id`) | Enter | Notes | +|---|---|---| +| `…PvPanelData` | None | no PV | +| `…CheckBoxWindTurbinePresent` | unchecked | `wind_turbines_count` 0 | +| `…TextBoxElectricityGenerated` (hydro) | 0 | none | + +--- + +## Fields to clear in Elmhurst (do NOT map) +| Elmhurst page · field (`id`) | Set to | Why absent | +|---|---|---| +| Property Description · `DropDownListDateBuiltFirst`…`Forth` | (blank) | no extensions lodged | +| Property Description · `DropDownListRoomInRoofMain`…`Forth` | (blank) | no room-in-roof building part | +| Dimensions · `…TextBoxFloorAreaRoomInRoof` | (blank) | leave empty, not 0 | +| Dimensions · 1st–4th Ext. sub-tabs (`TabPanel1stExt_…` etc.) | 0 / blank | single building part | +| Walls · `…DropDownListAlternativeWall1Type` + `TextBoxAddWallArea` | (blank / 0) | one external wall element | +| Walls · `…CheckBoxAditionalWallSheltered` | unchecked | no sheltered wall lodged | +| Openings · surplus window grid rows (`GridViewExtendedWidows_DeleteButton_*`) | delete to 7 rows | match the 7 lodged windows | +| Space Heating · `DropDownListSecondaryHeatingPresent` + `TextBoxSecondaryHeatingCode` | **No** / (blank) | `secondary_heating_category` 1 = None | +| Space Heating · `TabPanelMainHeating2_*` | (blank) | single main system | +| Water Heating · `CheckBoxHotWaterCylinder` + cylinder fields | unchecked / (blank) | combi instantaneous, no cylinder | +| Water Heating · Solar (`…CheckBoxSolaWaterHeating`), WWHRS | none | not lodged | +| Conservatory / PV / Wind / Hydro | none | not lodged | + +## Engine reference figures (reconcile against Elmhurst's worksheet) +| Quantity | Engine value | +|---|---| +| **SAP score** | **78** (continuous 78.04) | +| Total fuel cost | £505.43/yr | +| Space-heating demand | 6,377.7 kWh/yr | +| Main heating fuel | 7,206.4 kWh/yr | +| Hot water | 2,684.3 kWh/yr | +| Pumps & fans | 86.0 kWh/yr | +| Lighting | 202.2 kWh/yr | +| CO₂ | 2,119.5 kg/yr | +| Heat transfer coefficient | 177.05 W/K | + +**Heat-loss element breakdown (W/K):** walls 7.91 · floor 4.94 · roof 4.94 · +**party wall 19.78 (U=0.25 — candidate gap, lodged U=0)** · windows 31.59 · doors 2.96 · +thermal bridging 12.57 · infiltration 92.36 → total HTC 177.05. + +> **🔸 Assessor-only fields:** habitable-room count, per-window geometry rows, +> boiler PCDB 17644 / control 2110 / FGHRS 60031 via their search dialogs, +> water-heating code 901. diff --git a/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_summary.pdf b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116528/elmhurst_summary.pdf new file mode 100644 index 0000000000000000000000000000000000000000..730b9aa4885e1a19b0d35d47897eb5ff7fec765e GIT binary patch literal 63543 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 literal 0 HcmV?d00001 diff --git a/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_inputs.md b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_inputs.md new file mode 100644 index 00000000..7153e96e --- /dev/null +++ b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_inputs.md @@ -0,0 +1,118 @@ +# Elmhurst RdSAP inputs — UPRN 10093116543 (cert 8358-7436-5620-6889-0906, SAP-Schema-17.1) + +**Lodged SAP:** 82 **Our engine:** 81 (continuous 81.30) ← compare Elmhurst against the engine +**Property:** 18 Woodfield Park Road, EMSWORTH PO10 8BG · semi-detached house · 2017 build · mains-gas combi + +**Known divergences (flag, don't tune):** +- **Age band letter:** engine `construction_age_band = 'M'`, but construction year is **2017** → in Elmhurst pick the on-screen band **L (2012–2022)**, NOT M (M = 2023 onwards in the live RdSAP-10 tool). Year drives the default U-values. +- **Walls/roof/floor U-values:** cert lodges no measured U (`wall_u_value`/`roof_u_value`/`floor_u_value` all None) → accept Elmhurst's natural RdSAP age-band U for band L. Engine uses its own age-band proxies; small residual expected. +- **Windows:** synthesised from glazed-area band × TFA (not real geometry) → enter as ONE combined window. Per-window orientations are spread (mostly E, some S/W); a single combined orientation will move solar gains slightly — cosmetic. + +## Property Description +| Elmhurst field | Value | Notes (SAP code / EES path) | +|---|---|---| +| Property Type | House | `dwelling_type` = "Semi-detached house" | +| Built form | Semi-detached | party wall present (1 party wall, 4.075 m/floor) | +| Age band (main) | **L (2012–2022)** | construction_year 2017; engine letter 'M' is wrong for the live tool — see divergence | +| Number of storeys | 2 | from floor dimensions (2 floors) | +| Habitable rooms | 3 | `habitable_rooms_count` | +| Extensions | 0 | `extensions_count` = 0 → clear all extension sub-tabs | + +## Dimensions +| Elmhurst field | Value | Notes | +|---|---|---| +| Ground floor area | 46.68 m² | floor dim[0] `total_floor_area_m2` | +| First floor area | 36.70 m² | floor dim[1] `total_floor_area_m2` | +| Total floor area | 83.0 m² (engine TFA 83.38) | lodged `total_floor_area` 83; engine sums floor dims = 83.38 | +| Room height (each floor) | 2.6 m | `room_height_m` | +| Heat-loss perimeter (each floor) | 28.025 m | `heat_loss_perimeter_m` | +| Party wall length (each floor) | 4.075 m | `party_wall_length_m` | + +## Walls +| Elmhurst field | Value | Notes (SAP code / EES path) | +|---|---|---| +| Construction | Cavity | main wall `wall_type` 2, area 145.73 m²; engine `wall_construction` 4 | +| Insulation | As built / age-band default (`wall_insulation_type` 0) | no measured U → accept band-L RdSAP U | +| Wall area | 145.73 m² (+ 21.19 m² second wall type) | `total_wall_area` | +| Dry-lined | (leave default) | `wall_dry_lined` None | +| **Party wall** | Present — band-L default (cavity) | `party_walls_w_per_k` = 5.2975 (≠0 → party wall exists); `party_wall_construction` None → accept default. **Do not set to "none".** | + +## Roofs +| Elmhurst field | Value | Notes | +|---|---|---| +| Roof type | Pitched (`roof_type` 2) | three roof records, total ≈ 66 m² (5+33+28) | +| Insulation | Age-band default | `roof_u_value` None → accept band-L RdSAP U | + +## Floors +| Elmhurst field | Value | Notes | +|---|---|---| +| Ground floor | `floor_type` 2, 46.68 m² | engine `floor_w_per_k` 5.1348 | +| First floor | `floor_type` 3, 36.70 m² (intermediate — not heat-loss) | `is_exposed_floor` False | +| Insulation / U | Age-band default | `floor_u_value` None | + +## Openings — Windows +| Elmhurst field | Value | Notes | +|---|---|---| +| Entry mode | ONE combined window | synthesised, not real geometry — use the combined-window flow | +| Total glazed area | ~24.0 m² (engine `windows_w_per_k` 31.82) | sum of 10 synthesised window areas | +| Glazing | Double glazed, post-2002 band (U 1.4, g 0.72) | `glazing_type` 4, `multiple_glazed_percentage` 100; `WindowTransmissionDetails` U=1.4 / g=0.72 | +| Frame factor | 0.7 | `frame_factor` | +| Orientation | East (dominant) | per-window mostly orientation 3=E, some S/W — combined ⇒ solar-gain divergence is cosmetic | + +## Openings — Doors +| Elmhurst field | Value | Notes | +|---|---|---| +| Door count | 1 insulated | `door_count` 1, `insulated_door_count` 1 | +| Door U-value | 1.6 | `insulated_door_u_value` 1.6 (engine `doors_w_per_k` 2.96 ⇒ ~1.85 m²) | + +## Ventilation & Lighting +| Elmhurst field | Value | Notes | +|---|---|---| +| Ventilation type | Natural with intermittent extract fans | no MVHR/MEV (`mechanical_ventilation` None) | +| Extract fans | 3 | `extract_fans_count` 3 | +| Open flues | 0 | `open_flues_count` 0; `flueless_gas_fires_count` 0 | +| Sheltered sides | 2 | `sheltered_sides` 2 | +| **Air Pressure Test** | **Blower Door**, result **4.94** | `air_permeability_ap50` 4.94, `pressure_test` '1' (done). Elmhurst treats as AP50 ⇒ `(18)=AP50/20+(8)`. **Enter a certificate number** (Recommendations gate requires it). | +| Lighting | 100% low-energy | `low_energy_fixed_lighting_outlets_percentage` 100 (10/10 bulbs low-energy) | + +## Space Heating — Main Heating 1 +| Elmhurst field | Value | Notes | +|---|---|---| +| Fuel | Mains gas | `main_fuel_type` 1 | +| System | Boiler + radiators, condensing | `heat_emitter_type` 1 (radiators); engine efficiency 88.5% | +| Boiler (PCDF) | index **17644** | `main_heating_index_number` 17644, `main_heating_data_source` 1 → search PCDF by this index (🔸 dialog) | +| Flue | Fan-assisted / balanced | `boiler_flue_type` 2, `fan_flue_present` True | +| Controls | Programmer + room stat + TRVs | `main_heating_control` 2110 (control_type 3) | +| Central heating pump | In heated space, age band 2 | `central_heating_pump_age` 2, `is_central_heating_pump_in_heated_space` true | +| Secondary heating | **None** | no secondary system lodged (engine secondary fraction 0) | + +## Water Heating +| Elmhurst field | Value | Notes | +|---|---|---| +| Water heating | From main system (combi) | `water_heating_code` 901 → Elmhurst "Boiler Circulator"; `water_heating_fuel` 1 = gas | +| Hot water cylinder | **None** | `has_hot_water_cylinder` False → combi, instantaneous DHW. Clear cylinder size/insulation. | +| Solar water heating | No | `solar_water_heating` False | +| WWHRS | No | `instantaneous_wwhrs` index1/2 None (ADR-0028: not a device) | +| FGHRS | No | `has_fghrs` False — omit on both sides | + +## New Technologies +| Elmhurst field | Value | Notes | +|---|---|---| +| PV / Wind / Hydro | None | `photovoltaic_array`/`hydro` None | +| Special features | None | — | + +## Fields to clear in Elmhurst (do NOT map) +| Elmhurst field | Set to | Why absent | +|---|---|---| +| Property Description · 1st–4th Extension age band | (blank) | `extensions_count` = 0 | +| Property Description · Room-in-Roof age band | (blank) | no room-in-roof (`sap_room_in_roof` None) | +| Dimensions · Room(s) in Roof area | (blank) | ditto — leave empty, not 0 | +| Dimensions · 1st–4th Ext. sub-tabs | 0 / blank | single building part | +| Conservatory | none | `has_conservatory` None / not lodged | +| Openings · surplus window rows | delete | one combined window only | +| Space Heating · Main Heating 2 | none | single main system, fraction 1 | +| Space Heating · Secondary heating | none | no secondary lodged | +| Water Heating · cylinder size / insulation | blank | combi, no cylinder | +| Water Heating · Solar / WWHRS / FGHRS | none | none lodged | +| New Tech · PV / Wind / Hydro / Special features | none | none lodged | +| Walls · Party wall | **keep present (cavity)** | `party_walls_w_per_k` ≠ 0 — this is NOT a clear; semi-detached | diff --git a/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_summary.pdf b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_summary.pdf new file mode 100644 index 0000000000000000000000000000000000000000..43a7cb98933711da2e653cd1709718eb71315190 GIT binary patch literal 77579 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 literal 0 HcmV?d00001 diff --git a/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_worksheet.pdf b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/elmhurst_worksheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3de2ee7129aae1329cf3ec130ed1bdabb1749c00 GIT binary patch literal 44600 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 literal 0 HcmV?d00001 diff --git a/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/epc.json b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/epc.json new file mode 100644 index 00000000..858e9944 --- /dev/null +++ b/backend/epc_api/json_samples/real_life_examples/SAP-Schema-17.1/uprn_10093116543/epc.json @@ -0,0 +1,470 @@ +{ + "uprn": 10093116543, + "roofs": [ + { + "description": "Average thermal transmittance 0.15 W/m\u00b2K", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "walls": [ + { + "description": "Average thermal transmittance 0.19 W/m\u00b2K", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "floors": [ + { + "description": "Average thermal transmittance 0.11 W/m\u00b2K", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "status": "entered", + "tenure": "ND", + "windows": { + "description": "High performance glazing", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + }, + "lighting": { + "description": "Low energy lighting in all fixed outlets", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + }, + "postcode": "PO10 8BG", + "data_type": 2, + "hot_water": { + "description": "From main system, flue gas heat recovery", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + }, + "post_town": "EMSWORTH", + "built_form": 2, + "created_at": "2018-06-04 10:56:49", + "living_area": 31.38, + "orientation": 0, + "region_code": 16, + "report_type": 3, + "sap_heating": { + "thermal_store": 1, + "water_fuel_type": 1, + "water_heating_code": 901, + "main_heating_details": [ + { + "has_fghrs": "true", + "main_fuel_type": 1, + "heat_emitter_type": 1, + "fghrs_index_number": 60031, + "emitter_temperature": 1, + "is_flue_fan_present": "true", + "main_heating_number": 1, + "main_heating_control": 2110, + "is_interlocked_system": "true", + "main_heating_category": 2, + "main_heating_fraction": 1, + "main_heating_flue_type": 2, + "central_heating_pump_age": 2, + "main_heating_data_source": 1, + "main_heating_index_number": 17644, + "has_separate_delayed_start": "true", + "load_or_weather_compensation": 0, + "is_central_heating_pump_in_heated_space": "true" + } + ], + "has_hot_water_cylinder": "false", + "has_fixed_air_conditioning": "false", + "secondary_heating_category": 1 + }, + "sap_version": 9.92, + "schema_type": "SAP-Schema-17.1", + "uprn_source": "Energy Assessor", + "country_code": "ENG", + "main_heating": [ + { + "description": "Boiler and radiators, mains gas", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "air_tightness": { + "description": "Air permeability 4.9 m\u00b3/h.m\u00b2 (as tested)", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "dwelling_type": "Semi-detached house", + "language_code": 1, + "property_type": 0, + "address_line_1": "18, Woodfield Park Road", + "assessment_date": "2018-06-01", + "assessment_type": "SAP", + "completion_date": "2018-06-04", + "inspection_date": "2018-06-01", + "sap_ventilation": { + "psv_count": 0, + "pressure_test": 1, + "air_permeability": 4.94, + "open_flues_count": 0, + "ventilation_type": 1, + "extract_fans_count": 3, + "open_fireplaces_count": 0, + "sheltered_sides_count": 2, + "flueless_gas_fires_count": 0 + }, + "design_water_use": 1, + "sap_data_version": 9.92, + "total_floor_area": 83, + "transaction_type": 6, + "conservatory_type": 1, + "registration_date": "2018-06-04", + "sap_energy_source": { + "electricity_tariff": 1, + "wind_turbines_count": 0, + "wind_turbine_terrain_type": 2, + "fixed_lighting_outlets_count": 10, + "low_energy_fixed_lighting_outlets_count": 10, + "low_energy_fixed_lighting_outlets_percentage": 100 + }, + "sap_opening_types": [ + { + "name": 1, + "type": 4, + "u_value": 1.4, + "data_source": 2, + "frame_factor": 0.7, + "glazing_type": 4, + "solar_transmittance": 0.72 + }, + { + "name": 5, + "type": 1, + "u_value": 1.6, + "data_source": 2, + "glazing_type": 1 + } + ], + "secondary_heating": { + "description": "None", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "sap_building_parts": [ + { + "sap_roofs": [ + { + "name": "Roof 3", + "u_value": 0.244, + "roof_type": 2, + "description": "Flat Dormer", + "total_roof_area": 5 + }, + { + "name": "Roof 2", + "u_value": 0.132, + "roof_type": 2, + "description": "Flat main", + "total_roof_area": 33 + }, + { + "name": "Roof 1", + "u_value": 0.156, + "roof_type": 2, + "description": "Roof 1", + "total_roof_area": 28 + } + ], + "sap_walls": [ + { + "name": "Wall 1", + "u_value": 0.187, + "wall_type": 2, + "description": "External", + "total_wall_area": 145.73, + "is_curtain_walling": "false" + }, + { + "name": "Wall 2", + "u_value": 0, + "wall_type": 4, + "description": "To other house", + "total_wall_area": 21.19 + } + ], + "identifier": "Main Dwelling", + "overshading": 2, + "sap_openings": [ + { + "name": 1, + "type": 1, + "width": 1.8, + "height": 2.2, + "location": "Wall 1", + "orientation": 7 + }, + { + "name": 2, + "type": 1, + "width": 0.9, + "height": 1, + "location": "Wall 1", + "orientation": 7 + }, + { + "name": 3, + "type": 1, + "width": 0.9, + "height": 2.5, + "location": "Wall 1", + "orientation": 5 + }, + { + "name": 5, + "type": 5, + "width": 1, + "height": 2.5, + "location": "Wall 1", + "orientation": 0 + }, + { + "name": 6, + "type": 1, + "width": 0.9, + "height": 2.5, + "location": "Wall 1", + "orientation": 3 + }, + { + "name": 7, + "type": 1, + "width": 0.9, + "height": 2.5, + "location": "Wall 1", + "orientation": 3 + }, + { + "name": 8, + "type": 1, + "width": 0.9, + "height": 2.5, + "location": "Wall 1", + "orientation": 3 + }, + { + "name": 9, + "type": 1, + "width": 0.9, + "height": 1.5, + "location": "Wall 1", + "orientation": 3 + }, + { + "name": 10, + "type": 1, + "width": 2.3, + "height": 1.5, + "location": "Wall 1", + "orientation": 3 + }, + { + "name": 11, + "type": 1, + "width": 2.9, + "height": 1.5, + "location": "Wall 1", + "orientation": 3 + }, + { + "name": 12, + "type": 1, + "width": 0.9, + "height": 1.1, + "location": "Wall 1", + "orientation": 7 + } + ], + "construction_year": 2017, + "sap_thermal_bridges": { + "thermal_bridges": [ + { + "length": 14.3, + "psi_value": 0.3, + "psi_value_source": 2, + "thermal_bridge_type": "E2" + }, + { + "length": 13.3, + "psi_value": 0.04, + "psi_value_source": 2, + "thermal_bridge_type": "E3" + }, + { + "length": 42.6, + "psi_value": 0.05, + "psi_value_source": 2, + "thermal_bridge_type": "E4" + }, + { + "length": 28, + "psi_value": 0.16, + "psi_value_source": 2, + "thermal_bridge_type": "E5" + }, + { + "length": 28.05, + "psi_value": 0.14, + "psi_value_source": 4, + "thermal_bridge_type": "E7" + }, + { + "length": 28.05, + "psi_value": 0.08, + "psi_value_source": 4, + "thermal_bridge_type": "E14" + }, + { + "length": 10.4, + "psi_value": 0.09, + "psi_value_source": 2, + "thermal_bridge_type": "E16" + }, + { + "length": 10.4, + "psi_value": -0.09, + "psi_value_source": 2, + "thermal_bridge_type": "E17" + }, + { + "length": 4.9, + "psi_value": 0.16, + "psi_value_source": 4, + "thermal_bridge_type": "P1" + }, + { + "length": 4.9, + "psi_value": 0, + "psi_value_source": 4, + "thermal_bridge_type": "P3" + }, + { + "length": 4.9, + "psi_value": 0.24, + "psi_value_source": 4, + "thermal_bridge_type": "P4" + } + ], + "thermal_bridge_code": 5 + }, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "storey": 0, + "u_value": 0.11, + "floor_type": 2, + "description": "Ground floor", + "storey_height": 2.6, + "heat_loss_area": 46.68, + "total_floor_area": 46.68 + }, + { + "storey": 1, + "u_value": 0, + "floor_type": 3, + "storey_height": 2.6, + "heat_loss_area": 0, + "total_floor_area": 36.7 + } + ], + "thermal_mass_parameter": 250 + } + ], + "heating_cost_current": { + "value": 240, + "currency": "GBP" + }, + "co2_emissions_current": 1.4, + "energy_rating_average": 60, + "energy_rating_current": 82, + "lighting_cost_current": { + "value": 57, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Time and temperature zone control", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "has_hot_water_cylinder": "false", + "heating_cost_potential": { + "value": 240, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 70, + "currency": "GBP" + }, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 28, + "currency": "GBP" + }, + "indicative_cost": "\u00a34,000 - \u00a36,000", + "improvement_type": "N", + "improvement_details": { + "improvement_number": 19 + }, + "improvement_category": 5, + "energy_performance_rating": 83, + "environmental_impact_rating": 85 + }, + { + "sequence": 2, + "typical_saving": { + "value": 327, + "currency": "GBP" + }, + "indicative_cost": "\u00a35,000 - \u00a38,000", + "improvement_type": "U", + "improvement_details": { + "improvement_number": 34 + }, + "improvement_category": 5, + "energy_performance_rating": 94, + "environmental_impact_rating": 95 + } + ], + "co2_emissions_potential": 0.1, + "energy_rating_potential": 94, + "lighting_cost_potential": { + "value": 57, + "currency": "GBP" + }, + "schema_version_original": "LIG-17.0", + "hot_water_cost_potential": { + "value": 41, + "currency": "GBP" + }, + "is_in_smoke_control_area": "unknown", + "renewable_heat_incentive": { + "rhi_new_dwelling": { + "space_heating": 3152, + "water_heating": 1780 + } + }, + "seller_commission_report": "Y", + "energy_consumption_current": 93, + "has_fixed_air_conditioning": "false", + "multiple_glazed_percentage": 100, + "calculation_software_version": 6.2, + "energy_consumption_potential": 6, + "environmental_impact_current": 84, + "current_energy_efficiency_band": "B", + "environmental_impact_potential": 95, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "A", + "co2_emissions_current_per_floor_area": 16 +} \ No newline at end of file diff --git a/datatypes/epc/domain/epc_property_data.py b/datatypes/epc/domain/epc_property_data.py index a3fd091b..96b325bf 100644 --- a/datatypes/epc/domain/epc_property_data.py +++ b/datatypes/epc/domain/epc_property_data.py @@ -192,6 +192,12 @@ class SapVentilation: has_draught_lobby: Optional[bool] = ( None # (13) gate (overrides .draught_lobby for §2 cascade) ) + # SAP 10.2 §2 (17) — air permeability at 50 Pa from a Blower Door + # pressure test (the standard q50 result lodged on full-SAP certs), + # m³/h per m² of envelope area. When present the cascade routes (18) + # via `(18) = AP50 / 20 + (8)` (matches Elmhurst worksheet lines + # 17/18). Distinct from `air_permeability_ap4_m3_h_m2` below. + air_permeability_ap50_m3_h_m2: Optional[float] = None # SAP 10.2 §2 (17a) — air permeability at 4 Pa from the low-pressure # Pulse pressure test, m³/h per m² of envelope area. When present the # cascade routes (18) via the AP4 formula `0.263 × AP4^0.924 + (8)`. diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index 0ba34d7a..96824921 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -2546,9 +2546,10 @@ _SAP_LIVING_AREA_FRACTION_BY_ROOMS: Final[Dict[int, float]] = { def _sap_17_1_ventilation(schema: SapSchema17_1) -> SapVentilation: """D5-vent: map full-SAP `sap_ventilation` onto the domain `SapVentilation`. - The measured `air_permeability` feeds the engine's AP4 path directly (vs the - RdSAP age-band default); `ventilation_type` → MechanicalVentilationKind name - (unknown code fails loud).""" + The measured `air_permeability` is a q50 Blower-Door result, so it feeds the + engine's **AP50** path (`(18) = AP50/20 + (8)`, per Elmhurst worksheet lines + 17/18) — NOT the AP4/Pulse formula; `ventilation_type` → + MechanicalVentilationKind name (unknown code fails loud).""" sv = schema.sap_ventilation mv_kind: Optional[str] = None if sv.ventilation_type is not None: @@ -2556,7 +2557,7 @@ def _sap_17_1_ventilation(schema: SapSchema17_1) -> SapVentilation: raise UnmappedApiCode("ventilation_type", sv.ventilation_type) mv_kind = _SAP_VENTILATION_TYPE_TO_MV_KIND[sv.ventilation_type] return SapVentilation( - air_permeability_ap4_m3_h_m2=sv.air_permeability, + air_permeability_ap50_m3_h_m2=sv.air_permeability, mechanical_ventilation_kind=mv_kind, sheltered_sides=sv.sheltered_sides_count, pressure_test=str(sv.pressure_test) if sv.pressure_test is not None else None, diff --git a/domain/sap10_calculator/rdsap/cert_to_inputs.py b/domain/sap10_calculator/rdsap/cert_to_inputs.py index d60daefd..f0ae0d06 100644 --- a/domain/sap10_calculator/rdsap/cert_to_inputs.py +++ b/domain/sap10_calculator/rdsap/cert_to_inputs.py @@ -4966,9 +4966,11 @@ def ventilation_from_cert( if sv is not None and sv.suspended_timber_floor_sealed is not None else spec_sealed ) - # SAP 10.2 §2 (17a) — AP4 pressure-test reading routes to the - # cascade's `(18) = 0.263 × AP4^0.924 + (8)` formula; absent value - # falls through to the components-based (16) ach. + # SAP 10.2 §2 (17) — q50 Blower-Door reading routes to `(18) = AP50/20 + # + (8)` (preferred over AP4); (17a) — AP4/Pulse reading routes to + # `(18) = 0.263 × AP4^0.924 + (8)`. Absent values fall through to the + # components-based (16) ach. + ap50 = sv.air_permeability_ap50_m3_h_m2 if sv is not None else None ap4 = sv.air_permeability_ap4_m3_h_m2 if sv is not None else None # SAP 10.2 §2 (23a)/(24a..d) — MV kind dispatch chooses the (25)m # effective-ach formula. The Elmhurst mapper translates the lodged @@ -5006,6 +5008,7 @@ def ventilation_from_cert( has_draught_lobby=_has_draught_lobby(epc, sv), window_pct_draught_proofed=float(epc.percent_draughtproofed or 0), sheltered_sides=int(sv.sheltered_sides) if sv is not None and sv.sheltered_sides is not None else 2, + air_permeability_ap50=ap50, air_permeability_ap4=ap4, mv_kind=mv_kind, mv_system_ach=mv_system_ach, diff --git a/scripts/hyde/elmhurst_README.md b/scripts/hyde/elmhurst_README.md new file mode 100644 index 00000000..caa10ce7 --- /dev/null +++ b/scripts/hyde/elmhurst_README.md @@ -0,0 +1,71 @@ +# Elmhurst RdSAP entry-tool automation (POC) + +Automates most of the one manual step in `validate-cert-sap-accuracy`: re-keying +`elmhurst_inputs.md` into Elmhurst's web RdSAP entry tool and exporting the +**Input Summary** + **SAP Worksheets** PDFs (which `compare_epc_paths.py` then +consumes). Built on Playwright (Python). + +Proven end-to-end on UPRN 10092973954: filled most pages automatically, +downloaded both PDFs, and `compare_epc_paths.py` reconciled to **our engine 77 +vs Elmhurst worksheet 78** (engine-on-Elmhurst-inputs 79 — the calculator +reproduces accredited Elmhurst within ~1 SAP on identical inputs). + +## Scripts + +| Script | Does | +|---|---| +| `start_viewer.sh` | Xvfb→x11vnc→noVNC desktop on **port 6080** so you can SEE/click the headed browser (`DISPLAY=:99`). `bash scripts/hyde/start_viewer.sh` | +| `elmhurst_session.py` | `login` / `open` / `status` — persistent login (MFA by hand once; session in `.elmhurst-session/`, gitignored) | +| `elmhurst_explore.py` | dump a page's DOM (field ids, options, autopostback) or `--all` sections — how specs are built | +| `elmhurst_fill.py` | `--page [--commit] [--commit-mode saveclose\|next]` — fill/clear a page from its `PageSpec` | +| `elmhurst_download.py` | downloads Input Summary + SAP Worksheets → the cert's corpus dir. **Never clicks Submit** (code-enforced) | + +Typical run (browser appears on the noVNC desktop at port 6080): +```bash +bash scripts/hyde/start_viewer.sh +DISPLAY=:99 python scripts/hyde/elmhurst_session.py login --url https://members.elmhurstenergy.co.uk/ +DISPLAY=:99 python scripts/hyde/elmhurst_fill.py --page property_description --commit +DISPLAY=:99 python scripts/hyde/elmhurst_download.py +``` + +## Hard-won mechanics (ASP.NET WebForms) + +- Enter via the Guid URL (`…online…/WebFormAddress.aspx?Guid=…`); section nav is + full-form `__doPostBack` to a Guid-less subdomain — use `expect_navigation`. +- **Almost every field AutoPostBacks** (whole-page reload): set one field, wait, + re-locate the next. A 600 ms settle after each interaction stops flake. +- **Never re-click the active tab** (double-postback misbehaves) — `goto_section` + is current-page-aware. +- **Navigating away saves**; **Save & Close commits to the DATABASE** (visible to + other sessions). Next > only saves the in-progress session. +- Fields **auto-disable** when an upstream choice removes them (Room-in-Roof once + no room-in-roof; cylinder once combi) — skip them, don't fight them. +- Button ids vary per page → match by id suffix (`[id$='_ButtonSaveClose']`). +- Setup (done in container): `python -m playwright install chromium` + + `sudo python -m playwright install-deps chromium`. + +## What's automated vs manual + +**Automated** (in `PAGES` + special actions): Property Description, Dimensions, +Flats (position/floor/corridor), Walls (main + clear alt-wall), Roofs, Floors, +Space Heating (**boiler** via the cascade dialog → BGW combi, flue, secondary), +Water Heating (code; cylinder auto-clears with the combi), New Tech/Conservatory +(none) — plus the consolidated **clears** from the markdown. + +The **boiler cascade dialog** is driven by `select_boiler_combi()`: open the +Main-Heating-code modal, set the leaf dropdown to *BGW Post 98 Combi condens.*, +click OK. The generic combi (SAP 104) moves SAP by ~0 vs the cert's exact PCDB +model, so it's accurate enough. + +**Manual (🔸):** +- **Exact PCDB boiler model** (e.g. 17929) — its search field is *disabled* + (`aspNetDisabled`) in this UI state; the cascade's generic combi is the + automatable substitute (negligible SAP impact). +- **Control code 2110** and the **MV unit** — same modal-dialog pattern; can be + automated the same way as the boiler when wanted (open dialog → select → OK). +All 🔸 fields are flagged in `elmhurst_inputs.md`. + +## Adding a field/page +1. `elmhurst_explore.py _Link>` to dump ids/options. +2. Add a `Field(...)` (or new `PageSpec`) in `elmhurst_fill.py`. +3. `--page ` (dry-run, screenshots to `elmhurst_dom/fill_.png`), verify, then `--commit`. diff --git a/scripts/hyde/elmhurst_dom/address.json b/scripts/hyde/elmhurst_dom/address.json new file mode 100644 index 00000000..273efcaa --- /dev/null +++ b/scripts/hyde/elmhurst_dom/address.json @@ -0,0 +1,583 @@ +{ + "url": "https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormAddress.aspx?Guid=B44A0DB4-4C08-4241-B818-86F060172105", + "title": "Elmhurst - Energy Report Address", + "controls": [ + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxRefNo", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxRefNo", + "label": "Reference", + "value": "001431", + "disabled": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxPRRN", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxPRRN", + "label": "PRRN", + "value": "17482451", + "disabled": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxMyReference", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxMyReference", + "label": "", + "value": "Khalim-test", + "disabled": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListRegsRegion", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListRegsRegion", + "label": "Regs Region", + "value": "England", + "disabled": true, + "options": [ + { + "value": "Scotland", + "text": "Scotland", + "selected": false + }, + { + "value": "Northern Ireland", + "text": "Northern Ireland", + "selected": false + }, + { + "value": "England", + "text": "England", + "selected": true + }, + { + "value": "Wales", + "text": "Wales", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListRegion", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListRegion", + "label": "SAP Region", + "value": "Thames Valley", + "disabled": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Thames Valley", + "text": "Thames Valley", + "selected": true + }, + { + "value": "South East England", + "text": "South East England", + "selected": false + }, + { + "value": "Southern England", + "text": "Southern England", + "selected": false + }, + { + "value": "South West England", + "text": "South West England", + "selected": false + }, + { + "value": "Severn Valley", + "text": "Severn Valley", + "selected": false + }, + { + "value": "Midlands", + "text": "Midlands", + "selected": false + }, + { + "value": "West Pennines", + "text": "West Pennines", + "selected": false + }, + { + "value": "North West England", + "text": "North West England", + "selected": false + }, + { + "value": "South West Scotland", + "text": "South West Scotland", + "selected": false + }, + { + "value": "Borders", + "text": "Borders", + "selected": false + }, + { + "value": "North East England", + "text": "North East England", + "selected": false + }, + { + "value": "East Pennines", + "text": "East Pennines", + "selected": false + }, + { + "value": "East Anglia", + "text": "East Anglia", + "selected": false + }, + { + "value": "Wales", + "text": "Wales", + "selected": false + }, + { + "value": "West Scotland", + "text": "West Scotland", + "selected": false + }, + { + "value": "East Scotland", + "text": "East Scotland", + "selected": false + }, + { + "value": "North East Scotland", + "text": "North East Scotland", + "selected": false + }, + { + "value": "Highland", + "text": "Highland", + "selected": false + }, + { + "value": "Western Isles", + "text": "Western Isles", + "selected": false + }, + { + "value": "Orkney", + "text": "Orkney", + "selected": false + }, + { + "value": "Shetland", + "text": "Shetland", + "selected": false + }, + { + "value": "Northern Ireland", + "text": "Northern Ireland", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxHouseName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxHouseName", + "label": "House Name", + "value": "28 Distillery Wharf", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxHouseNo", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxHouseNo", + "label": "House No", + "value": "28", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxStreet", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxStreet", + "label": "Street", + "value": "Distillery Wharf", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxLocality", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxLocality", + "label": "Locality", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxTown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxTown", + "label": "Town", + "value": "London", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxCounty", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxCounty", + "label": "County", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxPostCode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxPostCode", + "label": "Post code", + "value": "W6 9BF", + "disabled": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_ImageButtonAddressSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$ImageButtonAddressSearch", + "label": "", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelPostcodeSearch_TextBoxPostcode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelPostcodeSearch$TextBoxPostcode", + "label": "Postcode", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelPostcodeSearch_TextBoxHouseNameNumber", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelPostcodeSearch$TextBoxHouseNameNumber", + "label": "House Name & No", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelAdvancedSearch_TextBoxAdvancedAddressLine1", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelAdvancedSearch$TextBoxAdvancedAddressLine1", + "label": "Address Line 1", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelAdvancedSearch_TextBoxAdvancedAddressLine2", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelAdvancedSearch$TextBoxAdvancedAddressLine2", + "label": "Address Line 2", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelAdvancedSearch_TextBoxAdvancedAddressLine3", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelAdvancedSearch$TextBoxAdvancedAddressLine3", + "label": "Address Line 3", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelAdvancedSearch_TextBoxAdvancedTown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelAdvancedSearch$TextBoxAdvancedTown", + "label": "Town", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelAdvancedSearch_TextBoxAdvancedPostcode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelAdvancedSearch$TextBoxAdvancedPostcode", + "label": "Postcode", + "value": "", + "disabled": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelRequestNewUPRN_TextBoxRequestNewAddressLine1", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelRequestNewUPRN$TextBoxRequestNewAddressLine1", + "label": "Address Line 1", + "value": "", + "disabled": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelRequestNewUPRN_TextBoxRequestNewAddressLine2", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelRequestNewUPRN$TextBoxRequestNewAddressLine2", + "label": "Address Line 2", + "value": "", + "disabled": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelRequestNewUPRN_TextBoxRequestNewAddressLine3", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelRequestNewUPRN$TextBoxRequestNewAddressLine3", + "label": "Address Line 3", + "value": "", + "disabled": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelRequestNewUPRN_TextBoxRequestNewTown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelRequestNewUPRN$TextBoxRequestNewTown", + "label": "Town", + "value": "", + "disabled": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelRequestNewUPRN_TextBoxRequestNewPostcode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelRequestNewUPRN$TextBoxRequestNewPostcode", + "label": "Postcode", + "value": "", + "disabled": true + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_AddressSearchDialog_TabContainerMain_TabPanelResults_ListBoxResults", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$AddressSearchDialog$TabContainerMain$TabPanelResults$ListBoxResults", + "label": "", + "value": "", + "disabled": false, + "options": [] + } + ], + "nav": [ + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_ContentPlaceHolderNavigationsTop_LinkButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$MobileCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_ContentPlaceHolderNavigationsTop_MobileCancel" + }, + { + "text": "Clear Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$MobileClearAddress\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentTopControls_ContentPlaceHolderNavigationsTop_MobileClearAddress" + }, + { + "text": "Copy Assessment", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$MobileButtonCopy\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_ContentPlaceHolderNavigationsTop_MobileButtonCopy" + }, + { + "text": "Clear Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$LinkButtonClearAddress\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_LinkButtonClearAddress" + }, + { + "text": "Copy Assessment", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$LinkButtonCopy\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ContentPlaceHolderNavigations_LinkButtonCopy" + }, + { + "text": "< Previous", + "href": null, + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$LinkButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ContentPlaceHolderNavigations_LinkButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatories", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Rooms In Roof", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoomInRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoomInRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/conservatories.json b/scripts/hyde/elmhurst_dom/conservatories.json new file mode 100644 index 00000000..ec9eb26b --- /dev/null +++ b/scripts/hyde/elmhurst_dom/conservatories.json @@ -0,0 +1,187 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormConservatories.aspx", + "title": "Elmhurst - Conservatory", + "controls": [ + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_CheckBoxIsConservatory", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$CheckBoxIsConservatory", + "label": "Is there a conservatory?", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/dimensions.json b/scripts/hyde/elmhurst_dom/dimensions.json new file mode 100644 index 00000000..8034554d --- /dev/null +++ b/scripts/hyde/elmhurst_dom/dimensions.json @@ -0,0 +1,254 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormDimensions.aspx", + "title": "Elmhurst - Dimensions", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_RadioButtonDimensionsType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$RadioButtonDimensionsType", + "label": "Type", + "value": "Internal", + "disabled": true, + "autopostback": false, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Internal", + "text": "Internal", + "selected": true + }, + { + "value": "External", + "text": "External", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlDimensionsMain_TextBoxFloorAreaLowestFloor", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlDimensionsMain$TextBoxFloorAreaLowestFloor", + "label": "", + "value": "59.50", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlDimensionsMain_TextBoxRoomHeightLowestFloor", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlDimensionsMain$TextBoxRoomHeightLowestFloor", + "label": "", + "value": "2.40", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlDimensionsMain_TextBoxWallPerimeterLowestFloor", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlDimensionsMain$TextBoxWallPerimeterLowestFloor", + "label": "", + "value": "13.86", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlDimensionsMain_TextBoxPartyWallLengthLowestFloor", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlDimensionsMain$TextBoxPartyWallLengthLowestFloor", + "label": "", + "value": "13.86", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlDimensionsMain_CheckBoxHeatedBasement", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlDimensionsMain$CheckBoxHeatedBasement", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/flats.json b/scripts/hyde/elmhurst_dom/flats.json new file mode 100644 index 00000000..0e2e4ab4 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/flats.json @@ -0,0 +1,270 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormFlats.aspx", + "title": "Elmhurst - Flats", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_RadioButtonListFlatCoridor", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$RadioButtonListFlatCoridor", + "label": "", + "value": "Unheated corridor", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "None", + "text": "None", + "selected": false + }, + { + "value": "Heated", + "text": "Heated", + "selected": false + }, + { + "value": "Unheated corridor", + "text": "Unheated corridor", + "selected": true + }, + { + "value": "Unheated stairwell", + "text": "Unheated stairwell", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxLengthOfShelteredWall", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxLengthOfShelteredWall", + "label": "", + "value": "5.00", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListPositionOfFlat", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListPositionOfFlat", + "label": "", + "value": "Top Floor", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Ground Floor", + "text": "Ground Floor", + "selected": false + }, + { + "value": "Mid Floor", + "text": "Mid Floor", + "selected": false + }, + { + "value": "Top Floor", + "text": "Top Floor", + "selected": true + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxFloor", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxFloor", + "label": "", + "value": "16", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxStoriesInBlock", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxStoriesInBlock", + "label": "", + "value": "16", + "disabled": false, + "autopostback": true + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/floors.json b/scripts/hyde/elmhurst_dom/floors.json new file mode 100644 index 00000000..903d937d --- /dev/null +++ b/scripts/hyde/elmhurst_dom/floors.json @@ -0,0 +1,298 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormFloors.aspx", + "title": "Elmhurst - Floors", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlFloorsMain_DropDownListLocation", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlFloorsMain$DropDownListLocation", + "label": "Location", + "value": "G Ground floor", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "G Ground floor", + "text": "G Ground floor", + "selected": true + }, + { + "value": "P Above partially heated space", + "text": "P Above partially heated space", + "selected": false + }, + { + "value": "U Above unheated space", + "text": "U Above unheated space", + "selected": false + }, + { + "value": "E To external air", + "text": "E To external air", + "selected": false + }, + { + "value": "A Another dwelling below", + "text": "A Another dwelling below", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlFloorsMain_DropDownListType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlFloorsMain$DropDownListType", + "label": "Type", + "value": "S Solid", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "S Solid", + "text": "S Solid", + "selected": true + }, + { + "value": "T Suspended timber", + "text": "T Suspended timber", + "selected": false + }, + { + "value": "N Suspended, not timber", + "text": "N Suspended, not timber", + "selected": false + }, + { + "value": "U Unknown", + "text": "U Unknown", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlFloorsMain_DropDownListInsulation", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlFloorsMain$DropDownListInsulation", + "label": "Insulation", + "value": "A As built", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "A As built", + "text": "A As built", + "selected": true + }, + { + "value": "R Retro-fitted", + "text": "R Retro-fitted", + "selected": false + }, + { + "value": "U Unknown", + "text": "U Unknown", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlFloorsMain_CheckBoxUValueKnown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlFloorsMain$CheckBoxUValueKnown", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/newtechnologies.json b/scripts/hyde/elmhurst_dom/newtechnologies.json new file mode 100644 index 00000000..4350be33 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/newtechnologies.json @@ -0,0 +1,284 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormNewTechnologies.aspx", + "title": "Elmhurst - New Technologies", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelPhotovoltaicPanel_DropDownListPvPanelData", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelPhotovoltaicPanel$DropDownListPvPanelData", + "label": "Photovoltaic panel", + "value": "None", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "None", + "text": "None", + "selected": true + }, + { + "value": "Panel details", + "text": "Panel details", + "selected": false + }, + { + "value": "% of roof area", + "text": "% of roof area", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelPhotovoltaicPanel_CheckBoxPvExportCapableMeter", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelPhotovoltaicPanel$CheckBoxPvExportCapableMeter", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindTurbine_DropDownListTerrainType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindTurbine$DropDownListTerrainType", + "label": "Terrain Type", + "value": "Urban", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Urban", + "text": "Urban", + "selected": true + }, + { + "value": "Suburban", + "text": "Suburban", + "selected": false + }, + { + "value": "Rural", + "text": "Rural", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindTurbine_CheckBoxWindTurbinePresent", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindTurbine$CheckBoxWindTurbinePresent", + "label": "Wind turbine present?", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelSmallScaleHydro_TextBoxElectricityGenerated", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelSmallScaleHydro$TextBoxElectricityGenerated", + "label": "", + "value": "0.00", + "disabled": false, + "autopostback": true + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Add new battery storage", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelPhotovoltaicPanel$ButtonAddBatteryData','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelPhotovoltaicPanel_ButtonAddBatteryData" + }, + { + "text": "Add new", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelSpecialFeatures$ButtonAddPanelData_SF','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelSpecialFeatures_ButtonAddPanelData_SF" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/openings.json b/scripts/hyde/elmhurst_dom/openings.json new file mode 100644 index 00000000..edc9c735 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/openings.json @@ -0,0 +1,682 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormOpenings.aspx", + "title": "Elmhurst - Openings", + "controls": [ + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_DeleteButton_0", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl02$DeleteButton", + "label": "1", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_CopyButton_0", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl02$CopyButton", + "label": "1", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_DeleteButton_1", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl03$DeleteButton", + "label": "2", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_CopyButton_1", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl03$CopyButton", + "label": "2", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_DeleteButton_2", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl04$DeleteButton", + "label": "3", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_CopyButton_2", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl04$CopyButton", + "label": "3", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_DeleteButton_3", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl05$DeleteButton", + "label": "4", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_CopyButton_3", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl05$CopyButton", + "label": "4", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_TextBoxExtWidth", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$TextBoxExtWidth", + "label": "", + "value": "1.44", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_TextBoxExtHeight", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$TextBoxExtHeight", + "label": "", + "value": "1.00", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_TextBoxExtArea", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$TextBoxExtArea", + "label": "", + "value": "1.44", + "disabled": true, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtOpeningType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtOpeningType", + "label": "", + "value": "Window", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "Window", + "text": "Window", + "selected": true + }, + { + "value": "Roof window", + "text": "Roof window", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtGlazing", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtGlazing", + "label": "", + "value": "Double with unknown install date", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Single glazing", + "text": "Single glazing", + "selected": false + }, + { + "value": "Double pre 2002", + "text": "Double pre 2002", + "selected": false + }, + { + "value": "Double between 2002 and 2021", + "text": "Double between 2002 and 2021", + "selected": false + }, + { + "value": "Double post or during 2022", + "text": "Double post or during 2022", + "selected": false + }, + { + "value": "Double with unknown install date", + "text": "Double with unknown install date", + "selected": true + }, + { + "value": "Secondary glazing", + "text": "Secondary glazing", + "selected": false + }, + { + "value": "Triple pre 2002", + "text": "Triple pre 2002", + "selected": false + }, + { + "value": "Triple between 2002 and 2021", + "text": "Triple between 2002 and 2021", + "selected": false + }, + { + "value": "Triple post or during 2022", + "text": "Triple post or during 2022", + "selected": false + }, + { + "value": "Triple with unknown install date", + "text": "Triple with unknown install date", + "selected": false + }, + { + "value": "Single glazing, known data", + "text": "Single glazing, known data", + "selected": false + }, + { + "value": "Double glazing, known data", + "text": "Double glazing, known data", + "selected": false + }, + { + "value": "Triple glazing, known data", + "text": "Triple glazing, known data", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtFrameType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtFrameType", + "label": "", + "value": "PVC", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "PVC", + "text": "PVC", + "selected": true + }, + { + "value": "Wood", + "text": "Wood", + "selected": false + }, + { + "value": "Metal", + "text": "Metal", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtGlazingGap", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtGlazingGap", + "label": "", + "value": "12 mm", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "6 mm", + "text": "6 mm", + "selected": false + }, + { + "value": "12 mm", + "text": "12 mm", + "selected": true + }, + { + "value": "16 mm or more", + "text": "16 mm or more", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtBuildingPartId", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtBuildingPartId", + "label": "", + "value": "Main", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Main", + "text": "Main", + "selected": true + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtLocation", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtLocation", + "label": "", + "value": "External wall", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "External wall", + "text": "External wall", + "selected": true + }, + { + "value": "Alternative wall 1", + "text": "Alternative wall 1", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtOrientation", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtOrientation", + "label": "", + "value": "North", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "North", + "text": "North", + "selected": true + }, + { + "value": "North East", + "text": "North East", + "selected": false + }, + { + "value": "East", + "text": "East", + "selected": false + }, + { + "value": "South East", + "text": "South East", + "selected": false + }, + { + "value": "South", + "text": "South", + "selected": false + }, + { + "value": "South West", + "text": "South West", + "selected": false + }, + { + "value": "West", + "text": "West", + "selected": false + }, + { + "value": "North West", + "text": "North West", + "selected": false + }, + { + "value": "Horizontal", + "text": "Horizontal", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_TextBoxExtUValue", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$TextBoxExtUValue", + "label": "", + "value": "2.80", + "disabled": true, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_TextBoxExtGValue", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$TextBoxExtGValue", + "label": "", + "value": "0.76", + "disabled": true, + "autopostback": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_CheckBoxExtDraughtProofed", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$CheckBoxExtDraughtProofed", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": true + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_DropDownListExtPermanentShutters", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$DropDownListExtPermanentShutters", + "label": "", + "value": "None", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "None", + "text": "None", + "selected": true + }, + { + "value": "Uninsulated", + "text": "Uninsulated", + "selected": false + }, + { + "value": "Insulated", + "text": "Insulated", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelDoorsPanel_TextBoxDoors", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelDoorsPanel$TextBoxDoors", + "label": "", + "value": "2", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelDoorsPanel_TextBoxDoorsInsulated", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelDoorsPanel$TextBoxDoorsInsulated", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelDoorsPanel_TextBoxDraughtProofedDoors", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelDoorsPanel$TextBoxDraughtProofedDoors", + "label": "", + "value": "2", + "disabled": false, + "autopostback": true + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Add new", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$ButtonAddWindow','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_ButtonAddWindow" + }, + { + "text": "Glazing Type", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl01$lnkSortGlazingType\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_lnkSortGlazingType" + }, + { + "text": "Orientation", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl01$lnkSortOrientation\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_lnkSortOrientation" + }, + { + "text": "Building Part", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWindowsPanel$GridViewExtendedWidows$ctl01$lnkSortBuildingPart\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_GridViewExtendedWidows_lnkSortBuildingPart" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/propertydescription.json b/scripts/hyde/elmhurst_dom/propertydescription.json new file mode 100644 index 00000000..89996d13 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/propertydescription.json @@ -0,0 +1,1068 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormPropertyDescription.aspx", + "title": "Elmhurst - Property Description", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListPropertyType1", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListPropertyType1", + "label": "", + "value": "F Flat", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "H House", + "text": "H House", + "selected": false + }, + { + "value": "B Bungalow", + "text": "B Bungalow", + "selected": false + }, + { + "value": "F Flat", + "text": "F Flat", + "selected": true + }, + { + "value": "M Maisonette", + "text": "M Maisonette", + "selected": false + }, + { + "value": "P Park home", + "text": "P Park home", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxStoreys", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxStoreys", + "label": "Storeys", + "value": "1", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxHabitableRooms", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxHabitableRooms", + "label": "Habitable Rooms", + "value": "3", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxHeatedHabitableRooms", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxHeatedHabitableRooms", + "label": "Heated Habitable Rooms", + "value": "3", + "disabled": false, + "autopostback": true + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListDateBuiltMain", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListDateBuiltMain", + "label": "Main Property", + "value": "L 2012-2022", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": true + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListDateBuiltFirst", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListDateBuiltFirst", + "label": "1st Extension", + "value": "", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListDateBuiltSecond", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListDateBuiltSecond", + "label": "2nd Extension", + "value": "", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListDateBuiltThird", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListDateBuiltThird", + "label": "3rd Extension", + "value": "", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListDateBuiltForth", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListDateBuiltForth", + "label": "4th Extension", + "value": "", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListRoomInRoofMain", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListRoomInRoofMain", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListRoomInRoofFirst", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListRoomInRoofFirst", + "label": "", + "value": "", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListRoomInRoofSecond", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListRoomInRoofSecond", + "label": "", + "value": "", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListRoomInRoofThird", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListRoomInRoofThird", + "label": "", + "value": "", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListRoomInRoofForth", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListRoomInRoofForth", + "label": "", + "value": "", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "A before 1900", + "text": "A before 1900", + "selected": false + }, + { + "value": "B 1900-1929", + "text": "B 1900-1929", + "selected": false + }, + { + "value": "C 1930-1949", + "text": "C 1930-1949", + "selected": false + }, + { + "value": "D 1950-1966", + "text": "D 1950-1966", + "selected": false + }, + { + "value": "E 1967-1975", + "text": "E 1967-1975", + "selected": false + }, + { + "value": "F 1976-1982", + "text": "F 1976-1982", + "selected": false + }, + { + "value": "G 1983-1990", + "text": "G 1983-1990", + "selected": false + }, + { + "value": "H 1991-1995", + "text": "H 1991-1995", + "selected": false + }, + { + "value": "I 1996-2002", + "text": "I 1996-2002", + "selected": false + }, + { + "value": "J 2003-2006", + "text": "J 2003-2006", + "selected": false + }, + { + "value": "K 2007-2011", + "text": "K 2007-2011", + "selected": false + }, + { + "value": "L 2012-2022", + "text": "L 2012-2022", + "selected": false + }, + { + "value": "M 2023 onwards", + "text": "M 2023 onwards", + "selected": false + } + ] + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/propertydetails.json b/scripts/hyde/elmhurst_dom/propertydetails.json new file mode 100644 index 00000000..1e0f5367 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/propertydetails.json @@ -0,0 +1,328 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormPropertyDetails.aspx", + "title": "Elmhurst - Property Details", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListPurpose", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListPurpose", + "label": "Assessment Purpose", + "value": "None of the above", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Retrofit - Pre assessment", + "text": "Retrofit - Pre assessment", + "selected": false + }, + { + "value": "Retrofit - Post assessment", + "text": "Retrofit - Post assessment", + "selected": false + }, + { + "value": "Retrofit - Modelling", + "text": "Retrofit - Modelling", + "selected": false + }, + { + "value": "Energy Modelling (Not Retrofit)", + "text": "Energy Modelling (Not Retrofit)", + "selected": false + }, + { + "value": "None of the above", + "text": "None of the above", + "selected": true + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListTenure", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListTenure", + "label": "Property Tenure", + "value": "Owner-occupied", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "Owner-occupied", + "text": "Owner-occupied", + "selected": true + }, + { + "value": "Rented (social)", + "text": "Rented (social)", + "selected": false + }, + { + "value": "Rented (private)", + "text": "Rented (private)", + "selected": false + }, + { + "value": "Unknown", + "text": "Unknown", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListTransactionType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListTransactionType", + "label": "Transaction type", + "value": "Marketed sale", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "Marketed sale", + "text": "Marketed sale", + "selected": true + }, + { + "value": "Non-marketed sale", + "text": "Non-marketed sale", + "selected": false + }, + { + "value": "Rental", + "text": "Rental", + "selected": false + }, + { + "value": "Stock condition survey", + "text": "Stock condition survey", + "selected": false + }, + { + "value": "Grant scheme", + "text": "Grant scheme", + "selected": false + }, + { + "value": "Non-grant scheme", + "text": "Non-grant scheme", + "selected": false + }, + { + "value": "Re-mortgaging", + "text": "Re-mortgaging", + "selected": false + }, + { + "value": "None of the above", + "text": "None of the above", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxInspectionDate", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxInspectionDate", + "label": "Inspection Date", + "value": "25/06/2025", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_EPCCreationReasonDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$EPCCreationReasonDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$ButtonInspectionDate\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_ButtonInspectionDate" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/roofs.json b/scripts/hyde/elmhurst_dom/roofs.json new file mode 100644 index 00000000..17ff7a11 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/roofs.json @@ -0,0 +1,373 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormRoofs.aspx", + "title": "Elmhurst - Roofs", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlRoofMain_DropDownListType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlRoofMain$DropDownListType", + "label": "Type", + "value": "PA Pitched (slates/tiles), access to loft", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "PA Pitched (slates/tiles), access to loft", + "text": "PA Pitched (slates/tiles), access to loft", + "selected": true + }, + { + "value": "PN Pitched (slates/tiles), no access", + "text": "PN Pitched (slates/tiles), no access", + "selected": false + }, + { + "value": "PS Pitched, sloping ceiling", + "text": "PS Pitched, sloping ceiling", + "selected": false + }, + { + "value": "PT Pitched (thatch)", + "text": "PT Pitched (thatch)", + "selected": false + }, + { + "value": "F Flat", + "text": "F Flat", + "selected": false + }, + { + "value": "A Another dwelling above", + "text": "A Another dwelling above", + "selected": false + }, + { + "value": "NR Non-residential space above", + "text": "NR Non-residential space above", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlRoofMain_DropDownListInsulationAt", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlRoofMain$DropDownListInsulationAt", + "label": "Insulation", + "value": "J Joists", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "N None", + "text": "N None", + "selected": false + }, + { + "value": "J Joists", + "text": "J Joists", + "selected": true + }, + { + "value": "R Rafters", + "text": "R Rafters", + "selected": false + }, + { + "value": "U Unknown", + "text": "U Unknown", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlRoofMain_DropDownListThickness", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlRoofMain$DropDownListThickness", + "label": "Insulation Thickness", + "value": "270 mm", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "12 mm", + "text": "12 mm", + "selected": false + }, + { + "value": "25 mm", + "text": "25 mm", + "selected": false + }, + { + "value": "50 mm", + "text": "50 mm", + "selected": false + }, + { + "value": "75 mm", + "text": "75 mm", + "selected": false + }, + { + "value": "100 mm", + "text": "100 mm", + "selected": false + }, + { + "value": "125 mm", + "text": "125 mm", + "selected": false + }, + { + "value": "150 mm", + "text": "150 mm", + "selected": false + }, + { + "value": "175 mm", + "text": "175 mm", + "selected": false + }, + { + "value": "200 mm", + "text": "200 mm", + "selected": false + }, + { + "value": "225 mm", + "text": "225 mm", + "selected": false + }, + { + "value": "250 mm", + "text": "250 mm", + "selected": false + }, + { + "value": "270 mm", + "text": "270 mm", + "selected": true + }, + { + "value": "300 mm", + "text": "300 mm", + "selected": false + }, + { + "value": "350 mm", + "text": "350 mm", + "selected": false + }, + { + "value": "400+ mm", + "text": "400+ mm", + "selected": false + }, + { + "value": "Unknown", + "text": "Unknown", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_WebUserControlRoofMain_CheckBoxUvalueKnown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$WebUserControlRoofMain$CheckBoxUvalueKnown", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/spaceheating.json b/scripts/hyde/elmhurst_dom/spaceheating.json new file mode 100644 index 00000000..ddeb30af --- /dev/null +++ b/scripts/hyde/elmhurst_dom/spaceheating.json @@ -0,0 +1,1011 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormSpaceHeating.aspx", + "title": "Elmhurst - Space Heating", + "controls": [ + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_TextBoxPCDFBoilerReference", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$TextBoxPCDFBoilerReference", + "label": "PCDF boiler Reference", + "value": "0", + "disabled": true, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_TextBoxMainHeatingCode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$TextBoxMainHeatingCode", + "label": "Main Heating EES Code", + "value": "BGB", + "disabled": false, + "autopostback": true + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_RadioButtonListHeatingPumpAge", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$RadioButtonListHeatingPumpAge", + "label": "Heating Pump Age", + "value": "2013 or later", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "2012 or earlier", + "text": "2012 or earlier", + "selected": false + }, + { + "value": "2013 or later", + "text": "2013 or later", + "selected": true + }, + { + "value": "Unknown", + "text": "Unknown", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_RadioButtonListHeatEmitter", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$RadioButtonListHeatEmitter", + "label": "Heat Emitter", + "value": "Radiators", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Underfloor Heating", + "text": "Underfloor Heating", + "selected": false + }, + { + "value": "Radiators", + "text": "Radiators", + "selected": true + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_RadioButtonListFlowTemperature", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$RadioButtonListFlowTemperature", + "label": "Design flow temperature", + "value": "<= 35\u00b0C", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "<= 35\u00b0C", + "text": "<= 35\u00b0C", + "selected": true + }, + { + "value": "36\u00b0 - 45\u00b0C", + "text": "36\u00b0 - 45\u00b0C", + "selected": false + }, + { + "value": "Normal (> 45\u00b0C)", + "text": "Normal (> 45\u00b0C)", + "selected": false + }, + { + "value": "Unknown", + "text": "Unknown", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_RadioButtonListFlueType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$RadioButtonListFlueType", + "label": "Flue Type", + "value": "Open", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Balanced", + "text": "Balanced", + "selected": false + }, + { + "value": "Open", + "text": "Open", + "selected": true + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_RadioButtonListFanAssistedFlue", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$RadioButtonListFanAssistedFlue", + "label": "Fan Assisted Flue", + "value": "Yes", + "disabled": false, + "autopostback": false, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "No", + "text": "No", + "selected": false + }, + { + "value": "Yes", + "text": "Yes", + "selected": true + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_TextBoxPcdfHeatingControls", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$TextBoxPcdfHeatingControls", + "label": "PCDF Heating Controls", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_TextBoxMainHeatingControls", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$TextBoxMainHeatingControls", + "label": "Main Heating Controls EES", + "value": "CBE", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_TextBoxPCDFCompensator", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$TextBoxPCDFCompensator", + "label": "Compensator from PCDF", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_TextBoxPercentageOfHeat", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$TextBoxPercentageOfHeat", + "label": "Percentage of Heat [%]", + "value": "100", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating2_WebUserControlMainHeating2_TextBoxPCDFBoilerReference", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating2$WebUserControlMainHeating2$TextBoxPCDFBoilerReference", + "label": "PCDF boiler Reference", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating2_WebUserControlMainHeating2_TextBoxMainHeatingCode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating2$WebUserControlMainHeating2$TextBoxMainHeatingCode", + "label": "Main Heating EES Code", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating2_WebUserControlMainHeating2_TextBoxPercentageOfHeat", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating2$WebUserControlMainHeating2$TextBoxPercentageOfHeat", + "label": "Percentage of Heat [%]", + "value": "0", + "disabled": true, + "autopostback": true + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelCommunityHeating_WebUserControlCommunityHeating_DropDownListCommunityHeatingType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelCommunityHeating$WebUserControlCommunityHeating$DropDownListCommunityHeatingType", + "label": "Heating Type", + "value": "None", + "disabled": true, + "autopostback": true, + "options": [ + { + "value": "None", + "text": "None", + "selected": true + }, + { + "value": "Space and Water Heating", + "text": "Space and Water Heating", + "selected": false + }, + { + "value": "Space Heating only", + "text": "Space Heating only", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMeters_RadioButtonListElectricityType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMeters$RadioButtonListElectricityType", + "label": "", + "value": "Single", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "Single", + "text": "Single", + "selected": true + }, + { + "value": "Dual", + "text": "Dual", + "selected": false + }, + { + "value": "18 Hour", + "text": "18 Hour", + "selected": false + }, + { + "value": "24 Hour", + "text": "24 Hour", + "selected": false + }, + { + "value": "Unknown", + "text": "Unknown", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMeters_CheckBoxMainGas", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMeters$CheckBoxMainGas", + "label": "Mains gas supply available", + "value": "on", + "disabled": true, + "autopostback": false, + "checked": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMeters_CheckBoxElectricitySmartMeterPresent", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMeters$CheckBoxElectricitySmartMeterPresent", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMeters_CheckBoxGasSmartMeterPresent", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMeters$CheckBoxGasSmartMeterPresent", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListSecondaryHeatingPresent", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListSecondaryHeatingPresent", + "label": "", + "value": "Yes", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "No", + "text": "No", + "selected": false + }, + { + "value": "Yes", + "text": "Yes", + "selected": true + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TextBoxSecondaryHeatingCode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TextBoxSecondaryHeatingCode", + "label": "Secondary Heating EES Code", + "value": "RWM", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxFullSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxFullSearch", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListBoilerType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListBoilerType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListCurrentObsoleteModels", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListCurrentObsoleteModels", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListMainType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListMainType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListMountingPosition", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListMountingPosition", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListFlueType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListFlueType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListFuel", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListFuel", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListCondensing", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListCondensing", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListEfficiencyBands", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListEfficiencyBands", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListFanAssistance", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListFanAssistance", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxManufacturerName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxManufacturerName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxBrandName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxBrandName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxModelName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxModelName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxModelQualifier", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxModelQualifier", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_TextBoxFullSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$TextBoxFullSearch", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_DropDownListType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$DropDownListType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_DropDownListCurrentObsoleteModels", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$DropDownListCurrentObsoleteModels", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_TextBoxManufacturerName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$TextBoxManufacturerName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_TextBoxBrandName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$TextBoxBrandName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_TextBoxModelName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$TextBoxModelName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_TextBoxModelQualifier", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$TextBoxModelQualifier", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_TextBoxFullSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$TextBoxFullSearch", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_DropDownListType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$DropDownListType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_DropDownListCurrentObsoleteModels", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$DropDownListCurrentObsoleteModels", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_TextBoxManufacturerName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$TextBoxManufacturerName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_TextBoxBrandName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$TextBoxBrandName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_TextBoxModelName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$TextBoxModelName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_TextBoxModelQualifier", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$TextBoxModelQualifier", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList1", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList1", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList2", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList2", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList3", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList3", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList4", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList4", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList5", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList5", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList6", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList6", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$ButtonMainHeatingCode','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_ButtonMainHeatingCode" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$ButtonPcdfHeatingControls','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_ButtonPcdfHeatingControls" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$ButtonMainHeatingControls','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_ButtonMainHeatingControls" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating1$WebUserControlMainHeating1$ButtonPCDFCompensator','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_ButtonPCDFCompensator" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating2$WebUserControlMainHeating2$ButtonBoilerReference','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating2_WebUserControlMainHeating2_ButtonBoilerReference" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMainHeating2$WebUserControlMainHeating2$ButtonMainHeatingCode','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMainHeating2_WebUserControlMainHeating2_ButtonMainHeatingCode" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$ButtonSecondaryHeatingCode','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_ButtonSecondaryHeatingCode" + }, + { + "text": "Boiler search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$HyperLinkActionBoilerSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_HyperLinkActionBoilerSearch" + }, + { + "text": "Advanced boiler search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$HyperLinkActionAdvancedSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_HyperLinkActionAdvancedSearch" + }, + { + "text": "Community heating networks", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$HyperLinkActionCommunityHeatingNetworks\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_HyperLinkActionCommunityHeatingNetworks" + }, + { + "text": "Heating controls search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectHeatingControlsDialog$HyperLinkActionSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectHeatingControlsDialog_HyperLinkActionSearch" + }, + { + "text": "Storage heaters search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectStorageHeaterDialog$HyperLinkActionSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectStorageHeaterDialog_HyperLinkActionSearch" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/summary.json b/scripts/hyde/elmhurst_dom/summary.json new file mode 100644 index 00000000..db1a2429 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/summary.json @@ -0,0 +1,231 @@ +{ + "url": "https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormSummary.aspx?Guid=B44A0DB4-4C08-4241-B818-86F060172105", + "title": "Elmhurst - Energy Report Summary", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_DropDownListOperationDepartments", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$DropDownListOperationDepartments", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": true + }, + { + "value": "56203", + "text": "Sciana Systems Ltd (Office Department)", + "selected": false + }, + { + "value": "59085", + "text": "Osmosis ACD Ltd (Operations Department)", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_ExceptionDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$ExceptionDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious','')", + "onclick": "waitForAction();", + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": null, + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonClose','')", + "onclick": "waitForAction();", + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonClose" + }, + { + "text": "Cancel", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$LinkButtonCancel','')", + "onclick": "this.disabled = true;", + "id": "ContentBody_ContentPlaceHolderNavigations_LinkButtonCancel" + }, + { + "text": "Submit", + "href": null, + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_LinkButtonSubmitEPR" + }, + { + "text": "Overview Report", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$LinkButtonPreviewDraftEPR','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_LinkButtonPreviewDraftEPR" + }, + { + "text": "Input Summary", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$LinkButtonSummary','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_LinkButtonSummary" + }, + { + "text": "Evidence", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$LinkButtonEvidence','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_LinkButtonEvidence" + }, + { + "text": "SAP Worksheets", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$ButtonDebugInforPdf','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_ButtonDebugInforPdf" + }, + { + "text": "OK", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$ExceptionDialog$LinkButtonOK','')", + "onclick": "hideDialog($('.ees-exception-dialog')); return false;", + "id": "ContentBody_ContentPlaceHolder1_ExceptionDialog_LinkButtonOK" + }, + { + "text": "Energy Report Address", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionDimensions$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatories", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionConservatories$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionFlats$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionWalls$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionRoofs$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionFloors$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionOpenings$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionRecommendations$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionAddenda$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionResults$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$buttonActionSummary$Link','')", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/ventilationandcooling.json b/scripts/hyde/elmhurst_dom/ventilationandcooling.json new file mode 100644 index 00000000..7a3c3419 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/ventilationandcooling.json @@ -0,0 +1,502 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormVentilationAndCooling.aspx", + "title": "Elmhurst - Ventilation and Cooling", + "controls": [ + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxOpenChimneys", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxOpenChimneys", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxOpenFlues", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxOpenFlues", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxChimneysFluesClosedFire", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxChimneysFluesClosedFire", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxFluesSolidFuelBoiler", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxFluesSolidFuelBoiler", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxFluesOtherHeater", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxFluesOtherHeater", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxBlockedChimneys", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxBlockedChimneys", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxIntermittentFans", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxIntermittentFans", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxPassiveVents", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxPassiveVents", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_TextBoxFluelessGasFires", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$TextBoxFluelessGasFires", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_CheckBoxFixedSpaceCooling", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$CheckBoxFixedSpaceCooling", + "label": "Fixed space cooling", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelVentilationPanel_DropDownListDraughtLobby", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelVentilationPanel$DropDownListDraughtLobby", + "label": "Draught Lobby", + "value": "Unable to determine", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "Present", + "text": "Present", + "selected": false + }, + { + "value": "Not present", + "text": "Not present", + "selected": false + }, + { + "value": "Unable to determine", + "text": "Unable to determine", + "selected": true + } + ] + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMechVent_CheckBoxMechanicalVentilation", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMechVent$CheckBoxMechanicalVentilation", + "label": "Mechanical ventilation", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelAirPressureTest_DropDownListTestMethod", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelAirPressureTest$DropDownListTestMethod", + "label": "Test Method", + "value": "Not available", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "Not available", + "text": "Not available", + "selected": true + }, + { + "value": "Blower Door", + "text": "Blower Door", + "selected": false + }, + { + "value": "Pulse", + "text": "Pulse", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelLighting_TextBoxLightsTotal", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelLighting$TextBoxLightsTotal", + "label": "", + "value": "6", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelLighting_CheckBoxLedAndCflLightsKnown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelLighting$CheckBoxLedAndCflLightsKnown", + "label": "Number of LED and CFL Known", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelLighting_TextBoxLedLightsTotal", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelLighting$TextBoxLedLightsTotal", + "label": "", + "value": "6", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelLighting_TextBoxCflLightsTotal", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelLighting$TextBoxCflLightsTotal", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelLighting_TextBoxLelLightsTotal", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelLighting$TextBoxLelLightsTotal", + "label": "", + "value": "6", + "disabled": true, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelLighting_TextBoxIncandescentLights", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelLighting$TextBoxIncandescentLights", + "label": "", + "value": "0", + "disabled": true, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_TextBoxFullSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$TextBoxFullSearch", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_DropDownListMVType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$DropDownListMVType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_DropDownListCurrentObsoleteModels", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$DropDownListCurrentObsoleteModels", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_TextBoxManufacturerName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$TextBoxManufacturerName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_TextBoxBrandName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$TextBoxBrandName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_TextBoxModelName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$TextBoxModelName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_TextBoxModelQualifier", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$TextBoxModelQualifier", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "MV search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$HyperLinkActionMVSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_HyperLinkActionMVSearch" + }, + { + "text": "Advanced MV search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectMVDialog$HyperLinkActionAdvancedSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectMVDialog_HyperLinkActionAdvancedSearch" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/walls.json b/scripts/hyde/elmhurst_dom/walls.json new file mode 100644 index 00000000..144262a6 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/walls.json @@ -0,0 +1,317 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormWalls.aspx", + "title": "Elmhurst - Walls", + "controls": [ + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelExternalWallMain_WebUserControlWallMain_DropDownListType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$InnerTabContainerMain$TabPanelExternalWallMain$WebUserControlWallMain$DropDownListType", + "label": "Type", + "value": "TI Timber Frame", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "SG Stone: granite or whinstone", + "text": "SG Stone: granite or whinstone", + "selected": false + }, + { + "value": "SS Stone: sandstone or limestone", + "text": "SS Stone: sandstone or limestone", + "selected": false + }, + { + "value": "SO Solid Brick", + "text": "SO Solid Brick", + "selected": false + }, + { + "value": "CO Cob", + "text": "CO Cob", + "selected": false + }, + { + "value": "CA Cavity", + "text": "CA Cavity", + "selected": false + }, + { + "value": "TI Timber Frame", + "text": "TI Timber Frame", + "selected": true + }, + { + "value": "SY System Build", + "text": "SY System Build", + "selected": false + }, + { + "value": "CW Curtain Wall", + "text": "CW Curtain Wall", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelExternalWallMain_WebUserControlWallMain_DropDownListInsulation", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$InnerTabContainerMain$TabPanelExternalWallMain$WebUserControlWallMain$DropDownListInsulation", + "label": "Insulation", + "value": "A As Built", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "I Internal", + "text": "I Internal", + "selected": false + }, + { + "value": "A As Built", + "text": "A As Built", + "selected": true + }, + { + "value": "U Unknown", + "text": "U Unknown", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelExternalWallMain_WebUserControlWallMain_TextBoxWallThickness", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$InnerTabContainerMain$TabPanelExternalWallMain$WebUserControlWallMain$TextBoxWallThickness", + "label": "Wall Thickness [mm]", + "value": "400", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelExternalWallMain_WebUserControlWallMain_CheckBoxWallThicknessUnknown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$InnerTabContainerMain$TabPanelExternalWallMain$WebUserControlWallMain$CheckBoxWallThicknessUnknown", + "label": "Wall Thickness Unknown", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelExternalWallMain_WebUserControlWallMain_CheckBoxUvalueKnown", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$InnerTabContainerMain$TabPanelExternalWallMain$WebUserControlWallMain$CheckBoxUvalueKnown", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelExternalWallMain_WebUserControlWallMain_TextBoxAddWallArea", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$InnerTabContainerMain$TabPanelExternalWallMain$WebUserControlWallMain$TextBoxAddWallArea", + "label": "Wall Area [m2]", + "value": "0.00", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelExternalWallMain_WebUserControlWallMain_TextBoxSecondAddWallArea", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelMain$InnerTabContainerMain$TabPanelExternalWallMain$WebUserControlWallMain$TextBoxSecondAddWallArea", + "label": "Wall Area [m2]", + "value": "0.00", + "disabled": false, + "autopostback": true + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_dom/waterheating.json b/scripts/hyde/elmhurst_dom/waterheating.json new file mode 100644 index 00000000..ce0a4624 --- /dev/null +++ b/scripts/hyde/elmhurst_dom/waterheating.json @@ -0,0 +1,911 @@ +{ + "url": "https://rdsap10.elmhurstenergy.co.uk/Processing/WebFormWaterHeating.aspx", + "title": "Elmhurst - Water Heating", + "controls": [ + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWaterHeating_TextBoxWaterHeatingCode", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWaterHeating$TextBoxWaterHeatingCode", + "label": "15.0 Water Heating", + "value": "HWP", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWaterHeating_CheckBoxHotWaterCylinder", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWaterHeating$CheckBoxHotWaterCylinder", + "label": "Hot Water Cylinder Present", + "value": "on", + "disabled": true, + "autopostback": false, + "checked": true + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWaterHeating_DropDownListCylinderSize", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWaterHeating$DropDownListCylinderSize", + "label": "", + "value": "Large", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "No Access", + "text": "No Access", + "selected": false + }, + { + "value": "Normal", + "text": "Normal", + "selected": false + }, + { + "value": "Medium", + "text": "Medium", + "selected": false + }, + { + "value": "Large", + "text": "Large", + "selected": true + }, + { + "value": "Value known", + "text": "Value known", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWaterHeating_DropDownListInsulated", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWaterHeating$DropDownListInsulated", + "label": "", + "value": "Foam", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "No Insulation", + "text": "No Insulation", + "selected": false + }, + { + "value": "Jacket", + "text": "Jacket", + "selected": false + }, + { + "value": "Foam", + "text": "Foam", + "selected": true + }, + { + "value": "Measured Loss", + "text": "Measured Loss", + "selected": false + } + ] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWaterHeating_DropDownListInsulationThickness", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWaterHeating$DropDownListInsulationThickness", + "label": "", + "value": "120 mm", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "", + "text": "", + "selected": false + }, + { + "value": "None", + "text": "None", + "selected": false + }, + { + "value": "12 mm", + "text": "12 mm", + "selected": false + }, + { + "value": "25 mm", + "text": "25 mm", + "selected": false + }, + { + "value": "38 mm", + "text": "38 mm", + "selected": false + }, + { + "value": "50 mm", + "text": "50 mm", + "selected": false + }, + { + "value": "80 mm", + "text": "80 mm", + "selected": false + }, + { + "value": "120 mm", + "text": "120 mm", + "selected": true + }, + { + "value": "160 mm", + "text": "160 mm", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWaterHeating_CheckBoxCylinderThermostat", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWaterHeating$CheckBoxCylinderThermostat", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelCommunityHeating_WebUserControlCommunityHeating_TextBoxCommunityHeatingPCDFBoilerReference", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelCommunityHeating$WebUserControlCommunityHeating$TextBoxCommunityHeatingPCDFBoilerReference", + "label": "PCDF boiler Reference", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelSolarCylinder_TabContainerSolar_TabPanelSolarDetails_CheckBoxSolaWaterHeating", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelSolarCylinder$TabContainerSolar$TabPanelSolarDetails$CheckBoxSolaWaterHeating", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWWHRS_DropDownListWWHRSPresent", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWWHRS$DropDownListWWHRSPresent", + "label": "", + "value": "No / Unknown", + "disabled": false, + "autopostback": true, + "options": [ + { + "value": "No / Unknown", + "text": "No / Unknown", + "selected": true + }, + { + "value": "Yes - Instantaneous Type", + "text": "Yes - Instantaneous Type", + "selected": false + }, + { + "value": "Yes - Storage Type", + "text": "Yes - Storage Type", + "selected": false + } + ] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWWHRS_TextBoxRoomsWithBath", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWWHRS$TextBoxRoomsWithBath", + "label": "", + "value": "2", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWWHRS_TextBoxRoomsWithShowerAndBath", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWWHRS$TextBoxRoomsWithShowerAndBath", + "label": "", + "value": "0", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": null, + "name": null, + "label": "1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNonElectric \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNone\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDescription1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTypeNon-electric shower\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tConnected toNone", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": null, + "name": null, + "label": "1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNonElectric \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNone\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDescription1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTypeNon-electric shower\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tConnected toNone", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "image", + "id": null, + "name": null, + "label": "1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNonElectric \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNone\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDescription1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTypeNon-electric shower\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tConnected toNone", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelFGHRS_FGHRSMhs1_CheckBoxFGHRSPresent", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelFGHRS$FGHRSMhs1$CheckBoxFGHRSPresent", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "input", + "type": "checkbox", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelFGHRS_FGHRSMhs2_CheckBoxFGHRSPresent", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelFGHRS$FGHRSMhs2$CheckBoxFGHRSPresent", + "label": "", + "value": "on", + "disabled": false, + "autopostback": false, + "checked": false + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxFullSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxFullSearch", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListBoilerType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListBoilerType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListCurrentObsoleteModels", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListCurrentObsoleteModels", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListMainType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListMainType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListMountingPosition", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListMountingPosition", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListFlueType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListFlueType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListFuel", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListFuel", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListCondensing", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListCondensing", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListEfficiencyBands", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListEfficiencyBands", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_DropDownListFanAssistance", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$DropDownListFanAssistance", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxManufacturerName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxManufacturerName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxBrandName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxBrandName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxModelName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxModelName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_TextBoxModelQualifier", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$TextBoxModelQualifier", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_TextBoxFullSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$TextBoxFullSearch", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_DropDownListType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$DropDownListType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_DropDownListCurrentObsoleteModels", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$DropDownListCurrentObsoleteModels", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_TextBoxManufacturerName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$TextBoxManufacturerName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_TextBoxBrandName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$TextBoxBrandName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_TextBoxModelName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$TextBoxModelName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_TextBoxModelQualifier", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$TextBoxModelQualifier", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_TextBoxFullSearch", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$TextBoxFullSearch", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_DropDownListType", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$DropDownListType", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_DropDownListCurrentObsoleteModels", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$DropDownListCurrentObsoleteModels", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_TextBoxManufacturerName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$TextBoxManufacturerName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_TextBoxBrandName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$TextBoxBrandName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_TextBoxModelName", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$TextBoxModelName", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "text", + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_TextBoxModelQualifier", + "name": "ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$TextBoxModelQualifier", + "label": "", + "value": "", + "disabled": false, + "autopostback": true + }, + { + "tag": "input", + "type": "image", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_ImageButtonCloseDialog", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$ImageButtonCloseDialog", + "label": "", + "value": "", + "disabled": false, + "autopostback": false + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList1", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList1", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList2", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList2", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList3", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList3", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList4", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList4", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList5", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList5", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + }, + { + "tag": "select", + "type": "select-one", + "id": "ContentBody_OutsideUpdatePanel_SelectHeatingDialog_DropDownList6", + "name": "ctl00$ctl00$ContentBody$OutsideUpdatePanel$SelectHeatingDialog$DropDownList6", + "label": "", + "value": "", + "disabled": false, + "autopostback": true, + "options": [] + } + ], + "nav": [ + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl00\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$ContentPlaceHolderNavigationsTop$ctl01\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": null + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentTopControls$LinkButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentTopControls_LinkButtonSaveClose" + }, + { + "text": "< Previous", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonPrevious\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonPrevious" + }, + { + "text": "Next >", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolderNavigations$ButtonNext\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolderNavigations_ButtonNext" + }, + { + "text": "Save & Close", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonSaveClose\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonSaveClose" + }, + { + "text": "Cancel", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ButtonCancel\", \"\", true, \"\", \"\", false, true))", + "onclick": "this.disabled = true;", + "id": "ContentBody_ButtonCancel" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWaterHeating$ButtonWaterHeatingCode','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWaterHeating_ButtonWaterHeatingCode" + }, + { + "text": "", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelCommunityHeating$WebUserControlCommunityHeating$ButtonCommunityHeatingBoilerReference','')", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelCommunityHeating_WebUserControlCommunityHeating_ButtonCommunityHeatingBoilerReference" + }, + { + "text": "Add Showers", + "href": "javascript:__doPostBack('ctl00$ctl00$ContentBody$ContentPlaceHolder1$TabContainer$TabPanelWWHRS$ButtonAddShower','')", + "onclick": "addFlag();", + "id": "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWWHRS_ButtonAddShower" + }, + { + "text": "Boiler search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$HyperLinkActionBoilerSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_HyperLinkActionBoilerSearch" + }, + { + "text": "Advanced boiler search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$HyperLinkActionAdvancedSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_HyperLinkActionAdvancedSearch" + }, + { + "text": "Community heating networks", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectBoilerDialog$HyperLinkActionCommunityHeatingNetworks\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectBoilerDialog_HyperLinkActionCommunityHeatingNetworks" + }, + { + "text": "WWHRS search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectWwhrsDialog$HyperLinkActionSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectWwhrsDialog_HyperLinkActionSearch" + }, + { + "text": "FGHRS search", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$ContentPlaceHolder1$SelectFghrsDialog$HyperLinkActionSearch\", \"\", true, \"\", \"\", false, true))", + "onclick": null, + "id": "ContentBody_ContentPlaceHolder1_SelectFghrsDialog_HyperLinkActionSearch" + }, + { + "text": "Energy Report Address", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionEPCAddress$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionEPCAddress_Link" + }, + { + "text": "Property Details", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDetails$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDetails_Link" + }, + { + "text": "Property Description", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionPropertyDescription$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionPropertyDescription_Link" + }, + { + "text": "Dimensions", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionDimensions$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionDimensions_Link" + }, + { + "text": "Conservatory", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionConservatories$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionConservatories_Link" + }, + { + "text": "Flats", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFlats$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFlats_Link" + }, + { + "text": "Walls", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWalls$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWalls_Link" + }, + { + "text": "Roofs", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRoofs$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRoofs_Link" + }, + { + "text": "Floors", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionFloors$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionFloors_Link" + }, + { + "text": "Openings", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionOpenings$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionOpenings_Link" + }, + { + "text": "Ventilation & Lighting", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionVentilationAndCooling$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionVentilationAndCooling_Link" + }, + { + "text": "Space Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSpaceHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSpaceHeating_Link" + }, + { + "text": "Water Heating", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionWaterHeating$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionWaterHeating_Link" + }, + { + "text": "New Technologies", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionNewTechnologies$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionNewTechnologies_Link" + }, + { + "text": "Recommendations", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionRecommendations$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionRecommendations_Link" + }, + { + "text": "Addenda", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionAddenda$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionAddenda_Link" + }, + { + "text": "Technical Advice", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionTechnicalAdvice$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionTechnicalAdvice_Link" + }, + { + "text": "Results", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionResults$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionResults_Link" + }, + { + "text": "Energy Report Summary", + "href": "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00$ctl00$ContentBody$buttonActionSummary$Link\", \"\", true, \"\", \"\", false, true))", + "onclick": "waitForAction(this);", + "id": "ContentBody_buttonActionSummary_Link" + }, + { + "text": "Useful Links", + "href": "http://www.elmhurstenergy.co.uk/useful-links", + "onclick": null, + "id": null + }, + { + "text": "Contact Us", + "href": "http://www.elmhurstenergy.co.uk/contact-us", + "onclick": null, + "id": null + } + ] +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_download.py b/scripts/hyde/elmhurst_download.py new file mode 100644 index 00000000..2bc65656 --- /dev/null +++ b/scripts/hyde/elmhurst_download.py @@ -0,0 +1,103 @@ +"""Download the Input Summary + SAP Worksheets PDFs from Elmhurst (POC). + +Closes the validate-cert loop's only manual export: pulls the two PDFs off the +Energy Report Summary page and saves them where `compare_epc_paths.py` reads: + * Input Summary -> elmhurst_summary.pdf (inputs; parse_site_notes_pdf -> EpcPropertyData) + * SAP Worksheets -> elmhurst_worksheet.pdf (the SAP calculation) + + DISPLAY=:99 python scripts/hyde/elmhurst_download.py + +SAFETY: this script clicks ONLY the two report buttons below. It NEVER clicks +Submit (`LinkButtonSubmitEPR`) — submitting lodges the assessment. The allow-list +is enforced in code. +""" + +from __future__ import annotations + +import sys +from pathlib import Path + +from playwright.sync_api import ( + Page, + TimeoutError as PlaywrightTimeoutError, + sync_playwright, +) + +HERE = Path(__file__).parent +SESSION_DIR = HERE / ".elmhurst-session" +SAMPLE_DIR = ( + HERE.parent.parent + / "backend/epc_api/json_samples/real_life_examples" + / "SAP-Schema-17.1/uprn_10092973954" +) + +ASSESSMENT_GUID = "B44A0DB4-4C08-4241-B818-86F060172105" +ENTRY_URL = ( + "https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormAddress.aspx" + f"?Guid={ASSESSMENT_GUID}" +) + +# (button id, output filename). The ONLY buttons this script may click. +REPORTS: list[tuple[str, str]] = [ + ("ContentBody_ContentPlaceHolder1_LinkButtonSummary", "elmhurst_summary.pdf"), + ("ContentBody_ContentPlaceHolder1_ButtonDebugInforPdf", "elmhurst_worksheet.pdf"), +] +# Buttons this script must NEVER touch (belt-and-braces). +_FORBIDDEN = {"ContentBody_ContentPlaceHolder1_LinkButtonSubmitEPR"} + + +def _download_one(page: Page, button_id: str, out: Path) -> bool: + assert button_id not in _FORBIDDEN, f"refusing to click forbidden {button_id}" + print(f" clicking {button_id} -> {out.name} ...", flush=True) + try: + with page.expect_download(timeout=60_000) as dl: + page.click(f"#{button_id}", timeout=20_000) + dl.value.save_as(str(out)) + except PlaywrightTimeoutError: + # Some report buttons open the PDF in a popup rather than a download. + try: + with page.expect_popup(timeout=10_000) as pop: + page.click(f"#{button_id}", timeout=20_000) + popup = pop.value + with popup.expect_download(timeout=30_000) as dl2: + pass + dl2.value.save_as(str(out)) + except PlaywrightTimeoutError: + print(f" !! no download/popup for {button_id}", flush=True) + return False + size = out.stat().st_size if out.exists() else 0 + print(f" saved {out} ({size:,} bytes)", flush=True) + return out.exists() and size > 0 + + +def download_reports() -> int: + SAMPLE_DIR.mkdir(parents=True, exist_ok=True) + ok = True + with sync_playwright() as p: + context = p.chromium.launch_persistent_context( + user_data_dir=str(SESSION_DIR), + headless=False, + accept_downloads=True, + viewport={"width": 1400, "height": 1000}, + ) + page = context.pages[0] if context.pages else context.new_page() + page.on("dialog", lambda d: d.accept()) + + print(f"entering assessment {ASSESSMENT_GUID} ...", flush=True) + page.goto(ENTRY_URL, wait_until="networkidle", timeout=60_000) + print("navigating to Energy Report Summary ...", flush=True) + with page.expect_navigation(wait_until="networkidle", timeout=60_000): + page.click("#ContentBody_buttonActionSummary_Link", timeout=15_000) + page.wait_for_timeout(600) + + for button_id, fname in REPORTS: + ok = _download_one(page, button_id, SAMPLE_DIR / fname) and ok + page.wait_for_timeout(600) + + context.close() + print("DONE." if ok else "DONE (with errors — see above).", flush=True) + return 0 if ok else 1 + + +if __name__ == "__main__": + sys.exit(download_reports()) diff --git a/scripts/hyde/elmhurst_explore.py b/scripts/hyde/elmhurst_explore.py new file mode 100644 index 00000000..8fcc1a78 --- /dev/null +++ b/scripts/hyde/elmhurst_explore.py @@ -0,0 +1,186 @@ +"""Dump the real DOM of an Elmhurst RdSAP-10-Online page (dev tool). + +The entry tool is an ASP.NET WebForms app: field IDs are server-generated +(``ctl00_ctl00_ContentBody_...``) and many controls postback on change. We +can't guess selectors, so this reads them off the live page. Reuses the saved +persistent session (no login needed). Run it on the viewer display: + + DISPLAY=:99 python scripts/hyde/elmhurst_explore.py "" + +Writes, next to this file: + * elmhurst_dom/.png — screenshot (confirms we're authenticated) + * elmhurst_dom/.json — every input/select/textarea + the left-nav links + +It navigates, dumps, and exits (releasing the profile lock for the next step). +""" + +from __future__ import annotations + +import json +import re +import sys +from pathlib import Path +from typing import Any + +from playwright.sync_api import sync_playwright + +HERE = Path(__file__).parent +SESSION_DIR = HERE / ".elmhurst-session" +OUT_DIR = HERE / "elmhurst_dom" + +# Runs in the page to harvest every form control + the section nav, with the +# label text an assessor reads — so we can tie markdown fields to server IDs. +_DUMP_JS = r""" +() => { + const labelFor = (el) => { + if (el.id) { + const l = document.querySelector(`label[for="${el.id}"]`); + if (l) return l.innerText.trim(); + } + // WebForms often puts the caption in a sibling cell, not a