Skip to content

Commit fa627a5

Browse files
committed
Group parameter page by parameter type
1 parent 4cd75d2 commit fa627a5

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

activity_browser/app/pages/parameters/parameters_new.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def sync(self):
102102
df = self.build_df()
103103
df.reset_index(drop=True, inplace=True)
104104
self.model.set_dataframe(df)
105-
self.model.group(["_scope"])
105+
self.model.group(["_param_type", "_scope"])
106106
self.view.expandAll()
107107

108108
exchanges_df = self.build_exchanges_df()
@@ -126,20 +126,20 @@ def build_df(self) -> pd.DataFrame:
126126

127127
# Project parameters
128128
for param in ProjectParameter.select():
129-
row = self._parameter_to_row(param, "Current project", None)
129+
row = self._parameter_to_row(param)
130130
translated.append(row)
131131

132132
# Database parameters
133133
for param in DatabaseParameter.select():
134-
row = self._parameter_to_row(param, f"Database: {param.database}", param.database)
134+
row = self._parameter_to_row(param, "{param.database}", param.database)
135135
translated.append(row)
136136

137137
# Activity parameters
138138
for param in ActivityParameter.select():
139139
row = self._parameter_to_row(param, f"Group: {param.group}", param.database)
140140
translated.append(row)
141141

142-
columns = ["name", "amount", "formula", "uncertainty", "comment", "_parameter", "_scope", "_database", "_group"]
142+
columns = ["name", "amount", "formula", "uncertainty", "comment", "_parameter", "_scope", "_database", "_group", "_param_type"]
143143
df = pd.DataFrame(translated, columns=columns)
144144
df["_is_new"] = False
145145

@@ -149,7 +149,6 @@ def build_df(self) -> pd.DataFrame:
149149
# Add for project
150150
new_rows.append({
151151
"name": "New parameter...",
152-
"_scope": "Current project",
153152
"_group": "project",
154153
"_param_type": "project",
155154
"_is_new": True,
@@ -160,23 +159,23 @@ def build_df(self) -> pd.DataFrame:
160159
if not bd.databases[db_name].get("read_only", True):
161160
new_rows.append({
162161
"name": "New parameter...",
163-
"_scope": f"Database: {db_name}",
162+
"_scope": f"{db_name}",
164163
"_database": db_name,
165164
"_group": db_name,
166165
"_param_type": "database",
167166
"_is_new": True,
168167
})
169168

170169
# Add for each activity group
171-
activity_params = df[df._scope.str.startswith("Group: ", na=False)]
170+
activity_params = df[df._scope.str.startswith("group: ", na=False)]
172171
groups = activity_params._group.unique() if len(activity_params) > 0 else []
173172
for group_name in sorted(groups):
174173
group_data = activity_params[activity_params._group == group_name]
175174
db_name = group_data.iloc[0]._database if len(group_data) > 0 else None
176175
if db_name and db_name in bd.databases and not bd.databases[db_name].get("read_only", True):
177176
new_rows.append({
178177
"name": "New parameter...",
179-
"_scope": f"Group: {group_name}",
178+
"_scope": f"group: {group_name}",
180179
"_database": db_name,
181180
"_group": group_name,
182181
"_param_type": "activity",
@@ -188,9 +187,9 @@ def build_df(self) -> pd.DataFrame:
188187
new_df = pd.DataFrame(new_rows)
189188
df = pd.concat([df, new_df], ignore_index=True)
190189

191-
return df
190+
return df.sort_values(by="_param_type", key= lambda c: c.map({"project": 0, "database": 1, "activity": 2}))
192191

193-
def _parameter_to_row(self, param, scope_label: str, database: str = None) -> dict:
192+
def _parameter_to_row(self, param, scope_label: str = None, database: str = None) -> dict:
194193
"""
195194
Converts a parameter to a row dictionary.
196195
@@ -208,12 +207,15 @@ def _parameter_to_row(self, param, scope_label: str, database: str = None) -> di
208207
if isinstance(param, ProjectParameter):
209208
parameter = Parameter(param.name, "project", data.get("amount"), data, "project")
210209
group = "project"
210+
param_type = "project"
211211
elif isinstance(param, DatabaseParameter):
212212
parameter = Parameter(param.name, param.database, data.get("amount"), data, "database")
213213
group = param.database
214+
param_type = "database"
214215
elif isinstance(param, ActivityParameter):
215216
parameter = Parameter(param.name, param.group, data.get("amount"), data, "activity")
216217
group = param.group
218+
param_type = "activity"
217219
else:
218220
raise ValueError(f"Unknown parameter type: {type(param)}")
219221

@@ -223,6 +225,7 @@ def _parameter_to_row(self, param, scope_label: str, database: str = None) -> di
223225
"uncertainty": parameter.uncertainty,
224226
"formula": data.get("formula"),
225227
"comment": data.get("comment"),
228+
"_param_type": param_type,
226229
"_parameter": parameter,
227230
"_scope": scope_label,
228231
"_database": database,

0 commit comments

Comments
 (0)