default number of slots
[angular-mojolicious.git] / angular-server.pl
index 71e5f69..09ca4b3 100755 (executable)
@@ -136,7 +136,7 @@ any [ 'post' ] => '/data/:database/:entity' => sub {
                $json->{'_'.$_} = $new->{$_} foreach ( 'rev','id' );
        } else {
                warn "ERROR: ",dump($new);
-               $json->{_error} = $new;
+               $json->{error} = $new;
        }
 
        _render_jsonp( $self,  $json );
@@ -228,6 +228,10 @@ get '/json/:database/:entity' => sub {
 use Encode;
 use iCal::Parser;
 
+plugin 'proxy';
+
+my $slot_regex = '(\d+)\s*mjesta';
+
 get '/reservations/get/(*url)' => sub {
        my $self = shift;
 
@@ -257,6 +261,21 @@ get '/reservations/get/(*url)' => sub {
                }
        }
 
+       @events = map {
+               foreach my $check_slot ( qw(
+                       DESCRIPTION
+                       LOCATION
+                       STATUS
+                       SUMMARY
+               )) {
+                       next unless exists $_->{$check_slot};
+                       $_->{slots} = $1 if $_->{$check_slot} =~ m/$slot_regex/is;
+               }
+               $_->{slots} ||= $1 if $ical->{cal}->{'X-WR-CALDESC'} =~ m/$slot_regex/s;
+               $_->{slots} ||= 15; # XXX default number of slots
+               $_;
+       } @events;
+
        $ical->{events} = [ sort {
                                        $a->{DTSTART} cmp $b->{DTSTART}
        } @events ];
@@ -276,11 +295,11 @@ get '/reservations/events/:view_name' => sub {
                        language => 'javascript',
                        views => {
                                submited => {
-                                       map    => q|
+                                       map    => q|(
                                                function(doc) {
                                                        if ( doc.event && doc.event.UID ) emit(doc.event.UID, 1)
                                                }
-                                       |,
+                                       )|,
                                        reduce => q|_sum|,
                                }
                        }
@@ -293,9 +312,13 @@ get '/reservations/events/:view_name' => sub {
                $hash->{ $row->{key} } = $row->{value};
        }
 
+       $hash ||= {};
+
        _render_jsonp( $self, $hash );
 };
 
+get '/_utils/script/(*url)' => sub { $_[0]->proxy_to( "$couchdb/_utils/script/" . $_[0]->param('url') , with_query_params => 1 ) };
+
 app->start;
 __DATA__