N°3531 - Activity panel: Restore possibility to load extra history entries asynchroniously

This commit is contained in:
Molkobain
2021-03-16 22:29:36 +01:00
parent 190ac1a65a
commit b97e2839c5
10 changed files with 394 additions and 63 deletions

View File

@@ -46,10 +46,10 @@ class ActivityPanelController
* 'success' => true,
* 'entries' => [
* '<ATT_CODE_1>' => [
* html_rendering => '<HTML_RENDERING_TO_BE_APPEND_IN_FRONT_END>',
* 'html_rendering' => '<HTML_RENDERING_TO_BE_APPEND_IN_FRONT_END>',
* ],
* '<ATT_CODE_2>' => [
* html_rendering => '<HTML_RENDERING_TO_BE_APPEND_IN_FRONT_END>',
* 'html_rendering' => '<HTML_RENDERING_TO_BE_APPEND_IN_FRONT_END>',
* ],
* ...
* ],
@@ -115,4 +115,59 @@ class ActivityPanelController
return $aResults;
}
/**
* Load next entries chunk
*
* @return array Entries already rendered and metadata for pagination
* [
* 'success' => true,
* 'entries' => [
* ['html_rendering' => '<HTML_RENDERING>'],
* ['html_rendering' => '<HTML_RENDERING>'],
* ...
* ],
* 'last_loaded_entries_ids' => [
* 'cmdbchangeop' => <LAST_ENTRY_ID>,
* ],
* ]
*
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \ReflectionException
* @throws \Twig\Error\LoaderError
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
*/
public static function LoadMoreEntries(): array
{
$sObjectClass = utils::ReadPostedParam('object_class', null, utils::ENUM_SANITIZATION_FILTER_CLASS);
$sObjectId = utils::ReadPostedParam('object_id', 0);
$aLastLoadedEntriesIds = utils::ReadPostedParam('last_loaded_entries_ids', [], utils::ENUM_SANITIZATION_FILTER_RAW_DATA);
$aResults = [
'success' => true,
'entries' => [],
'last_loaded_entries_ids' => [],
];
// CMDBChangeOp entries
if (array_key_exists('cmdbchangeop', $aLastLoadedEntriesIds)) {
$aChangesData = ActivityPanelHelper::GetCMDBChangeOpEditsEntriesForObject($sObjectClass, $sObjectId, $aLastLoadedEntriesIds['cmdbchangeop']);
if (true === $aChangesData['more_entries_to_load']) {
$aResults['last_loaded_entries_ids']['cmdbchangeop'] = $aChangesData['last_loaded_entry_id'];
}
/** @var \Combodo\iTop\Application\UI\Base\Layout\ActivityPanel\ActivityEntry\EditsEntry $oEntryBlock */
foreach ($aChangesData['entries'] as $oEntryBlock) {
$sEntryAsHtml = BlockRenderer::RenderBlockTemplates($oEntryBlock);
$aResults['entries'][] = [
'html_rendering' => $sEntryAsHtml,
];
}
}
return $aResults;
}
}