Skip to content

Commit 577a5f4

Browse files
committed
Add station departure table functionality
1 parent 181abf6 commit 577a5f4

File tree

3 files changed

+72
-114
lines changed

3 files changed

+72
-114
lines changed

src/StationTimetableGetter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ def state_decoder(state):
3333
'train_id': train[3][0][0][1],
3434
'operator': train[5][0][0][1],
3535
'origin': train[7][0][0][1],
36-
'delay': train[9][0][0][1],
36+
'delay': 0 if train[9][0][0][1]==' ' else int(train[9][0][0][1]),
3737
'arrival_time': train[11][0][0][1],
3838
'departure_time': train[13][0][0][1],
3939
'destination': train[15][0][0][1],
40-
'platform': train[17][0][0][1],
40+
'platform': train[17][0][0][1] if train[17][0][0][1]!=' ' else None,
4141
'is_origin': train[19][0][0][1] == 'O',
4242
'is_destination': train[19][0][0][1] == 'D',
4343
'is_stop': train[19][0][0][1] == 'S',

static/station.html

Lines changed: 64 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
21
<!DOCTYPE html>
3-
<html>
2+
<html ng-app="cfrApp" ng-controller="main">
43
<head>
54
<!-- Standard Meta -->
65
<meta charset="utf-8" />
76
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
87
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
8+
<link rel="icon" type="image/png" href="img/iris.png" />
99

1010
<!-- Site Properties -->
1111
<title>IRIS - Informații gară</title>
1212

1313
<link rel="stylesheet" type="text/css" href="semantic.css">
1414
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
1515
<script type="text/javascript" src="semantic.min.js"></script>
16-
16+
<script type="text/javascript" src="angular.js"></script>
1717

