Skip to content

Commit

Permalink
Implement Display Additional Properties for Spaces & Facility subtabs
Browse files Browse the repository at this point in the history
  • Loading branch information
jmarrec committed May 24, 2024
1 parent 66e21e8 commit 538a879
Show file tree
Hide file tree
Showing 42 changed files with 403 additions and 120 deletions.
35 changes: 28 additions & 7 deletions src/openstudio_lib/FacilityExteriorEquipmentGridView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@

#define NAME "Name"
#define SELECTED "All"
#define DISPLAYNAME "Display Name"
#define CADOBJECTID "CAD Object ID"

// EXTERIOR LIGHTS
#define EXTERIORLIGHTSDEFINITION "Exterior Lights Definition"
Expand All @@ -93,12 +95,14 @@

namespace openstudio {

FacilityExteriorEquipmentGridView::FacilityExteriorEquipmentGridView(bool isIP, const model::Model& model, QWidget* parent)
: GridViewSubTab(isIP, model, parent) {
FacilityExteriorEquipmentGridView::FacilityExteriorEquipmentGridView(bool isIP, bool displayAdditionalProps, const model::Model& model,
QWidget* parent)
: GridViewSubTab(isIP, displayAdditionalProps, model, parent) {
auto modelObjects = subsetCastVector<model::ModelObject>(model.getConcreteModelObjects<model::ExteriorLights>());
std::sort(modelObjects.begin(), modelObjects.end(), openstudio::WorkspaceObjectNameLess());

m_gridController = new FacilityExteriorEquipmentGridController(isIP, "Exterior Equipment", IddObjectType::OS_Exterior_Lights, model, modelObjects);
m_gridController = new FacilityExteriorEquipmentGridController(isIP, displayAdditionalProps, "Exterior Equipment",
IddObjectType::OS_Exterior_Lights, model, modelObjects);
auto* gridView = new OSGridView(m_gridController, "Exterior Equipment", "Drop\nExterior Equipment", false, parent);

setGridController(m_gridController);
Expand Down Expand Up @@ -163,10 +167,10 @@ void FacilityExteriorEquipmentGridView::clearSelection() {
//m_itemSelectorButtons->disablePurgeButton();
}

FacilityExteriorEquipmentGridController::FacilityExteriorEquipmentGridController(bool isIP, const QString& settingsText, IddObjectType iddObjectType,
const model::Model& model,
FacilityExteriorEquipmentGridController::FacilityExteriorEquipmentGridController(bool isIP, bool displayAdditionalProps, const QString& settingsText,
IddObjectType iddObjectType, const model::Model& model,
const std::vector<model::ModelObject>& modelObjects)
: OSGridController(isIP, settingsText, iddObjectType, model, modelObjects) {
: OSGridController(isIP, settingsText, iddObjectType, model, modelObjects, displayAdditionalProps) {
setCategoriesAndFields();
}

Expand Down Expand Up @@ -218,6 +222,10 @@ void FacilityExteriorEquipmentGridController::onCategorySelected(int index) {
}

void FacilityExteriorEquipmentGridController::addColumns(const QString& category, std::vector<QString>& fields) {

if (isDisplayAdditionalProps()) {
fields.insert(fields.begin(), {DISPLAYNAME, CADOBJECTID});
}
// always show name and selected columns
fields.insert(fields.begin(), {NAME, SELECTED});

Expand All @@ -229,7 +237,20 @@ void FacilityExteriorEquipmentGridController::addColumns(const QString& category

addParentNameLineEditColumn(Heading(QString(NAME), false, false), false, CastNullAdapter<model::ModelObject>(&model::ModelObject::name),
CastNullAdapter<model::ModelObject>(&model::ModelObject::setName));

} else if (field == DISPLAYNAME) {
addNameLineEditColumn(Heading(QString(DISPLAYNAME), false, false), // heading
false, // isInspectable
false, // isLocked
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::displayName), // getter
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::setDisplayName) // setter
);
} else if (field == CADOBJECTID) {
addNameLineEditColumn(Heading(QString(CADOBJECTID), false, false), // heading
false, // isInspectable
false, // isLocked
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::cadObjectId), // getter
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::setCADObjectId) // setter
);
} else if (field == SELECTED) {

auto checkbox = QSharedPointer<OSSelectAllCheckBox>(new OSSelectAllCheckBox());
Expand Down
6 changes: 3 additions & 3 deletions src/openstudio_lib/FacilityExteriorEquipmentGridView.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class FacilityExteriorEquipmentGridView : public GridViewSubTab
Q_OBJECT

public:
FacilityExteriorEquipmentGridView(bool isIP, const model::Model& model, QWidget* parent = 0);
FacilityExteriorEquipmentGridView(bool isIP, bool displayAdditionalProps, const model::Model& model, QWidget* parent = 0);

virtual ~FacilityExteriorEquipmentGridView() {}

Expand All @@ -72,8 +72,8 @@ class FacilityExteriorEquipmentGridController : public OSGridController
Q_OBJECT

public:
FacilityExteriorEquipmentGridController(bool isIP, const QString& settingsText, IddObjectType iddObjectType, const model::Model& model,
const std::vector<model::ModelObject>& modelObjects);
FacilityExteriorEquipmentGridController(bool isIP, bool displayAdditionalProps, const QString& settingsText, IddObjectType iddObjectType,
const model::Model& model, const std::vector<model::ModelObject>& modelObjects);

virtual ~FacilityExteriorEquipmentGridController() = default;

Expand Down
37 changes: 31 additions & 6 deletions src/openstudio_lib/FacilityShadingGridView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@

#define NAME "Shading Surface Group Name"
#define SELECTED "All"
#define DISPLAYNAME "Display Name"
#define CADOBJECTID "CAD Object ID"

// GENERAL
#define TYPE "Type" // read only
Expand All @@ -88,7 +90,8 @@

namespace openstudio {

FacilityShadingGridView::FacilityShadingGridView(bool isIP, const model::Model& model, QWidget* parent) : GridViewSubTab(isIP, model, parent) {
FacilityShadingGridView::FacilityShadingGridView(bool isIP, bool displayAdditionalProps, const model::Model& model, QWidget* parent)
: GridViewSubTab(isIP, displayAdditionalProps, model, parent) {
std::vector<model::ShadingSurfaceGroup> shadingGroups = model.getConcreteModelObjects<model::ShadingSurfaceGroup>();
// Filter out the 'Space' shadingSurfaceTypes
// These are displayed on the Space's "Shading" subtab
Expand All @@ -99,7 +102,8 @@ FacilityShadingGridView::FacilityShadingGridView(bool isIP, const model::Model&
auto modelObjects = subsetCastVector<model::ModelObject>(shadingGroups);
std::sort(modelObjects.begin(), modelObjects.end(), openstudio::WorkspaceObjectNameLess());

m_gridController = new FacilityShadingGridController(isIP, "Shading Surface Group", IddObjectType::OS_ShadingSurfaceGroup, model, modelObjects);
m_gridController = new FacilityShadingGridController(isIP, displayAdditionalProps, "Shading Surface Group", IddObjectType::OS_ShadingSurfaceGroup,
model, modelObjects);
m_gridView = new OSGridView(m_gridController, "Shading Surface Group", "Drop Shading\nSurface Group", false, parent);

setGridController(m_gridController);
Expand Down Expand Up @@ -418,9 +422,10 @@ void FacilityShadingGridView::onClearSelection() {
m_itemSelectorButtons->disablePurgeButton();
}

FacilityShadingGridController::FacilityShadingGridController(bool isIP, const QString& headerText, IddObjectType iddObjectType,
const model::Model& model, const std::vector<model::ModelObject>& modelObjects)
: OSGridController(isIP, headerText, iddObjectType, model, modelObjects) {
FacilityShadingGridController::FacilityShadingGridController(bool isIP, bool displayAdditionalProps, const QString& headerText,
IddObjectType iddObjectType, const model::Model& model,
const std::vector<model::ModelObject>& modelObjects)
: OSGridController(isIP, headerText, iddObjectType, model, modelObjects, displayAdditionalProps) {
setCategoriesAndFields();
}

Expand All @@ -443,6 +448,11 @@ void FacilityShadingGridController::onCategorySelected(int index) {
}

void FacilityShadingGridController::addColumns(const QString& category, std::vector<QString>& fields) {

if (isDisplayAdditionalProps()) {
// We place it after the SHADINGSURFACENAME
fields.insert(std::next(fields.begin()), {DISPLAYNAME, CADOBJECTID});
}
// always show name and selected columns
// show type next to name, since it comes from the groups
fields.insert(fields.begin(), {NAME, TYPE, SELECTED});
Expand Down Expand Up @@ -472,7 +482,6 @@ void FacilityShadingGridController::addColumns(const QString& category, std::vec
CastNullAdapter<model::ShadingSurfaceGroup>(&model::ShadingSurfaceGroup::shadingSurfaceType),
CastNullAdapter<model::ShadingSurfaceGroup>(&model::ShadingSurfaceGroup::setShadingSurfaceType),
boost::optional<std::function<void(model::ShadingSurfaceGroup*)>>(), boost::optional<std::function<bool(model::ShadingSurfaceGroup*)>>());

} else {

std::function<std::vector<model::ModelObject>(const model::ShadingSurfaceGroup&)> allShadingSurfaces(
Expand All @@ -498,6 +507,22 @@ void FacilityShadingGridController::addColumns(const QString& category, std::vec
boost::optional<std::function<void(model::ShadingSurface*)>>(
std::function<void(model::ShadingSurface*)>([](model::ShadingSurface* t_ss) { t_ss->remove(); })),
boost::optional<std::function<bool(model::ShadingSurface*)>>(), DataSource(allShadingSurfaces, true));
} else if (field == DISPLAYNAME) {
addLoadNameColumn(Heading(QString(DISPLAYNAME), false, false), // heading
DisplayNameAdapter<model::ShadingSurface>(&model::ShadingSurface::displayName), // getter
DisplayNameAdapter<model::ShadingSurface>(&model::ShadingSurface::setDisplayName), // setter
boost::optional<std::function<void(model::ShadingSurface*)>>(), // resetter
boost::optional<std::function<bool(model::ShadingSurface*)>>(), // isDefaulted
DataSource(allShadingSurfaces, true) // t_source
);
} else if (field == CADOBJECTID) {
addLoadNameColumn(Heading(QString(CADOBJECTID), false, false), // heading
DisplayNameAdapter<model::ShadingSurface>(&model::ShadingSurface::cadObjectId), // getter
DisplayNameAdapter<model::ShadingSurface>(&model::ShadingSurface::setCADObjectId), // setter
boost::optional<std::function<void(model::ShadingSurface*)>>(), // resetter
boost::optional<std::function<bool(model::ShadingSurface*)>>(), // isDefaulted
DataSource(allShadingSurfaces, true) // t_source
);
} else if (field == CONSTRUCTIONNAME) {
addDropZoneColumn(
Heading(QString(CONSTRUCTIONNAME), true, false), CastNullAdapter<model::ShadingSurface>(&model::ShadingSurface::construction),
Expand Down
6 changes: 3 additions & 3 deletions src/openstudio_lib/FacilityShadingGridView.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class FacilityShadingGridView : public GridViewSubTab
Q_OBJECT

public:
FacilityShadingGridView(bool isIP, const model::Model& model, QWidget* parent = 0);
FacilityShadingGridView(bool isIP, bool displayAdditionalProps, const model::Model& model, QWidget* parent = 0);

virtual ~FacilityShadingGridView() {}

Expand Down Expand Up @@ -109,8 +109,8 @@ class FacilityShadingGridController : public OSGridController
Q_OBJECT

public:
FacilityShadingGridController(bool isIP, const QString& headerText, IddObjectType iddObjectType, const model::Model& model,
const std::vector<model::ModelObject>& modelObjects);
FacilityShadingGridController(bool isIP, bool displayAdditionalProps, const QString& headerText, IddObjectType iddObjectType,
const model::Model& model, const std::vector<model::ModelObject>& modelObjects);

virtual ~FacilityShadingGridController() {}

Expand Down
33 changes: 28 additions & 5 deletions src/openstudio_lib/FacilityStoriesGridView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@

#define NAME "Story Name"
#define SELECTED "All"
#define DISPLAYNAME "Display Name"
#define CADOBJECTID "CAD Object ID"

// GENERAL
#define NOMINALZCOORDINATE "Nominal Z Coordinate"
Expand All @@ -86,11 +88,13 @@

namespace openstudio {

FacilityStoriesGridView::FacilityStoriesGridView(bool isIP, const model::Model& model, QWidget* parent) : GridViewSubTab(isIP, model, parent) {
FacilityStoriesGridView::FacilityStoriesGridView(bool isIP, bool displayAdditionalProps, const model::Model& model, QWidget* parent)
: GridViewSubTab(isIP, displayAdditionalProps, model, parent) {
auto modelObjects = subsetCastVector<model::ModelObject>(m_model.getConcreteModelObjects<model::BuildingStory>());
std::sort(modelObjects.begin(), modelObjects.end(), openstudio::WorkspaceObjectNameLess());

m_gridController = new FacilityStoriesGridController(isIP, "Building Stories", IddObjectType::OS_BuildingStory, model, modelObjects);
m_gridController =
new FacilityStoriesGridController(isIP, displayAdditionalProps, "Building Stories", IddObjectType::OS_BuildingStory, model, modelObjects);
m_gridView = new OSGridView(m_gridController, "Building Stories", "Drop\nStory", false, parent);

setGridController(m_gridController);
Expand Down Expand Up @@ -240,9 +244,10 @@ void FacilityStoriesGridView::clearSelection() {
//m_itemSelectorButtons->disablePurgeButton();
}

FacilityStoriesGridController::FacilityStoriesGridController(bool isIP, const QString& headerText, IddObjectType iddObjectType,
const model::Model& model, const std::vector<model::ModelObject>& modelObjects)
: OSGridController(isIP, headerText, iddObjectType, model, modelObjects) {
FacilityStoriesGridController::FacilityStoriesGridController(bool isIP, bool displayAdditionalProps, const QString& headerText,
IddObjectType iddObjectType, const model::Model& model,
const std::vector<model::ModelObject>& modelObjects)
: OSGridController(isIP, headerText, iddObjectType, model, modelObjects, displayAdditionalProps) {
setCategoriesAndFields();
}

Expand All @@ -264,6 +269,10 @@ void FacilityStoriesGridController::onCategorySelected(int index) {
}

void FacilityStoriesGridController::addColumns(const QString& category, std::vector<QString>& fields) {

if (isDisplayAdditionalProps()) {
fields.insert(fields.begin(), {DISPLAYNAME, CADOBJECTID});
}
// always show name and selected columns
fields.insert(fields.begin(), {NAME, SELECTED});

Expand All @@ -274,6 +283,20 @@ void FacilityStoriesGridController::addColumns(const QString& category, std::vec
if (field == NAME) {
addParentNameLineEditColumn(Heading(QString(NAME), false, false), false, CastNullAdapter<model::BuildingStory>(&model::BuildingStory::name),
CastNullAdapter<model::BuildingStory>(&model::BuildingStory::setName));
} else if (field == DISPLAYNAME) {
addNameLineEditColumn(Heading(QString(DISPLAYNAME), false, false), // heading
false, // isInspectable
false, // isLocked
DisplayNameAdapter<model::BuildingStory>(&model::BuildingStory::displayName), // getter
DisplayNameAdapter<model::BuildingStory>(&model::BuildingStory::setDisplayName) // setter
);
} else if (field == CADOBJECTID) {
addNameLineEditColumn(Heading(QString(CADOBJECTID), false, false), // heading
false, // isInspectable
false, // isLocked
DisplayNameAdapter<model::BuildingStory>(&model::BuildingStory::cadObjectId), // getter
DisplayNameAdapter<model::BuildingStory>(&model::BuildingStory::setCADObjectId) // setter
);
} else if (field == SELECTED) {
auto checkbox = QSharedPointer<OSSelectAllCheckBox>(new OSSelectAllCheckBox());
checkbox->setToolTip("Check to select all rows");
Expand Down
6 changes: 3 additions & 3 deletions src/openstudio_lib/FacilityStoriesGridView.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class FacilityStoriesGridView : public GridViewSubTab
Q_OBJECT

public:
FacilityStoriesGridView(bool isIP, const model::Model& model, QWidget* parent = 0);
FacilityStoriesGridView(bool isIP, bool displayAdditionalProps, const model::Model& model, QWidget* parent = 0);

virtual ~FacilityStoriesGridView() = default;

Expand Down Expand Up @@ -86,8 +86,8 @@ class FacilityStoriesGridController : public OSGridController
Q_OBJECT

public:
FacilityStoriesGridController(bool isIP, const QString& headerText, IddObjectType iddObjectType, const model::Model& model,
const std::vector<model::ModelObject>& modelObjects);
FacilityStoriesGridController(bool isIP, bool displayAdditionalProps, const QString& headerText, IddObjectType iddObjectType,
const model::Model& model, const std::vector<model::ModelObject>& modelObjects);

virtual ~FacilityStoriesGridController() = default;

Expand Down
Loading

0 comments on commit 538a879

Please sign in to comment.