feat: add clickable BigLadder doc links throughout OpenStudioApp UI#876
feat: add clickable BigLadder doc links throughout OpenStudioApp UI#876Ski90Moo wants to merge 12 commits into
Conversation
…headers Add IddObjectDocUrl.hpp mapping 300+ OS IDD type names to EnergyPlus 25.1 Input/Output Reference URLs. InspectorGadget::layoutText() now renders IDD type headers as clickable hyperlinks in the right-sidebar inspector. Extend CollapsibleInspector to accept an optional URL parameter, and wire 15 section headers in SimSettingsView (plus the Run Period, Sizing Parameters, and Timestep H1 labels) to their respective BigLadder doc anchors. Closes openstudiocoalition#160 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| // Returns the BigLadder EnergyPlus 25.1 Input/Output Reference URL for the given | ||
| // OS IDD type name (e.g. "OS:ThermalZone"), or an empty string if none is known. | ||
| inline QString iddObjectDocUrl(const QString& iddTypeName) { | ||
| static const QString base = QStringLiteral("https://bigladdersoftware.com/epx/docs/25-1/input-output-reference/"); |
There was a problem hiding this comment.
Let's define this base url in one spot, ideally in FindOpenStudioSDK.cmake
There was a problem hiding this comment.
Sorry I wasn't more explicit, follow the pattern in https://github.com/openstudiocoalition/OpenStudioApplication/blob/develop/src/utilities/OpenStudioApplicationPathHelpers.cxx.in
Add a method https://github.com/openstudiocoalition/OpenStudioApplication/blob/develop/src/utilities/OpenStudioApplicationPathHelpers.hpp and the value returned gets configured by a CMake variable into the source.
|
Looks pretty good, the one thing I would ask for is a tooltip which shows you the url before you click |
3f0d922 to
453f037
Compare
- Define ENERGYPLUS_VERSION_MAJOR/MINOR and BIGLADDERSOFTWARE_DOC_BASE_URL in FindOpenStudioSDK.cmake (single source of truth for the BigLadder URL base); pass to C++ via target_compile_definitions in model_editor and openstudio_lib; remove hardcoded URL strings from IddObjectDocUrl.hpp and SimSettingsView.cpp - Rename layoutText header overload to layoutHeaderText, drop unused level/ index parameters per macumber's cleaned-up version - Add setToolTip(docUrl) to all clickable doc links so the URL is visible on hover before clicking (InspectorGadget header, CollapsibleInspector section headers, SimSettings H1 labels) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- OS:Schedule:Day - OS:Coil:Cooling:DX:TwoStageWithHumidityControlMode - OS:Coil:Cooling:DX:MultiSpeed:StageData - OS:Coil:Cooling:Water:Panel:Radiant - OS:Coil:Heating:Gas:MultiStage + :StageData - OS:Coil:Heating:LowTemperatureRadiant:ConstantFlow + :VariableFlow - OS:Coil:Heating:Water:Baseboard:Radiant - OS:Coil:WaterHeating:AirToWaterHeatPump - OS:SetpointManager:FollowSystemNodeTemperature Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds BigLadder doc URL mappings for: LowTemperatureRadiant coils, CoilPerformance:DX:Cooling, Coil:Heating:Water:Baseboard, 10 setpoint managers (MultiZone/SingleZone humidity, SingleZone stage, SystemNodeReset), SolarCollectorPerformance x2, Chiller:Absorption, CentralHeatPumpSystem:Module, PlantComponent:TemperatureSource/UserDefined, CoolingTower:VariableSpeed, CoolingTowerPerformance x2, Pipe:Indoor/Outdoor/Duct, TemperingValve, LoadProfile:Plant, Fan:ComponentModel, Site:GroundTemperature:Undisturbed:KusudaAchenbach, SwimmingPool:Indoor, AirTerminal:SingleDuct:ConstantVolume:FourPipeInduction, and 5 new curve types. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| target_compile_definitions(${target_name} PUBLIC model_editor_EXPORTS) | ||
| endif() | ||
|
|
||
| target_compile_definitions(${target_name} PRIVATE |
There was a problem hiding this comment.
Set BIGLADDERSOFTWARE_DOC_BASE_URL as a variable in https://github.com/openstudiocoalition/OpenStudioApplication/blob/develop/FindOpenStudioSDK.cmake, we have to update that file for each release so this will be visible when we do that.
Then add an accessor method to get the configured value in https://github.com/openstudiocoalition/OpenStudioApplication/blob/develop/src/utilities/OpenStudioApplicationPathHelpers.cxx.in
Extends OSCollapsibleItemHeader to optionally render its text as a clickable BigLadder hyperlink. Adds a URL-aware constructor to ModelObjectTypeListView. Applies links to four left-sidebar panels: Loads, Constructions (subtab), Materials (subtab), and Other Schedules. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Site / Weather File & Design Days: Weather File, Design Days, and Daylight Savings Time headers link to BigLadder I/O Reference - Site / Ground Temperatures: all five sidebar entries link to their respective Site:GroundTemperature:* and Site:WaterMainsTemperature docs - Site / Life Cycle Cost: Life Cycle Cost Parameters and NIST Fuel Escalation Rates headers link to LifeCycleCost docs - Facility tab: North Axis label links to Building object docs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Thanks for the feedback! Tooltips showing the full URL have been added to all clickable doc links — both in the inspector header (via |
…function Per PR review feedback: instead of passing the URL via target_compile_definitions, add bigladdersoftwareDocBaseUrl() to OpenStudioApplicationPathHelpers following the existing .cxx.in pattern. The URL is configured from BIGLADDERSOFTWARE_DOC_BASE_URL in FindOpenStudioSDK.cmake — visible alongside EnergyPlus version bumps each release. All call sites updated to use QString::fromStdString(openstudio::bigladdersoftwareDocBaseUrl()). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Addressed the |
Scans IddObjectDocUrl.hpp and all .cpp files that reference bigladdersoftwareDocBaseUrl(), fetches each unique BigLadder page once, and verifies that every anchor ID referenced actually exists in the page HTML. Exits 0 if all OK, 1 if any anchors are missing or pages fail to load. Usage: python scripts/check_doc_urls.py [--repo-root PATH] [--delay SEC] Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Identified by scripts/check_doc_urls.py which fetches BigLadder pages and verifies anchor IDs exist in the HTML. Fixes include: - Wrong page: RunPeriod, InternalMass, PlantLoop/CondenserLoop, AvailabilityManagerAssignmentList, HeatExchanger:FluidToFluid, OutdoorAir:Mixer, ZoneMixer/Splitter/ReturnPlenum/SupplyPlenum - Typos: materialaingap→materialairgap, celdeckpad→celdekpad (×2), outdoorarreset→outdoorairreset, multizoneheat/coolaverage→heating/coolingaverage - Sphinx suffixes: lights→lights-000, construction→construction-000, daylightingcontrols→daylightingcontrols-000 - Hyphen removal: buildingsurface-detailed→buildingsurfacedetailed, fenestrationsurface-detailed→fenestrationsurfacedetailed - Renames: Uncontrolled→ConstantVolume:NoReheat, Fuel→Gas-000, ShadingControl→WindowPropertyShadingControl, WaterHeaterHeatPump→WaterHeaterHeatPumpPumpedCondenser, GroundHeatExchanger:Vertical→GroundHeatExchangerSystem - FourPipeBeam coils moved to air-distribution-equipment page 7 anchors remain unverifiable (page too long for fetch tool): HeatPump:PlantLoop:EIR:Cooling/Heating, PLHP:AirToWater (×3), WindowProperty:FrameAndDivider, InteriorPartitionSurface:Detailed. Also updates check_doc_urls.py docstring with rationale for choosing Python script over GTest, and updates OpenStudioApplicationPathHelpers with bigladdersoftwareDocBaseUrl() accessor function. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| label->setOpenExternalLinks(true); | ||
| { | ||
| static const QString url = | ||
| QString::fromStdString(openstudio::bigladdersoftwareDocBaseUrl()) + "group-simulation-parameters.html#building"; |
There was a problem hiding this comment.
| QString::fromStdString(openstudio::bigladdersoftwareDocBaseUrl()) + "group-simulation-parameters.html#building"; | |
| QString::fromStdString(openstudio::bigladdersoftwareDocBaseUrl()) + iddObjectDocUrl("OS:Building"); |
It would be better to handle all of these using iddObjectDocUrl so all the url fragments are in one place.
| if (it != urlMap.constEnd()) { | ||
| return base + it.value(); | ||
| } | ||
| return QString(); |
There was a problem hiding this comment.
Let's log a warning here if the value is not found like "Cannot find doc url for: " + iddTypeName
| // Base URL version is controlled by ENERGYPLUS_VERSION_MAJOR/MINOR in FindOpenStudioSDK.cmake. | ||
| inline QString iddObjectDocUrl(const QString& iddTypeName) { | ||
| static const QString base = QString::fromStdString(openstudio::bigladdersoftwareDocBaseUrl()); | ||
|
|
There was a problem hiding this comment.
IddFile does have a std::vector<std::string> groups() method, can we add a section so we can look up groups like "OpenStudio Simulation" -> "group-simulation-parameters.html"?
|
@Ski90Moo one thing I found is that you have to use the same version of clang-format that the CI is using, 18.1.3, other versions of clang-format don't find the same issues as CI. |
- WindowProperty:FrameAndDivider: correct page (thermal-zone not surface-construction) - InteriorPartitionSurface: remove (no EnergyPlus object, not user-facing in GUI) - HeatPump:PlantLoop:EIR:Cooling/Heating: correct anchors (#plhp_eir_cooling/heating) - HeatPump:AirToWater / :Cooling / :Heating: remove (no EnergyPlus object) All 384 URL references now pass check_doc_urls.py verification. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Run clang-format -style=file on all C++ files changed relative to develop, to satisfy the Clang Format CI check. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Thanks for the heads-up. The |
…InspectorView
- Add qWarning log when iddObjectDocUrl cannot find a URL for a type
- Use iddObjectDocUrl("OS:Building") in BuildingInspectorView instead of
hardcoded URL fragment, consolidating all URL fragments in one place
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary
Implements the enhancement requested in #160 — adds clickable hyperlinks from UI section headers and IDD type headers to the relevant EnergyPlus 25.1 Input/Output Reference pages on BigLadder Software. Tooltips show the full URL before clicking.
Inspector / IDD object headers
src/model_editor/IddObjectDocUrl.hpp(new): header-only hash map (QHash<QString, QString>) mapping 300+OS:*IDD type names to their BigLadder EnergyPlus 25.1 I/O Reference URLssrc/model_editor/InspectorGadget.cpp: renders the locked IDD type header in the right-sidebar inspector as aQt::RichTexthyperlink when a URL mapping existsLeft-sidebar category headers
src/openstudio_lib/OSCollapsibleItemHeader.hpp/.cpp: extendsOSCollapsibleItemHeaderwith an optional URL; when set, the category name renders as a clickable blue linksrc/openstudio_lib/ModelObjectTypeListView.hpp/.cpp: adds a new constructor acceptingvector<tuple<IddObjectType, string, QString>>to thread URLs through to each headerSection headers (SimSettings pattern)
src/openstudio_lib/CollapsibleInspector.hpp/.cpp: extendsCollapsibleInspectorHeaderwith an optional URL; section title renders as a clickable linksrc/openstudio_lib/SimSettingsView.cpp: 15CollapsibleInspectorsection headers and 3 H1 labels (Run Period, Sizing Parameters, Timestep)src/openstudio_lib/LocationTabView.cpp: Weather File and Design Days headerssrc/openstudio_lib/YearSettingsWidget.cpp: Daylight Savings Time headersrc/openstudio_lib/GroundTemperatureView.hpp/.cpp: all 5 Ground Temperatures sidebar entriessrc/openstudio_lib/LifeCycleCostsTabView.cpp: Life Cycle Cost Parameters and NIST Fuel Escalation Rates headerssrc/openstudio_lib/BuildingInspectorView.cpp: North Axis label (Facility tab)Build infrastructure
cmake/FindOpenStudioSDK.cmake: definesBIGLADDERSOFTWARE_DOC_BASE_URLas a single versioned CMake variable (EnergyPlus 25.1)src/model_editor/CMakeLists.txtandsrc/openstudio_lib/CMakeLists.txt: pass the URL as a compile definition so all files share a single source of truth for the base URLTest plan
Closes #160
🤖 Generated with Claude Code