1 |
package Frey::View::Exhibit; |
2 |
use Moose; |
3 |
|
4 |
extends 'Frey'; |
5 |
with 'Frey::Web'; |
6 |
|
7 |
use MooseX::Types::Moose qw(Str Int ArrayRef); |
8 |
use MooseX::Types::Structured qw/Dict/; |
9 |
|
10 |
use Data::Dump qw/dump/; |
11 |
|
12 |
=head1 DESCRIPTION |
13 |
|
14 |
present C<sponge> as Exhibit from L<http://simile.mit.edu/exhibit/> |
15 |
|
16 |
=cut |
17 |
|
18 |
has sponge => ( |
19 |
is => 'rw', |
20 |
isa => Dict[ |
21 |
rows => ArrayRef[ArrayRef], |
22 |
NAME => ArrayRef[Str], |
23 |
], |
24 |
# required => 1, |
25 |
); |
26 |
|
27 |
sub data { |
28 |
my ($self) = @_; |
29 |
|
30 |
confess "need sponge" unless $self->sponge; |
31 |
|
32 |
my $items; |
33 |
my $names = $self->sponge->{NAME}; |
34 |
|
35 |
foreach my $row ( @{ $self->sponge->{rows} } ) { |
36 |
my $item; |
37 |
map { $item->{ $names->[$_] } = $row->[$_] } ( 0 .. $#{ $row } ); |
38 |
push @{ $items->{items} }, $item; |
39 |
} |
40 |
|
41 |
return $items; |
42 |
} |
43 |
|
44 |
sub depends { |
45 |
my ($self) = @_; |
46 |
$self->add_head(qq{ |
47 |
<link href="/Frey::Pipe/markup?pipe=Frey::DelIcioUs/sponge|Frey::View::Exhibit/data|Frey::JSON/markup" |
48 |
type="application/json" rel="exhibit/data" /> |
49 |
}); |
50 |
$self->add_head(qq| |
51 |
<script src="http://static.simile.mit.edu/exhibit/api-2.0/exhibit-api.js" |
52 |
type="text/javascript"></script> |
53 |
|); |
54 |
warn "# depends"; |
55 |
} |
56 |
|
57 |
sub markup { |
58 |
my ($self) = @_; |
59 |
|
60 |
return qq| |
61 |
<table width="100%"> |
62 |
<tr valign="top"> |
63 |
<td ex:role="viewPanel"> |
64 |
<div ex:role="view"></div> |
65 |
</td> |
66 |
<td width="25%"> |
67 |
browsing controls here... |
68 |
</td> |
69 |
</tr> |
70 |
</table> |
71 |
|; |
72 |
} |
73 |
|
74 |
1; |