1 |
dpavlin |
449 |
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 |
dpavlin |
453 |
my $id = 0; |
36 |
|
|
my $have_id = grep { m{^id$} } @$names; |
37 |
|
|
my $have_label = grep { m{^label$} } @$names; |
38 |
|
|
|
39 |
dpavlin |
449 |
foreach my $row ( @{ $self->sponge->{rows} } ) { |
40 |
|
|
my $item; |
41 |
|
|
map { $item->{ $names->[$_] } = $row->[$_] } ( 0 .. $#{ $row } ); |
42 |
dpavlin |
453 |
$item->{id} = $id unless $have_id; |
43 |
|
|
$item->{label} = $id unless $have_label; |
44 |
|
|
$id++; |
45 |
dpavlin |
449 |
push @{ $items->{items} }, $item; |
46 |
|
|
} |
47 |
|
|
|
48 |
|
|
return $items; |
49 |
|
|
} |
50 |
|
|
|
51 |
|
|
sub depends { |
52 |
|
|
my ($self) = @_; |
53 |
|
|
$self->add_head(qq{ |
54 |
|
|
<link href="/Frey::Pipe/markup?pipe=Frey::DelIcioUs/sponge|Frey::View::Exhibit/data|Frey::JSON/markup" |
55 |
|
|
type="application/json" rel="exhibit/data" /> |
56 |
|
|
}); |
57 |
|
|
$self->add_head(qq| |
58 |
|
|
<script src="http://static.simile.mit.edu/exhibit/api-2.0/exhibit-api.js" |
59 |
|
|
type="text/javascript"></script> |
60 |
|
|
|); |
61 |
|
|
warn "# depends"; |
62 |
|
|
} |
63 |
|
|
|
64 |
|
|
sub markup { |
65 |
|
|
my ($self) = @_; |
66 |
|
|
|
67 |
|
|
return qq| |
68 |
|
|
<table width="100%"> |
69 |
|
|
<tr valign="top"> |
70 |
|
|
<td ex:role="viewPanel"> |
71 |
|
|
<div ex:role="view"></div> |
72 |
|
|
</td> |
73 |
|
|
<td width="25%"> |
74 |
|
|
browsing controls here... |
75 |
|
|
</td> |
76 |
|
|
</tr> |
77 |
|
|
</table> |
78 |
|
|
|; |
79 |
|
|
} |
80 |
|
|
|
81 |
|
|
1; |