Skip to content

Commit 4aec3f3

Browse files
authored
[Bug]: [Custom Reports] Report Configuration not compatible to classic-ui (#1605)
* Added (de)hydrator for converting values from schema to core model * Apply php-cs-fixer changes * Adapted key for filterType to filter
1 parent fbc1792 commit 4aec3f3

7 files changed

Lines changed: 71 additions & 30 deletions

File tree

src/Bundle/CustomReport/Hydrator/ColumnHydrator.php

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public function getCustomReportColumnConfiguration(Config $report): array
6060
$column['id'] ?? '',
6161
is_int($width) ? $width : null,
6262
$column['displayType'] ?? null,
63-
$column['filterType'] ?? null,
64-
$column['filterDrilldown'] ?? null,
63+
$column['filter'] ?? null,
64+
$column['filter_drilldown'] ?? null,
6565
$metadata && $metadata->isDisableOrderBy(),
6666
$metadata && $metadata->isDisableFilterable(),
6767
$metadata && $metadata->isDisableDropdownFilterable(),
@@ -72,6 +72,28 @@ public function getCustomReportColumnConfiguration(Config $report): array
7272
return $columnConfig;
7373
}
7474

75+
public function dehydrateColumnConfiguration(array $columnConfigurations): array
76+
{
77+
$dehydrated = [];
78+
foreach ($columnConfigurations as $configuration) {
79+
$dehydrated[] = [
80+
'name' => $configuration['name'],
81+
'display' => $configuration['display'],
82+
'export' => $configuration['export'],
83+
'order' => $configuration['order'],
84+
'label' => $configuration['label'],
85+
'action' => $configuration['action'],
86+
'id' => $configuration['id'],
87+
'width' => $configuration['width'],
88+
'displayType' => $configuration['displayType'],
89+
'filter' => $configuration['filterType'],
90+
'filter_drilldown' => $configuration['filterDrilldown'],
91+
];
92+
}
93+
94+
return $dehydrated;
95+
}
96+
7597
private function getMetadataMap(Config $report): array
7698
{
7799
$adapter = $this->adapterService->getAdapter($report);

src/Bundle/CustomReport/Hydrator/ColumnHydratorInterface.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ interface ColumnHydratorInterface
2525
public function hydrateColumnInfo(ColumnInformation $information): CustomReportColumnInformation;
2626

2727
public function getCustomReportColumnConfiguration(Config $report): array;
28+
29+
public function dehydrateColumnConfiguration(array $columnConfigurations): array;
2830
}

src/Bundle/CustomReport/Hydrator/CustomReportHydrator.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportDrillDownOption;
2020
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportTreeConfigNode;
2121
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportTreeNode;
22+
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportUpdate;
23+
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Service\AdapterServiceInterface;
2224

