Giter Club home page Giter Club logo

modelrailroadtimetableplanner's Introduction

  • ๐Ÿ‘‹ Hi, Iโ€™m @gfgit
  • I develop in Qt and C++

modelrailroadtimetableplanner's People

Contributors

gfgit avatar luca-pellegrini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

luca-pellegrini

modelrailroadtimetableplanner's Issues

Multiple line graph views

Is your feature request related to a problem? Please describe.
Currently you can view a single line graph view at a time. Viewing multiple Lines can be useful in some situations

Describe the solution you'd like
Take inspiration from Qt Creator layout in which you can split the Window both vertically or horizontally multiple Times and in each section you can view a line independently from others.
Plus each section can be moved to a separate Window which can again get splitted for the benefit of multiple screen setups

Describe alternatives you've considered
Keep things unchanged if too difficult to implement

Rework station and line painting

Adapt to new station schema.
Possibly do not rely on QGraphicsScene because it forces loading on main UI thread and loading in chunks seems difficult.
Since we are not interested in view transformations (except zoom) and parent-child relations of items, it seems an overkill.

New graph types needed:

  1. Single station
  2. Single line segment
  3. Complete line view (multiple segments concatenated)

Encapsulate in a viewer widget (which can be embedded in main window or separate window), statusbar and toolbar and a model worker class.

#2 #1

Better README

Use markdown for README.md.
I like those fancy readmes with icons, sections and links! But I'm currently focusing on code...

Job Checker

Job Checker system

Add a background task which checks Jobs like RsErrorWorker, better if they can share common code

Checks

  • Jobs cannot cross or pass on same railway segment track
  • Jobs cannot be longer than station track length
  • Jobs cannot have departure > next stop arrival
  • Jobs cannot have no engine
  • Jobs cannot have mismatched gate and next segment

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Concurrent usage

Think of all possible scenarios of inconsistency from concurrent usage.
For example deleting an object while a other user is editing it or referencing it.
Or multiple users editing the same object at the same time.

Station Layout import

Create a new dialog to import stations and possibly also segments and lines

It should have a modular design (split model/view)
Multiple data sources deriving from abstract class so they can be added in future

  • Import from other session (SQLite)
  • Import from PostgreSQL

Booklet language

When printing a station or train driver booklet it should be possible to select a different language from the chosen program language.
You can already print them in a other language by restarting the applicaton with a different language but this is slow and unconvinient.
I think this is a cool feature for International FREMO Meetings where not every one speaks the same language.

Hide columns on ODS rollingstock import

When importing from ODS sheets, column and row selection might confuse the user.
So set a standard table layout and make it default.
Then hide these options under "Advanced Options" so expert users with non-default table layout can still import them.

Also for column selection, show letters in QSpinBox, like colimn 1 -> A, column 2 -> B etc...

JobPathEditor transits

When adding a new stop suggest all stations directly connected to last added stop then suggest with a differenti color all station in all lines which contains last segnemt or Maybe all segments ofbcurrent station and specify the line for every suggestion.

Define workflow

Define a clear workflow so other know how to contribuite to this project.

Manage big datasets

FREMO session can become quite big and the software must be prepared even just in case.
To manage big datasets we need to load on-demand only the portions of data we need in a specific moment.

Set a minimum stop time for all stops

Problem
Job stops can be of type Normal or Transit.
Transits happen when a train runs through a station without stopping.
Normal stops happen when a train stops at the station.

Normal stop already have the requirement to be at least of 1 minute.
First stop and Last stop are special because they are registered as Normal but must have null duration.
Also Transit stops have null duration.

This means that arrival is equal to departure.
This is correct in theory but in practice it has drawbacks.
On railway timetable graph these stops do not appear well because they are just points instead of vertical lines (top = bottom)

Solution 1
Set minimum duration of 1 minute regardless of stop type.

Solution 2
Custom drawing for stops with null duration

Add Compiling instructions

Provvide compile instructions in the usual COMPILING.md file.
Maybe clean up a bit Cmake files and find a better way to find libzip.
State all dependencies.

Previous/next jobs

Is your feature request related to a problem? Please describe.
Currently you cannot easily tell The rollingstock Flow from JobPathEditor panel

Describe the solution you'd like
For each coupled rollingstock, select its previous job (or "staging yard" if no previous job was found). Then build a list and show it in JobPathEditor.
Similar concept for "next Jobs" selecting next job after uncoupling a rollingstock item.
The list should be automatically update when user modifies couplings in any involved job, and should be interattive with context menu to quickly view other Jobs and specific rollingstock items.

