summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindex.pl79
-rw-r--r--public/static/js/travelynx-actions.js49
2 files changed, 64 insertions, 64 deletions
diff --git a/index.pl b/index.pl
index c86fe5b..90fb660 100755
--- a/index.pl
+++ b/index.pl
@@ -299,39 +299,17 @@ helper 'checkout' => sub {
my $user = $self->get_user_status;
my $train_id = $user->{train_id};
- if ( $status->{errstr} and not $force ) {
- return $status->{errstr};
- }
if ( not $user->{checked_in} ) {
return 'You are not checked into any train';
}
- else {
- my ($train)
- = first { $_->train_id eq $train_id } @{ $status->{results} };
- if ( not defined $train ) {
- if ($force) {
- my $success = $self->app->checkout_query->execute(
- $self->get_user_id,
- $self->get_station_id(
- ds100 => $status->{station_ds100},
- name => $status->{station_name}
- ),
- DateTime->now( time_zone => 'Europe/Berlin' )->epoch,
- undef, undef, undef, undef, undef,
- undef, undef, undef
- );
- if ( defined $success ) {
- return;
- }
- else {
- return 'INSERT failed';
- }
- }
- else {
- return "Train ${train_id} not found";
- }
- }
- else {
+ if ( $status->{errstr} and not $force ) {
+ return $status->{errstr};
+ }
+
+ my ($train)
+ = first { $_->train_id eq $train_id } @{ $status->{results} };
+ if ( not defined $train ) {
+ if ($force) {
my $success = $self->app->checkout_query->execute(
$self->get_user_id,
$self->get_station_id(
@@ -339,16 +317,8 @@ helper 'checkout' => sub {
name => $status->{station_name}
),
DateTime->now( time_zone => 'Europe/Berlin' )->epoch,
- $train->type,
- $train->line_no,
- $train->train_no,
- $train->train_id,
- $train->sched_arrival ? $train->sched_arrival->epoch : undef,
- $train->arrival ? $train->arrival->epoch : undef,
- join( '|', $train->route ),
- join( '|',
- map { ( $_->[0] ? $_->[0]->epoch : q{} ) . ':' . $_->[1] }
- $train->messages )
+ undef, undef, undef, undef, undef,
+ undef, undef, undef
);
if ( defined $success ) {
return;
@@ -357,6 +327,35 @@ helper 'checkout' => sub {
return 'INSERT failed';
}
}
+ else {
+ return "Train ${train_id} not found";
+ }
+ }
+ else {
+ my $success = $self->app->checkout_query->execute(
+ $self->get_user_id,
+ $self->get_station_id(
+ ds100 => $status->{station_ds100},
+ name => $status->{station_name}
+ ),
+ DateTime->now( time_zone => 'Europe/Berlin' )->epoch,
+ $train->type,
+ $train->line_no,
+ $train->train_no,
+ $train->train_id,
+ $train->sched_arrival ? $train->sched_arrival->epoch : undef,
+ $train->arrival ? $train->arrival->epoch : undef,
+ join( '|', $train->route ),
+ join( '|',
+ map { ( $_->[0] ? $_->[0]->epoch : q{} ) . ':' . $_->[1] }
+ $train->messages )
+ );
+ if ( defined $success ) {
+ return;
+ }
+ else {
+ return 'INSERT failed';
+ }
}
};
diff --git a/public/static/js/travelynx-actions.js b/public/static/js/travelynx-actions.js
index 7cec0cd..91953a6 100644
--- a/public/static/js/travelynx-actions.js
+++ b/public/static/js/travelynx-actions.js
@@ -1,41 +1,42 @@
-$(document).ready(function() {
+function travelynx_run_action(link, req, redir, err_callback) {
var error_icon = '<i class="material-icons">error</i>';
+ var progressbar = $('<div class="progress"><div class="indeterminate"></div></div>');
+ link.hide();
+ link.after(progressbar);
+ $.post('/action', req, function(data) {
+ if (data.success) {
+ $(location).attr('href', redir);
+ } else {
+ M.toast({html: error_icon + ' ' + data.error});
+ progressbar.remove();
+ if (err_callback) {
+ err_callback();
+ }
+ link.append(' ' + error_icon);
+ link.show();
+ }
+ });
+}
+$(document).ready(function() {
$('.action-checkin').click(function() {
var link = $(this);
- req = {
+ var req = {
action: 'checkin',
station: link.data('station'),
train: link.data('train'),
};
- progressbar = $('<div class="progress"><div class="indeterminate"></div></div>');
- link.replaceWith(progressbar);
- $.post('/action', req, function(data) {
- if (data.success) {
- $(location).attr('href', '/');
- } else {
- M.toast({html: error_icon + ' ' + data.error});
- link.append(' ' + error_icon);
- progressbar.replaceWith(link);
- }
- });
+ travelynx_run_action(link, req, '/');
});
$('.action-checkout').click(function() {
var link = $(this);
- req = {
+ var req = {
action: 'checkout',
station: link.data('station'),
force: link.data('force'),
};
- progressbar = $('<div class="progress"><div class="indeterminate"></div></div>');
- link.replaceWith(progressbar);
- $.post('/action', req, function(data) {
- if (data.success) {
- $(location).attr('href', '/' + req.station);
- } else {
- M.toast({html: error_icon + ' ' + data.error});
- link.append(' ' + error_icon);
- progressbar.replaceWith(link);
- }
+ travelynx_run_action(link, req, '/' + req.station, function() {
+ link.append(' – Keine Echtzeitdaten vorhanden')
+ link.data('force', true);
});
});
});