Commit | Line | Data |
7adfd53f |
1 | package Reaction::UI::Widget::ListView; |
2 | |
3 | use Reaction::UI::WidgetClass; |
7adfd53f |
4 | |
c8fbb8ad |
5 | class ListView is 'Reaction::UI::Widget::Collection::Grid', which { |
7adfd53f |
6 | |
664d660c |
7 | after fragment widget { |
8 | arg pager_obj => $_{viewport}->pager; |
9 | }; |
10 | |
aa8c0c90 |
11 | implements fragment actions { |
12 | render action => over $_{viewport}->actions; |
13 | }; |
b8faba69 |
14 | |
aa8c0c90 |
15 | implements fragment action { |
16 | render 'viewport'; |
17 | }; |
b8faba69 |
18 | |
aa8c0c90 |
19 | around fragment header_cell { |
20 | arg order_uri => event_uri { |
21 | order_by => $_, |
22 | order_by_desc => ((($_{viewport}->order_by||'') ne $_ |
23 | || $_{viewport}->order_by_desc) ? 0 : 1) |
b8faba69 |
24 | }; |
aa8c0c90 |
25 | call_next; |
26 | }; |
b8faba69 |
27 | |
aa8c0c90 |
28 | after fragment header_cells { |
29 | if ($_{viewport}->object_action_count) { |
30 | render 'header_action_cell'; |
31 | } |
32 | }; |
b8faba69 |
33 | |
aa8c0c90 |
34 | implements fragment header_action_cell { |
664d660c |
35 | arg col_count => $_{viewport}->object_action_count; |
36 | }; |
37 | |
38 | implements fragment page_list { |
39 | render numbered_page_fragment |
40 | => over [ $_{pager_obj}->first_page .. $_{pager_obj}->last_page ]; |
41 | }; |
42 | |
43 | implements fragment numbered_page_fragment { |
44 | arg page_uri => event_uri { page => $_ }; |
45 | arg page_number => $_; |
46 | if ($_{pager_obj}->current_page == $_) { |
47 | render 'numbered_page_this_page'; |
48 | } else { |
49 | render 'numbered_page'; |
50 | } |
51 | }; |
52 | |
53 | implements fragment first_page { |
54 | arg page_uri => event_uri { page => $_{pager_obj}->first_page }; |
55 | arg page_name => 'First'; |
56 | render 'named_page'; |
57 | }; |
58 | |
59 | implements fragment last_page { |
60 | arg page_uri => event_uri { page => $_{pager_obj}->last_page }; |
61 | arg page_name => 'Last'; |
62 | render 'named_page'; |
63 | }; |
64 | |
65 | implements fragment next_page { |
66 | arg page_name => 'Next'; |
67 | if (my $page = $_{pager_obj}->next_page) { |
68 | arg page_uri => event_uri { page => $page }; |
69 | render 'named_page'; |
70 | } else { |
71 | render 'named_page_no_page'; |
72 | } |
73 | }; |
74 | |
75 | implements fragment previous_page { |
76 | arg page_name => 'Previous'; |
77 | if (my $page = $_{pager_obj}->previous_page) { |
78 | arg page_uri => event_uri { page => $page }; |
79 | render 'named_page'; |
80 | } else { |
81 | render 'named_page_no_page'; |
82 | } |
b8faba69 |
83 | }; |
7adfd53f |
84 | |
85 | }; |
86 | |
87 | 1; |