19declare(strict_types=1);
32use Psr\Http\Message\ServerRequestInterface;
40 private readonly UIFactory $ui_factory,
42 private readonly ServerRequestInterface $request,
46 private readonly TestQuestionsRepository $questionrepository,
53 $table = $this->ui_factory->table()->ordering(
55 $this->table_actions->getOrderActionUrl(),
56 $this->lng->txt(
'list_of_questions'),
59 ->
withId((
string) $this->test_obj->getId())
60 ->withActions($this->table_actions->getActions())
61 ->withRequest($this->request);
63 if ($this->test_obj->isRandomTest()
64 || $this->test_obj->evalTotalPersons() !== 0) {
65 return $table->withOrderingDisabled(
true);
73 array $visible_column_ids
76 $row = $record->getAsQuestionsTableRow(
80 $this->table_actions->getQuestionTargetLinkBuilder(),
84 yield $this->table_actions->setDisabledActions($row, $record);
90 $f = $this->ui_factory;
92 'question_id' =>
$f->table()->column()->text($this->
lng->txt(
'question_id'))
93 ->withIsOptional(
true,
false),
94 'title' =>
$f->table()->column()->link($this->
lng->txt(
'tst_question_title')),
95 'description' =>
$f->table()->column()->text($this->
lng->txt(
'description'))
96 ->withIsOptional(
true,
false),
97 'complete' =>
$f->table()->column()->boolean(
98 $this->
lng->txt(
'question_complete_title'),
99 $f->symbol()->icon()->custom(
'assets/images/standard/icon_checked.svg',
'',
'small'),
100 $f->symbol()->icon()->custom(
'assets/images/standard/icon_alert.svg',
'',
'small')
102 'type_tag' =>
$f->table()->column()->text($this->
lng->txt(
'tst_question_type')),
103 'points' =>
$f->table()->column()->text($this->
lng->txt(
'points')),
104 'author' =>
$f->table()->column()->text($this->
lng->txt(
'author'))
105 ->withIsOptional(
true,
false),
106 'lifecycle' =>
$f->table()->column()->text($this->
lng->txt(
'qst_lifecycle'))
107 ->withIsOptional(
true,
false),
108 'qpl' =>
$f->table()->column()->link($this->
lng->txt(
'qpl')),
109 'nr_of_answers' =>
$f->table()->column()->number($this->
lng->txt(
'number_of_answers'))
110 ->withIsOptional(
true,
false),
111 'average_points' =>
$f->table()->column()->number($this->
lng->txt(
'average_reached_points'))
112 ->withIsOptional(
true,
false),
113 'percentage_points_achieved' =>
$f->table()->column()->text($this->
lng->txt(
'percentage_points_achieved'))
114 ->withIsOptional(
true,
false),
122 $this->table_actions->getActions();
127 $records = $this->questionrepository
128 ->getQuestionPropertiesWithAggregatedResultsForTest($this->test_obj);
131 static fn(TestQuestionProperties
$a, TestQuestionProperties
$b):
int =>
132 $a->getSequenceInformation()?->getPlaceInSequence() <=>
$b->getSequenceInformation()?->getPlaceInSequence()
Builds a Color from either hex- or rgb values.
getRows(OrderingRowBuilder $row_builder, array $visible_column_ids)
This is called by the (ordering-)table to retrieve rows; map data-records to rows using the $row_buil...
__construct(private readonly UIFactory $ui_factory, private readonly Refinery $refinery, private readonly ServerRequestInterface $request, private readonly QuestionsTableActions $table_actions, private readonly Language $lng, private readonly \ilObjTest $test_obj, private readonly TestQuestionsRepository $questionrepository, private readonly TitleColumnsBuilder $title_builder,)
This describes a Table to specify the order of its data (rows).
withId(string $id)
The DataTable comes with a storage to keep e.g.
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples