19declare(strict_types=1);
31 return new I\Component\Chart\Bar\Factory();
42 public function listing(): I\Component\Listing\Factory
44 return new I\Component\Listing\Factory(
46 new I\
Component\Listing\CharacteristicValue\Factory(),
57 $c_dimension = $df->dimension()->cardinal();
59 $dataset = $df->dataset([
"Dataset" => $c_dimension]);
60 $dataset = $dataset->withPoint(
"Item", [
"Dataset" => 0]);
69 $c_dimension = $df->dimension()->cardinal();
70 $t_dimension = $df->dimension()->range($c_dimension);
72 $dataset = $df->dataset([
"Dataset 1" => $c_dimension,
"Dataset 2" => $t_dimension]);
73 $dataset = $dataset->withPoint(
"Item 1", [
"Dataset 1" => -1.25,
"Dataset 2" => [-2, -1]]);
74 $dataset = $dataset->withPoint(
"Item 2", [
"Dataset 1" =>
null,
"Dataset 2" => [0, 0.5]]);
83 $this->assertInstanceOf(
"ILIAS\\UI\\Component\\Chart\\Bar\\Factory",
$f);
92 $horizontal =
$f->horizontal(
97 $this->assertInstanceOf(
"ILIAS\\UI\\Component\\Chart\\Bar\\Bar", $horizontal);
98 $this->assertInstanceOf(
"ILIAS\\UI\\Component\\Chart\\Bar\\Horizontal", $horizontal);
100 $vertical =
$f->vertical(
104 $this->assertInstanceOf(
"ILIAS\\UI\\Component\\Chart\\Bar\\Bar", $vertical);
105 $this->assertInstanceOf(
"ILIAS\\UI\\Component\\Chart\\Bar\\Vertical", $vertical);
113 $c_dimension = $df->dimension()->cardinal();
115 $dataset = $df->dataset([
"Dataset" => $c_dimension]);
117 $this->expectException(LogicException::class);
118 $this->expectExceptionMessage(
"Dataset must not be empty.");
119 $horizontal =
$f->horizontal(
151 $horizontal =
$f->horizontal(
155 $horizontal1 = $horizontal->withTitle(
"Alternative title for Horizontal Bar");
157 $this->assertEquals(
"Horizontal Bar", $horizontal->getTitle());
158 $this->assertEquals(
"Alternative title for Horizontal Bar", $horizontal1->getTitle());
167 $horizontal =
$f->horizontal(
171 $horizontal1 = $horizontal->withTitleVisible(
false);
173 $this->assertEquals(
true, $horizontal->isTitleVisible());
174 $this->assertEquals(
false, $horizontal1->isTitleVisible());
183 $horizontal =
$f->horizontal(
187 $horizontal1 = $horizontal->withTooltipsVisible(
false);
189 $this->assertEquals(
true, $horizontal->isTooltipsVisible());
190 $this->assertEquals(
false, $horizontal1->isTooltipsVisible());
199 $horizontal =
$f->horizontal(
203 $horizontal1 = $horizontal->withLegendVisible(
false);
205 $this->assertEquals(
true, $horizontal->isLegendVisible());
206 $this->assertEquals(
false, $horizontal1->isLegendVisible());
215 $horizontal =
$f->horizontal(
219 $horizontal1 = $horizontal->withLegendPosition(
"left");
221 $this->assertEquals(
"top", $horizontal->getLegendPosition());
222 $this->assertEquals(
"left", $horizontal1->getLegendPosition());
231 $horizontal =
$f->horizontal(
236 $this->expectException(InvalidArgumentException::class);
237 $this->expectExceptionMessage(
"Position must be 'bottom', 'top', 'left' or 'right'.");
239 $horizontal = $horizontal->withLegendPosition(
"middle");
249 $horizontal =
$f->horizontal(
253 $horizontal1 = $horizontal->withDataset($e_dataset);
255 $this->assertEquals($s_dataset, $horizontal->getDataset());
256 $this->assertEquals($e_dataset, $horizontal1->getDataset());
266 $bc =
new C\Chart\Bar\BarConfig();
267 $bc = $bc->withColor($df->color(
"#d38000"));
273 $horizontal =
$f->horizontal(
277 $horizontal1 = $horizontal->withBarConfigs($bars);
279 $this->assertEquals([], $horizontal->getBarConfigs());
280 $this->assertEquals($bars, $horizontal1->getBarConfigs());
290 $gc =
new C\Chart\Bar\GroupConfig();
291 $gc = $gc->withStacked();
297 $horizontal =
$f->horizontal(
301 $horizontal1 = $horizontal->withGroupConfigs($groups);
303 $this->assertEquals([], $horizontal->getGroupConfigs());
304 $this->assertEquals($groups, $horizontal1->getGroupConfigs());
314 $horizontal =
$f->horizontal(
319 $this->assertEquals(
"y", $horizontal->getIndexAxis());
321 $vertical =
$f->vertical(
326 $this->assertEquals(
"x", $vertical->getIndexAxis());
331 $r = $this->getDefaultRenderer();
336 $horizontal =
$f->horizontal(
341 $html = $r->render($horizontal);
343 $expected_html = <<<EOT
344<div
class=
"il-chart-bar-horizontal">
345 <canvas
id=
"id_1" height=
"150" aria-label=
"bar123" role=
"img"></canvas>
359 $this->assertHTMLEquals(
"<div>" . $expected_html .
"</div>",
"<div>" . $html .
"</div>");
364 $r = $this->getDefaultRenderer();
369 $vertical =
$f->vertical(
374 $html = $r->render($vertical);
376 $expected_html = <<<EOT
377<div
class=
"il-chart-bar-vertical">
378 <canvas
id=
"id_1" height=
"165" aria-label=
"bar123" role=
"img"></canvas>
385 <li>Item 1: -1.25</li>
392 <li>Item 1: -2 - -1</li>
393 <li>Item 2: 0 - 0.5</li>
400 $this->assertHTMLEquals(
"<div>" . $expected_html .
"</div>",
"<div>" . $html .
"</div>");
406 "ampersand" => [
"this&that",
"this&that"],
407 "single quote" => [
"it's a kind of magic",
"it's a kind of magic"],
408 "double quote" => [
'Dwayne "The Rock" Johnson',
'Dwayne "The Rock" Johnson'],
409 "tags" => [
'<script>alert("XSS")</script>',
'<script>alert("XSS")</script>'],
418 string $expected_in_html
420 $r = $this->getDefaultRenderer();
424 $c_dimension = $df->dimension()->cardinal();
426 $dataset = $df->dataset([$risky_datum => $c_dimension]);
427 $dataset = $dataset->withPoint(
"Item", [$risky_datum => 123]);
429 $vertical =
$f->vertical(
434 $html = $r->render($vertical);
436 $expected_html = <<<EOT
437<div
class=
"il-chart-bar-vertical">
438 <canvas
id=
"id_1" height=
"150" aria-label=
"bar123" role=
"img"></canvas>
442 <dt>$expected_in_html</dt>
452 $this->assertHTMLEquals(
"<div>" . $expected_html .
"</div>",
"<div>" . $html .
"</div>");
460 string $expected_in_html
462 $r = $this->getDefaultRenderer();
463 $f = $this->getFactory();
466 $c_dimension = $df->dimension()->cardinal();
468 $dataset = $df->dataset([
"Dataset" => $c_dimension]);
469 $dataset = $dataset->withPoint($risky_datum, [
"Dataset" => 123]);
471 $vertical =
$f->vertical(
476 $html = $r->render($vertical);
478 $expected_html = <<<EOT
479<div
class=
"il-chart-bar-vertical">
480 <canvas
id=
"id_1" height=
"150" aria-label=
"bar123" role=
"img"></canvas>
487 <li>$expected_in_html: 123</li>
494 $this->assertHTMLEquals(
"<div>" . $expected_html .
"</div>",
"<div>" . $html .
"</div>");
Test on Bar Chart implementation.
testWithLegendInvisible()
static provideRiskyData()
testRenderConvertSpecialCharactersInItemLabel(string $risky_datum, string $expected_in_html)
@dataProvider provideRiskyData
testRenderConvertSpecialCharactersInDatasetLabel(string $risky_datum, string $expected_in_html)
@dataProvider provideRiskyData
testWithTooltipsInvisible()
testWithInvalidLegendPosition()
testImplementsFactoryInterface()
Provides common functionality for UI tests.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.