From: Maxious Date: Fri, 19 Aug 2011 13:06:54 +0000 Subject: Include network wide service alerts in page headers X-Git-Url: https://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=c69d6868662a825fbb204ae6ef7e1a906e90e483 --- Include network wide service alerts in page headers --- --- /dev/null +++ b/.box @@ -1,1 +1,5 @@ +shared_writable_dirs: + - /labs/tiles + - /lib/staticmaplite/cache +php_extensions: [pgsql, pdo, pdo_pgsql, curl] --- a/aws/awsStartup.sh +++ b/aws/awsStartup.sh @@ -5,38 +5,9 @@ #postgres postgres-server php-pg #http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12 -cp /root/aws.php /tmp/ -mkdir /var/www/lib/staticmaplite/cache -chcon -h system_u:object_r:httpd_sys_content_t /var/www -chcon -R -h root:object_r:httpd_sys_content_t /var/www/* -chcon -R -t httpd_sys_content_rw_t /var/www/lib/staticmaplite/cache -chmod -R 777 /var/www/lib/staticmaplite/cache -chcon -R -t httpd_sys_content_rw_t /var/www/labs/tiles -chmod -R 777 /var/www/labs/tiles -wget http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ --O /var/www/cbrfeed.zip +sh busuiphp.sh +sh busuidb.sh +sh busuiotp.sh -createdb transitdata -createlang -d transitdata plpgsql -psql -d transitdata -f /var/www/lib/postgis.sql -# curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz -#made with pg_dump transitdata | gzip -c > transitdata.cbrfeed.sql.gz -gunzip /var/www/transitdata.cbrfeed.sql.gz -psql -d transitdata -f /var/www/transitdata.cbrfeed.sql -#createuser transitdata -SDRP -#password transitdata -#psql -d transitdata -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\" -#psql -d transitdata -c "GRANT SELECT,INSERT ON TABLE myway_observations,myway_routes,myway_stops,myway_timingdeltas TO transitdata;" -#psql -d transitdata -c "GRANT SELECT,INSERT,UPDATE ON TABLE myway_routes,myway_stops TO transitdata;" -##psql -d transitdata -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO transitdata;" -php /var/www/updatedb.php -wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ --O /tmp/Graph.obj -rm -rfv /usr/share/tomcat6/webapps/opentripplanner* -wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war \ --O /usr/share/tomcat6/webapps/opentripplanner-webapp.war -wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war \ --O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war -/etc/init.d/tomcat6 restart --- /dev/null +++ b/aws/busuidb.sh @@ -1,1 +1,14 @@ - +createdb transitdata +createlang -d transitdata plpgsql +psql -d transitdata -f /var/www/lib/postgis.sql +# curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz +#made with pg_dump transitdata | gzip -c > transitdata.cbrfeed.sql.gz +gunzip /var/www/transitdata.cbrfeed.sql.gz +psql -d transitdata -f /var/www/transitdata.cbrfeed.sql +#createuser transitdata -SDRP +#password transitdata +#psql -d transitdata -c "GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;" +#psql -d transitdata -c "GRANT SELECT,INSERT ON TABLE myway_observations,myway_routes,myway_stops,myway_timingdeltas TO transitdata;" +#psql -d transitdata -c "GRANT SELECT,INSERT,UPDATE ON TABLE myway_routes,myway_stops TO transitdata;" +##psql -d transitdata -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO transitdata;" +php /var/www/updatedb.php --- /dev/null +++ b/aws/busuiotp.sh @@ -1,1 +1,10 @@ +wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ +-O /tmp/Graph.obj +/etc/init.d/tomcat6 stop +rm -rfv /usr/share/tomcat6/webapps/opentripplanner* +wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war \ +-O /usr/share/tomcat6/webapps/opentripplanner-webapp.war +wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war \ +-O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war +/etc/init.d/tomcat6 restart --- /dev/null +++ b/aws/busuiotp.testing.sh @@ -1,1 +1,10 @@ +wget http://s3-ap-southeast-1.amazonaws.com/busresources/testing/Graph.obj \ +-O /tmp/Graph.obj +/etc/init.d/tomcat6 stop +rm -rfv /usr/share/tomcat6/webapps/opentripplanner* +wget http://s3-ap-southeast-1.amazonaws.com/busresources/testing/opentripplanner-webapp.war \ +-O /usr/share/tomcat6/webapps/opentripplanner-webapp.war +wget http://s3-ap-southeast-1.amazonaws.com/busresources/testing/opentripplanner-api-webapp.war \ +-O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war +/etc/init.d/tomcat6 restart --- /dev/null +++ b/aws/busuiphp.sh @@ -1,1 +1,10 @@ - +cp /root/aws.php /tmp/ +mkdir /var/www/lib/staticmaplite/cache +chcon -h system_u:object_r:httpd_sys_content_t /var/www +chcon -R -h root:object_r:httpd_sys_content_t /var/www/* +chcon -R -t httpd_sys_content_rw_t /var/www/lib/staticmaplite/cache +chmod -R 777 /var/www/lib/staticmaplite/cache +chcon -R -t httpd_sys_content_rw_t /var/www/labs/tiles +chmod -R 777 /var/www/labs/tiles +wget http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ +-O /var/www/cbrfeed.zip --- /dev/null +++ b/aws/data-sources.xml @@ -1,1 +1,13 @@ + + + + + + + + + + + --- a/include/common-template.inc.php +++ b/include/common-template.inc.php @@ -156,6 +156,11 @@ echo '
Buses are running on an altered timetable today due to industrial action/public holiday. See http://www.action.act.gov.au for details.
'; } } + $serviceAlerts = getServiceAlerts("network","network"); + foreach ($serviceAlerts['entities'] as $entity) { + echo "
From ".date("F j, g:i a",strtotime($entity['alert']['active_period']['start']))." to ". date("F j, g:i a", strtotime($entity['alert']['active_period']['end']))."
Warning: {$entity['alert']['description']['translation']} +
Source
"; + } } } function include_footer() --- a/include/common-transit.inc.php +++ b/include/common-transit.inc.php @@ -45,5 +45,62 @@ return ""; } } +function getServiceAlerts($filter_class, $filter_id) { +/* + + also need last modified epoch of client gtfs + + - add,remove,patch,inform (null) + - stop + - trip + - network + - patterns (WHERE=) + - route (short_name or route_id) + - street + - stop + - trip */ +$return = Array(); +$return['header']['gtrtfs_version'] = "1"; +$return['header']['timestamp'] = time(); +$return['entities'] = Array(); +foreach(getCurrentAlerts() as $alert) { + $informedEntities = getInformedAlerts($alert['id'],$_REQUEST['filter_class'],$_REQUEST['filter_id']); + if (sizeof($informedEntities) >0) { + $entity = Array(); + $entity['id'] = $alert['id']; + $entity['alert']['active_period']['start'] = $alert['start']; + $entity['alert']['active_period']['end'] = $alert['end']; + $entity['alert']['url']['translation'] = $alert['url']; + $entity['alert']['description']['translation'] = $alert['description']; + + foreach ($informedEntities as $informedEntity) { + $informed = Array(); + $informed[$informedEntity['informed_class']."_id"] = $informedEntity['informed_id']; + if ($informedEntity['informed_action'] != "") $informed["x-action"] = $informedEntity['informed_action']; + $informed[$informedEntity['class']."_type"] = $informedEntity['type']; + $entity['informed'][] = $informed; + } + $return['entities'][] = $entity; + } +} +return $return; +} +function getServiceAlertsByClass() { + $return = Array(); + $alerts = getServiceAlerts("",""); + foreach ($alerts['entities'] as $entity) { + foreach ($entity['informed'] as $informed) { + foreach($informed as $key => $value){ + if (strpos("_id",$key) > 0) { + $parts = explode($key); + $class = $parts[0]; + $id = $value; + } + } + $return[$class][$id]['entity'] = $entity; + $return[$class][$id]['action'] = $informed["x-action"]; + } + } +} ?> --- a/include/common.inc.php +++ b/include/common.inc.php @@ -31,7 +31,8 @@ function isDebugServer() { - return !isset($_SERVER['SERVER_NAME']) || $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "10.1.0.4" || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" ; + return php_sapi_name() == "cli" || isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "10.1.0.4" || $_SERVER['SERVER_NAME'] == +"localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1") ; } include_once ("common-geo.inc.php"); --- a/include/db/servicealert-dao.inc.php +++ b/include/db/servicealert-dao.inc.php @@ -15,7 +15,7 @@ function getCurrentAlerts() { global $conn; - $query = "SELECT * from servicealerts_alerts"; + $query = 'SELECT * from servicealerts_alerts where NOW() > start and NOW() < "end"'; //debug($query, "database"); $query = $conn->prepare($query); //if ($stop_sequence != "") $query->bindParam(":stop_sequence", $stop_sequence); @@ -31,14 +31,20 @@ global $conn; $query = "SELECT * from servicealerts_informed where servicealert_id = :servicealert_id"; - if ($filter_class != "" && $filter_id != "") { - $query .= " AND (informed_class = :informed_class OR informed_class = 'network') AND informed_id = :informed_id"; + if ($filter_class != "" ) { + $query .= " AND informed_class = :informed_class "; + + } + if ($filter_id != "") { + $query .= " AND informed_id = :informed_id "; } //debug($query, "database"); $query = $conn->prepare($query); - if ($filter_class != "" && $filter_id != "") { + if ($filter_class != "" ) { $query->bindParam(":informed_class", $filter_class); + } + if ($filter_id != "") { $query->bindParam(":informed_id", $filter_id); } $query->bindParam(":servicealert_id", $id); --- a/include/db/trip-dao.inc.php +++ b/include/db/trip-dao.inc.php @@ -173,6 +173,22 @@ $r = $query->fetch(PDO::FETCH_ASSOC); return $r['arrival_time']; } +function getTripEndTime($tripID) +{ + global $conn; + $query = "SELECT trip_id,max(arrival_time) as arrival_time from stop_times + WHERE stop_times.arrival_time IS NOT NULL and trip_id = :tripID group by trip_id"; + debug($query, "database"); + $query = $conn->prepare($query); + $query->bindParam(":tripID", $tripID); + $query->execute(); + if (!$query) { + databaseError($conn->errorInfo()); + return Array(); + } + $r = $query->fetch(PDO::FETCH_ASSOC); + return $r['arrival_time']; +} function getActiveTrips($time) { global $conn; --- a/labs/myway_api.json.php +++ b/labs/myway_api.json.php @@ -126,7 +126,7 @@ if (sizeof($return) == 0) { $return['error'][] = "No data extracted from MyWay website - API may be out of date"; } - +if (basename(__FILE__) == "myway_api.json.php") { header('Content-Type: text/javascript; charset=utf8'); // header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/'); header('Access-Control-Max-Age: 3628800'); @@ -137,5 +137,6 @@ } else echo json_encode($return); +} ?> --- a/labs/myway_timeliness_calculate.php +++ b/labs/myway_timeliness_calculate.php @@ -1,6 +1,8 @@ "; var_dump($stopRoutes); + flush(); + } } // lowest delta is recorded delta @@ -119,7 +125,7 @@ $stmt->bindParam(':route_full_name', $route_full_name); $stmt->bindParam(':stop_code', $stop_code); $stmt->bindParam(':timing_delta', $lowestDelta); - $stmt->bindParam(':time', $time); + $stmt->bindParam(':time', $time_tz); $stmt->bindParam(':date', $date); $stmt->bindParam(':timing_period', $timing_period); $stmt->bindParam(':stop_sequence', $stop_sequence); @@ -129,6 +135,7 @@ echo "Recorded.
"; } var_dump($conn->errorInfo()); + flush(); } flush(); } --- a/labs/myway_timeliness_route.php +++ b/labs/myway_timeliness_route.php @@ -34,6 +34,10 @@ tickFormatter: yformatter }, grid: { hoverable: true, clickable: true, labelMargin: 32 }, +series: { + lines: { show: false }, + points: { show: true } + } }; var plot = $.plot(placeholder, data, options); @@ -118,3 +122,4 @@ }); + --- a/labs/myway_timeliness_stop.json.php +++ b/labs/myway_timeliness_stop.json.php @@ -29,3 +29,4 @@ else echo "[".implode(",",$points)."]"; ?> } + --- a/labs/myway_timeliness_stop.php +++ b/labs/myway_timeliness_stop.php @@ -40,6 +40,10 @@ tickFormatter: yformatter }, grid: { hoverable: true, clickable: true, labelMargin: 32 }, + series: { + lines: { show: false }, + points: { show: true } + } }; var plot = $.plot(placeholder, data, options); @@ -129,3 +133,4 @@ }); + --- /dev/null +++ b/labs/travelAllRoutes.php @@ -1,1 +1,23 @@ +prepare($query); + $query->execute(); +echo ""; +$total = 0; +$count = 0; +foreach($query->fetchAll() as $r) { + $trips = getRouteTrips($r['route_id']); + $startTime = $trips[0]['arrival_time']; + $endTime = getTripEndTime($trips[0]['trip_id']); + $timeDiff = strtotime($endTime) - strtotime($startTime); + $total += $timeDiff; + $count ++; + echo ""; +} +echo "
Route NumberFirst Trip StartFirst Trip EndLength
{$r['route_short_name']}$startTime$endTime$timeDiff seconds ie. ". ($timeDiff/60). " minutes
"; +echo "Total time: $total seconds ie. " .($total/60/60). " hours
"; +echo "$count Routes"; +?> --- a/servicealerts_api.php +++ b/servicealerts_api.php @@ -1,41 +1,8 @@ 0) { - $entity = Array(); - $entity['id'] = $alert['id']; - $entity['alert']['active_period']['start'] = $alert['start']; - $entity['alert']['active_period']['start'] = $alert['end']; - $entity['alert']['url']['translation'] = $alert['url']; - $entity['alert']['description']['translation'] = $alert['description']; - - foreach ($informedEntities as $informedEntity) { - $informed = Array(); - $informed[$informedEntity['informed_class']."_id"] = $informedEntity['informed_id']; - if ($informedEntity['informed_action'] != "") $informed["x-action"] = $informedEntity['informed_action']; - //$informed[$informedEntity['class']."_type"] = $informedEntity['type']; - $entity['informed'][] = $informed; - } - $return['entities'][] = $entity; - } -} + +if (basename(__FILE__) == "servicealerts_api.php") { + $return = getServiceAlerts($_REQUEST['filter_class'],$_REQUEST['filter_id']); header('Content-Type: text/javascript; charset=utf8'); // header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/'); header('Access-Control-Max-Age: 3628800'); @@ -45,5 +12,6 @@ //print_r($_GET['callback'] . $json); //callback is prepended for json-p } else echo json_encode($return); +} ?> --- a/updatedb.php +++ b/updatedb.php @@ -2,6 +2,18 @@ if ( php_sapi_name() == "cli") { include ('include/common.inc.php'); $conn = pg_connect("dbname=transitdata user=postgres password=snmc host=localhost") or die('connection failed'); +$pdconn = new PDO("pgsql:dbname=transitdata;user=postgres;password=snmc;host=localhost"); + +/* + delete from agency; + delete from calendar; + delete from calendar_dates; + delete from routes; + delete from shapes; + delete from stop_times; + delete from stops; + delete from trips; +*/ // Unzip cbrfeed.zip, import all csv files to database $unzip = true; $zip = zip_open(dirname(__FILE__) . "/cbrfeed.zip"); @@ -31,8 +43,20 @@ echo "Opening $file \n"; $line = 0; $handle = fopen($tmpdir . $file, "r"); + if ($tablename =="stop_times") { + $stmt = $pdconn->prepare("insert into stop_times (trip_id,stop_id,stop_sequence,arrival_time,departure_time) values(:trip_id, :stop_id, :stop_sequence,:arrival_time,:departure_time);"); + $stmt->bindParam(':trip_id',$trip_id); + $stmt->bindParam(':stop_id',$stop_id); + $stmt->bindParam(':stop_sequence',$stop_sequence); + $stmt->bindParam(':arrival_time',$time); + $stmt->bindParam(':departure_time',$time); + } + + while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { - if ($line > 0) { + if ($line == 0) { + + } else { $query = "insert into $tablename values("; $valueCount = 0; foreach ($data as $value) { @@ -44,14 +68,23 @@ } else { $query.= "');"; } - if ($tablename =="stop_times" && $data[1] == "") { - $query = "insert into $tablename (trip_id,stop_id,stop_sequence) values('{$data[0]}','{$data[3]}','{$data[4]}');"; - } + if ($tablename =="stop_times") { + // $query = "insert into $tablename (trip_id,stop_id,stop_sequence) values('{$data[0]}','{$data[3]}','{$data[4]}');"; + $trip_id=$data[0]; + $stop_id=$data[3]; + $stop_sequence=$data[4]; + $time=($data[1] == "" ? null : $data[1]); + } } - $result = pg_query($conn, $query); + if ($tablename =="stop_times") { + $stmt->execute(); + } + else { + $result = pg_query($conn, $query); + } $line++; - if ($line % 10000 == 0) echo "$line records... \n"; + if ($line % 10000 == 0) echo "$line records... ".date('c')."\n"; } fclose($handle); echo "Found a total of $line records in $file.\n";