2325
/**
2426
* @internal
@@ -27,6 +29,7 @@
2729
{
2830
public function __construct(
2931
private ColumnHydratorInterface $columnHydrator,
32+
private readonly AdapterServiceInterface $adapterService
3033
) {
3134
}
3235

@@ -93,4 +96,36 @@ public function hydrateDrillDownOption(array $drillDownData): CustomReportDrillD
9396
$drillDownData['value'] ?? ''
9497
);
9598
}
99+
100+
public function dehydrateReportDetails(
101+
Config $config,
102+
CustomReportUpdate $customReportUpdate
103+
): Config {
104+
$adapter = $this->adapterService->getAdapter($config);
105+
106+
$config->setSql($customReportUpdate->getSql());
107+
$config->setColumnConfiguration(
108+
$this->columnHydrator->dehydrateColumnConfiguration(
109+
$customReportUpdate->getColumnConfigurations()
110+
)
111+
);
112+
$config->setDataSourceConfig($customReportUpdate->getDataSourceConfig());
113+
$config->setNiceName($customReportUpdate->getNiceName());
114+
$config->setGroup($customReportUpdate->getGroup());
115+
$config->setGroupIconClass($customReportUpdate->getGroupIconClass());
116+
$config->setIconClass($customReportUpdate->getIconClass());
117+
$config->setMenuShortcut($customReportUpdate->getMenuShortcut());
118+
$config->setReportClass($customReportUpdate->getReportClass());
119+
$config->setChartType($customReportUpdate->getChartType());
120+
$config->setPieColumn($customReportUpdate->getPieColumn());
121+
$config->setPieLabelColumn($customReportUpdate->getPieLabelColumn());
122+
$config->setXAxis($customReportUpdate->getXAxis());
123+
$config->setYAxis($customReportUpdate->getYAxis());
124+
$config->setShareGlobally($customReportUpdate->getSharedGlobally());
125+
$config->setSharedUserNames($customReportUpdate->getSharedUserNames());
126+
$config->setSharedRoleNames($customReportUpdate->getSharedRoleNames());
127+
$config->setPagination($adapter->getPagination());
128+
129+
return $config;
130+
}
96131
}

src/Bundle/CustomReport/Hydrator/CustomReportHydratorInterface.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportDrillDownOption;
2020
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportTreeConfigNode;
2121
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportTreeNode;
22+
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportUpdate;
2223

2324
/**
2425
* @internal
@@ -34,4 +35,9 @@ public function extractTreeData(Config $report): CustomReportTreeNode;
3435
public function extractChartData(array $chartData): CustomReportChartData;
3536

3637
public function hydrateDrillDownOption(array $drillDownData): CustomReportDrillDownOption;
38+
39+
public function dehydrateReportDetails(
40+
Config $config,
41+
CustomReportUpdate $customReportUpdate
42+
): Config;
3743
}

src/Bundle/CustomReport/Repository/CustomReportRepository.php

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
use Pimcore\Bundle\CustomReportsBundle\Tool\Config;
1818
use Pimcore\Bundle\CustomReportsBundle\Tool\Config\Listing;
1919
use Pimcore\Bundle\StaticResolverBundle\Models\Tool\CustomReportResolverInterface;
20-
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportUpdate;
21-
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Service\AdapterServiceInterface;
2220
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException;
2321
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotWriteableException;
2422
use Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityServiceInterface;
@@ -33,7 +31,6 @@ final class CustomReportRepository implements CustomReportRepositoryInterface
3331
use JsonHelperTrait;
3432

3533
public function __construct(
36-
private readonly AdapterServiceInterface $adapterService,
3734
private readonly SecurityServiceInterface $securityService,
3835
private readonly CustomReportResolverInterface $customReportResolver
3936
) {
@@ -106,7 +103,7 @@ public function create(string $name): Config
106103
/**
107104
* {@inheritdoc}
108105
*/
109-
public function update(Config $config, CustomReportUpdate $parameters): Config
106+
public function update(Config $config): Config
110107
{
111108
if (!$config->isWriteable()) {
112109
throw new NotWriteableException(
@@ -115,27 +112,6 @@ public function update(Config $config, CustomReportUpdate $parameters): Config
115112
);
116113
}
117114

118-
$adapter = $this->adapterService->getAdapter($config);
119-
120-
$config->setSql($parameters->getSql());
121-
$config->setColumnConfiguration($parameters->getColumnConfigurations());
122-
$config->setDataSourceConfig($parameters->getDataSourceConfig());
123-
$config->setNiceName($parameters->getNiceName());
124-
$config->setGroup($parameters->getGroup());
125-
$config->setGroupIconClass($parameters->getGroupIconClass());
126-
$config->setIconClass($parameters->getIconClass());
127-
$config->setMenuShortcut($parameters->getMenuShortcut());
128-
$config->setReportClass($parameters->getReportClass());
129-
$config->setChartType($parameters->getChartType());
130-
$config->setPieColumn($parameters->getPieColumn());
131-
$config->setPieLabelColumn($parameters->getPieLabelColumn());
132-
$config->setXAxis($parameters->getXAxis());
133-
$config->setYAxis($parameters->getYAxis());
134-
$config->setShareGlobally($parameters->getSharedGlobally());
135-
$config->setSharedUserNames($parameters->getSharedUserNames());
136-
$config->setSharedRoleNames($parameters->getSharedRoleNames());
137-
$config->setPagination($adapter->getPagination());
138-
139115
$config->save();
140116

141117
return $config;

src/Bundle/CustomReport/Repository/CustomReportRepositoryInterface.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
namespace Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Repository;
1515

1616
use Pimcore\Bundle\CustomReportsBundle\Tool\Config;
17-
use Pimcore\Bundle\StudioBackendBundle\Bundle\CustomReport\Schema\CustomReportUpdate;
1817
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException;
1918
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotWriteableException;
2019
use Pimcore\Model\User;
@@ -43,7 +42,7 @@ public function create(string $name): Config;
4342
/**
4443
* @throws NotWriteableException
4544
*/
46-
public function update(Config $config, CustomReportUpdate $parameters): Config;
45+
public function update(Config $config): Config;
4746

4847
/**
4948
* @throws NotWriteableException

src/Bundle/CustomReport/Service/CustomReportService.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ public function createCustomReport(CustomReportAdd $parameters): CustomReportDet
115115
public function updateCustomReport(string $name, CustomReportUpdate $parameters): CustomReportDetails
116116
{
117117
$customReport = $this->getCustomReportByName($name);
118-
$config = $this->customReportRepository->update($customReport, $parameters);
118+
$this->customReportHydrator->dehydrateReportDetails($customReport, $parameters);
119+
$config = $this->customReportRepository->update($customReport);
119120

120121
return $this->customReportHydrator->extractReportDetails($config);
121122
}

0 commit comments

Comments
 (0)