Files
iTop/sources/Application/UI/Base/Component/Dashlet/DashletBadge.php

242 lines
4.6 KiB
PHP

<?php
/**
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
namespace Combodo\iTop\Application\UI\Base\Component\Dashlet;
use Combodo\iTop\Application\UI\Base\tJSRefreshCallback;
use utils;
class DashletBadge extends DashletContainer
{
use tJSRefreshCallback;
public const BLOCK_CODE = 'ibo-dashlet-badge';
public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/dashlet/dashlet-badge';
public const DEFAULT_JS_ON_READY_TEMPLATE_REL_PATH = 'base/components/dashlet/dashlet-badge';
public const DEFAULT_JS_FILES_REL_PATH = [
'js/components/dashlet/dashlet-badge.js',
];
/** @var string */
protected $sClassIconUrl;
/** @var string */
protected $sHyperlink;
/** @var string */
protected $iCount;
/** @var string */
protected $sClassLabel;
/**
* @var string
* @since 3.1.1 3.2.0
*/
protected $sClassDescription;
/** @var string */
protected $sCreateActionUrl;
/** @var string */
protected $sCreateActionLabel;
/** @var array */
protected $aRefreshParams;
/**
* DashletBadge constructor.
*
* @param string $sClassIconUrl
* @param string $sHyperlink
* @param string $iCount
* @param string $sClassLabel
* @param string|null $sCreateActionUrl
* @param string|null $sCreateActionLabel
* @param array $aRefreshParams
*/
public function __construct(
string $sClassIconUrl,
string $sHyperlink,
string $iCount,
string $sClassLabel,
?string $sCreateActionUrl = '',
?string $sCreateActionLabel = '',
array $aRefreshParams = []
) {
parent::__construct();
$this->sClassIconUrl = $sClassIconUrl;
$this->sHyperlink = $sHyperlink;
$this->iCount = $iCount;
$this->sClassLabel = $sClassLabel;
$this->sCreateActionUrl = $sCreateActionUrl;
$this->sCreateActionLabel = $sCreateActionLabel;
$this->aRefreshParams = $aRefreshParams;
$this->sClassDescription = '';
}
/**
* @return string
*/
public function GetCreateActionUrl(): ?string
{
return $this->sCreateActionUrl;
}
/**
* @param string|null $sCreateActionUrl
*
* @return DashletBadge
*/
public function SetCreateActionUrl(?string $sCreateActionUrl)
{
$this->sCreateActionUrl = $sCreateActionUrl;
return $this;
}
/**
* @return string
*/
public function GetCreateActionLabel(): ?string
{
return $this->sCreateActionLabel;
}
/**
* @param string|null $sCreateActionLabel
*
* @return DashletBadge
*/
public function SetCreateActionLabel(?string $sCreateActionLabel)
{
$this->sCreateActionLabel = $sCreateActionLabel;
return $this;
}
/**
* @return string
*/
public function GetClassIconUrl(): string
{
return $this->sClassIconUrl;
}
/**
* @param string $sClassIconUrl
*
* @return DashletBadge
*/
public function SetClassIconUrl(string $sClassIconUrl)
{
$this->sClassIconUrl = $sClassIconUrl;
return $this;
}
/**
* @return string
*/
public function GetHyperlink(): string
{
return $this->sHyperlink;
}
/**
* @param string $sHyperlink
*
* @return DashletBadge
*/
public function SetHyperlink(string $sHyperlink)
{
$this->sHyperlink = $sHyperlink;
return $this;
}
/**
* @return string
*/
public function GetCount(): string
{
return $this->iCount;
}
/**
* @param string $iCount
*
* @return DashletBadge
*/
public function SetCount(string $iCount)
{
$this->iCount = $iCount;
return $this;
}
/**
* @return string
*/
public function GetClassLabel(): string
{
return $this->sClassLabel;
}
/**
* @param string $sClassLabel
*
* @return DashletBadge
*/
public function SetClassLabel(string $sClassLabel)
{
$this->sClassLabel = $sClassLabel;
return $this;
}
/**
* @return string
* @since 3.1.1 3.2.0
*/
public function GetClassDescription(): string
{
return $this->sClassDescription;
}
/**
* @param string $sClassDescription
*
* @return DashletBadge
* @since 3.1.1 3.2.0
*/
public function SetClassDescription(string $sClassDescription)
{
$this->sClassDescription = $sClassDescription;
return $this;
}
/**
* @return bool
* @since 3.1.1
*/
public function HasClassDescription(): bool
{
return utils::IsNotNullOrEmptyString($this->sClassDescription);
}
public function GetJSRefresh(): string
{
return "$('#".$this->sId."').block();
$.post('ajax.render.php?operation=refreshDashletCount&style=count',
".json_encode($this->aRefreshParams).",
function(data){
$('#".$this->sId."').find('.ibo-dashlet-badge--action-list-count').html(data.count);
$('#".$this->sId."').unblock();
});
$('#".$this->sId."').unblock();";
}
}