19declare(strict_types=1);
50 $this->
lng = $DIC->language();
51 $this->ui_factory =
$DIC->ui()->factory();
52 $this->ui_renderer =
$DIC->ui()->renderer();
53 $this->request =
$DIC->http()->request();
62 array $visible_column_ids,
65 mixed $additional_viewcontrol_data,
67 mixed $additional_parameters
71 $record[
'lti_timestamp'] =
new DateTimeImmutable($record[
'lti_timestamp']);
72 $record[
'score_given'] = $record[
'score_given'] .
' / ' . $record[
'score_maximum'];
73 $record[
'activity_progress'] = $this->
lng->txt(
'grade_activity_progress_' . strtolower($record[
'activity_progress']));
74 $record[
'grading_progress'] = $this->
lng->txt(
'grade_grading_progress_' . strtolower($record[
'grading_progress']));
75 $record[
'stored'] =
new DateTimeImmutable($record[
'stored']);
77 yield $row_builder->
buildDataRow((
string) $record[
'id'], $record);
82 mixed $additional_viewcontrol_data,
84 mixed $additional_parameters
86 return count($this->records);
91 $this->records = $records;
96 [$order_field, $order_direction] = $order->
join(
98 fn($ret, $key, $value) => [$key, $value]
101 usort($records,
static function (array $left, array $right) use ($order_field):
int {
102 $left_val = $left[$order_field] ??
'';
103 $right_val = $right[$order_field] ??
'';
105 if ($left_val instanceof DateTimeImmutable) {
106 $left_val = $left_val->getTimestamp();
108 if ($right_val instanceof DateTimeImmutable) {
109 $right_val = $right_val->getTimestamp();
112 return $left_val <=> $right_val;
115 if ($order_direction === Order::DESC) {
116 $records = array_reverse($records);
128 $table = $this->ui_factory->table()
129 ->data($this,
"", $this->getColumns())
130 ->withOrder(
new Order(
"lti_timestamp", Order::DESC))
131 ->withRange(
new Range(0, 20))
132 ->withRequest($this->request);
134 return $this->ui_renderer->render($table);
140 $df = new \ILIAS\Data\Factory();
144 "lti_timestamp" => $this->ui_factory->table()->column()->date($this->
lng->txt(
'tbl_grade_date'), $df->dateFormat()->withTime24(
$DIC->user()->getDateFormat())),
145 "actor" => $this->ui_factory->table()->column()->text($this->
lng->txt(
'tbl_grade_actor')),
146 "score_given" => $this->ui_factory->table()->column()->text($this->
lng->txt(
'tbl_grade_score')),
147 "activity_progress" => $this->ui_factory->table()->column()->text($this->
lng->txt(
'tbl_grade_activity_progress')),
148 "grading_progress" => $this->ui_factory->table()->column()->text($this->
lng->txt(
'tbl_grade_grading_progress')),
149 "stored" => $this->ui_factory->table()->column()->date($this->
lng->txt(
'tbl_grade_stored'), $df->dateFormat()->withTime24(
$DIC->user()->getDateFormat()))
Builds a Color from either hex- or rgb values.
Both the subject and the direction need to be specified when expressing an order.
join($init, callable $fn)
A simple class to express a naive range of whole positive numbers.
ILIAS UI Renderer $ui_renderer
__construct(bool $isMultiActorReport)
setRecords(array $records)
getTotalRowCount(mixed $additional_viewcontrol_data, mixed $filter_data, mixed $additional_parameters)
Mainly for the purpose of pagination-support, it is important to know about the total number of recor...
getRows(DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, mixed $additional_viewcontrol_data, mixed $filter_data, mixed $additional_parameters)
applyOrdering(array $records, Order $order, ?Range $range=null)
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
buildDataRow(string $id, array $record)
This is how the factory for UI elements looks.