From 539688c6995e826875659e0c75330252bc71284a Mon Sep 17 00:00:00 2001 From: Spythere Date: Sat, 4 Jul 2020 14:26:53 +0200 Subject: [PATCH] Migracja projektu z ReactJS --- public/favicon.ico | Bin 4286 -> 16958 bytes src/App.vue | 196 +++- src/assets/icon-1track-e.svg | 5 + src/assets/icon-1track-ne.svg | 6 + src/assets/icon-2track-e.svg | 6 + src/assets/icon-2track-ne.svg | 7 + src/assets/icon-SBL.svg | 6 + src/assets/icon-SCS-SPK.svg | 5 + src/assets/icon-SCS.svg | 4 + src/assets/icon-SPK.svg | 4 + src/assets/icon-error.svg | 46 + src/assets/icon-historyczna.svg | 18 + src/assets/icon-kształtowa.svg | 10 + src/assets/icon-like.svg | 1 + src/assets/icon-mechaniczne+SCS.svg | 4 + src/assets/icon-mechaniczne+SPK.svg | 4 + src/assets/icon-mechaniczne.svg | 4 + src/assets/icon-mieszana.svg | 26 + src/assets/icon-ręczne+SPK.svg | 4 + src/assets/icon-ręczne.svg | 4 + src/assets/icon-td2.svg | 6 + src/assets/icon-współczesna.svg | 18 + src/assets/trainlogo.png | Bin 0 -> 4295 bytes src/components/states/Error.vue | 38 + src/components/states/Loading.vue | 20 + src/components/ui/Card.vue | 11 + src/components/ui/List.vue | 11 + src/data/stations.json | 1619 +++++++++++++++++++++++++++ src/main.ts | 2 +- src/store/index.ts | 4 + src/store/stations.ts | 97 ++ src/styles/responsive.scss | 11 + src/styles/variables.scss | 10 + src/views/Home.vue | 14 +- tsconfig.json | 3 +- 35 files changed, 2215 insertions(+), 9 deletions(-) create mode 100644 src/assets/icon-1track-e.svg create mode 100644 src/assets/icon-1track-ne.svg create mode 100644 src/assets/icon-2track-e.svg create mode 100644 src/assets/icon-2track-ne.svg create mode 100644 src/assets/icon-SBL.svg create mode 100644 src/assets/icon-SCS-SPK.svg create mode 100644 src/assets/icon-SCS.svg create mode 100644 src/assets/icon-SPK.svg create mode 100644 src/assets/icon-error.svg create mode 100644 src/assets/icon-historyczna.svg create mode 100644 src/assets/icon-kształtowa.svg create mode 100644 src/assets/icon-like.svg create mode 100644 src/assets/icon-mechaniczne+SCS.svg create mode 100644 src/assets/icon-mechaniczne+SPK.svg create mode 100644 src/assets/icon-mechaniczne.svg create mode 100644 src/assets/icon-mieszana.svg create mode 100644 src/assets/icon-ręczne+SPK.svg create mode 100644 src/assets/icon-ręczne.svg create mode 100644 src/assets/icon-td2.svg create mode 100644 src/assets/icon-współczesna.svg create mode 100644 src/assets/trainlogo.png create mode 100644 src/components/states/Error.vue create mode 100644 src/components/states/Loading.vue create mode 100644 src/components/ui/Card.vue create mode 100644 src/components/ui/List.vue create mode 100644 src/data/stations.json create mode 100644 src/store/stations.ts create mode 100644 src/styles/responsive.scss create mode 100644 src/styles/variables.scss diff --git a/public/favicon.ico b/public/favicon.ico index df36fcfb72584e00488330b560ebcf34a41c64c2..c6c78b02edb93a35f5278caeaff9688300b5b2fc 100644 GIT binary patch literal 16958 zcmd^{t#4dM6vZb>Bo{P!LcM7?3|8 zpdg^&S}F_(C@3hfSwTQ86~t03zn-7tk)E#J-F@%v%-fN2qU+f?bMHN8_G31F*-c6} z^ylCp>E~|R`z)oqDWyGysC1-&kI;2pnh<-+eW?I{DLz$9sjrcX2fTn63Ov@(q30ip zKHg|@sHmm4t}ohn=)*KwS2uUPuhYN%vnIDH>UzIup*e)tB7J_T`ST&cYwnrG+ZDC* z9?(E5!tYwhxuwSs)H}b{hV(fb?p4&McRqiH^znwr();fBdtd#zk0bn}g&OA~J?R|* zPk8Hlt#zB%-{Z)L_}7ZB6s7d(Mb8L$S@QhJ`}$V8{`}1z;h!p=Y#8)drGba+XX)`9 zY5%9#7SP7S()&j5(Y7`{po^C!?}G;e9=1*4X^H!QGxpzYZ+1W*PfMKtyxxXzBJxnN ztN2*)o#K^ZQ_zE6^rSZ$CyF5~aTahMd;Be8=1Q2 z)qDMq1NmbqYNP$2>0u(G{8Bs`9`A{W`hVh+C(Nmh`l9J!BBK0KJQ^PF`u^Yb=YK2b zpXrHN>UkdZL1PFfA`cb2ifz6BnY1I{rFb-2g~?c{eMWuIXcZ=7k?&GG8m+=)tkgcE zK4`QGld;HmDISehVKP=~pHUw)T7}722O2}yK1Fw?D7DY14;mgXL@e=d|Jf5-XnL54oKtH=!{ciawe+ICXnL54D8Ces zhR1=3QvJvFLDR!TjIE!WhlU4U=JuOgho*;#nA>k`9U2~Z8Czc}4^0mfQL2B`2MrIr zMESLNG(Aj2Exp_q4G+BJ^`%BMJxoMxeKb7qQd`&eN7KVZ_`K3{G(7N9T4!B9G(Akj zy1Gr*(eS{_rhTW@qv>HHruLbdkA??cruNx1A59Mvv1#9R^=No}E@E9>>2)+cOhjoN z-wzFs??w2$+H*8LOhj#6G(293SoK+j(w@*l)5AoR*7E((h;X8XB_h%{EqK4B=V-JF zld;nK_5IM81Fl)v$cV0Qtkb2x_gi}Y+d2~i>wJE1st;N^kK0-kE_x!?Pqv{ro= z#e3s(tdA5&BZFLO#sV*R>U*qxo6qI`Io4psJUrl~_I`)@-;yrp^w70v(N%#a+ISf9 zwlv2z`Q2VT(CrAkw)?r2<*lChl@ZjpWpgCdY|O1io8c>>Qe7( zk*~S@WA}i*(frF5`)7@uKIk!5zlFLl3jPW|oZg$z;l zyj-`fQF}PQ^4WE7{Z<;YPPotgi?{dV!^{47p2Sm2oyL6s=f|TvPDu}$7H%HzUyVDb PSL5Xl54CXTOh5hyJsk!; literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/src/App.vue b/src/App.vue index 13abc9b..16f209f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,9 +1,199 @@ - diff --git a/src/assets/icon-1track-e.svg b/src/assets/icon-1track-e.svg new file mode 100644 index 0000000..a930080 --- /dev/null +++ b/src/assets/icon-1track-e.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icon-1track-ne.svg b/src/assets/icon-1track-ne.svg new file mode 100644 index 0000000..023d851 --- /dev/null +++ b/src/assets/icon-1track-ne.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icon-2track-e.svg b/src/assets/icon-2track-e.svg new file mode 100644 index 0000000..e60975f --- /dev/null +++ b/src/assets/icon-2track-e.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icon-2track-ne.svg b/src/assets/icon-2track-ne.svg new file mode 100644 index 0000000..9135eca --- /dev/null +++ b/src/assets/icon-2track-ne.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icon-SBL.svg b/src/assets/icon-SBL.svg new file mode 100644 index 0000000..133207a --- /dev/null +++ b/src/assets/icon-SBL.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icon-SCS-SPK.svg b/src/assets/icon-SCS-SPK.svg new file mode 100644 index 0000000..25624bf --- /dev/null +++ b/src/assets/icon-SCS-SPK.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icon-SCS.svg b/src/assets/icon-SCS.svg new file mode 100644 index 0000000..ef8f74b --- /dev/null +++ b/src/assets/icon-SCS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon-SPK.svg b/src/assets/icon-SPK.svg new file mode 100644 index 0000000..1f0b013 --- /dev/null +++ b/src/assets/icon-SPK.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon-error.svg b/src/assets/icon-error.svg new file mode 100644 index 0000000..b657b3f --- /dev/null +++ b/src/assets/icon-error.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icon-historyczna.svg b/src/assets/icon-historyczna.svg new file mode 100644 index 0000000..1e9a9d1 --- /dev/null +++ b/src/assets/icon-historyczna.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icon-kształtowa.svg b/src/assets/icon-kształtowa.svg new file mode 100644 index 0000000..43801f0 --- /dev/null +++ b/src/assets/icon-kształtowa.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icon-like.svg b/src/assets/icon-like.svg new file mode 100644 index 0000000..8c4ba66 --- /dev/null +++ b/src/assets/icon-like.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon-mechaniczne+SCS.svg b/src/assets/icon-mechaniczne+SCS.svg new file mode 100644 index 0000000..3c016c3 --- /dev/null +++ b/src/assets/icon-mechaniczne+SCS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon-mechaniczne+SPK.svg b/src/assets/icon-mechaniczne+SPK.svg new file mode 100644 index 0000000..367440b --- /dev/null +++ b/src/assets/icon-mechaniczne+SPK.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon-mechaniczne.svg b/src/assets/icon-mechaniczne.svg new file mode 100644 index 0000000..18b7bb2 --- /dev/null +++ b/src/assets/icon-mechaniczne.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon-mieszana.svg b/src/assets/icon-mieszana.svg new file mode 100644 index 0000000..b880e85 --- /dev/null +++ b/src/assets/icon-mieszana.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icon-ręczne+SPK.svg b/src/assets/icon-ręczne+SPK.svg new file mode 100644 index 0000000..4e57b64 --- /dev/null +++ b/src/assets/icon-ręczne+SPK.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon-ręczne.svg b/src/assets/icon-ręczne.svg new file mode 100644 index 0000000..342b533 --- /dev/null +++ b/src/assets/icon-ręczne.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon-td2.svg b/src/assets/icon-td2.svg new file mode 100644 index 0000000..132c290 --- /dev/null +++ b/src/assets/icon-td2.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icon-współczesna.svg b/src/assets/icon-współczesna.svg new file mode 100644 index 0000000..1e9a9d1 --- /dev/null +++ b/src/assets/icon-współczesna.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/trainlogo.png b/src/assets/trainlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..71321fe088045dd74c0fc04c3d76e272f077fac9 GIT binary patch literal 4295 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 literal 0 HcmV?d00001 diff --git a/src/components/states/Error.vue b/src/components/states/Error.vue new file mode 100644 index 0000000..bca9473 --- /dev/null +++ b/src/components/states/Error.vue @@ -0,0 +1,38 @@ + + + + + + \ No newline at end of file diff --git a/src/components/states/Loading.vue b/src/components/states/Loading.vue new file mode 100644 index 0000000..dae5552 --- /dev/null +++ b/src/components/states/Loading.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/src/components/ui/Card.vue b/src/components/ui/Card.vue new file mode 100644 index 0000000..160596e --- /dev/null +++ b/src/components/ui/Card.vue @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/src/components/ui/List.vue b/src/components/ui/List.vue new file mode 100644 index 0000000..9acd956 --- /dev/null +++ b/src/components/ui/List.vue @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/src/data/stations.json b/src/data/stations.json new file mode 100644 index 0000000..024edee --- /dev/null +++ b/src/data/stations.json @@ -0,0 +1,1619 @@ +[ + { + "stationName": "Blaszki", + "stationURL": "https://td2.info.pl/scenerie/blaszki/", + "stationLines": "", + "stationProject": "", + "stationHash": "d712b295", + "reqLevel": "10", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "LCS Borowe", + "stationURL": "https://td2.info.pl/scenerie/lcs-borowe/", + "stationLines": "", + "stationProject": "", + "reqLevel": "12", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "TAK", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 3, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "LCS Gdańsk", + "stationURL": "https://td2.info.pl/scenerie/lcs-gdansk/", + "stationLines": "9, 202, 227, 249, 250", + "stationProject": "", + "stationHash": "5c3dac7f", + "reqLevel": "10", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "TAK", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 3, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 3, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Lębork", + "stationURL": "https://td2.info.pl/scenerie/lebork-5834/", + "stationLines": "202, 229, 237", + "stationProject": "", + "stationHash": "ea695f02", + "reqLevel": "8", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne+SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Grabów Miasto", + "stationURL": "https://td2.info.pl/scenerie/grabow-miasto-v2/", + "stationLines": "", + "stationProject": "", + "stationHash": "1626cc27", + "reqLevel": "6", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 1, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Parzęczewo", + "stationURL": "https://td2.info.pl/scenerie/parzeczewo/", + "stationLines": "", + "stationProject": "", + "stationHash": "a7d464d4", + "reqLevel": "6", + "supportersOnly": "NIE", + "signalType": "mieszana", + "controlType": "SCS", + "SBL": "TAK", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Aleksandrów Kujawski", + "stationURL": "https://td2.info.pl/scenerie/aleksandrow-kujawski/", + "stationLines": "18, 245", + "stationProject": "", + "stationHash": "6d72679c", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Arkadia Zdrój 2012", + "stationURL": "https://td2.info.pl/scenerie/arkadia-zdroj/", + "stationLines": "", + "stationProject": "", + "stationHash": "147375b3", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "mieszana", + "controlType": "mechaniczne+SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Buk 2018", + "stationURL": "https://td2.info.pl/scenerie/buk2/", + "stationLines": "", + "stationProject": "", + "stationHash": "4983e8bf", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 1, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Jordanowo", + "stationURL": "https://td2.info.pl/scenerie/jordanowo/", + "stationLines": "", + "stationProject": "", + "stationHash": "dcb27980", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "mieszana", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 3, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "LCS Głowno", + "stationURL": "https://td2.info.pl/scenerie/glowno-(linia-nr-15-lka)/", + "stationLines": "15", + "stationProject": "ŁKA", + "stationHash": "c876ed93", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "LCS Ozorków", + "stationURL": "https://td2.info.pl/scenerie/lcs-ozorkow/", + "stationLines": "16", + "stationProject": "ŁKA", + "stationHash": "c4de852a", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "LCS Skrzynki", + "stationURL": "https://td2.info.pl/scenerie/lcs-skrzynki/", + "stationLines": "25", + "stationProject": "ŁKA", + "stationHash": "46963c3a", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Łask", + "stationURL": "https://td2.info.pl/scenerie/lask-w-ramach-lka/", + "stationLines": "14", + "stationProject": "ŁKA", + "stationHash": "1da6b1db", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne+SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Naterki", + "stationURL": "https://td2.info.pl/scenerie/naterki/", + "stationLines": "353", + "stationProject": "", + "stationHash": "672ad968", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne+SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Santok Zdrój", + "stationURL": "https://td2.info.pl/scenerie/santok-zdroj/", + "stationLines": "", + "stationProject": "", + "stationHash": "c876ed93", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Testowo", + "stationURL": "https://td2.info.pl/scenerie/testowo-3581", + "stationLines": "", + "stationProject": "", + "stationHash": "cfa1069a", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "TAK (szlak Sl)", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 1, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Tłoki", + "stationURL": "https://td2.info.pl/scenerie/podg-tloki", + "stationLines": "", + "stationProject": "", + "stationHash": "631aa683", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Witaszyczki", + "stationURL": "https://td2.info.pl/scenerie/witaszyczki/", + "stationLines": "", + "stationProject": "", + "stationHash": "46963c3a", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Bydgowo", + "stationURL": "https://td2.info.pl/scenerie/bydgowo/", + "stationLines": "", + "stationProject": "", + "stationHash": "596cf99d", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "TAK (szlak SK)", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Głębce", + "stationURL": "https://td2.info.pl/scenerie/glebce", + "stationLines": "", + "stationProject": "", + "stationHash": "152274d7", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "ręczne+SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Hel", + "stationURL": "https://td2.info.pl/scenerie/hel/", + "stationLines": "213", + "stationProject": "", + "stationHash": "7baf7401", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Kcynia", + "stationURL": "https://td2.info.pl/scenerie/kcynia", + "stationLines": "281, 356", + "stationProject": "", + "stationHash": "a8b3c098", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 4 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Lewków", + "stationURL": "https://td2.info.pl/scenerie/lewkow/", + "stationLines": "", + "stationProject": "", + "stationHash": "ec92d52c", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "mieszana", + "controlType": "mechaniczne+SCS", + "SBL": "", + "twoWayBlock": "TAK (szlak Ks)", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Cis 2013", + "stationURL": "https://td2.info.pl/scenerie/cis2", + "stationLines": "", + "stationProject": "", + "stationHash": "0f8fe101", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Cis 2018", + "stationURL": "https://td2.info.pl/scenerie/cis2", + "stationLines": "", + "stationProject": "", + "stationHash": "9b0b6551", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Glinnik", + "stationURL": "https://td2.info.pl/scenerie/glinnik-(projekt-lka)/", + "stationLines": "15", + "stationProject": "ŁKA", + "stationHash": "3d3def6e", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Głogowo", + "stationURL": "https://td2.info.pl/scenerie/glogowo", + "stationLines": "", + "stationProject": "", + "stationHash": "6084e6e8", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Karszynek", + "stationURL": "https://td2.info.pl/scenerie/karszynek/", + "stationLines": "", + "stationProject": "", + "stationHash": "64b3977a", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "historyczna", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Imielin 2015", + "stationURL": "https://td2.info.pl/scenerie/imielin-2015", + "stationLines": "138", + "stationProject": "", + "stationHash": "13353c83", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne+SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Kolsko", + "stationURL": "https://td2.info.pl/scenerie/kolsko/", + "stationLines": "", + "stationProject": "", + "stationHash": "fd9ba98c", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 3 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "LCS Bucz Wileński", + "stationURL": "https://td2.info.pl/scenerie/bucz-wilenski/", + "stationLines": "", + "stationProject": "", + "stationHash": "1e8e451a", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "TAK", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 1, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Lisiczki", + "stationURL": "https://td2.info.pl/scenerie/lisiczki", + "stationLines": "", + "stationProject": "", + "stationHash": "c3366fd2", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Łęczyca", + "stationURL": "https://td2.info.pl/scenerie/leczyca-projekt-lka/", + "stationLines": "16", + "stationProject": "ŁKA", + "stationHash": "da6ba7c6", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Poreńsk", + "stationURL": "https://td2.info.pl/scenerie/porensk/", + "stationLines": "", + "stationProject": "", + "stationHash": "4710695a", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Radowice", + "stationURL": "https://td2.info.pl/scenerie/radowice", + "stationLines": "", + "stationProject": "", + "stationHash": "53d8d684", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Witonia", + "stationURL": "https://td2.info.pl/scenerie/witonia-(projekt-lka)/", + "stationLines": "16", + "stationProject": "ŁKA", + "stationHash": "770a09de", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Wola", + "stationURL": "https://td2.info.pl/scenerie/wola/", + "stationLines": "", + "stationProject": "", + "stationHash": "864d8b89", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "mieszana", + "controlType": "mechaniczne+SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Zgierz Kontrewers", + "stationURL": "https://td2.info.pl/scenerie/zgierz-kontrewers-6172/", + "stationLines": "16", + "stationProject": "ŁKA", + "stationHash": "484f8aef", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": true + }, + { + "stationName": "Bargowice", + "stationURL": "https://td2.info.pl/scenerie/bargowice-4441/", + "stationLines": "", + "reqLevel": "10", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Szklana Poręba", + "stationURL": "https://td2.info.pl/scenerie/szklana-poreba-gorna/", + "stationLines": "", + "reqLevel": "8", + "supportersOnly": "TAK", + "signalType": "współczesna", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Wschodna", + "stationURL": "https://td2.info.pl/scenerie/wschodna/", + "stationLines": "", + "reqLevel": "8", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Zabłocie", + "stationURL": "https://td2.info.pl/scenerie/zablocie-3896", + "stationLines": "", + "reqLevel": "8", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 1, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Zdroje", + "stationURL": "https://td2.info.pl/scenerie/zdroje", + "stationLines": "", + "reqLevel": "8", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Grzybowo", + "stationURL": "https://td2.info.pl/scenerie/grzybowo", + "stationLines": "", + "reqLevel": "6", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Zwardoń", + "stationURL": "https://td2.info.pl/scenerie/zwardon-4161", + "stationLines": "139", + "reqLevel": "6", + "supportersOnly": "TAK", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Piaskowo", + "stationURL": "https://td2.info.pl/scenerie/piaskowo/", + "stationLines": "", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "TAK", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Rajcza", + "stationURL": "https://td2.info.pl/scenerie/rajcza/", + "stationLines": "139", + "reqLevel": "4", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Brzezinka", + "stationURL": "https://td2.info.pl/scenerie/brzezinka/", + "stationLines": "", + "reqLevel": "3", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS-SPK", + "SBL": "", + "twoWayBlock": "TAK (szlak KSG)", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Torzyn", + "stationURL": "https://td2.info.pl/scenerie/torzyn/", + "stationLines": "", + "reqLevel": "3", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "TAK", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Wola Nowska", + "stationURL": "https://td2.info.pl/scenerie/wola-nowska//", + "stationLines": "", + "reqLevel": "3", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Chełmik Wołowski", + "stationURL": "https://td2.info.pl/scenerie/chelmik-wolowski//", + "stationLines": "", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Drzewko", + "stationURL": "https://td2.info.pl/w-trakcie-prac/drzewko/", + "stationLines": "", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Krzemienice", + "stationURL": "https://td2.info.pl/scenerie/krzemienice/", + "stationLines": "", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 3, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 1, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Milówka", + "stationURL": "https://td2.info.pl/scenerie/milowka/", + "stationLines": "139", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Orniki", + "stationURL": "https://td2.info.pl/scenerie/orniki/", + "stationLines": "", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 1, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Otwocko", + "stationURL": "https://td2.info.pl/scenerie/otwocko/", + "stationLines": "", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SCS", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Skostomłoty", + "stationURL": "https://td2.info.pl/w-trakcie-prac/skostomloty/", + "stationLines": "", + "reqLevel": "2", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Babimost", + "stationURL": "https://td2.info.pl/scenerie/babimost", + "stationLines": "358", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Czerepy", + "stationURL": "https://td2.info.pl/scenerie/czerepy/", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "TAK (szlak BO)", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Grabiny", + "stationURL": "https://td2.info.pl/scenerie/grabiny", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 2, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Kieły", + "stationURL": "https://td2.info.pl/scenerie/kiely-6224/", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Lutol Suchy", + "stationURL": "https://td2.info.pl/scenerie/lutol-suchy/", + "stationLines": "367", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Raki", + "stationURL": "https://td2.info.pl/scenerie/raki/", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Sieniawka", + "stationURL": "https://td2.info.pl/scenerie/sieniawka/", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 1 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 1 + } + }, + "default": false + }, + { + "stationName": "Stefanowo", + "stationURL": "https://td2.info.pl/scenerie/stefanowo/", + "stationLines": "359", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Szlichtyngowa", + "stationURL": "https://td2.info.pl/scenerie/szlichtyngowa//", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "TAK", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 0 + }, + "twoWay": { + "catenary": 2, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Tarnowo Górne", + "stationURL": "https://td2.info.pl/scenerie/tarnowo-gorne/", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "kształtowa", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Tartakowo 2013", + "stationURL": "https://td2.info.pl/w-trakcie-prac/tartakowo/", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "mieszana", + "controlType": "mechaniczne", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + }, + { + "stationName": "Wielgowo", + "stationURL": "https://td2.info.pl/scenerie/wielgowo/", + "stationLines": "", + "reqLevel": "0", + "supportersOnly": "NIE", + "signalType": "współczesna", + "controlType": "SPK", + "SBL": "", + "twoWayBlock": "", + "routes": { + "oneWay": { + "catenary": 0, + "noCatenary": 2 + }, + "twoWay": { + "catenary": 0, + "noCatenary": 0 + } + }, + "default": false + } +] \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index f253456..03c2bf0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,7 @@ import Vue from 'vue' import App from './App.vue' import router from './router' -import store from './store' +import store from './store/stations' Vue.config.productionTip = false diff --git a/src/store/index.ts b/src/store/index.ts index 332b916..ea4a9d6 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -5,11 +5,15 @@ Vue.use(Vuex) export default new Vuex.Store({ state: { + }, mutations: { + }, actions: { + }, modules: { + } }) diff --git a/src/store/stations.ts b/src/store/stations.ts new file mode 100644 index 0000000..a48bd38 --- /dev/null +++ b/src/store/stations.ts @@ -0,0 +1,97 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import data from '@/data/stations.json'; + +Vue.use(Vuex) + +export default new Vuex.Store({ + state: { + stations: [], + trainCount: 0, + connectionState: 0, + errorMessage: "" + }, + actions: { + fetchStations: async ({ commit }) => { + let onlineStations, statusList: any, onlineTrains: any + + try { + onlineStations = (await (await fetch('https://api.td2.info.pl:9640/?method=getStationsOnline')).json()).message + statusList = (await (await fetch('https://api.td2.info.pl:9640/?method=readFromSWDR&value=getDispatcherStatusList%3B1')).json()).message + onlineTrains = (await (await fetch('https://api.td2.info.pl:9640/?method=getTrainsOnline')).json()).message + } catch (error) { + commit('setConnectionState', 1); + commit('setErrorMessage', error.message); + throw Error(error.message); + } + + commit('setTrainCount', onlineTrains.filter((train: any) => train.isOnline && train.region === 'eu').length); + + const mappedStations = onlineStations + .filter((station: any) => station.region === 'eu') + .filter((station: any) => station.isOnline) + .map(( + { stationName = '', stationHash = '', maxUsers = 0, currentUsers = 0, spawnString = '', + dispatcherRate = 0, dispatcherName = '', dispatcherExp = 0, dispatcherId = 0 }) => { + + const status = statusList.find((s: any) => s[0] === stationHash && s[1] === 'eu') + let occupiedTo: string = "---" + let occupiedTimestamp: number = 0 + + if (!status) + occupiedTo = "NIEZALOGOWANY"; + else { + let occupiedCode: number = status[2]; + + occupiedTimestamp = status[3]; + occupiedTo = "NIEDOSTĘPNY"; + + if (occupiedCode === 0) { + if (occupiedTimestamp - Date.now() > 21000000) + occupiedTo = "BEZ LIMITU"; + else + occupiedTo = new Date(status[3]) + .toLocaleTimeString('en-US', + { hour12: false, hour: '2-digit', minute: '2-digit' }); + } + + if (occupiedCode === 2 && occupiedTimestamp === 0) + occupiedTo = "KOŃCZY"; + } + + const trains: {} = onlineTrains.filter((train: any) => + train.region === 'eu' && train.isOnline === 1 && train.station.stationName === stationName) + + const stationData: {} = data.find((station: any) => station.stationName === stationName) || { stationName, stationURL: "" } + + return { + ...stationData, + stationHash, + maxUsers, + currentUsers, + spawnString: spawnString && spawnString.split(';').map(v => v.split(',')[6] ? v.split(',')[6] : v.split(',')[0]), + dispatcherName, + dispatcherRate, + dispatcherId, + dispatcherExp: dispatcherExp < 2 ? 'L' : dispatcherExp, + occupiedTo, + trains + } + }) + + commit('setStations', mappedStations); + commit('setConnectionState', 2); + } + }, + mutations: { + setStations: (state, stations) => state.stations = stations, + setTrainCount: (state, count) => state.trainCount = count, + setConnectionState: (state, connState) => state.connectionState = connState, + setErrorMessage: (state, message) => state.errorMessage = message + }, + getters: { + getStations: state => state.stations, + getTrainCount: state => state.trainCount + } +}) diff --git a/src/styles/responsive.scss b/src/styles/responsive.scss new file mode 100644 index 0000000..c2e67a0 --- /dev/null +++ b/src/styles/responsive.scss @@ -0,0 +1,11 @@ +@mixin midScreen() { + @media only screen and (min-width: 850px) { + @content; + } +} + +@mixin bigScreen() { + @media only screen and (min-width: 1600px) { + @content; + } +} diff --git a/src/styles/variables.scss b/src/styles/variables.scss new file mode 100644 index 0000000..f363152 --- /dev/null +++ b/src/styles/variables.scss @@ -0,0 +1,10 @@ +$primaryCol: #333; +$secondaryCol: #fdad17; + +$bgCol: #525252; + +$errorCol: #ff1919; +$warningCol: #ff975b; + +$accentCol: #ffbb00; +$accent2Col: #ff3d5d; diff --git a/src/views/Home.vue b/src/views/Home.vue index d515bae..6fc0978 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -2,8 +2,14 @@
Hello Vue!
- + + diff --git a/tsconfig.json b/tsconfig.json index b57578e..daa3f80 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ "esModuleInterop": true, "allowSyntheticDefaultImports": true, "sourceMap": true, + "resolveJsonModule": true, "baseUrl": ".", "types": [ "webpack-env" @@ -36,4 +37,4 @@ "exclude": [ "node_modules" ] -} +} \ No newline at end of file