Job Shift reminder

Before creating first Job, check if user has created shifts.
If no shift is present, popup a warning "no shifts, do you want to create one?" and a botton to directly open shift manager or tell user to create them later with "edit, shifts"

New station layout

Currently station have little information.

We need to be able to specify:

  • Track length
  • Platform length
  • Track connections
  • Station connections with others
  • Line speed in different sections
  • Line traction types

This is a general issue

Flexible Station Layout

Currently railway layout is pretty fixed:

When you create a new session you can create any layout you like but once you start to create lines or jobs you loose the ability to edit the layout.

Current workaround is to:

  1. Delete those jobs
  2. Delete lines
  3. Edit segments or stations
  4. Recreate lines
  5. Recreate jobs

But this is like starting over from sratch.

Solution

We need an easy tool which allows at least:

  • Insert a station between 2 existing stations (cut segment in 2 parts)
  • Remove a station which is between 2 segments (Warning: this station might be a junction)

The steps above must be done automatically by this tool, requiring user action only if there are ambiguities

Example:

  • A -> B becomes A -> C -> B when adding in between
  • A -> B -> C becomes A -> C when removing in between

[BUG] Segment track number doesn't match station gate track

Describe the bug
Segment tracks start to count from 0 to n for both sides but in opposite order.
Counting starts from left to right watching the other side of the segment.

Example 1: A railway line with 2 tracks

Side | 0 ------ 1 | Side
  A  | 1 ------ 0 |  B

Position yourself on side A and look toward side B:
Left track (which is the top one in the schema) gets number 0 and the right track gets 1.
Now go to B and look towards A:
Left track is now the bottom one and gets number 0, the right track (top one) gets 1.

They should in theory match station gate out track.
These are the tracks going out from the station and into the railway line.

   Station   |   Segment
-------------|--------------
 Gate ---> 0 | 0 >--- Side 
   A  ---< 1 | 1 <---  A   

Example 2: What if station gate has 2 tracks while segment has only 1 track?

   Station   |   Segment
-------------|--------------
 Gate ---- 0 |        Side 
   A  ---> 1 | 0 >---  A   

In this example gate track 0 is not connected and gate track 1 is connected to segment track 0 (which is the only one).
They don't match so it's hard to check if job stops use correct tracks.
If they where the same number the check would be trivial:

if(gate_track != segment_track)
{
    //Error: Prompt user to change track and fix inconsistency
}

Example 3: A railway line with 3 tracks

     Station    |   Segment
----------------|--------------
 Gate ------> 0 | 0 >--- Side 
   A  --.       | 1 <---  A   
        ^---< 1 | 2 <---      

In this example track 1 of railway line is not connected to the station.
So gate track 1 is connected to segment track 2.

Possible Solution
In table railway_connections:
add a column gate_track_num along track_num (which should be renamed segment_track_num)
gate_track_num: must match a gate track (from 0 to gate track count)
segment_track_num: is the real number (from 0 to segment track count)

Document code

Use doxygen comments to document code and generate documentation.

Rewire Job system

Remap Job system to new station layout.
Remove Job segments (replaced by chain of railway segments)
Remove connection to railway lines (only use railway segments)

Import job rollingstock

Is your feature request related to a problem? Please describe.
Passenger trains rarely change composition.
Shuttle/regionale trains stay the same across multiple Jobs.
It should be possibile to quickly import the full composition from a previous job.

Describe the solution you'd like
Context menu on a stop row, open dialog Windows and Type desire job numbers. Only Jobs which stop in same station as selected on with earlier arriva get shown.
On acceptin all rs get transferred to current job.

Rework rollingstock

The order of wagons inside a train matters.
Currently there is no way to specify it.

[BUG] Debian package not released

Describe the bug
Release 6.2.1 does not include the .deb file for Linux

To Reproduce
Steps to reproduce the behavior:

  1. Go to the release page for MRTP
  2. There is no .deb file for 6.2.x releases, though there was for 6.1.

Expected behavior
The .deb file is released for Linux users

Desktop (please complete the following information):
n/a

Additional context
I just came across this package while searching for timetable planners. Thank you for writing it and releasing it under the GPL. ๐Ÿ‘

Find a better name

Previously this program was named TrainTimetable (hence *.ttt file extension).
This name was too generic and commonly used.
So I swithed to ModelRailroadTimetablePlanner which defines better the use cases but it is way too long and a bit anonymus.
Let's find something better!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.