1818
<style type="text/css">
1919
body {
@@ -100,30 +100,27 @@ <h1 class="ui header">Informații gară</h1>
100100
</div>
101101
</div>
102102
</div>
103-
<div class="ui fluid blue button">
104-
<i class="search icon"></i>
105-
Căutare
106-
</div>
107103
</div>
108104
<div class="ui info message">
109105
<div class="header">
110106
Cum găsesc o gară?
111107
</div>
112-
<p>Pentru a găsi informații despre orele de sosire și plecare ale trenurilor dintr-o anume gară, introduceți numele gării în caseta de mai sus, și apăsați butonul <i class="search icon"></i>Căutare.</p>
108+
<p>Pentru a găsi informații despre orele de sosire și plecare ale trenurilor dintr-o anume gară, introduceți numele gării în caseta de mai sus, și apăsați pe una din sugestiile afișate sau apăsați tasta <i>enter</i> când aceasta este selectată.
113109
</div>
114110
</div>
115111
</div>
116112
<div class="twelve wide column">
117-
<div class="ui main container segment">
113+
<div class="ui blue message" ng-if="loading"><i class="notched circle loading icon"></i> Se încarcă date...</div>
114+
<div class="ui main container segment" ng-if="data">
118115
<div class="ui clearing basic segment">
119116
<h1 class="ui huge header">
120117
<i class="train icon"></i>
121-
<div class="content">București Nord Gr. A</div>
118+
<div class="content">{{name}}</div>
122119
</h1>
123120
</div>
124121
<div class="ui divider"></div>
125122

126-
<div id="trenuri" class="ui pointing four item menu">
123+
<div id="trains" class="ui pointing four item menu">
127124
<a class="active item" data-tab="first">Sosiri / Plecări</a>
128125
<a class="item" data-tab="second">Sosiri</a>
129126
<a class="item" data-tab="third">Plecări</a>
@@ -133,7 +130,7 @@ <h1 class="ui huge header">
133130
</a>
134131
</div>
135132
<div class="ui bottom active tab segment" data-tab="first">
136-
<div class="ui blue icon message">
133+
<div class="ui blue icon message" style="display: none">
137134
<i class="info icon"></i>
138135
<div class="content">
139136
<div class="header">
@@ -142,124 +139,53 @@ <h1 class="ui huge header">
142139
<p>Puteți alege să vedeți fie doar sosirile, doar plecările, ori trenurile anulate. Dacă doriți să vedeți lista completă a trenurilor de astăzi, apăsați pe butonul Vizualizați lista integrală.</p>
143140
</div>
144141
</div>
145-
146-
<div id="trains" class="ui items list">
142+
143+
<div id="trains" class="ui items list" ng-repeat="train in data">
144+
147145
<div class="item">
148146
<div class="ui basic segment">
149-
<a class="ui fluid black big trainNumber label" href="#">
150-
R 14035
147+
<a class="ui fluid red big trainNumber label" href="#" ng-if="train.rank=='IR'">
148+
{{train.rank}} {{train.train_id}}
149+
</a>
150+
<a class="ui fluid black big trainNumber label" href="#" ng-if="train.rank!='IR'">
151+
{{train.rank}} {{train.train_id}}
151152
</a>
152153
</div>
153154

154155
<div class="content">
155-
<div class="header">București Nord - Brașov</div>
156+
<div class="header"><b ng-if="train.is_destination">Sosește de la </b> <b ng-if="train.is_origin">Pleacă spre </b> <b ng-if="train.is_stop">Circulă pe ruta </b> <span ng-if="train.is_destination||train.is_stop">{{train.origin}}</span> <span ng-if="train.is_stop">-</span> <span ng-if="train.is_origin||train.is_stop">{{train.destination}}</span></div>
156157
<div class="meta">
157-
<span class="departure">Plecare la <strong>17:23</strong></span>
158-
<span class="platform">Linia 7A</span>
158+
<span class="arrival" ng-if="train.is_destination||train.is_stop">Sosește la <strong>{{train.arrival_time}}</strong></span>
159+
<span class="departure" ng-if="train.is_origin||train.is_stop">Plecare la <strong>{{train.departure_time}}</strong></span>
160+
<span class="platform" ng-if='train.platform'>Linia {{train.platform}}</span>
159161
</div>
160162
<div class="description">
161-
<p>Acest tren este operat de Regiotrans</p>
163+
<p>Acest tren este operat de {{train.operator}}</p>
162164
</div>
163165
<div class="extra">
164166
<a class="ui blue label">
165-
<i class="info circle icon"></i>
167+
<i class="info circle icon" ng-click="detailOpen(train.train_id)"></i>
166168
Detalii
167169
</a>
168-
<div class="ui green label">
170+
<div class="ui green label" ng-if="train.delay==0">
169171
<i class="clock icon"></i>
170172
La timp
171173
</div>
172-
</div>
173-
</div>
174-
</div>
175-
<div class="ui divider"></div>
176-
<div class="item">
177-
<div class="ui basic segment">
178-
<a class="ui fluid red big trainNumber label" href="#">
179-
IR 460
180-
</a>
181-
</div>
182-
183-
<div class="content">
184-
<div class="header">Giurgiu Nord - București Nord</div>
185-
<div class="meta">
186-
<span class="arrival">Sosire la <strong>17:24</strong></span>
187-
<span class="platform">Linia 13A</span>
188-
</div>
189-
<div class="description">
190-
<p>Acest tren este operat de CFR Călători</p>
191-
</div>
192-
<div class="extra">
193-
<a class="ui blue label">
194-
<i class="info circle icon"></i>
195-
Detalii
196-
</a>
197-
<div class="ui red label">
174+
<div class="ui blue label" ng-if="(train.delay<=6&&train.delay>0)||(train.delay<0&&train.delay>=-6)">
198175
<i class="clock icon"></i>
199-
Întârzie 26 min.
176+
<span ng-if="train.delay!=0">{{train.delay<0?"Mai devreme cu":"Întârziat cu"}}</span> {{Math.abs(train.delay)}} minute
200177
</div>
201-
</div>
202-
</div>
203-
</div>
204-
<div class="ui divider"></div>
205-
<div class="item">
206-
<div class="ui basic segment">
207-
<a class="ui fluid red big trainNumber label" href="#">
208-
IR 1596
209-
</a>
210-
</div>
211-
212-
<div class="content">
213-
<div class="header">Mangalia - Craiova</div>
214-
<div class="meta">
215-
<span class="arrival">Sosire la <strong>17:26</strong></span>
216-
<span class="departure">Plecare la <strong>17:45</strong></span>
217-
<span class="platform">Linia 6A</span>
218-
</div>
219-
<div class="description">
220-
<p>Acest tren este operat de CFR Călători</p>
221-
</div>
222-
<div class="extra">
223-
<a class="ui blue label">
224-
<i class="info circle icon"></i>
225-
Detalii
226-
</a>
227-
<div class="ui blue label">
178+
<div class="ui red label" ng-if="train.delay>6||train.delay<-6">
228179
<i class="clock icon"></i>
229-
Sosește mai devreme cu 3 min.
180+
<span ng-if="train.delay!=0">{{train.delay<0?"Mai devreme cu":"Întârziat cu"}}</span> {{Math.abs(train.delay)}} minute
230181
</div>
231182
</div>
232183
</div>
233184
</div>
234185
<div class="ui divider"></div>
235-
<div class="item">
236-
<div class="ui basic segment">
237-
<a class="ui fluid green big trainNumber label" href="#">
238-
IC 12001-2
239-
</a>
240-
</div>
241-
242-
<div class="content">
243-
<div class="header">Curtici - București Nord</div>
244-
<div class="meta">
245-
<span class="arrival">Sosire la <strong>17:48</strong></span>
246-
</div>
247-
<div class="description">
248-
<p>Acest tren este operat de CFR Călători</p>
249-
</div>
250-
<div class="extra">
251-
<a class="ui blue label">
252-
<i class="info circle icon"></i>
253-
Detalii
254-
</a>
255-
<div class="ui red label">
256-
<i class="clock icon"></i>
257-
Întârzie 1h 3min.
258-
</div>
259-
</div>
260-
</div>
261-
</div>
262-
</div>
186+
187+
</div>
188+
263189
<div class="ui basic clearing segment">
264190
<a class="ui left floated large blue button">
265191
<i class="content icon"></i>
@@ -285,6 +211,11 @@ <h1 class="ui huge header">
285211

286212

287213
</div>
214+
<div class="ui main container segment" ng-if="!data">
215+
<br><br><br>
216+
<center><h3>Apăsați pe numele unei stații în stânga pentru a începe.</h3></center>
217+
<br><br><br>
218+
</div>
288219
</div>
289220
</div>
290221

@@ -363,9 +294,36 @@ <h4 class="ui inverted header">Firmele canceroase care fac acest site non-cancer
363294
</div>
364295
</body>
365296
<script type="text/javascript">
297+
var app = angular.module("cfrApp", []);
298+
299+
function detailOpen(link){
300+
console.log(link);
301+
}
302+
303+
app.controller('main', ['$scope', '$window',function ($scope, $window) {
304+
$scope.loading=false;$scope.Math = window.Math;
305+
$scope.detailOpen = function(id){
306+
$window.detailOpen('train.html?tren='+id);
307+
}
308+
}]);
309+
366310
$.get('/get-stations', function(data){
367311
for(i=0; i<data.length; i++)
368-
$('#stations').append('<div class="item" data-value="'+data[i].station_id+'">'+data[i].name+'</div>');
312+
$('#stations').append('<div class="item" onkeydown="loadSta('+data[i].station_id+','+"'"+data[i].name+"'"+')" onclick="loadSta('+data[i].station_id+','+"'"+data[i].name+"'"+')" data-value="'+data[i].station_id+'">'+data[i].name+'</div>');
369313
})
314+
315+
function loadSta(sta_id,sta_n){
316+
scope = angular.element($("html")).scope();
317+
scope.$apply(function(){
318+
scope.loading=true;
319+
})
320+
$.get('/station/'+sta_id,function(data){
321+
scope.$apply(function(){
322+
scope.data=data;
323+
scope.name=sta_n;
324+
scope.loading=false;
325+
})
326+
})
327+
}
370328
</script>
371329
</html>

static/train.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<link rel="icon" type="image/png" href="img/iris.png" />
99

1010
<!-- Site Properties -->
11-
<title>IRIS - Informații feroviare</title>
11+
<title>IRIS - Informații tren</title>
1212

1313
<link rel="stylesheet" type="text/css" href="semantic.css">
1414
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
@@ -100,14 +100,14 @@ <h1 class="ui header">Informații tren</h1>
100100
<div class="header">
101101
Cum caut un tren?
102102
</div>
103-
<p>Pentru a găsi informații despre un tren, aflați numărul acestuia de pe titlul dv. de călătorie sau utilizând secțiunea <a href="#">Informații gări</a>. Ulterior, introduceți numărul în câmpul de mai sus, și apăsați butonul <i class="search icon"></i>.</p>
103+
<p>Pentru a găsi informații despre un tren, aflați numărul acestuia de pe titlul dv. de călătorie sau utilizând secțiunea <a href="#">Informații gări</a>. Ulterior, introduceți numărul în câmpul de mai sus, și apăsați butonul <i class="search icon"></i> sau tasta enter.</p>
104104
</div>
105105
</div>
106106
</div>
107107

108108
<div class="twelve wide column">
109109
<div class="ui blue message" ng-if="loading"><i class="notched circle loading icon"></i> Se încarcă date...</div>
110-
<div class="ui main container segment" ng-if="data">
110+
<div class="ui main container segment" ng-if="data">
111111
<div class="ui clearing basic segment">
112112
<h3 class="ui huge left floated header">
113113
<i class="train icon"></i>
@@ -155,9 +155,9 @@ <h3 class="ui medium right floated header">
155155
<i class="announcement icon"></i>
156156
<div class="content">
157157
<div class="header">
158-
Întârziere curentă
158+
Abatere orar curentă
159159
</div>
160-
<p>{{data[ind].info_box.delay}} minute</p>
160+
<p><span ng-if="data[ind].info_box.delay!=0">{{data[ind].info_box.delay<0?"Mai devreme cu":"Întârziat cu"}}</span> {{Math.abs(data[ind].info_box.delay)}} minute</p>
161161
</div>
162162
</div>
163163
</div>
@@ -323,7 +323,7 @@ <h4 class="ui inverted header">Firmele canceroase care fac acest site non-cancer
323323
});
324324

325325
app.controller('main', function ($scope, $http, $window) {
326-
$scope.ind=0;$scope.loading=false;
326+
$scope.ind=0;$scope.loading=false;$scope.Math = window.Math;
327327
$scope.formatDate = function(ts){
328328
if(!ts) return '';
329329
dt = new Date(ts*1000);

0 commit comments

Comments
 (0)