Skip to content

Commit 4e771ca

Browse files
committed
fix(UsageImpact): allow reset if only gwp was calculated
1 parent 8083fde commit 4e771ca

3 files changed

Lines changed: 19 additions & 8 deletions

File tree

front/usageimpact.form.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,20 @@
6060
);
6161
Html::back();
6262
} else if (isset($_POST['reset'])) {
63-
if (!isset($_POST['id'])) {
63+
if (!isset($_POST['itemtype']) || !isset($_POST['items_id'])) {
6464
Session::addMessageAfterRedirect(__('Missing arguments in request.', 'carbon'), false, ERROR);
6565
Html::back();
6666
}
6767
$usage_impact = new UsageImpact();
68-
$usage_impact->check($_POST['id'], PURGE);
68+
$usage_impact->getFromDBByCrit([
69+
'itemtype' => $_POST['itemtype'],
70+
'items_id' => $_POST['items_id'],
71+
]);
72+
if (!$usage_impact->isNewItem()) {
73+
$usage_impact->check($usage_impact->getID(), PURGE);
74+
}
6975

70-
$gwp_impact_class = '\\GlpiPlugin\\Carbon\\Impact\\History\\' . $usage_impact->fields['itemtype'];
76+
$gwp_impact_class = '\\GlpiPlugin\\Carbon\\Impact\\History\\' . $_POST['itemtype'];
7177
if (!class_exists($gwp_impact_class) || !is_subclass_of($gwp_impact_class, AbstractAsset::class)) {
7278
Session::addMessageAfterRedirect(__('Bad arguments.', 'carbon'), false, ERROR);
7379
Html::back();
@@ -77,17 +83,17 @@
7783
$gwp_impact = new $gwp_impact_class();
7884
$itemtype = $gwp_impact->getItemtype();
7985
$item = new $itemtype();
80-
$item->getFromDB($usage_impact->fields['items_id']);
86+
$item->getFromDB($_POST['items_id']);
8187
if (!$item->canUpdateItem()) {
8288
Session::addMessageAfterRedirect(__('Reset denied.', 'carbon'), false, ERROR);
8389
Html::back();
8490
}
8591

86-
if (!$gwp_impact->resetForItem($usage_impact->fields['items_id'])) {
92+
if (!$gwp_impact->resetForItem($item->getID())) {
8793
Session::addMessageAfterRedirect(__('Reset failed.', 'carbon'), false, ERROR);
8894
}
8995

90-
if (!$usage_impact->delete($usage_impact->fields)) {
96+
if (!$usage_impact->isNewItem() && !$usage_impact->delete($usage_impact->fields)) {
9197
Session::addMessageAfterRedirect(__('Delete of usage impact failed.', 'carbon'), false, ERROR);
9298
}
9399
} else if (isset($_POST['calculate'])) {

src/UsageInfo.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,10 @@ public static function showCharts(CommonDBTM $asset)
204204
// TODO: decide if we show or not this impact.
205205
unset($usage_impact->fields['pe']);
206206
}
207+
$usage_carbon_emission_count = countElementsInTable(CarbonEmission::getTable(), [
208+
'itemtype' => $asset->getType(),
209+
'items_id' => $asset->getID(),
210+
]);
207211

208212
$data = Provider::getUsageCarbonEmissionPerMonth([
209213
'itemtype' => $asset->getType(),
@@ -248,6 +252,7 @@ public static function showCharts(CommonDBTM $asset)
248252
TemplateRenderer::getInstance()->display('@carbon/environmentalimpact-item.html.twig', [
249253
'usage_info' => $usage_info,
250254
'asset' => $asset,
255+
'usage_carbon_emission_count' => $usage_carbon_emission_count,
251256
'embodied_impact' => $embodied_impact,
252257
'usage_impact' => $usage_impact,
253258
'usage_carbon_emission_graph' => Widget::DisplayGraphUsageCarbonEmissionPerMonth($data),

templates/environmentalimpact-item.html.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@
5858
</div>
5959

6060
<div>
61-
{% if not usage_impact.isNewItem() %}
62-
{% set reset_args = "{_glpi_csrf_token: '" ~ csrf_token() ~ "', reset: '', id: '" ~ usage_impact.getID() ~ "'}" %}
61+
{% if not usage_impact.isNewItem() or usage_carbon_emission_count > 0 %}
62+
{% set reset_args = "{_glpi_csrf_token: '" ~ csrf_token() ~ "', reset: '', itemtype: '" ~ asset.getType() ~ "', items_id: '" ~ asset.getID() ~ "'}" %}
6363
<a class="btn btn-primary" onclick="submitGetLink('{{ usage_impact_action_url}}', {{ reset_args }})">{{ __('Reset data', 'carbon') }}</a>
6464
{% endif %}
6565
{% set calculate_args = "{_glpi_csrf_token: '" ~ csrf_token() ~ "', calculate: '', itemtype: '" ~ asset.getType() ~ "', items_id: '" ~ asset.getID() ~ "'}" %}

0 commit comments

Comments
 (0)