Commit 8e817e5d authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Re-add force checkout to frontend

parent 21135337
Loading
Loading
Loading
Loading
+39 −40
Original line number Diff line number Diff line
@@ -299,13 +299,13 @@ 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 {
	if ( $status->{errstr} and not $force ) {
		return $status->{errstr};
	}

	my ($train)
		= first { $_->train_id eq $train_id } @{ $status->{results} };
	if ( not defined $train ) {
@@ -357,7 +357,6 @@ helper 'checkout' => sub {
			return 'INSERT failed';
		}
	}
	}
};

helper 'get_station_id' => sub {
+25 −24
Original line number Diff line number Diff line
$(document).ready(function() {
function travelynx_run_action(link, req, redir, err_callback) {
	var error_icon = '<i class="material-icons">error</i>';
	$('.action-checkin').click(function() {
		var link = $(this);
		req = {
			action: 'checkin',
			station: link.data('station'),
			train: link.data('train'),
		};
		progressbar = $('<div class="progress"><div class="indeterminate"></div></div>');
		link.replaceWith(progressbar);
	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', '/');
			$(location).attr('href', redir);
		} else {
			M.toast({html: error_icon + ' ' + data.error});
			progressbar.remove();
			if (err_callback) {
				err_callback();
			}
			link.append(' ' + error_icon);
				progressbar.replaceWith(link);
			link.show();
		}
	});
}
$(document).ready(function() {
	$('.action-checkin').click(function() {
		var link = $(this);
		var req = {
			action: 'checkin',
			station: link.data('station'),
			train: link.data('train'),
		};
		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);
		});
	});
});