public async Task ViewGraph()
        {
            ReportSelectedEvent reportEvent = new ReportSelectedEvent();

            reportEvent.SelectedTimetable = SelectedTimetable;
            reportEvent.Report            = ReportType.Graph;
            await _events.PublishOnUIThreadAsync(reportEvent);
        }
        public async Task ViewArrivalDeparture()
        {
            ReportSelectedEvent reportEvent = new ReportSelectedEvent();

            reportEvent.SelectedTimetable = SelectedTimetable;
            reportEvent.Report            = ReportType.ArrivalDeparture;
            await _events.PublishOnUIThreadAsync(reportEvent);
        }
        async Task IHandle <ReportSelectedEvent> .HandleAsync(ReportSelectedEvent message, CancellationToken cancellationToken)
        {
            switch (message.Report)
            {
            case ReportType.Classic:
            {
                var displayTimetableVM = IoC.Get <DisplayTimetableViewModel>();
                displayTimetableVM.TimetableId = message.SelectedTimetable.TimetableId;
                await ActivateItemAsync(displayTimetableVM, new CancellationToken());

                break;
            }

            case ReportType.Graph:
            {
                var displayTimetableGraphVM = IoC.Get <DisplayTimetableGraphViewModel>();
                displayTimetableGraphVM.TimetableId = message.SelectedTimetable.TimetableId;
                await ActivateItemAsync(displayTimetableGraphVM, new CancellationToken());

                break;
            }

            case ReportType.ScottPlotGraph:
            {
                var displayScottPlotGraphVM =
                    new ScottPlotGraph(message.SelectedTimetable.TimetableId);
                var form = new ScottPlotGraphForm(displayScottPlotGraphVM);
                form.Show();
                break;
            }

            case ReportType.ArrivalDeparture:
            {
                var departureArrivalVM = IoC.Get <DepartureArrivalTimetableViewModel>();
                departureArrivalVM.RouteId     = message.SelectedTimetable.RouteId;
                departureArrivalVM.TimetableId = message.SelectedTimetable.TimetableId;
                await ActivateItemAsync(departureArrivalVM, new CancellationToken());

                break;
            }

            default:
            {
                throw new NotImplementedException("Report type not implemented in ShellView");
            }
            }
        }