program demopie;
{$MODE OBJFPC}
{$MODESWITCH EXTERNALCLASS}
uses
JS,
Web,
SysUtils,
ChartJS;
var
config: TChartConfiguration;
dataset: TChartBarDataset;
begin
TChart.defaults.global.tooltips.custom :=
procedure(const tooltip: TChartTooltipModel)
var
tooltipEl: TJSHTMLElement;
titleLines, bodyLines: TJSArray;
innerHtml, style, span: string;
colors: TChartTooltipReturnColors;
positionY, positionX: NativeUInt;
begin
tooltipEl := TJSHTMLElement(document.getElementById('chartjs-tooltip'));
// Hide if no tooltip
if tooltip.opacity = 0 then
begin
tooltipEl.style['opacity'] := 0;
Exit;
end;
// Set caret Position
tooltipEl.classList.remove('above', 'below', 'no-transform');
if Assigned(tooltip.yAlign) then
tooltipEl.classList.add(tooltip.yAlign)
else
tooltipEl.classList.add('no-transform');
// Set Text
if Assigned(tooltip.body) then
begin
if Assigned(tooltip.title_) then
titleLines := tooltip.title_
else
titleLines := TJSArray.new;
bodyLines := tooltip.body_.map(
function(bodyItem: JSValue; index: NativeInt; arr: TJSArray): JSValue
begin
Result := TChartTooltipModelBody(bodyItem).lines;
end);
innerHtml := '';
titleLines.forEach(
function(title: JSValue; index: NativeInt; arr: TJSArray): Boolean
begin
innerHtml += ' ';
Result := True;
end);
innerHtml += '' + string(title) + '